Изучая альтернативный ответ на вопрос о текущем номере строки файла Сарати, я написал этот однострочник с ожиданием, что он напечатает первая строка всех предоставленных файлов:
$ 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.