This is probably not the solution. But it will change the localtime line and remove the s/// one. I don't say its better but it might throw some light on what's happening.
my ($sec,$min,$hour,$mday,$mon,$year) = localtime();
my $m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct',
+'Nov','Dec')[$mon].
"-$mday-".substr($year,-2).sprintf(' %02d:%02d:%02d', $hour,$min,$s
+ec);
$m.= " $Con{$fh}->{ip} <$Con{$fh}->{mailfrom}>" if $fh && $Con{$fh};
$m.= " $_[0]\n";
print $m unless $silent;
print DEBUG $m;
Yes it is a strike at semi-random. What I guess may happen is that the problem now moves to a completely differet place. If so I suspect you may be looking at a weird memory leak kind of error. However I did get a very very weird crash the first time I ran your 2 lines in a CGI script - it broke the webserver! Needless to say this hasn't happened since.
Dingus
Enter any 47-digit prime number to continue.