Я использую ActiveState Perl 5.10.1 в Windows XP.
Следующая программа выполняется, но не выводит в командной строке:
#!c:/perl/bin/perl.exe
use strict;
use warnings;
print "foo\n";
Если я удалю строку shebang, я получу «foo» в качестве вывода, как и ожидалось.
Я получаю тот же результат, если выполняю, используя только ассоциацию файлов (foo.pl
), ссылаясь на perl через PATH (perl foo.pl
) или даже напрямую ссылаясь на исполняемый файл perl (c:\perl\bin\perl.exe foo.pl
).
Я не понимаю, почему сценарий работает без строки shebang, но я не получаю вывода, когда присутствует строка shebang. Насколько я понимаю, строка shebang не является строго необходимой для Perl в Windows, но это считается хорошей практикой, если вы хотите использовать такие переключатели, как _5 _...
Нет никакой разницы, если я явно сделаю дескриптор STDOUT, т.е. print STDOUT "foo\n";
Это сводит меня с ума; любые советы будут оценены.
perl -0777nE"say unpack 'H*', $_" foo.pl
(шестнадцатеричный дамп файла). - person ikegami   schedule 07.06.20132321633a2f7065726c2f62696e2f7065726c2e6578650d0d757365207374726963743b0d757365207761726e696e67733b0d0d7072696e742022666f6f5c6e223b0d0d
- person GainfulShrimp   schedule 07.06.20132321633a2f7065726c2f62696e2f7065726c2e6578650a0a757365207374726963743b0a757365207761726e696e67733b0a0a7072696e742022666f6f5c6e223b0a0a
- person GainfulShrimp   schedule 07.06.2013