2012-08-06 64 views
8
while(<@thisArray>) 

有誰知道這會做什麼?我們只是在其上有一個討論,因爲它的代碼通常是這樣的:while(<@array>)perl的效果

while(<STDIN>) 
+0

它不應該做任何事情,因爲'@ array'不是文件句柄的名字,它是一個數組的名稱。 – SexyBeast 2012-08-06 18:10:27

回答

6

<@thisArray>作品glob(@thisArray)。因此它給出了與數組成員匹配的所有文件的列表。

如果數組的元素與文件不匹配,則返回元素本身。

10

它將遍歷與@thisArray中的模式相匹配的文件名。的perl -MO=Deparse -e '1 while(<@thisArray>)'

結果表明,<>轉換爲glob:通過這樣的文件名的擴展

在標量環境,水珠迭代,爲undef返回時的列表耗盡:

use File::Glob(); 
'???' while defined($_ = glob(join($", @thisArray))); 

glob手冊。爲$"

缺省值是空間,因此從@thisArray多個圖案將被結合成單一的字符串,然後分裂回由空間內部glob

注意水珠按空白進行分割,並且每個對待它的參數細分爲獨立模式。

+0

非常感謝。我正在使用它進行計數,所以計數會一直沒有結果。 – Psyllex 2012-08-06 18:28:18

5

參見perlop

如果角度括號內什麼是既不是文件句柄,也不含有一個文件句柄名,類型團,或 類型團參考 簡單的標量變量,它被解釋爲一個文件名模式爲 globbed

+1

用於perlop鏈接 – DVK 2012-08-06 19:08:19

相關問題