我在文件夹p.pl
中有一个test
脚本:
use lib '.';
use My::Module;
My::Module::my_func();
在测试文件夹中有一个包含文件My
的子目录Module.pm
:
package My::Module;
sub my_func {
print "Hello\n";
}
1;
如果我通过在终端窗口中键入p.pl
从测试文件夹中运行./p.pl
,则不会出现错误并输出Hello
。如果我将目录更改为父目录(cd ..
)并键入test/p.pl
,则会收到错误:
Can't locate My/Module.pm in @INC at test/p.pl line 2.
BEGIN failed--compilation aborted at test/p.pl line 2.
答案 0 :(得分:1)
答案 1 :(得分:1)
这里没有错误。使用lib pragma将指定的目录添加到@INC - Perl搜索模块的目录列表。通过指定'。',您说,“将当前目录添加到@INC”,因此如果您从测试上方的目录启动该程序,那么这是从中找到的文件夹搜索已经完成。