【问题标题】:Correct require path perl正确的需要路径 perl
【发布时间】:2015-07-06 21:00:54
【问题描述】:

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

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

Can't locate myscript.conf in @INC

我该如何解决这个问题?

【问题讨论】:

  • 只是路径的问题。我认为这里的代码无关紧要。
  • @Harikrishnan 这不是寻求帮助的最有效方式。显示代码将是一个优势。

标签: perl path require


【解决方案1】:

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

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

use FindBin;
use lib $FindBin::Bin;

require 'myscript.conf';

【讨论】:

    【解决方案2】:

    添加

    use lib '/full/path/'
    

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

    【讨论】:

    • 或者,可以使用PERL5LIB=/full/path/ /full/path/myscript.pl 而不是编辑文件。
    • 我无法确定完整路径。用户可以在任意目录部署脚本并运行。
    • @Harikrishnan 所以你应该添加一个 shell 脚本,在运行程序之前更改目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多