我的问题如下
我从完全不同的位置运行代码,类似于 ./abc/xyz/blah1/blah2/../../ 。我在这里运行代码。
我已经创建了环境参数
setenv def ./abc/def
setenv xyz ./abc/xyz
Run Code Online (Sandbox Code Playgroud)
我尝试了以下解决方案
Begin { push(@INC, $ENV{def}."/lib" ) }
除了提供我使用的其他库的路径之外,还使用 lib $ENV{xyz}."/lib"
这个解决方案不起作用。我收到错误消息,指出 ./abc/def/lib 中的库未包含在内。
我尝试过 FindBin
# for the libs present in ./abc/def/lib
use FindBin;
use lib "$FindBin::Bin/../../";
use mylib::abc;
use mylib::def;
Run Code Online (Sandbox Code Playgroud)(我尝试在 FindBin 中给出从哪里开始查找的根路径)
我尝试使用不同的组合,但不确定为什么它不起作用。有人可以指出我做错了什么或者我对 FindBin 的理解错误吗?
该FindBin
模块最适合您的需求。要记住的重要一点是$FindBin::Bin
指的是包含脚本的目录。所以当你提到它的时候...
use lib $FindBin::Bin . '/../../etc';
Run Code Online (Sandbox Code Playgroud)
'/../..' 路径必须描述从脚本目录到 lib 目录的路径。
另一个需要考虑的重要事项是错误消息。它将以 - 库搜索路径开始Can't locate Your/Module/Name.pm
,然后继续列出@INC
- 库搜索路径中的所有目录。检查此目录列表以确保它包含您想要添加的 lib 路径。
归档时间: |
|
查看次数: |
403 次 |
最近记录: |