Мне нужно отладить старый perl скрипт, который, по-видимому, устанавливает версию perl способом, который я не понимаю ...
: # use perl
eval 'exec perl -S $0 ${1+"$@"}'
if 0;
perl -h
говорит, что -S
означает «искать программный файл с помощью переменной окружения PATH». $0
- текущая программа. И я читал, что $@
означает «Сообщение об ошибке синтаксиса Perl из последней команды eval
». Но почему они добавляют к этому единицу? И как все это сочетается? Что он делает?
Часть того, что мне нужно отладить, связано с тем, что он выбирает старую версию perl, которая мне не нужна. Для всего остального мы используем #!/usr/bin/env perl
, который, как я подозреваю, может делать то же самое. Я также подозреваю, что мое решение может ie исправлять $PATH
(или предотвращать обман кода, который обманывает его). Но я хотел бы go здесь, чтобы лучше понять, как сейчас выбирается версия.
Спасибо за любую помощь!