2009-06-20 82 views
1

如何設置Perl的%ENV將Perl腳本引入到我的Web應用程序的上下文中?如何將環境從我的Python Web應用程序傳遞到Perl程序?

我有一個網站,用不同於Perl(Python)的語言編寫。不過,我需要使用Perl應用程序,其中包括一個特等文件:

#!/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

如果您從您的Python代碼(而不是「直接來自Web服務器」)產生Perl進程,有幾種方法可以從Python父進程環境中設置子進程環境,具體取決於您的「重新使用「產卵」。

例如,如果你使用subprocess.Popen,你可以傳遞一個env=參數設置爲你想要的字典,作爲docs解釋:

如果ENV不是無,它必須是一個 映射爲新過程定義環境變量 ;這些 被用來代替繼承當前進程的環境 ,這是 的默認行爲。

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服務器應該是設置這些環境變量。

相關問題