作者abliou (Art of Life)
看板Perl
标题Re: [问题] 排列组合
时间Sat Mar 1 11:48:54 2008
※ 引述《david220 (累)》之铭言:
: ※ 引述《abliou (Art of Life)》之铭言:
: : 这几行程式码真的写的很棒..用递回减少很多程式码...
: : 不过还是有一些东西小弟想了很久还是不能参透....
: : 不知道能不能请高手为小弟指点一下....真的感激不尽!!
: : 这是我的第一个疑问...就是这边open的用法...它会对那一个档打开??
: : 另外这边为什麽没有filehandling?
: open是开shift的return value
: $a才是file handle
非常感谢您的指教!!这边我就了解了....
: : 接这就是这一行....我很不了解这一行的程式运作方式...
: : 而且当中用了很多逗号...我很想了解到底逗号的使用时机跟限制到底是如何?
: 那一行大约等同
: for (split /\s/, <$a>) {
: push(@a, $_);
: (@_ && a(@_) || print "@a\n");
: pop @a;
: }
在comma这边我也有想过您所讲的意思....所以我用了以下两种不同的程式码测试
======以下为comma.pl=====
@a=("a");
push @a,$_ , $a++ , print @a,$/,$a,$/ for (0..3);
======回传===============
a
1
a001
2
a001111
3
a001111221
4
=====以下为comma2.pl=====
@a=("a");
for (0..3){
push @a,$_;
$a++;
print @a,$/,$a,$/;
}
====回传=================
a0
1
a01
2
a012
3
a0123
4
这两段程式码我不知道这样的拆解是不是会有所差异...
不过按照我预期的回传comma.pl跟comma2.pl应该要一样...
而对於comma.pl的回传我却完全无法理解为何会如此....
: 注意@a是global
: : 有试着去实做和查资料..但是都途劳无功...所以在此请教高手们...
: : 感谢高手们的指教..因为小弟正在当兵..可能没有办法为教导的高手们提出即时的感谢
: : 但小弟有放假一定会来道谢....
: : 先在这边谢过各位高手了...
: 这段code开了(ab102 ac1256 ef698 ed23)这四个档案
: 档案里面的资料用tab隔开
: 虽然我看本来的题目似乎是只有一个档案,内容为
: ab102\t11,01,65,99,68,78
: ac1256\t01,23,41,65,74,63,26
: ef698\t02,13,56,07,09
: ed23\t32,05,06,23
: 不过,也有可能是我搞错就是了 ^^"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.123.196.66
1F:推 david220:push @a,$_ , $a++ , print @a,$/,$a,$/ for (0..3);那行 03/01 14:14
2F:→ david220:改 push(@a, $_) , $a++, .... 才会一样 03/01 14:15
3F:→ david220:本来那样写 $a++ , print的return value都会push进@a 03/01 14:15
4F:→ abliou:原来是这样!!感谢!!!!! 03/01 18:27
5F:→ abliou:那是否可以再请教,最後@a值是a001111221,到底是那些值被 03/01 18:32
6F:→ abliou:push进去了? 03/01 18:33
7F:→ abliou:我大概清楚了!!感谢d大的指教!! 03/01 18:37