看到一些奇怪的行为,即连接到 Oracle 数据库,然后调用外部函数,$ 的值?始终为 -1。
问题机器正在运行标准 AIX5.3,带有 DBD::Oracle 1.20 和 DBI 1.602。
#!/usr/bin/perl -w
use DBI;
CORE::system "pwd";
print "Before connect: $?\n";
DBI->connect('dbi:Oracle:', 'pwd', 'pwd');
print "Before system: $?\n";
CORE::system "pwd";
print "After system: $?\n";
CORE::system "pwd";
print "After system: $?\n";
Before connect: 0
Before system: 0
/usr/local/bin
After system: -1
/usr/local/bin
After system: -1
这是来自不同 AIX 5.3 机器的结果,我能看到的唯一区别是它运行的是 DBD:Oracle 1.22 和 DBI 1.607。但是查看这些模块的更改日志,我看不到任何与此相关的内容。除了升级 DBD:Oracle 和 DBI(因为这是一台生产机器而犹豫不决)之外,我可以尝试更多的想法。