DBIモジュールを使用してOracleに接続するには、/oracle/v10.2.0/libをLD_LIBRARY_PATHに追加する必要があります。BEGINブロックでのLD_LIBRARY_PATHの初期化が失敗します
perlスクリプトを実行する前にシェルでLD_LIBRARY_PATHを設定すると、すべてがOKです。
しかし、それはスクリプトから動作しません:私は、スクリプトを実行すると
BEGIN {
$ENV{'LD_LIBRARY_PATH'}='/oracle/v10.2.0/lib';
}
use DBI;
私はエラーを取得する:
install_driver(Oracle) failed: Can't load '/usr/apps/perl5/site_perl/5.8.8/i686-linux/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/apps/perl5/5.8.8/i686-linux/DynaLoader.pm line 230. 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 /var/tmp/getTraceDB.pl line 23
Execは正しい方法ですが、そこに無限ループに入ると思います。末尾の条件がないので、正しいパスが '$ ENV {LD_LIBRARY_PATH} 'にないときだけexecするべきです。 execと一緒に – Axeman
が動作しています。ありがとうございます。唯一の問題はperlデバッガ( "-d")がもう動かないということです。execはすぐにスクリプトを実行します –
Greg Dan-ようこそ。 –