我正在使用 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::GCStringUnicode::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/

10-12 18:14