回顾一些最近的问题,我看到了以下尴尬的构造:
open my $IN, "<", 'file' or die "can't read from 'file'. $!";
foreach my $line (<$IN>) {
...
}
(我熟悉的成语是while (my $line = <$IN>) {...}
。)
我的问题是,foreach
成语是否强制<>
进入列表上下文,因此要求解释器篡改整个文件?
答案 0 :(得分:3)
是
foreach循环的列表表达式在列表上下文中计算。有一些优化(例如for ($x..$y)
和for (@a)
使用“无”内存),但for (readline($FH))
未优化。