IPC::Open3 (または IPC::Open2、どちらもこの問題を示す) を使用して外部バイナリ (この場合は bogofilter) を呼び出し、子入力ファイルハンドルを介して入力をフィードし、結果を読み取るモジュールがあります。子出力ハンドル。ほとんどの環境で実行すると、コードは正常に機能します。ただし、このモジュールの主な用途は、Apache 2.2.6 で実行される Web サービスです。そして、その環境下では、エラーが発生します:
STDOUT を fdopen できません: 引数が無効です
これは、コードが Apache で実行されている場合にのみ発生します。以前のコードは、入力用のヒアドキュメントを含む非常に複雑なコマンドを作成し、バックティックを使用して実行していました。それは機能しましたが、非常に遅く、独特で複雑な方法で壊れる傾向がありました. 古いバージョンに戻す必要はありませんが、これをクラックすることはできません。