while(<@thisArray>)
有谁知道这到底会做什么?我们只是在讨论它,因为它的代码通常是这样的:
while(<STDIN>)
它将遍历与@thisArray
.
转换为的perl -MO=Deparse -e '1 while(<@thisArray>)'
显示结果:<>
glob
use File::Glob ();
'???' while defined($_ = glob(join($", @thisArray)));
从glob
手册:
在标量上下文中,glob 遍历此类文件名扩展,当列表用完时返回 undef。
默认值为$"
空格,因此来自的多个模式@thisArray
将被连接成单个字符串,然后在内部被空格拆分glob
:
请注意,glob 在空格上拆分其参数并将每个段视为单独的模式。
<@thisArray>
作为glob(@thisArray)
. 因此它给出了与数组成员匹配的所有文件的列表。
如果数组的元素与文件不匹配,则返回元素本身。
见perlop:
如果尖括号中的内容既不是文件句柄,也不是包含文件句柄名称、typeglob 或 typeglob 引用的简单标量变量,则将其解释为要通配的文件名模式