in reply to Re: Problem logging STDOUT in perl
in thread Problem logging STDOUT in perl

Thanks for the reply. This will redirect logs only to log file, but I need logs to be redirected to log file as well on console i.e. STDOUT.

Replies are listed 'Best First'.
Re^3: Problem logging STDOUT in perl
by Athanasius (Archbishop) on Aug 22, 2012 at 12:54 UTC

    Then you should definitely use a module, such as one of those recommended by aitap above:

    #! perl use strict; use warnings; use autodie; use Capture::Tiny qw( tee_stdout ); my %test_hash = ( Foo => 1, Bar => 1, Baz => 1, Nix => 0 ); foreach (keys %test_hash) { if ($test_hash{$_} == 1) { my $logfile = $_ . '_log.txt'; print "the logfile is $logfile\n"; require "$_.pm"; my ($stdout, @result) = tee_stdout { $_->$_() }; open(my $out, '>', $logfile); print $out $stdout; close($out); } }

    ++aitap for recommending Capture::Tiny! I already had it on my system (it came with Strawberry Perl), but I hadn’t come across it before. Brilliant!

    Athanasius <°(((><contra mundum