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 で実行します。