Here&’s a safe backtick or pipe open for read:           # add error processing as above           $pid = open(KID_TO_READ, "-|");           if ($pid) {   # parent               while () {                   # do something interesting               }               close(KID_TO_READ) || warn "kid exited $?";           } else {      # child               ($EUID, $EGID) = ($UID, $GID); # suid only               exec($program, @options, @args)                   || die "can&’t exec program: $!";               # NOTREACHED           }