#! perl -w use strict; $| = 1; print "$0 | start | " . localtime() . "\n"; print STDOUT "This is STDOUT\n"; print "Now ask for STDIN: "; my $input = ; chomp($input); print "Input : " . $input . "\n"; print "Now let's mess with things...\n"; my $logfile = "./logfile.log"; open( STDOUT_TOO, ">&STDOUT" ) or die "Cannot dup STDOUT handle to STDOUT_TOO: $!"; open( LOGFILE, ">$logfile" ) or die "Cannot open $logfile for output: $!"; tie *STDOUT, 'MyMultiplex', \*STDOUT_TOO, \*LOGFILE; print "And let's see the effects...\n"; print STDOUT "This is STDOUT\n"; print "Now ask for STDIN: "; $input = ; chomp($input); print "Input : " . $input . "\n"; print "$0 | end | " . localtime() . "\n"; package MyMultiplex; sub TIEHANDLE { my $obj = shift; bless [ @_ ], $obj; } sub PRINT { my $self = shift; print $_ $_[0] for @$self; }