我最近接触了一些 Perl 代码,它的某些方面对我来说仍然难以捉摸。就是这个:
@collection = <*>;
我知道 at-symbol 定义collection
为一个数组。我也搜索了一下,并登陆了 perldoc,特别是关于I/O Operators的部分。我发现空文件句柄特别有趣;代码如下。
while (<>) {
...
}
在同一主题上,我还注意到这种语法也是有效的:
while (<*.c>) {
...
}
根据 perldoc 它实际上是在调用一个内部函数,该函数glob
以类似于以下代码的方式调用:
open(FOO, "echo *.c | tr -s ' \t\r\f' '\\012\\012\\012\\012'|");
while (<FOO>) {
...
}
问题
第一行中提到的小于、星号、大于 ( <*> ) 符号实际上是做什么的?它是对内部开放和引用的 glob 的引用吗?会不会是特殊情况,例如空文件句柄?或者它可以是完全不同的东西,比如遗留实现?