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
In reply to Re: Problem logging STDOUT in perl
by Athanasius
in thread Problem logging STDOUT in perl
by kuldeek
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |