« アライドの8624XLが固るので、新しいインテリジェントスイッチを探す | メイン | CLB with HTML::Parser バージョンアップ »

Mail-QmailQueueの修正

メール送信にQmailのqmail-queueを直接呼び出す、Mail::Qmailqueueを使おうしたところ。エラーで動かなかった。

Can't call method "fdopen" on an undefined value at /usr/lib/perl5/site_perl/5.6.1/Mail/QmailQueue.pm line 103, <> line 5.
Broken pipe

ちなみにPerlは「「 v5.6.1 built for i386-linux」」
どうも、96行目あたりの

my $fd0 = IO::Handle->new->fdopen(0,"w");
my $fd1 = IO::Handle->new->fdopen(1,"w");


my $fd0 = IO::Handle->new->fdopen(0,"r");
my $fd1 = IO::Handle->new->fdopen(1,"w");

としなければならないようだ。
記述子0は標準入力なので、「w」の書き込みモードでは失敗をしてしまうということなのかな。

以下Patch

--- QmailQueue.pm.orig	Tue Jun  1 15:07:08 2004
+++ QmailQueue.pm	Tue Jun  1 17:39:28 2004
@@ -96,7 +96,7 @@
 	
 	wait;
     } elsif (defined $pid) {
-	my $fd0 = IO::Handle->new->fdopen(0,"w");
+	my $fd0 = IO::Handle->new->fdopen(0,"r");
 	my $fd1 = IO::Handle->new->fdopen(1,"w");
 	$data->reader();
 	$addr->reader();