_LINE__在这个Perl单线程中是否经常折叠?

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下运行.

cho*_*oba 5

__LINE__ 对应于Perl源中的行号,而不是输入文件中的行号.