use English;

my $sleep_count = 0;



do { 

    $pid = open(KID_TO_WRITE, "|-");

    unless (defined $pid) {

        warn "cannot fork: $!";

        die "bailing out" if $sleep_count++ > 6;

        sleep 10;

    } 

} until defined $pid;



if ($pid) {  # parent

    print KID_TO_WRITE @some_data;

    close(KID_TO_WRITE) or warn "kid exited $?";

}

else {     # child

    ($EUID, $EGID) = ($UID, $GID); # suid progs only

    open (FILE, "> /safe/file") 

                    or die "can't open /safe/file: $!";

    while (<STDIN>) {

        print FILE; # child's STDIN is parent's KID

    } 

    exit;  # don't forget this

} 

