2015-04-28 120 views
-1

我有一个perl脚本myscript.pl和配置文件myscript.conf。两者都在同一目录中,我已经包括在myscript.pl通过require 'myscript.conf';正确要求路径perl

conf如果我运行myscript喜欢./myscript.pl,它工作正常。如果我用全路径运行像/full/path/myscript.pl它将引发错误

Can't locate myscript.conf in @INC

我怎样才能解决这个问题?

+1

显示你的代码。 – Jens

+0

这只是一个路径问题。我不认为代码在这里是相关的。 – Harikrishnan

+0

@Harikrishnan这不是求助的最有效方式。显示代码将是一个优势。 –

回答

4

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

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

use FindBin; 
use lib $FindBin::Bin; 

require 'myscript.conf'; 
1

添加

use lib '/full/path/' 

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

+0

或者,可以使用'PERL5LIB =/full/path// full/path/myscript.pl'来代替编辑文件。 – rubikonx9

+0

我无法确定完整路径。用户可以在任何目录中部署脚本并运行它。 – Harikrishnan

+0

@Harikrishnan所以你应该添加一个shell脚本,在运行该程序之前更改目录。 – Jens