use Filter::Handle; my $logfile = "program.log"; open(LOG, ">", $logfile) or die "Cannot write to '$logfile': $!"; Filter( \*STDOUT, sub { print LOG @_; return @_; } );