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í :)

¿Fue útil?

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

El hash

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top