Python WebアプリケーションからPerlプログラムに環境を渡すにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1022694

  •  06-07-2019
  •  | 
  •  

質問

Perlの%ENVを設定して、WebアプリケーションのコンテキストにPerlスクリプトを導入するにはどうすればよいですか

Perl(Python)とは異なる言語で書かれたWebサイトがあります。ただし、.plファイルで構成されるPerlアプリケーションを使用する必要があります。

    #!/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}" に依存するモジュールbar.pm、 " $ ENV {REMOTE_ADDR}" および" $ ENV {DOCUMENT_ROOT}"

このハッシュを設定するにはどうすればよいですか?これはPerlを使った最初の経験なので、ここで本当に明らかなことを見逃しているかもしれません:)

役に立ちましたか?

解決

(「ウェブサーバーから直接」とは対照的に)PythonコードからPerlプロセスを生成する場合は、Pythonの親プロセス環境から子プロセス環境を設定する方法がいくつかあります。 " spawning"に再使用します。

たとえば、 subprocess.Popen を使用している場合、 env = 引数セットを docs の説明:

  

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

他のヒント

Perlの特別な%ENV ハッシュは、環境へのインターフェースです。 (内部では、必要に応じて getenv および putenv を呼び出します。)

例:

$ 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サーバーはこれらの環境変数を設定する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top