my $pid = open(CHLD, "-|"); die "Failed to fork: $!\n" unless defined $pid; if($pid == 0) { die "Failed to run spamc: $!" unless open(PROC, "|spamc"); print PROC "My Arguments"; close(PROC); exit(0); } while() { # collect the input } close(CHLD);