在探索 sarathi 的当前文件行号问题的替代答案时,我写了这个单行代码,期望它会打印提供的所有文件的第一行:
$ perl -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
这没有按预期工作;所有的行都被打印出来了。
运行单行-MO=Deparse
显示条件不存在。我认为这是因为它在编译时已被常量折叠:
$ perl -MO=Deparse -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
LINE: while (defined($_ = <ARGV>)) {
print "$ARGV : $_";
}
-e syntax OK
但为什么?
在 Perl 5.8.8 下运行。