Perl - 从主脚本中的其他目录获取模块的绝对路径

all*_*cer 0 perl module getcwd

我创建了一个简单的 perl 脚本,它分为 2 个文件 -main.plcontent.pm 脚本放置在Project目录中,content.pm(模块)放置在Project/utils目录中。现在我想使用我content.pm制作main.pl的类似的东西来使用这个模块:

use Cwd;
use lib Cwd::abs_path(getcwd()."/utils");
use utils::content;
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,我会得到一个错误:

Cant locate utils/content.pm in 
@INC (you may need to install the utils::content module) 
@INC contains: /Perl/utils /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 ...) 
at ./main.pl line 10.
Run Code Online (Sandbox Code Playgroud)

是否可以使用 content.pm 运行此 main.pl 脚本而不会出现错误?也许我不应该使用getcwd()(我认为它使用工作目录而不是abs_path,但我不确定)?

Sob*_*que 5

我想你正在寻找的是FindBin

具体来说:

use FindBin qw( );
use lib $FindBin::RealBin."/utils"; 
use content; 
Run Code Online (Sandbox Code Playgroud)

  • 注意:这假设 OP 在 `content.pm` 中使用了 `package content;` 而不是 `package utils::content;`。 (2认同)