作者kornelius (c9s)
看板Perl
標題Re: [問題] 利用while迴圈跑陣列變無窮迴圈?
時間Sun Mar 14 12:31:18 2010
因為 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
推 LyinZ:或是 unlink @files; (逃) 03/14 13:25
推 zard1989:unlink也太妙了,推樓上! 03/15 00:27
→ kornelius:差點忘了 unlink 也可以吃 List :p 03/16 18:44
推 adbro:感謝各位大大的解說,小弟受教了 03/23 22:11