如何在从其他目录启动时包含perl模块?

时间:2014-12-25 19:43:49

标签: perl

我正在写一些perl脚本,我想要包含模块。当我在script.pl所在的目录中时,一切都很好。但是,当我尝试从其他目录启动我的脚本时,它说它无法找到我的模块。我的包含如下:

use Functions qw(translateWord sendHelp);

并且带有模块的文件名为Functions ..我试过这样的事情:

use lib '..';

但它也失败了......我也试过了:

use Cwd 'abs_path';
BEGIN {
    my $dir = abs_path($0);
    use lib "$dir";
}

但又失败了..我也试过了:

use Cwd 'abs_path';
my $dir = abs_path($0);
use lib $dir;

但仍然失败..我是Perl的新手。

提前致谢!

2 个答案:

答案 0 :(得分:3)

实现这一目标的规范方法是使用'use lib'。使用..的库并不理想,因为它在调用脚本时与当前工作目录相关。

实现此目的的方法是使用FindBin

E.g。

use FindBin;

use lib $FindBin::Bin."/../";

从脚本的“基本位置”遍历目录级别。

答案 1 :(得分:0)

试试这个:

BEGIN{
    unshift @INC, '/FULL/PATH/TO/DIR/OF/YOUR/MODULE';
}