while(< @ array>)对perl的影响

时间:2012-08-06 18:03:53

标签: perl while-loop

while(<@thisArray>)

有谁知道这会做什么?我们只是在讨论它,因为代码通常是这样的:

while(<STDIN>)

3 个答案:

答案 0 :(得分:10)

它将遍历与@thisArray中的模式匹配的文件名。

perl -MO=Deparse -e '1 while(<@thisArray>)'的结果显示<>已转换为glob

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

来自glob手册:

  

在标量上下文中,glob遍历此类文件名扩展,在列表耗尽时返回undef。

$"的默认值为空格,因此@thisArray中的多个模式将合并为单个字符串,然后按glob内的空格拆分:

  

请注意,glob将其参数拆分为空格,并将每个段视为单独的模式。

答案 1 :(得分:6)

<@thisArray>的作用为glob(@thisArray)。因此,它提供了与数组成员匹配的所有文件的列表。

如果数组的元素与文件不匹配,则返回元素本身。

答案 2 :(得分:5)

请参阅perlop

  

如果尖括号内的内容既不是文件句柄也不是文件句柄   包含文件句柄名称,typeglob或的简单标量变量   typeglob引用,它被解释为文件名模式   匹配替换的