%ENV не работает и я не могу использовать разделяемую библиотеку

Я не могу использовать %ENV var в моем Perl скрипте для использования Oracle libs.

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;
};

Если я выведу $ENV{'ORACLE_HOME'} и $ENV{'LD_LIBRARY_PATH'}, то все вроде бы нормально, но когда я запускаю свой скрипт, то получаю ошибку:

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 Не удалось выполнить компиляцию в require в (eval 3) строке 3. Возможно, необходимая общая библиотека или dll не установлена там, где ожидалось. at persistence.perl line 22

Поискав в интернете, я увидел, что правильным способом установки env vars в Perl является использование %ENV хэша.

При экспорте ORACLE_HOME и LD_LIBRARY_PATH через unix shell (export LD_LIBRARY_PATH=... ) все работает правильно. Есть какие-нибудь советы?

10
задан Brad Gilbert 28 December 2011 в 15:29
поделиться