2016-03-01 69 views
1

我有一个Perl脚本test.pl,它包含另一个Perl模块fact.pm,它位于crypt/Module目录下。 隐窝/ test.pl的源代码是:PAR包装器不包括用户定义的模块

#!/usr/bin/perl 
use Term::ANSIColor qw(:constants); 
use File::Path; 
use POSIX qw(strftime); 
use File::Basename qw(dirname); 
use Cwd qw(abs_path); 
use lib dirname(dirname abs_path $0); 
use crypt::Module::fact qw(factorial); 

&factorial();#function present in fact.pm 
print("Thanks for that thought \n"); 

给出的PAR打包机命令

pp -M Module::fact -o test test.pl 

抄袭只是一个不同的目录路径上的可执行测试和执行它我收到以下错误:

Can't locate crypt/Module/fact.pm in @INC (you may need to install the crypt::Module::fact module) 

如何将模块包含在可执行文件中?

回答

0

首先,我建议使用pp实用程序的-c和/或-x选项,它用于“确定附加的运行时依赖性”。我养成了使用两者的习惯。

虽然您正在使用-M选项来添加模块,但我认为您有该选项的拼写错误。在你的代码中,你使用的是“crypt :: Module :: fact”模块,但你使用-M选项指定了“Module :: fact”模块。也许如果你使用“-M crypt :: Module :: fact”而不是“-M Module :: fact”,你的问题可能会被解决。

此外,您可能需要使用-I(或-lib)指定任何其他模块库目录的路径。