1

如何设置 Perl 的 %ENV 以将 Perl 脚本引入我的 Web 应用程序的上下文中?

我有一个网站,用不同于 Perl (Python) 的语言编写。但是我需要使用一个 Perl 应用程序,它由一个 .pl 文件组成:

    #!/usr/bin/env perl
    "$ENV{DOCUMENT_ROOT}/foo/bar.pm" =~ /^(.+)$/;
    require $1;
    my $BAR = new BAR(
        user    => 'foo',
    );
    print $bar->get_content;

...和一个模块 bar.pm ,它依赖于"$ENV{HTTP_HOST}""$ENV{REQUEST_URI}"和 ."$ENV{REMOTE_ADDR}""$ENV{DOCUMENT_ROOT}"

我应该如何设置这个哈希?这是我第一次使用 Perl,所以我可能在这里遗漏了一些非常明显的东西 :)

4

2 回答 2

4

如果您从 Python 代码生成 Perl 进程(而不是“直接从网络服务器”),则有多种方法可以从 Python 父进程环境设置子进程环境,具体取决于您使用的“产卵”。

例如,如果您正在使用subprocess.Popen,则可以将env=参数集传递给您想要的字典,正如文档解释的那样:

如果 env 不是 None,它必须是定义新进程的环境变量的映射;这些用于代替继承当前进程的环境,这是默认行为。

于 2009-06-20T23:29:10.507 回答
2

Perl 的特殊%ENV哈希是环境的接口。(在引擎盖下,它会调用getenvputenv酌情调用。)

例如:

$ cat run.sh 
#! /bin/bash

export REMOTE_ADDR=127.0.0.1

perl -le 'print $ENV{REMOTE_ADDR}'

$ ./run.sh 
127.0.0.1

您的 Web 服务器应该设置这些环境变量。

于 2009-06-20T22:30:14.713 回答