2008-12-10 16 views
8

Tengo varios módulos Perl instalados en mi máquina de host en ~/perl, ¿cómo los agrego a la ruta del módulo Perl? El establecimiento de PERL5LIB o unshift seguramente funciona, pero la variable de entorno no ayuda cuando se ejecuta como un script CGI y la forma @INC no es muy portátil. ¿Hay una mejor manera? Esto tiene que ser un problema común, ¿me estoy perdiendo algo?¿Cómo puedo configurar la ruta de inclusión de Perl para módulos para una secuencia de comandos CGI?

Respuesta

6

PERL5LIB funciona muy bien para scripts CGI. Solo tiene que establecer la variable en el lugar correcto, como la configuración del servidor. ¿Qué servidor web estás usando? Para Apache, utilizo la directiva SetEnv de mod_env.

@INC es portátil. Es posible que las rutas que coloque allí no sean las mismas en todas las máquinas, pero no debería tener un problema con la variable en sí misma.

¿Ha leído las entradas FAQ en perlfaq8:

+0

Gracias, no sabía acerca de la directiva SetEnv. Eso es exactamente lo que estaba buscando. – zoul

+0

Esto no funciona en todas las configuraciones de servidor; algunos desactivan SetEnv, y de lo que estoy leyendo, otros solo le permiten establecer variables de entorno que comienzan con HTTP_. Algún tipo de medida de seguridad, creo. – user1618143

9

una forma más limpia de hacerlo OMI es:

use lib "/path/" ; 

hay otras maneras interesantes y buenos para hacerlo que se pueden encontrar aquí:

http://www.slideshare.net/pfig/cpan-training-presentation/

También, re: CGI scripts, PUEDE definir rutas PERL5LIB para su CGI Env, solo depende de su servidor web.

Algunos Webhosts permiten el control específico de las variables env para el entorno CGI, y solo tiene que configurarlos, otros pueden tener una lista de "permisos" que permite que las variables visibles al inicio aparezcan en el ámbito local.

Puede ayudarlo a leer sobre cómo hacerlo en su servidor HTTP específico.

No es una opción más, si el establecimiento ENV no es de su gusto: local::lib

¿Qué busca en algunas rutas predefinidas automáticamente.

+1

+1 Sólo tener en cuenta que PERL5LIB se ignora si tiene modo de mancha encendido ... http: //perldoc.perl.org/perlsec.html#Taint-mode-and-%40INC – draegtun

Cuestiones relacionadas