Python WebアプリケーションからPerlプログラムに環境を渡すにはどうすればよいですか?
-
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サーバーはこれらの環境変数を設定する必要があります。