Perl on Windows - Функция открытия завершается неудачно, когда тип кодирования хранится в переменной и используется PAR :: Packer - PullRequest
1 голос
/ 16 апреля 2020

У меня есть скрипт, который отлично работает при использовании 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.

Спасибо вы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...