我试过
BEGIN {
unshift @INC, 'current_path_string';
}
但它仅适用于use
,当require
时,它不会被搜索。
有解决方法吗?
答案 0 :(得分:4)
在mod_perl下运行时,服务器启动后@INC
被冻结且无法更新。临时修改@INC
的唯一机会是在第一次加载和编译脚本或模块时。之后,其值将重置为原始值。永久更改@INC
的唯一方法是在Apache启动时修改它。
在服务器启动时改变@INC
的两种方法:
在配置文件中。例如PerlSetEnv PERL5LIB /home/httpd/perl
在启动文件中直接更改@INC
并从配置文件加载启动文件。
答案 1 :(得分:0)
是的,您可以在启动脚本中更新@INC。但是在您的模块中使用以下代码将起作用:
use lib '/app/my-libs';
至少 - 对于我在mod_perl下运行的CGI应用程序。
答案 2 :(得分:-1)
use Foo;
与
相同BEGIN {
require Foo;
import Foo;
}
因此,如果它适用于use
,则适用于require
。