使用pp编译perl源

时间:2012-01-09 01:47:43

标签: perl compilation executable exe runtime-error

我有一个功能完善的perl脚本(用debian linux上的bash终端编写)在使用pp编译时无法执行(在linux或windows上)。这可能与构建中的未满足的依赖关系有关,但我相信以下命令将所有依赖关系打包到可执行文件中:

    pp -o out.exe in.pl

当我说它完全正常运行时,我的意思是如果我从bash终端调用./in.pl,那么生成的预期输出没有错误。

我想创建一个可在linux或windows上运行的可执行文件(如果每个操作系统都需要一个单独的文件,那就这样吧。)

这些是包含在源中的包:

use strict;
use warnings;
use charnames ":short";
binmode(STDOUT,":utf8");
use Term::ANSIColor;
use Number::Format;
use Finance::Quote;
use Finance::QuoteHist;
use Date::Manip;     # this may be included by Finance::QuoteHist

如果有帮助,这是我收到的错误消息(警告,它很长):

ERROR: [config_var] invalid zone in SetDate
ERROR: [config_var] invalid zone in SetDate
Could not load either Text::CSV_XS or Text::CSV_PP : Can't locate Text/CSV_PP.pm in @INC (@INC contains: CODE(0x1422320) /tmp/par-username/cache-addd1cc2ee9285c150584c1853c2b67c0c482e7e/inc/lib /tmp/par-username/cache-addd1cc2ee9285c150584c1853c2b67c0c482e7e/inc CODE(0x11675b0) CODE(0x116ebc8)) at (eval 30) line 2.
BEGIN failed--compilation aborted at (eval 30) line 2.
at Finance/QuoteHist.pm line 13
Compilation failed in require at Finance/QuoteHist.pm line 13.
BEGIN failed--compilation aborted at Finance/QuoteHist.pm line 13.
Compilation failed in require at script/in.pl line 10.
BEGIN failed--compilation aborted at script/in.pl line 10.

从运行时错误判断,问题可能与未满足的递归依赖关系有关(例如,Finance :: QuoteHist中的依赖关系)。也许这些递归依赖应该明确包含在内?这是我第一次尝试将perl编译成可执行文件,所以感谢您提供的任何指导。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用-x标记pp,如in the docs所示。它运行脚本并检查依赖关系,这比简单地扫描依赖关系更准确。我在使用Tk时需要这个,它可以创造奇迹。