eph*_*ent 14
perl -V
将打印出有关Perl安装的各种属性,包括默认属性@INC
.您应该注意到.
:是的,默认情况下会搜索当前工作目录的模块.
(如果没有,你可以使用环境变量PERL5LIB
或者PERLLIB
,或者-I
在命令行中,或添加sitecustomize.pl
到perl -V:sitelib
).
在回答Cameron和tchrist在其中一个答案的评论中的讨论.
您可以使用此代码段在与脚本相同的目录中使用模块,即使脚本在另一个目录中执行也是如此.
use Cwd 'abs_path';
use File::Basename;
use lib dirname( abs_path $0 );
Run Code Online (Sandbox Code Playgroud)
应该适用于所有情况和所有操作系统.(来源:http://use.perl.org/~Aristotle/journal/33995)
最近出现了一些理由不依赖.
于被@INC
比平常多,即此默认行为被安排在Perl 5.26被删除.请参阅此处的开发发行说明:https://metacpan.org/pod/release/EXODIST/perl-5.25.7/pod/perldelta.pod#and-INC
众所周知,这样做是为了解决由于这种行为而在某些应用程序中注意到的漏洞.CVE尚未公开发布(尚未发布).