亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問板塊 發(fā)新帖
查看: 4093 | 回復(fù): 13
打印 上一主題 下一主題

foreach與$_,是BUG嗎 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-05-13 13:55 |只看該作者 |倒序?yàn)g覽
本帖最后由 pxczy 于 2011-05-13 16:03 編輯

在$i=2的循環(huán)里,foreach到的值居然是空的,如果foreach與while中的一個(gè)不用$_或者去掉for循環(huán)或者去掉while循環(huán),就都不會(huì)有問題,這個(gè)是BUG嗎?還是什么。。。求解,多謝大家
  1. my @path=(1,2);
  2. for(my $i=1;$i<3;$i++)
  3. { print "最外層循環(huán) i=$i\n";
  4.     foreach $_ (@path)
  5.       {  if (!$_)
  6.               {print "中層foreach循環(huán)的值為空,出錯(cuò) \n" }
  7.          else {print "中層foreach循環(huán)正常,值為$_\n"};      
  8.          open(FH, "<1.txt") ;   #有2行內(nèi)容的1.txt
  9.          while (<FH>)
  10.             {print "內(nèi)層FH循環(huán)正常\n";
  11.             }
  12.          close FH;         
  13.       };
  14. };
復(fù)制代碼
結(jié)果是
  1. 最外層循環(huán) i=1
  2. 中層foreach循環(huán)正常,值為1
  3. 內(nèi)層FH循環(huán)正常
  4. 內(nèi)層FH循環(huán)正常
  5. 中層foreach循環(huán)正常,值為2
  6. 內(nèi)層FH循環(huán)正常
  7. 內(nèi)層FH循環(huán)正常
  8. 最外層循環(huán) i=2
  9. 中層foreach循環(huán)的值為空,出錯(cuò)
  10. 內(nèi)層FH循環(huán)正常
  11. 內(nèi)層FH循環(huán)正常
  12. 中層foreach循環(huán)的值為空,出錯(cuò)
  13. 內(nèi)層FH循環(huán)正常
  14. 內(nèi)層FH循環(huán)正常
復(fù)制代碼

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
2 [報(bào)告]
發(fā)表于 2011-05-13 14:21 |只看該作者
代碼沒什么大問題,無(wú)法重現(xiàn)你的問題。只提一點(diǎn) for if while 這些語(yǔ)法結(jié)構(gòu)的 BLOCK 最后不需要跟 ; 不過不影響

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2011-05-13 14:24 |只看該作者
不太懂是為什么。

不過我把my @path=(1,2); 放在for循環(huán)里面后,就能得到正確的結(jié)果了。就是你去掉for循環(huán)的情況。
求解。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2011-05-13 14:33 |只看該作者
本帖最后由 cinanine 于 2011-05-13 13:05 編輯

foreach $_ (@path) ==>

    foreach my $x (@path)
  1. my @path=(1,2,3,4);
  2. for(1..3){
  3.     print "最外層循環(huán) i=$_\n";

  4.     for my $x (@path){  
  5.         if (!$x){print "中層foreach循環(huán)的值$x \n" }
  6.         else {print "中層foreach循環(huán)正常,值為$x\n"}  
  7.    
  8.         open(FH, "<1.txt") ;   #有2行內(nèi)容的1.txt

  9.         while (<FH>){
  10.             print "內(nèi)層FH循環(huán)正常\n";
  11.              }

  12.         close FH;         
  13.         }
  14. }
