On 27/08/2013 23:06, John W. Krahn wrote:
Harry Putnam wrote:
I happen to be scripting something that needs to have two logs written
to and was sort of taken by how awkward this construction looked:
(Simplified for discussion, from a longer script)
my $rsync = 'rsync';
my $tmplog = 'one.log';
my $tmplog2 = 'two.log';
open(LOG,">>$tmplog")or die "Can't open $tmplog : $!";
open(LOG2,">>$tmplog2")or die "Can't open $tmplog2: $!";
print LOG "kdkdkdkd Output from:\n$rsync cmdflgs";
print LOG2 "kdkdkdkd Output from:\n$rsync cmdflgs"
close(LOG);
close(LOG2);
Is there some smooth way to write to more than one log?
my %logs = (
'one.log' => undef,
'two.log' => undef,
);
for my $name ( keys %logs ) {
open my $FH, '>>', $name or die "Cannot open '$name' because: $!";
$logs{ $name } = $FH;
}
for my $log_FH ( values %logs ) {
print $log_FH "kdkdkdkd Output from:\n$rsync cmdflgs";
}
Nice John
It compacts neatly to
use strict;
use warnings;
use autodie;
my $rsync = 'rsync';
my $tmplog = 'one.log';
my $tmplog2 = 'two.log';
my %logs = map {
open my $FH, '>>', $_;
($_ => $FH);
} $tmplog, $tmplog2;
print $_ "kdkdkdkd Output from:\n$rsync cmdflgs\n" for values %logs;
Rob
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/