从非标准目录加载 Perl 模块

Loading Perl Modules from non-standard directories

如何使用非标准目录加载 Perl 模块?

我从cpan网站下载trace模块,放到非标准目录下(/home/nrama/perl-script)。但它在执行以下脚本时不会占用我的非标准目录。请让我知道如何解决这个问题。

跟踪模块URL:

https://metacpan.org/pod/release/JV/Debug-Trace-0.05/lib/Debug/Trace.pm

错误:

shift.pl 第 3 行语法错误,靠近 "use Trace." 由于编译错误,shift.pl 的执行中止。

示例脚本:-

use strict;
use lib ("/home/nrama/perl-script");
use Trace.pm;

func('Nataraj', 'vino', 'mano' );
sub func {
my $name_1 = shift;
my $name_2 = shift;
my $name_3 = shift;
print "say hello to $name_1 $name_2 $name_3\n";
}

注意:使用 perl,v5.6.0

use Trace.pm;

不是有效的 Perl,因此是语法错误。应该是

use Debug::Trace;

此外,在脚本中对绝对路径进行硬编码是没有意义的。你应该删除

use lib ("/home/nrama/perl-script");

并在登录脚本中将环境变量 PERL5LIB 设置为该路径

export PERL5LIB="$HOME/perl-script"

或者替换成脚本的相对路径如

use FindBin qw( $RealBin );
use lib $RealBin;

use FindBin qw( $RealBin );
use lib "$RealBin/lib";