Perl: исполняемый файл упаковщика с Unicode::GCString, не удается найти метод объекта "new"
Я использую модуль PAR::Packer для создания исполняемого файла Windows скрипта Perl, который использует Unicode::GCString
модуль.
Укороченная версия скрипта выглядит следующим образом:
mwe.pl
#!/usr/bin/env perl
use strict;
use warnings;
use Unicode::GCString;
my $gcs = Unicode::GCString->new("hello world");
print $gcs->columns();
exit(0);
Когда я бегу
perl mwe.pl
вывод дает "ширину" строки:
11
что, как и ожидалось.
я создаю mwe.exe
используя команду
pp -o mwe.exe mwe.pl
и когда я бегу
mwe.exe
Я получаю ошибку
Не удается найти метод объекта "new" через пакет "Unicode::GCString" в строке script/mwe.pl 6
Рассмотрев AppData\Local\Temp\par-xxxxxx\cache-xxxxx\inc\lib
, Я полагаю, что Unicode::GCString
присутствует, как есть Unicode::LineBreak
,
У кого-нибудь есть идеи как это исправить?
1 ответ
Решением может быть использование этой версии "pp", я называю это "ppp.pl"
$ENV{PAR_VERBATIM}=1;
system 'pp', @ARGV;
Подробности на https://metacpan.org/pod/distribution/PAR/lib/PAR/Environment.pod#PAR_VERBATIM
Причина связана с этой ошибкой. Ошибка #38271 для PAR-Packer: PodStrip не удаляет "=encoding utf8", из-за чего исполняемый файл, сгенерированный pp, не может быть выполнен
Также образец внутри Unicode::GCString