我不能%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;
};
Run Code Online (Sandbox Code Playgroud)
如果我打印$ENV{'ORACLE_HOME'},$ENV{'LD_LIBRARY_PATH'}一切似乎没问题但是,当我运行我的脚本时,我有错误:
install_driver(Oracle)失败:无法为模块DBD加载'/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so':: Oracle:libclntsh.so.10.1:无法打开共享对象文件:否这样的文件或目录位于/usr/lib64/perl5/DynaLoader.pm第200行.(eval 3)第3行编译在(eval 3)第3行的require中失败.也许在预期的地方没有安装所需的共享库或dll在persistence.perl第22行
在网上搜索我发现在Perl上设置env变量的正确方法是使用%ENVhash.
导出ORACLE_HOME并LD_LIBRARY_PATH通过unix shell(export LD_LIBRARY_PATH=...)它可以正常工作.有什么建议?