my ($READ, $WRITE); pipe ($READ, $WRITE); my $child1 = fork (); unless ($child1) { *STDOUT = $WRITE; exec ('cat', $0); } my $child2 = fork (); unless ($child2) { *STDIN = $READ; exec ('grep', 'grep'); } waitpid ($child1, 0); waitpid ($child2, 0);