Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正确的要求路径perl_Perl_Path_Require - Fatal编程技术网

正确的要求路径perl

正确的要求路径perl,perl,path,require,Perl,Path,Require,我有一个perl脚本myscript.pl和配置文件myscript.conf。两者都在同一个目录中,我已经通过require'myscript.conf'将conf包含在myscript.pl中 如果我像/myscript.pl那样运行myscript,它可以正常工作。如果使用完整路径运行,如/full/path/myscript.pl,则会引发错误 无法在@INC中找到myscript.conf 如何解决此问题?添加 use lib '/full/path/' 在课程开始时。这会将路径添加

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

如果我像
/myscript.pl
那样运行myscript,它可以正常工作。如果使用完整路径运行,如
/full/path/myscript.pl
,则会引发错误

无法在@INC中找到myscript.conf

如何解决此问题?

添加

use lib '/full/path/'

在课程开始时。这会将路径添加到
@INC

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

添加相对于脚本本身位置的库位置的规范方法是使用模块,如下所示

use FindBin;
use lib $FindBin::Bin;

require 'myscript.conf';

或者,可以使用
PERL5LIB=/full/path//full/path/myscript.pl
而不是编辑文件。我无法确定完整路径。用户可以在任何目录中部署脚本并运行它。@Harikrishnan,因此您应该添加一个shell脚本,在运行程序之前更改目录。这只是路径问题。我认为代码与此无关。@Harikrishnan这不是寻求帮助的最有效方式。显示代码将是一个优势。