my $pid = open( CHILD, "|-" ); unless (defined $pid) { die ("Can't open standard output: $!\n"); } if ($pid) { # in parent process (will write to CHILD) } else ($pid) { # in child process (will read from STDIN) }