[perl]如何在我自己的路径中强制perl使用模块?

zdd*_*zdd 2 perl dbi perl5

我想让perl在我自己的路径中使用DBI模块(假设,/ home/users/zdd/perl5/lib/DBI),但是sysem也有一个DBI模块,它是/ usr/lib/perl5/lib/DBI .当我在我的脚本中编写以下代码时,perl使用系统路径是默认的,如何强制它使用我的路径下的那个?

use lib './perl5/lib/DBI';
use DBI;

sub test {
....
}
Run Code Online (Sandbox Code Playgroud)

/ usr/lib/perl5/lib/DBI被添加到我的bash配置文件中的PATH环境变量中,它被许多脚本使用,因此我无法禁用它.

小智 6

DBI模块的文件位于./perl5/lib.所以你的道路并没有指向它.

DBI文件夹包含子模块DBI,例如DBI::Foo(::模块名称是模块目录结构的表示).

请尝试使用./perl5/lib您的库.

此外,如果当前目录不是您认为的那样,则使用相对路径将失败.如果您有疑问,请调用cwd脚本以查看当前目录是什么.

出于调试目的,使用它可能会有所帮助:

no lib '[main Perl module library path here]';
Run Code Online (Sandbox Code Playgroud)

这样您就可以确定您只使用自定义模块路径.任何找不到模块的失败都会导致错误,而不是静默使用系统版本.

更新:有关更多信息,请参阅Perldoc onuse lib.Perl 使用您首先指定的库.如果没有,则表示它实际上没有在您给出的位置找到该模块.