No puedo usar %ENV
var en mi script de Perl para usar las librerías de Oracle.% ENV no funciona y no puedo usar la biblioteca compartida
BEGIN {
$ORACLE_HOME = "/usr/lib/oracle/10.2.0.3/client64";
$LD_LIBRARY_PATH = "$ORACLE_HOME/lib";
$ORACLE_SID="prod";
$ENV{ORACLE_SID}=$ORACLE_SID;
$ENV{ORACLE_HOME}= $ORACLE_HOME;
$ENV{LD_LIBRARY_PATH}= $LD_LIBRARY_PATH;
};
Si imprimo $ENV{'ORACLE_HOME'}
y $ENV{'LD_LIBRARY_PATH'}
todo parece bien, pero, cuando ejecuto mi script que tengo el error:
install_driver(Oracle) failed: Can't load '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 200. at (eval 3) line 3 Compilation failed in require at (eval 3) line 3. Perhaps a required shared library or dll isn't installed where expected at persistence.perl line 22
búsqueda en la web vi que la forma correcta de establecer env vars en Perl es usar hash %ENV
.
Exportando ORACLE_HOME
y LD_LIBRARY_PATH
a través del shell Unix (export LD_LIBRARY_PATH=...
) funciona correctamente. ¿Algún consejo?
Ha pasado mucho tiempo desde que tuve que trabajar con Oracle y Perl y recuerdo que una de las bibliotecas que necesita el módulo Perl no se instala con la instalación del desarrollador. Tendría que extraer los archivos y sacar la biblioteca del paquete de la base de datos. –
Pero es extraño, porque si exporto esas rutas a través de shell, funciona correctamente. Parece que no hay un problema relacionado con las bibliotecas que faltan – Daniele
El envoltorio del script de Shell es la forma en que siempre lo hicimos. –