#!/usr/bin/perl -w local (*SAVED_STDOUT); open (SAVED_STDOUT, ">&STDOUT"); print "Roo"; close STDOUT; open (STDOUT , ">>foo.bar") || die "$!"; print "s"; close STDOUT; open(STDOUT, ">&SAVED_STDOUT"); print "ters\n #### Here is a script that saves, redirects, and restores STDOUT and STDERR: #!/usr/bin/perl open(OLDOUT, ">&STDOUT"); open(OLDERR, ">&STDERR"); open(STDOUT, '>', "foo.out") || die "Can't redirect stdout"; open(STDERR, ">&STDOUT") || die "Can't dup stdout"; select(STDERR); $| = 1; # make unbuffered select(STDOUT); $| = 1; # make unbuffered print STDOUT "stdout 1\n"; # this works for print STDERR "stderr 1\n"; # subprocesses too close(STDOUT); close(STDERR); open(STDOUT, ">&OLDOUT"); open(STDERR, ">&OLDERR"); print STDOUT "stdout 2\n"; print STDERR "stderr 2\n";