У меня есть скрипт, который отлично работает при использовании Perl, но не работает, когда я конвертирую его в .exe с помощью PAR :: Packer и запускаю его (все это на Windows);
проблема возникает только когда я сохраняю тип кодировки, чтобы открыть файл в переменной. Пример:
my $enc= "utf8";
open my $FH, "<:encoding( $enc )", $ARGV[0]
or die "$!";
Предполагается, что файл, который я передаю, существует .... Этот код завершается ошибкой каждый раз, независимо от того, какой тип кодировки или тип переменной я использую для хранения типа кодировки. Это работает, только если я жестко закодирую кодировку в открытой функции (например: <: encoding (utf8) "). Я получаю "<strong> Нет такого файла или каталога " от $! когда это не удается.
Как это может быть? Не уверен, почему это не получится при использовании PAR :: Packer, но он работает нормально, когда я запускаю его напрямую, используя Perl.
Мой обходной путь - использовать binmode после функции open, но это меня не убивает чтобы понять, почему приведенный выше код не работает.
Я использую Perl 5.30.2 для Windows 10. Я также использую последнюю версию pp.
Спасибо вы