Re: [問題] 利用while迴圈跑陣列變無窮迴圈?

看板Perl作者 (c9s)時間15年前 (2010/03/14 12:31), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串2/2 (看更多)
因為 while 是提供 boolean context 關係。 通常會這樣寫 while( $f = shift @files ) { unlink $f; } 其實通常會只寫一行: unlink $f for @files; 或是 map { unlink $_ } @files; ※ 引述《adbro (廣告王道)》之銘言: : 各位大大好 : 小弟之前在實做一個刪除檔案的程式 : 我已經將要刪除的檔案名稱列表都存到陣列@files中, : 但利用迴圈跑unlink時,卻變成無窮迴圈? : 如下: : while(@files){ : unlink($_); : } : 但執行下去變成無窮迴圈檔案也未刪除? : 用for卻可以正常執行! : 百思不得其解 : 想請教板上的大大們,是否小弟做法有誤? : while與for不是一樣功能? : 用while無法執行嗎? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.24.37

03/14 13:25, , 1F
或是 unlink @files; (逃)
03/14 13:25, 1F

03/15 00:27, , 2F
unlink也太妙了,推樓上!
03/15 00:27, 2F

03/16 18:44, , 3F
差點忘了 unlink 也可以吃 List :p
03/16 18:44, 3F

03/23 22:11, , 4F
感謝各位大大的解說,小弟受教了
03/23 22:11, 4F
文章代碼(AID): #1Bd6QOiI (Perl)
文章代碼(AID): #1Bd6QOiI (Perl)