sub pipe_from_fork ($) { my $rv; my $parent = shift; pipe $parent, my $child or die; my $pid = fork(); die "fork() failed: $!" unless defined $pid; if ($pid) { close $child; $rv=$parent; } else { close $parent; open(STDOUT, ">&=" . fileno($child)) or die; $rv=$child; } ($pid,$rv); }