in reply to Zombie-less forking inside a daemon?

It depends on what you mean by "wait". A POSIX subprocess will autozombify if the stack frame from which perl called it is unwound without waiting - it seems to me that the fork itself should wait for the mail subprocess to prevent that being the zombie - waiting for the fork that invokes the mail should not be the issue here:
use POSIX ":sys_wait_h"; ... # important: called within fork sub Send { my $message = shift; my $pid = open my $wh, '| mail ...'; print $wh $message; close $wh; waitpid $pid, 0; }
So in my expected scenario the above fork "waits" but is really only waiting for the mail process to close the pipe rather than prematurely unwind the current stack frame for subroutine Send. See the perlipc documentation section for the full and very gory details.

-M

Free your mind