printf STDERR "before: fileno(STDOUT)=%d\n", fileno(STDOUT); open $old_stdout, ">&STDOUT" or die "open: $!"; close( STDOUT ); pipe( $smash_stdout, STDOUT ); printf STDERR "after: fileno(STDOUT)=%d\n", fileno(STDOUT);