復(fù)制代碼
  1. 最外層循環(huán) i=1
  2. 中層foreach循環(huán)正常,值為1
  3. 內(nèi)層FH循環(huán)正常
  4. 中層foreach循環(huán)正常,值為2
  5. 內(nèi)層FH循環(huán)正常
  6. 中層foreach循環(huán)正常,值為3
  7. 內(nèi)層FH循環(huán)正常
  8. 中層foreach循環(huán)正常,值為4
  9. 內(nèi)層FH循環(huán)正常
  10. 最外層循環(huán) i=2
  11. 中層foreach循環(huán)正常,值為1
  12. 內(nèi)層FH循環(huán)正常
  13. 中層foreach循環(huán)正常,值為2
  14. 內(nèi)層FH循環(huán)正常
  15. 中層foreach循環(huán)正常,值為3
  16. 內(nèi)層FH循環(huán)正常
  17. 中層foreach循環(huán)正常,值為4
  18. 內(nèi)層FH循環(huán)正常
  19. 最外層循環(huán) i=3
  20. 中層foreach循環(huán)正常,值為1
  21. 內(nèi)層FH循環(huán)正常
  22. 中層foreach循環(huán)正常,值為2
  23. 內(nèi)層FH循環(huán)正常
  24. 中層foreach循環(huán)正常,值為3
  25. 內(nèi)層FH循環(huán)正常
  26. 中層foreach循環(huán)正常,值為4
  27. 內(nèi)層FH循環(huán)正常
復(fù)制代碼

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2011-05-13 14:35 |只看該作者
你內(nèi)外兩層循環(huán)都用$_迭代,難免沖突出錯(cuò)。

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
6 [報(bào)告]
發(fā)表于 2011-05-13 14:40 |只看該作者
本帖最后由 zhlong8 于 2011-05-13 14:44 編輯

抱歉剛才為省事把里面的讀文件部分給注釋掉了。確實(shí)像你寫的那樣。

平時(shí)用因?yàn)榕聸_突都用帶名字的循環(huán),這個(gè)也是頭次遇到。沒有留意到文檔哪里有講這個(gè)

在程序最后加上句 say Dumper \@path; 發(fā)現(xiàn)連 @path 都被改變了。這里算是個(gè) bug 或者說(shuō)未定義用法,至于原理我再看看

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
7 [報(bào)告]
發(fā)表于 2011-05-13 14:53 |只看該作者
本帖最后由 zhlong8 于 2011-05-13 14:55 編輯

搞定了,略微改了下加了點(diǎn) debug 用的打印。用 perl -MO=Deparse t.pl 得到
  1. my(@path) = ('a', 'b');
  2. foreach my $z (1, 2) {
  3.     print "\327\356\315\342\262\343\321\255\273\267 i=$z\n";
  4.     print Dumper(\@path);
  5.     foreach my $_ (@path) {
  6.         say '---------->', $_;
  7.         if (not $_) {
  8.             say "\326\320\262\343foreach\321\255\273\267\265\304\326\265\316\252\277\325,\263\366\264\355";
  9.         }
  10.         else {
  11.             print "\326\320\262\343foreach\321\255\273\267\325\375\263\243,\326\265\316\252$_";
  12.         }
  13.         die $! unless open FH, '<1.txt';
  14.         while (defined($_ = <FH>)) {
  15.             print "\304\332\262\343FH\321\255\273\267\325\375\263\243->$_";
  16.         }
  17.         close FH;
  18.         say $_;
  19.     }
  20. }
  21. say 'x' x 80;
  22. say Dumper(\@path);
復(fù)制代碼
注意讀文件的時(shí)候那里是 defined ($_ = <FH>) 又因?yàn)?for 循環(huán)的時(shí)候變量用的是 alias 所以會(huì)改變?cè)瓉?lái)的 @path?捶淳幾g的結(jié)果肯定是沒問題的,但是感覺還是個(gè) bug,while (<FH>) 編譯的問題

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2011-05-13 15:53 |只看該作者
代碼沒什么大問題,無(wú)法重現(xiàn)你的問題。只提一點(diǎn) for if while 這些語(yǔ)法結(jié)構(gòu)的 BLOCK 最后不需要跟 ; 不過不 ...
zhlong8 發(fā)表于 2011-05-13 14:21



謝謝告之,以后不寫了:wink:

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2011-05-13 15:54 |只看該作者
中層和內(nèi)層的$_可能沖突吧

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2011-05-13 15:54 |只看該作者
本帖最后由 pxczy 于 2011-05-13 15:57 編輯
foreach $_ (@path) ==>

    foreach my $x (@path)
cinanine 發(fā)表于 2011-05-13 14:33



    我在帖子里已說(shuō)了
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP