请教hp-unix下perl5.6.1版本连接oracle问题?

有一台HP-Unix服务器,使Perl连接Oracle9i数据库,报下面的错误.(perl版本为5.6.1)
DBI->connect(cdl) failed: ERROR OCIEnvInit
Can't call method "prepare" on an undefined value
此时用的Oracle9i客户端.使用sqlplus手工连接没有问题,能到这个状态  SQL>   在这个下面运行SQL也没有问题.

现在仍然是这个版本的Perl,换用oracle8i客户端,运行程序没有问题,程序一切正常,程序中的SQL也能正确运行.
但是使用sqlplus时会报如下错误.
ERROR: Error while trying to retrieve text for error ORA-12545

目前服务器的解决办法,来回切换环境变量,如果想使用sqlplus就切到9i客户端的环境下,如果用Perl就切到8i客户端下.

1.想过N多办法,想升级一下DBD,但是报各种错误没有升级成功.
DBD-Oracle-1.19.tar   DBD-Oracle-1.07.tar 这两版的DBD都没有成功.
2.想过完全升级一下Perl版本,但是HP下一直没找到更高版本的.如果哪位仁兄有的话,可否割爱发一下(gjqiu.baby@163.com)不胜感激.

请教各位高手,有何高招请赐教,如何才能两全其美呢?