这是我的文件夹结构:
XFolder/
XFolder/YFolder/
XFolder/YFolder/package1.pl
XFolder/package2.pl
在package2.pl
中,我有:
package X::Pa2
在package1.p1
中,我有:
package X::Y::Pa1
在package1.pl
中,当我这样做时:
use X::Pa2;
我得到
Can't locate X/PA2.pm in @INC (you may need to install the X::Pa2 module)
如何修复它?
我知道问题在哪里,我尝试使用Google提供帮助,但我无法将X::Pa2
添加到我的@INC
中,我不知道Perl Expertes是否有更标准的解决方案
模块应具有.pm
扩展名,并且文件的名称应与包的名称匹配。
修复:
mkdir -p X
mv XFolder/package2.pl X/Pa2.pm
mkdir -p X/Y
mv XFolder/YFolder/package1.pl X/Y/Pa1.pm
这些路径需要相对于@INC
中的某些路径。
如果使用这些模块我的多个脚本,请在您的登录脚本中添加以下内容:
export PERL5LIB=/path/to/lib
如果这些模块仅由一个脚本使用,而基本目录是脚本所在的目录,请在脚本中添加以下内容:
use FindBin 1.51 qw( $RealBin );
use lib $RealBin; # Or maybe: use lib "$RealBin/lib";
或
use Cwd qw( abs_path );
use File::Basename qw( dirname );
use lib dirname(abs_path($0)); # Or maybe: use lib dirname(abs_path($0))."/lib";