$dd_command = <<'EO_COMMAND'; device=/dev/rmt8 dd_noise='^[0-9]+\+[0-9]+ records (in|out)$' exec 3>&1 status=`((dd if=$device ibs=64k 2>&1 1>&3 3>&- 4>&-; echo $? >&4) | egrep -v "$dd_noise" 1>&2 3>&- 4>&-) 4>&1` exit $status; EO_COMMAND @dd_output = `$dd_command`; $status = ($? >> 8); $signo = ($? & 127); $cored = ($? & 128); #### $dd_command = <<'EO_COMMAND'; device=/dev/rmt8 dd_noise='^[0-9]+\+[0-9]+ records (in|out)$' exec 3>&1 status=`((dd if=$device ibs=64k 2>&1 1>&3 3>&- 4>&-; echo $? >&4) | egrep -v "$dd_noise" 1>&2 3>&- 4>&-) 4>&1` exit $status; EO_COMMAND $kidpid = open(DD_PIPE, "$dd_command |") // die $!; while () { # blah blah blah; } close(DD_PIPE); $status = ($? >> 8); $signo = ($? & 127); $cored = ($? & 128); #### $kidpid = open(FROM_KID, "somecmd 3>&1 1>&2 2>&3 3>&- |") // die $!; #### $fd3 = $fd1; $fd1 = $fd2; $fd2 = $fd3; $fd3 = undef;