我正在使用 PAR::Packer 模块创建一个使用 Unicode::GCString
模块的 Perl 脚本的 Windows 可执行文件。
脚本的精简版本如下:
文件
#!/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
我收到错误
审查
AppData\Local\Temp\par-xxxxxx\cache-xxxxx\inc\lib
后,我相信 Unicode::GCString
和 Unicode::LineBreak
都存在。有没有人对如何解决这个问题有任何想法?
最佳答案
一个解决方案可以是使用这个版本的“pp”,我称之为“ppp.pl”
$ENV{PAR_VERBATIM}=1;
system 'pp', @ARGV;
https://metacpan.org/pod/distribution/PAR/lib/PAR/Environment.pod#PAR_VERBATIM 的详细信息
原因与这个bug有关 Bug #38271 for PAR-Packer: PodStrip does not strip "=encoding utf8" which cause the executable generated by pp failed to exec
还有 Unicode::GCString 中的样板文件
关于Perl:带有 Unicode::GCString 的 par packer 可执行文件,无法定位对象方法 "new",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43549240/