$pid = open(KID_TO_READ, "-|") or die "fork: $!"; if ($pid) { # parent while () { # do something interesting } close(KID_TO_READ) or warn "kid exited $?"; } else { # child exec($program, @args) or die "can't exec program: $!"; # NOTREACHED }