open( OLDOUT, ">&STDOUT" ); open( STDOUT, '> foo.out' ) or die "Can't redirect STDOUT to foo.out: $!\n"; # this works for subprocesses and C code too: print "stdout 1\n"; close( STDOUT ); open( STDOUT, ">&OLDOUT" ); close( OLDOUT );