8
while(<@thisArray>)

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

while(<STDIN>)
4

3 回答 3

10

它将遍历与@thisArray.

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

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

glob手册:

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

默认值为$"空格,因此来自的多个模式@thisArray将被连接成单个字符串,然后在内部被空格拆分glob

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

于 2012-08-06T18:14:39.067 回答
6

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

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

于 2012-08-06T18:14:04.387 回答
5

perlop

如果尖括号中的内容既不是文件句柄,也不是包含文件句柄名称、typeglob 或 typeglob 引用的简单标量变量,则将其解释为要通配的文件名模式

于 2012-08-06T18:19:11.177 回答