#!/usr/bin/perl
BEGIN {
unless ($ENV{DONE_RESTARTING_MYSELF}) { # avoid endless loop...
$ENV{DONE_RESTARTING_MYSELF} = 1;
$ENV{ORACLE_HOME} = "/opt/oracle/product/10.2.0/client_1";
$ENV{LD_LIBRARY_PATH} = "/opt/oracle/product/10.2.0/client_1/l
+ib32:/usr/local/lib/sprolib:/usr/local/lib:/usr/lib:/usr/openwin/lib:
+/usr/dt/lib:/usr/lib:/usr/ucblib";
exec $0, @ARGV; # <---
}
}
use DBI;
# ...
Or simply use a shell wrapper around your Perl script:
#!/bin/sh
export ORACLE_HOME=/opt/oracle/product/10.2.0/client_1
export LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/client_1/lib32:/usr/
+local/lib/sprolib:/usr/local/lib:/usr/lib:/usr/openwin/lib:/usr/dt/li
+b:/usr/lib:/usr/ucblib
/path/to/your/script.pl
As for the ELFCLASS64 error, the reason is that the (64-bit) lib is being found in /opt/oracle/product/10.2.0/client_1/lib, instead of the 32-bit one in the .../lib32 directory that you tried to specify via LD_LIBRARY_PATH — because setting the env variable too late (after exec of perl) doesn't have any effect, as already mentioned. |