我目前正在使用 PAR Packer (pp) 来打包几个 pl 脚本,这样它们就可以被复制到一台机器上并“正常工作”,而我的客户不必使用 CPAN。
不幸的是,PAR Packer 不适用于深度依赖。例如,脚本导入 CHI::Driver::File 但没有显式导入 CHI::Driver::File 所需的 Log::Any::Adapter::Null。PAR 不选择此依赖项,运行生成的脚本将崩溃并显示以下错误消息:
Can't locate Log/Any/Adapter/Null.pm in @INC (@INC contains: CODE(0x874aab8) /tmp/par-apache/cache-7b4508ab92efb43271da1629e8eb654c1572cc55/inc/lib /tmp/par-apache/cache-7b4508ab92efb43271da1629e8eb654c1572cc55/inc CODE(0x87e8f54) CODE(0x87e9194)) at (eval 215) line 3.
Compilation failed in require at CHI/Driver/File.pm line 11.
BEGIN failed--compilation aborted at CHI/Driver/File.pm line 11.
我的解决方法是显式导入“Log::Any::Adapter::Null”,但必须有更好的方法。也许这是 PAR Packer 的一个错误?我已经安装了最新版本(0.994)。