pipe READ, WRITE; my $child1 = fork(); unless ($child1) { open STDOUT ">&WRITE"; exec ('cat', $0); } my $child2 = fork (); unless ($child2) { open STDIN "<&READ" or die "Cannot open read filehandle\n"; exec ('grep', 'grep'); } waitpid ($child1, 0); waitpid ($child2, 0);