while(<@thisArray>)
有谁知道这会做什么?我们只是在讨论它,因为代码通常是这样的:
while(<STDIN>)
答案 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引用,它被解释为文件名模式 匹配替换的