【问题标题】:FindBin for perl modules that reside in my script's directoryFindBin 用于驻留在我的脚本目录中的 perl 模块
【发布时间】:2011-12-11 19:06:00
【问题描述】:

我有一个脚本,它使用标准 Perl 库外部的模块,并希望以某种方式使用它们。我没有权限将它们安装到 Perl lib 目录中,我想知道是否可以将这些外部模块驻留在我的脚本目录中。

我已阅读有关使用 FindBin 的信息,但它似乎不起作用。我使用正确吗?

现在我想使用 3 个我想使用的模块(2 个是目录)。所以假设我的脚本在 Dir1 中,那么我的模块将在 Dir1 的一个名为 Dir2 的子目录中。

那么假设 FindBin 找到 Dir1,那么我要做的就是这个?

use FindBin '$Bin';
use Dir2 "$Bin/Dir2";
use Dir2::SubDir_ofDir2_1::Module1;
use Dir2::Module2;
use Dir2::Module3;

我的程序似乎在运行,但它什么也没做。所以我很确定它没有正确导入模块。

谢谢

【问题讨论】:

标签: perl


【解决方案1】:

正确的做法很可能是:

use lib "$FindBin::Bin/Dir2";
use SubDir::Module1;

或:

use lib $FindBin::Bin;
use Dir2::Subdir::Module;

两者都会找到文件,然后行为将取决于模块是否将自己声明为 package Dir2 内部。

查看FindBinlib 的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2022-07-31
    • 1970-01-01
    相关资源
    最近更新 更多