【发布时间】:2018-08-21 01:50:42
【问题描述】:
在探索 sarathi 的 current file line number question 的替代答案时,我写了这个单行字,期望它会打印提供的所有文件的第一行:
$ 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 下运行。
【问题讨论】:
-
检查我的编辑以打印所有文件的第一行。
标签: perl constantfolding