Hello, While the void DESTROY in IO::Handle make sense (as explained in the comment), IO::Pipe::End::DESTROY should really call close() since it makes a waitpid(). Is there a reason to avoid this ? It defeats in part the usefulness of IO::Pipe for me as one of my main motivation to use objects rather than low-level functions for this kind of system interaction is to avoid the need for explicit cleaning (which I often forget). Just adding : ##### # avoid zombification sub DESTROY { my $fh = shift; $fh->close() if $fh->opened(); } ##### in the IO::Pipe::End package should avoid this problem. -- JedaïThread Next