%ENV
Perlスクリプトでvarを使用してOracleライブラリを使用することはできません。
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)が失敗しました:モジュールDBD ::Oracleの「/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so」をロードできません:libclntsh.so.10.1:共有オブジェクトファイルを開くことができません:いいえそのようなファイルまたはディレクトリ(/usr/lib64/perl5/DynaLoader.pm行200)。at(eval 3)行3コンパイルがrequire at(eval 3)行3で失敗しました。必要な共有ライブラリまたはdllが予期した場所にインストールされていない可能性があります。 persistence.perlの22行目
Webで検索すると、Perlでenv変数を設定する正しい方法は%ENV
ハッシュを使用することであることがわかりました。
エクスポートORACLE_HOME
しLD_LIBRARY_PATH
てunixシェル(export LD_LIBRARY_PATH=...
)を介して正しく動作します。何かアドバイス?