- 論壇徽章:
- 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";
- }
- }
復(fù)制代碼 為什么在這里第一個(gè)foreach只循環(huán)了一次就退出了呢?
改成這樣后就成了:
- my %hash;
- my @word=<AA>;
- my @value=<BB>;
- foreach $word (@word){
- chomp $word;
- foreach $value(@value){
- chomp $value;
- print "$word ---- $value\n";
- }
- }
復(fù)制代碼 但把foreach里的@word替換成@word=<AA>,@value替換成@value=<BB>,又出現(xiàn)了相同的問題
第一個(gè)foreach 又只循環(huán)一次就退出了。
- my %hash;
- foreach $word (@word = <AA>){
- chomp $word;
- foreach $value (@value = <BB>){
- chomp $value;
- print "$word ---- $value\n";
- }
- }
復(fù)制代碼 這是為什么呢?本人初學(xué)perl,希望各位指點(diǎn)指點(diǎn),如果問題太幼稚,還希望各位多多包涵。 |
最佳答案
查看完整內(nèi)容
我認(rèn)為是這樣的:你OPEN一次文件,只可以通過操作符遍歷一次OPEN的文件內(nèi)容,不能多次重復(fù)遍歷,除非你再OPEN一次。在你第一次用foreach ()遍歷完文件內(nèi)容時(shí),該文件句柄就自動關(guān)閉了,相當(dāng)于close AA了。一樓的第一段代碼的第一個(gè)foreach,并不是象你說的只循環(huán)了一次,而是把的內(nèi)容遍歷了一遍,只不過的第二行是接在的最后一行以后打印,因?yàn)橐呀?jīng)被遍歷了一次,所以在讀第二行時(shí),BB已經(jīng)被關(guān)閉了,所以不再有內(nèi)容輸出。下面的例 ...
|