Я не могу использовать %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=...
) все работает правильно. Есть какие-нибудь советы?