Может ли кто-нибудь объяснить разницу между вызовом Perl-скрипта через ассоциацию файлов и явным вызовом того же скрипта через perl.exe
?
По-видимому, перенаправление ввода-вывода не очень хорошо работает, когда скрипт вызывается через ассоциацию файлов, и мне очень хотелось бы знать, почему.
Например. взгляните на Часто задаваемые вопросы об Activestate для Perl в Windows . Пример cat file
работает отлично, пока скрипт не получает входные данные через перенаправление. Так
cat file.txt
работает как положено, но
whoami | cat.pl
не. Мало того, что необходимо расширение .pl
, но, очевидно, вывод whoami
не передается в сценарий. Скрипт запущен (что можно проверить, изменив пример скрипта cat.pl
), но по какой-то причине он не получает на вход вывод whoami
.
Однако, если я вызову скрипт следующим образом:
whoami | perl cat.pl
все работает как положено.
Таким образом, очевидно, есть важное различие между запуском скрипта через ассоциацию файлов и явным вызовом perl.exe
с помощью скрипта.
В FAQ упоминается проблема и указывается, что использование pl2bat
для создания обложки bat-файла для скрипта решает проблему, но я не понимаю, зачем это нужно.
Пожалуйста, просветите меня.