I'd argue you want to use a shell wrapper anyhow, because rather than setting those variables explicitly, you ought to do something like: export ORACLE_SID=your_sid export ORAENV_ASK=NO . oraenv
and Oracle will set it all for you, and if/when something changes or is upgraded, your code will continue to do the right thing. -Mark ________________________________________ From: Paul Johnson [p...@pjcj.net] Sent: Friday, May 28, 2010 12:33 To: John Scoles Cc: newbie01 perl; beginners; dbi-users Subject: Re: How to set LD_LIBRARY_PATH On Fri, May 28, 2010 at 06:14:38AM -0400, John Scoles wrote: > You will have to set those values before your modules load. > > So you should stick them in the BEGIN and that should work ... except where it doesn't, such as on Solaris for example. Here, LD_LIBRARY_PATH (at least) really does need to be set before the process starts. You can do this by writing a shell wrapper, or re-execing your perl script if the value is not already set. You're using linux and I'm not sure if this sort of messing about is required there. > http://www.compuspec.net/reference/language/perl/BEGIN_and_END.shtml > > cheers > John Scoles > > On Fri, May 28, 2010 at 3:45 AM, newbie01 perl <newbie01.p...@gmail.com>wrote: > > > Hi all, > > > > Can someone advise how to set LD_LIBRARY_PATH from within the Perl scripts? > > > > If I set LD_LIBRARY_PATH from the command line, all is okay > > > > [oracle ~]$ perl -e 'use DBD::Oracle; print $DBD::Oracle::VERSION,"\n";' > > Can't load > > > > '/oracle/product/db/11.1/perl/lib/site_perl/5.8.3/x86_64-linux-thread-multi/auto/DBD/Oracle/Oracle.so' > > for module DBD::Oracle: libclntsh.so.11.1: cannot open shared object file: > > No such file or directory at > > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/DynaLoader.pm line 230. > > at -e line 1 > > Compilation failed in require at -e line 1. > > BEGIN failed--compilation aborted at -e line 1. > > [oracle ~]$ export LD_LIBRARY_PATH=/oracle/product/db/11.1/lib > > [oracle ~]$ perl -e 'use DBD::Oracle; print $DBD::Oracle::VERSION,"\n";' > > 1.15 > > > > But if I do the following instead in the Perl script, it does not work? How > > to set the LD_LIBRARY_PATH then? > > > > $ENV{ORACLE_HOME}=$ORACLE_HOME; > > $ENV{ORACLE_SID}=$ORACLE_SID; > > $ENV{PATH}="$ORACLE_HOME/bin:$PATH"; > > $ENV{LD_LIBRARY_PATH}="$ORACLE_HOME/lib"; > > > > FYI, the script is to run from a cron which is why am setting > > LD_LIBRARY_PATH in the script. > > > > Any response will be very much appreciated. Thanks in advance. > > > > -- > Catch Alex & Sheeri at ODTUG/Kaleidoscope - June 27 - July 1. > Hear Sheeri speak or email eve...@pythian.com to meet with Pythian. -- Paul Johnson - p...@pjcj.net http://www.pjcj.net -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/