は、Oracleデータベースに接続することにより、いくつかの奇妙な行動を見て、その後、外部関数を呼び出し、$の値は?常に-1です。
問題のマシンは、DBD :: Oracleの1.20およびDBI 1.602で、標準AIX5.3を実行しています。DBD :: Oracleがシステムコールの破損を引き起こしていますか?
#!/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を実行していることである:オラクル1.22およびDBI 1.607。しかし、それらのモジュールの変更ログを見ると、それに関連するものは何も見えません。 OracleとDBI(これは、生産機械であるとすぐにそれを行うにはhesitent):私はDBDをアップグレードする以外試すことができ、さらに、物事のため 任意のアイデア。 perldoc -f systemから
/usr/local/bin システムコールが失敗しました:子プロセスはありません。 ./test.pl 7行目。 実際のpwdコマンド自体は完了しています(/ usr/local/binを出力しています)。 – Patrick
そのエラーメッセージに基づいて、次のリンクが見つかりました:同じ動作であるようです。 http://rt.cpan.org/Public/Bug/Display.html?id=16548 – Patrick
コメントの1つに基づいて私は、接続の後に以下を追加しました: $ SIG {CHLD} = 'DEFAULT'; これは、余分なエラーメッセージを取得する方法についての情報のおかげで、修正(または問題を回避する)ようです。 – Patrick