2008-12-10 40 views
8

我在我的主机上安装了几个Perl模块~/perl,我该如何将它们添加到Perl模块路径中?设置PERL5LIBunshift@INC的路径肯定可行,但环境变量作为CGI脚本运行时不起作用,并且@INC方式不是非常便于携带。有没有更好的办法?这必须是一个常见问题,我错过了什么?如何为CGI脚本的模块设置Perl的包含路径?

回答

6

PERL5LIB对CGI脚本来说工作得很好。您只需在正确的地方设置变量,例如服务器配置。你使用哪个网络服务器?对于Apache,我使用mod_env中的SetEnv指令。

@INC是便携式的。你放在那里的路径在每台机器上可能都不一样,但你不应该对with变量本身有问题。

你有没有在perlfaq8阅读FAQ条目:

+0

谢谢,我不知道SetEnv指令。这正是我一直在寻找的东西。 – zoul 2008-12-11 07:32:44

9

一个更清洁的方式做到这一点海事组织:

use lib "/path/" ; 

还有其他有趣和良好的方法来做到这一点,可以在这里找到:

http://www.slideshare.net/pfig/cpan-training-presentation/

此外,重:CGI脚本,你可以为你的CGI Env定义PERL5LIB路径,它只取决于你的虚拟主机。

某些虚拟主机允许对CGI环境的env变量进行特定的控制,而且您必须设置它们,其他人可能有一个“允许”列表,允许变量在开始时显示在本地范围内。

可能有助于了解如何在特定的HTTP服务器上执行此操作。

还有一个选项,如果设置ENV是不合你的口味:local::lib

自动搜索一些预定义的路径。

+1

+1只是需要注意的是PERL5LIB被忽略,你应该有污染模式上... HTTP切换: //perldoc.perl.org/perlsec.html#Taint-mode-and-%40INC – draegtun 2008-12-10 09:56:05