我正在使用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
我收到错误
在 脚本/MWE.PL行6
审查了AppDataLocalTemppar-xxxxxxcache-xxxxxinclib
,我相信Unicode::GCString
与Unicode::LineBreak
一样。
有人对如何解决此问题有任何想法吗?
解决方案可以是使用此版本的" pp"我称之为" ppp.pl"
$ENV{PAR_VERBATIM}=1;
system 'pp', @ARGV;
详细信息:https://metacpan.org/pod/distribution/par/lib/par/par/environment.pod#par_verbatim
原因与PAR包装器的此错误#38271有关:PODSTRIP不剥离" =编码UTF8",这会导致PP生成的可执行文件无法执行
也在Unicode :: GCString内部的样板