2009-06-20 8 views
1

Perlの%ENVを設定して、WebアプリケーションのコンテキストにPerlスクリプトを導入するにはどうすればよいですか?Python WebアプリケーションからPerlプログラムに環境を渡すにはどうしたらいいですか?

私はPerl(Python)とは異なる言語で書かれたウェブサイトを持っています。

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

...と"$ENV{HTTP_HOST}""$ENV{REQUEST_URI}""$ENV{REMOTE_ADDR}""$ENV{DOCUMENT_ROOT}"に依存しているモジュールbar.pm、:しかし、私は.plのファイルで構成されてPerlアプリケーションを使用する必要があります。

このハッシュはどのように設定する必要がありますか?これは私の初めてのPerl経験ですから、ここで本当に明白なものがあります:)

答えて

4

「Webサーバーから直接」ではなく)PythonコードからそのPerlプロセスを起動する場合は、Python親プロセス環境から子プロセス環境を設定するいくつかの方法があります。 "産卵"のために再使用する。

あなたがsubprocess.Popenを使用している場合docsは説明としてたとえば、あなたは、あなたが望むの辞書に設定env=引数を渡すことができます。

をenvがNone以外の場合、それは マッピングでなければなりませんが新しいプロセスのための変数 の変数。 が現在のプロセスの環境 を継承する代わりに使用されます。これはデフォルトの動作である です。

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サーバーは、これらの環境変数を設定するべきです。