perl - 如何包含位于不同目录中的 Perl 模块?

标签 perl module

如何包含位于不同目录中的 Perl 模块?它必须是包含它的模块的相对路径。

我已经尝试过

push ( @INC,"directory_path/more_path");

还有

push ( @INC,"directory_path\\more_path");

最佳答案

编辑:首先提出正确的解决方案,最初来自 this question 。它是唯一一个相对于模块目录进行搜索的:

use FindBin;                 # locate this script
use lib "$FindBin::Bin/..";  # use the parent directory
use yourlib;

还有许多其他方法可以搜索相对于当前目录的库。您可以使用 -I 参数调用 perl,传递另一个模块的目录:

perl -I.. yourscript.pl

您可以在 Perl 脚本顶部附近添加一行:

use lib '..';

您可以在运行脚本之前修改环境变量 PERL5LIB:

export PERL5LIB=$PERL5LIB:..

push(@INC) 策略也可以工作,但必须将其包装在 BEGIN{} 中,以确保推送在模块搜索之前运行:

BEGIN {push @INC, '..'}
use yourlib;

关于perl - 如何包含位于不同目录中的 Perl 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/841785/

相关文章:

perl - 在perl中使用替换运算符跳过字符串中的特定位置

sql - ConcatRelated() 函数在表单上提供唯一值

swift - 许多目标中的相同扩展

javascript - 使用 Rollup.js 导出函数列表 - ECMA6 模块

ios - AIR 模块 + iOS

xml - 在 Perl 中组装 XML

windows - 我如何确保使用 Perl 的 Imager::Screenshot 截取特定窗口的屏幕截图?

python - 计算表中存在或不存在某个因素的组合

macos - Perlbrew 找不到 @INC

javascript - 变量声明是否成为 ecmascript 6 模块中窗口的属性?