use strict; use warnings; use IPC::Open3; $|=1; print "parent pid: $$\n"; my($in, $out, $err, $pid); # duplicate stderr and stdout open( $out, ">&STDOUT" ) or die "Can't dup STDOUT to OUTPUT: $!\n"; open( $err, ">&STDERR" ) or die "Can't dup STDERR to OUTERR: $!\n"; eval { $pid = open3($in, $out, $err, @ARGV) }; die "$$ open3 gave trouble: $@\n" if $@; print "$$ It is running\n"; close $in; print "$$ stderr:\n"; print "[ $$ $_ ]" while <$err>; close $err; __END__