正确的要求路径 perl

Correct require path perl

我有一个 perl 脚本 myscript.pl 和配置文件 myscript.conf。两者都在同一个目录中,我通过 require 'myscript.conf';

将 conf 包含在 myscript.pl

如果我 运行 myscript 喜欢 ./myscript.pl ,它工作正常。如果我 运行 具有像 /full/path/myscript.pl 这样的完整路径,它会引发错误

Can't locate myscript.conf in @INC

我该如何解决这个问题?

添加

use lib '/full/path/'

在程序的开头。这会将路径添加到 @INC

错误不是因为你在运行程序时使用了完整路径,而是因为当前工作目录与脚本的位置不同.当前目录 . 出现在 @INC 中,因此 perl 将始终在那里寻找模块,但当前目录必须正确才能找到它们。

添加相对于脚本本身位置的库位置的规范方法是使用 FindBin 模块,像这样

use FindBin;
use lib $FindBin::Bin;

require 'myscript.conf';