The problem is even if you do it that way the linker already
has LD_LIBRARY_PATH cached and you can't change it.
The linker is started (and caches LD_LIBRARY_PATH) as
soon as perl is started. You really need to set LD_LIBRARY_PATH
before perl even starts.
Other that just setting LD_LIBRARY_PATH in the environment
the only solution
I came up with
was to set the environment, fork, and
have the new process do the
DB work. But that was kind of hokey and I didn't like
spawning the second process to do the work. I tried to look
for ways of chainging solaris's linker to not cache
LD_LIBRARY_PATH but never got very far.
BTW, LD_LIBRARY_PATH (and any other environmental vars used
by the linker) are the only ones you need to worry about.
You're OK setting other environmental vars
(ORACLE_HOME, TNS_ADMIN, etc...) in your
perl script. The problem is strictly related to the
behavior of solaris's linker.