Есть способ выяснить, что на самом деле делает ваш однострочник. Модуль B :: Deparse может показать вам, как perl интерпретировал ваш исходный код. Это на самом деле из пространства имен O (заглавная буква O, а не ноль), которое вы можете загрузить с помощью -M
( ikegami объясняет это на Perlmonks ):
$ perl -MO=Deparse -ne 'while(<>){print}' foo bar
LINE: while (defined($_ = readline ARGV)) {
while (defined($_ = readline ARGV)) {
print $_;
}
-e syntax OK
Хех, поиск в Google для ссылка на модуль показывает Я писал об этом для The Effective Perler . Тот же пример. Полагаю, я не настолько оригинален.
Если вы не можете изменить командную строку, возможно, потому что она находится в середине большого скрипта или чего-то еще, вы можете установить опции в PERL5OPT
. Затем эти параметры длятся только сеанс. Я ненавижу менять оригинальные сценарии, потому что кажется, что независимо от того, насколько я осторожен, я что-то напутал (сколько раз мой мозг говорил мне: «Эй, тупица, ты знаешь, что такое ветка git, так что ты должен был использовать это» первая "):
$ export PERL5OPT='-MO=Deparse'