use IO::Handle; open(SAVOUT, '>&STDERR') or die $!; #open(SAVOUT, '>&STDOUT') or die $!; # play with these: # s/STDOUT/STDOUT/; s/STDOUT/STDOUT/ close STDOUT; open(STDOUT, '>>', "/dev/tty"); STDOUT->autoflush; print STDOUT "a STDOUT test\n"; # play with this: # close STDOUT; open(STDOUT, '+>', "/tmp/STDOUT.log") or die $!; STDOUT->autoflush; print STDOUT "test\n"; #system("echo hello world"); print SAVOUT "before=", tell(STDOUT), "\n"; seek(STDOUT, 0, 0) or die $!; print SAVOUT "after=", tell(STDOUT), "\n"; while (1) { my $rv = read STDOUT, $_, 8192; die "read: $!\n" if !defined($rv); last unless $_; print SAVOUT "STDOUT=", $_; } print SAVOUT "at end=", tell(STDOUT), "\n"; close STDOUT;