BEGIN块中LD_LIBRARY_PATH的初始化失败

Gre*_*Dan 1 oracle perl dbi dbd

我必须将/oracle/v10.2.0/lib添加到LD_LIBRARY_PATH以使用DBI模块连接到Oracle.

如果我在执行perl脚本之前在shell中设置LD_LIBRARY_PATH,一切正常.

但它不适用于脚本:

BEGIN {
  $ENV{'LD_LIBRARY_PATH'}='/oracle/v10.2.0/lib';
}
use DBI;
Run Code Online (Sandbox Code Playgroud)

当我执行脚本时,我收到错误:

install_driver(Oracle)失败:无法为模块DBD :: Oracle加载'/usr/apps/perl5/site_perl/5.8.8/i686-linux/auto/DBD/Oracle/Oracle.so':libclntsh.so.10.1 :无法打开共享对象文件:/usr/apps/perl5/5.8.8/i686-linux/DynaLoader.pm第230行没有这样的文件或目录.在(eval 3)第3行编译在(eval 3)的require中失败第3行.也许未安装在/var/tmp/getTraceDB.pl第23行所需的共享库或dll

小智 5

BEGIN {
$ENV{'LD_LIBRARY_PATH'}.='/oracle/v10.2.0/lib';
exec($^X, $0, @ARGV);
}
use DBI;
Run Code Online (Sandbox Code Playgroud)

请参阅运行时链接程序和LD_LIBRARY_PATH以获取正确的说明.