Perl 如何在OSX上覆盖httpd.conf中的@INC设置

Perl 如何在OSX上覆盖httpd.conf中的@INC设置,perl,apache,configuration,cgi,Perl,Apache,Configuration,Cgi,如何设置Perl在OSX上Apache httpd.conf文件中查找模块的位置 我已经通过CPAN安装了几个模块,这些模块在 /opt/local/lib/perl5/site_perl/5.8.9 我可以通过perldoc perllocal 如果在命令行上运行perl-V,我会得到(以及其他dir): 然而,当我通过Apache以CGI的形式运行perl脚本时,我得到的错误是,找不到我使用的模块。@INC中包含的目录列表与我的本地perl配置不匹配 [error] [client 127

如何设置Perl在OSX上Apache httpd.conf文件中查找模块的位置

我已经通过CPAN安装了几个模块,这些模块在

/opt/local/lib/perl5/site_perl/5.8.9
我可以通过
perldoc perllocal

如果在命令行上运行
perl-V
,我会得到(以及其他dir):

然而,当我通过Apache以CGI的形式运行perl脚本时,我得到的错误是,找不到我使用的模块。@INC中包含的目录列表与我的本地perl配置不匹配

[error] [client 127.0.0.1] Can't locate Spreadsheet/ParseExcel.pm in @INC (
 @INC contains: 
     /Library/Perl/Updates/5.8.8 
     /System/Library/Perl/5.8.8/darwin-thread-multi-2level 
     /System/Library/Perl/5.8.8 
     /Library/Perl/5.8.8/darwin-thread-multi-2level 
     /Library/Perl/5.8.8 
     /Library/Perl 
     /Network/Library/Perl/5.8.8/darwin-thread-multi-2level 
     ...

在OSX上以CGI形式运行perl时,@INC是如何设置的?我如何覆盖它?

在构建
perl
时,
@INC
的初始值是硬编码的,但可以通过多种方式修改。这里最方便的是

SetEnv PERL5LIB ...
从Apache配置中,或使用

use lib qw( ... );
从Perl脚本中

也就是说,在Perl5.8.8中使用使用Perl5.8.9安装的模块是不安全的(尽管另一种方法是安全的)。更糟糕的是,一个似乎是线程化的Perl,而另一个则不是。修改
@INC
根本行不通

您需要使用与运行脚本所用的
perl
相同的
perl来安装模块,或者必须使用与安装模块所用的
perl
相同的
perl来运行脚本

use lib qw( ... );