首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pp的正确调用是什么来打包这个目录结构?

pp的正确调用是什么来打包这个目录结构?
EN

Stack Overflow用户
提问于 2014-02-06 19:41:31
回答 1查看 115关注 0票数 2

我知道这里还有另外两个问题是针对同样的事情,但我的问题来自于实际尝试那里的建议,并希望从那时起有一些其他选择对人们有效。

设置是这样的:我有一个包含多个模块的应用程序,我想与安装了Strawberry Perl发行版的Windows计算机上的某个人共享。

它的结构是这样的:

代码语言:javascript
复制
PerlApp
 lib
   Base
     Base.pm
     Gui.pm
   Db
     Db.pm
     records.db
   Parser
     Parser.pm
   Utils
     Utils.pm
 PerlApp.pl
 Config.txt

所有这些都有两个切入点。我可以使用PerlApp.pl脚本通过cmd行接口运行它,也可以运行包含它的Wx接口的Gui.pm文件。

我正在使用从CPAN安装的几个模块运行Strawberry Perl,该程序使用这些模块。我尝试使用Cava Packager,不幸的是它不支持我用来开发它的perl版本。

我已经尝试过pp,但是打包cmd脚本所产生的可执行文件导致了各种错误。我查阅了文档,但无论如何我都不知道如何使用这个模块来打包一个完整的目录树,或者它是否被支持。(电话簿文档综合征)

我试过了

代码语言:javascript
复制
pp -o app.exe PerlApp.pl

错误是:

代码语言:javascript
复制
The locale codeset (cp1252) isn't one that perl can decode, stopped at Encode/Locale.pm line 94
Compilation failed in require at LWP/UserAgent.pm line 1000
Compilation failed in require at lib/Base/Base.pm line 9

最后的解决方案是打包所有需要的文件,并找出需要在外部机器上安装哪些CPAN模块才能使其工作,最终要求用户自己手动安装它们。

EN

回答 1

Stack Overflow用户

发布于 2014-04-17 22:55:51

在打包perl脚本时,我曾经遇到过与字符集(或Windows上的代码页)相关的类似错误。我到处用谷歌搜索,但没有找到任何直接的答案,但最终我自己找到了答案。

  1. 实际上编码模块能够解码cp1252,真正的问题是Encode::Locale运行时确定适当的字符集,而PP只是在编译时添加必要的依赖项(如果我可以这么说的话)。因此您需要在添加运行时dependencies.
  2. Avoid Encode::Locale的命令中添加-x选项。即使您将必要的解码器pm打包到您的可执行文件中,当它在另一个具有不同字符集的系统上运行时,也会出现类似的错误。我建议您找出代码的哪一行使用Encode::Locale,并找出解决方法。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21601945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档