3

我正在使用PAR::Packer模块来创建使用该Unicode::GCString模块的 Perl 脚本的 Windows 可执行文件。

脚本的精简版本如下:

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

我收到错误

无法通过 script/mwe.pl 第 6 行的包“Unicode::GCString”定位对象方法“new”

经过审查AppData\Local\Temp\par-xxxxxx\cache-xxxxx\inc\lib,我相信它Unicode::GCString是存在的,原样Unicode::LineBreak

有没有人对如何解决这个问题有任何想法?

4

1 回答 1

3

一个解决方案是使用这个版本的“pp”,我称之为“ppp.pl”

$ENV{PAR_VERBATIM}=1;
system 'pp', @ARGV;

https://metacpan.org/pod/distribution/PAR/lib/PAR/Environment.pod#PAR_VERBATIM的详细信息

原因与此错误有关 PAR-Packer 的错误 #38271:PodStrip 不会剥离“=encoding utf8”,这会导致 pp 生成的可执行文件无法执行

也是 Unicode::GCString 中的样板文件

于 2017-04-29T01:40:07.960 回答