in reply to Problem logging STDOUT in perl
Hello kuldeek, and welcome to the Monastery!
I’m not sure exactly what you want, but perhaps the select function is what you’re looking for:
#! perl use strict; use warnings; use autodie; my %test_hash = ( Foo => 1, Bar => 1, Baz => 1, Nix => 0 ); foreach my $test_run (keys %test_hash) { if ($test_hash{$test_run} == 1) { my $test_execute = $test_run; my $test_execute1 = $test_run . '.pm'; my $logfile = $test_execute . '_log.txt'; print "the logfile is $logfile\n"; open(my $out, '>', $logfile); select $out; require $test_execute1; $test_execute->$test_execute(); close($out); select STDOUT; } }
With suitable modules Foo.pm, Bar.pm, and Baz.pm, this code creates a log file for each module and redirects STDOUT to it from that module’s test sub. Output from print "the logfile is $logfile\n" is not redirected.
See how do i redirect STDOUT, STDIN, or STDERR to a FILE?.
Hope that helps,
Athanasius <°(((>< contra mundum
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Problem logging STDOUT in perl
by kuldeek (Initiate) on Aug 22, 2012 at 08:34 UTC | |
by Athanasius (Archbishop) on Aug 22, 2012 at 12:54 UTC |