- 论坛徽章:
- 0
|
10可用积分
本帖最后由 lucash 于 2010-05-05 18:45 编辑
- open AA,"<",$ARGV[0];
- open BB,"<",$ARGV[1];
- my %hash;
- foreach(<AA>){
- chomp;
- my $word = $_;
- foreach(<BB>){
- chomp;
- print "$word ---- $_ \n";
- }
- }
复制代码 为什么在这里第一个foreach只循环了一次就退出了呢?
改成这样后就成了:
- my %hash;
- my @word=<AA>;
- my @value=<BB>;
- foreach $word (@word){
- chomp $word;
- foreach $value(@value){
- chomp $value;
- print "$word ---- $value\n";
- }
- }
复制代码 但把foreach里的@word替换成@word=<AA>,@value替换成@value=<BB>,又出现了相同的问题
第一个foreach 又只循环一次就退出了。
- my %hash;
- foreach $word (@word = <AA>){
- chomp $word;
- foreach $value (@value = <BB>){
- chomp $value;
- print "$word ---- $value\n";
- }
- }
复制代码 这是为什么呢?本人初学perl,希望各位指点指点,如果问题太幼稚,还希望各位多多包涵。 |
最佳答案
查看完整内容
我认为是这样的:你OPEN一次文件,只可以通过操作符遍历一次OPEN的文件内容,不能多次重复遍历,除非你再OPEN一次。在你第一次用foreach ()遍历完文件内容时,该文件句柄就自动关闭了,相当于close AA了。一楼的第一段代码的第一个foreach,并不是象你说的只循环了一次,而是把的内容遍历了一遍,只不过的第二行是接在的最后一行以后打印,因为已经被遍历了一次,所以在读第二行时,BB已经被关闭了,所以不再有内容输出。下面的例 ...
|