¿Cómo puedo pasar el entorno de mi aplicación web Python a un programa Perl?
-
06-07-2019 - |
Pregunta
¿Cómo configuro% ENV de Perl para introducir un script de Perl en el contexto de mi aplicación web?
Tengo un sitio web, escrito en un idioma diferente de Perl (Python). Sin embargo, necesito usar una aplicación Perl, que consiste en un archivo .pl:
#!/usr/bin/env perl
"$ENV{DOCUMENT_ROOT}/foo/bar.pm" =~ /^(.+)$/;
require $1;
my $BAR = new BAR(
user => 'foo',
);
print $bar->get_content;
... y un módulo bar.pm, que se basa en " $ ENV {HTTP_HOST} "
, " $ ENV {REQUEST_URI} "
,
" $ ENV {REMOTE_ADDR} "
y " $ ENV {DOCUMENT_ROOT} "
.
¿Cómo debo configurar este hash? Esta es mi primera experiencia con Perl, por lo que es posible que me falte algo realmente obvio aquí :)
Solución
Si está generando ese proceso de Perl a partir de su código Python (en oposición a "directamente desde el servidor web"), hay varias formas de configurar el entorno de proceso secundario desde el entorno de proceso primario de Python, dependiendo de lo que usted " re usar para el " desove " ;.
Por ejemplo, si está utilizando el subproceso .Popen
, puede pasar un conjunto de argumentos env =
al diccionario que desee, como docs explicar:
Si env no es None, debe ser un mapeo que define el entorno variables para el nuevo proceso; estas se utilizan en lugar de heredar el proceso actual & # 8217; medio ambiente, que es el comportamiento predeterminado.
Otros consejos
especial % ENV
de Perl es la interfaz con el entorno. (Debajo del capó, llama a getenv
y putenv
según corresponda).
Por ejemplo:
$ cat run.sh
#! /bin/bash
export REMOTE_ADDR=127.0.0.1
perl -le 'print $ENV{REMOTE_ADDR}'
$ ./run.sh
127.0.0.1
Su servidor web debería estar configurando estas variables de entorno.