什么';在mod_Perl中,用Perl中的'use'和'require'语句搜索当前源文件所在的目录,这是一种规范的方法吗?
我试过了什么';在mod_Perl中,用Perl中的'use'和'require'语句搜索当前源文件所在的目录,这是一种规范的方法吗?,perl,runtime,require,mod-perl,Perl,Runtime,Require,Mod Perl,我试过了 BEGIN { unshift @INC, 'current_path_string'; } 但它只适用于使用,当需要时,它不会被搜索 有解决办法吗?在mod_perl下运行时,一旦服务器启动,@INC将被冻结且无法更新。临时修改@INC的唯一机会是在首次加载和编译脚本或模块时。之后,其值将重置为原始值。永久更改@INC的唯一方法是在Apache启动时对其进行修改 服务器启动时更改@INC的两种方法: 在配置文件中。e、 gPerlSetEnv PERL5LIB/home/
BEGIN {
unshift @INC, 'current_path_string';
}
但它只适用于使用
,当需要
时,它不会被搜索
有解决办法吗?在mod_perl下运行时,一旦服务器启动,
@INC
将被冻结且无法更新。临时修改@INC
的唯一机会是在首次加载和编译脚本或模块时。之后,其值将重置为原始值。永久更改@INC
的唯一方法是在Apache启动时对其进行修改
服务器启动时更改@INC
的两种方法:
- 在配置文件中。e、 g
PerlSetEnv PERL5LIB/home/httpd/perl
- 在启动文件中,直接更改
,并从配置文件加载启动文件@INC
BEGIN {
require Foo;
import Foo;
}
因此,如果它适用于
use
,它适用于require
是的,您可以在启动脚本中更新@INC。但在您的模块中使用以下代码只需简单操作即可:
use lib '/app/my-libs';
至少-对于我在mod_perl下运行的CGI应用程序。实际上我不想让它永久化。这就是为什么我
unshift@INC
在BEGIN
内部。但是它对require
语句不起作用。@new_perl它对require
不起作用,因为require
发生在运行时,在重置@INC
之后,但它为什么这样工作:开始{unshift@INC',/root/}print“@INC”代码><代码>/root/
在运行时仍然存在。@new\u perl:这是一个临时修改,mod\u perl不支持它。
use lib '/app/my-libs';