Zai*_*aid 0 perl constantfolding
在探索sarathi 当前文件行号问题的另一个答案时,我写了这个单行,期望它将打印所有提供的文件的第一行:
$ perl -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
Run Code Online (Sandbox Code Playgroud)
这没有按预期工作; 所有的线都印了.
运行单行-MO=Deparse显示表示条件不存在.我假设这是因为它在编译时被恒定折叠:
$ perl -MO=Deparse -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
LINE: while (defined($_ = <ARGV>)) {
print "$ARGV : $_";
}
-e syntax OK
Run Code Online (Sandbox Code Playgroud)
但为什么?
在Perl 5.8.8下运行.