【问题标题】:How can I set Perl's inclusion path for modules for a CGI script?如何为 CGI 脚本的模块设置 Perl 的包含路径?
【发布时间】:2010-09-26 04:44:30
【问题描述】:

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

【问题讨论】:

    标签: perl path cgi module


    【解决方案1】:

    PERL5LIB 适用于 CGI 脚本。您只需将变量设置在正确的位置,例如服务器配置。您使用的是哪个网络服务器?对于 Apache,我使用 mod_env 中的 SetEnv 指令。

    @INC 是可移植的。您输入的路径在每台机器上可能都不相同,但变量本身不应该有问题。

    您是否阅读了perlfaq8 中的常见问题解答条目:

    【讨论】:

    • 谢谢,我不知道 SetEnv 指令。这正是我一直在寻找的东西。
    • 这不适用于所有服务器设置 - 有些禁用 SetEnv,从我正在阅读的内容来看,其他仅允许它设置以 HTTP_ 开头的环境变量。我认为是某种安全措施。
    【解决方案2】:

    imo 更简洁的方法是:

    use lib "/path/" ;  
    

    还有其他有趣的好方法可以在这里找到:

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

    另外,关于:CGI 脚本,您可以为您的 CGI Env 定义 PERL5LIB 路径,这取决于您的虚拟主机。

    一些虚拟主机允许对 CGI 环境的环境变量进行特定控制,您只需设置它们,其他的可能有一个“允许”列表,允许在启动时可见的变量出现在本地范围内。

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

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

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

    【讨论】:

    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多