[PLUG] perl question
Michael R
michael at jamhome.us
Mon Mar 5 19:45:04 UTC 2012
another way to approach it, with a bit of sanity checking.
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my %valid_cpus = ( cpu_all => 1);
open my $t,
">>", "cpu_all.log" or die "bletch";
$valid_cpus{cpu_all} = $t;
# 0 .. 7 just my example.
for my
$i ( 0 .. 7 ) {
my $fname = "cpu" . $i
. ".log";
my $cpu = "cpu$i";
open my $tcpu, ">>", $fname or die
"bad system no file $fname $!";
$valid_cpus{$cpu} = $tcpu;
}
open my $NOT_VALID,
">>", "invalid_cpu.log" or die "some useful
message $!";
while (<DATA> ) {
my ($this_cpu, @data) = split; # assuming space delimited files
my $data = join " ", @data,$/;
if( exists $valid_cpus{$this_cpu} ) {
my $fh =
$valid_cpus{$this_cpu};
print
$fh $data;
}
else {
print $NOT_VALID $data;
}
}
__DATA__
cpu0 :
0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu1 : 0.0%us, 0.0%sy,
0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id,
0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu3 :
0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu4 : 0.0%us, 0.0%sy,
0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id,
0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu6 :
0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu7 : 0.0%us, 0.0%sy,
0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu8 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id,
0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu9 :
0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu10 : 0.0%us, 0.0%sy,
0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu11 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id,
0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu12 :
0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu13 : 0.0%us, 0.0%sy,
0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu14 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id,
0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu15 :
0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu16 : 0.0%us, 0.0%sy,
0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu17 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id,
0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu18 :
0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu19 : 0.0%us, 0.0%sy,
0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu20 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id,
0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu21 :
0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
cpu22 : 0.0%us, 0.3%sy, 0.0%ni,
99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu23
: 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa,
0.0%hi, 0.0%si, 0.0%st
<EOF>
Pete
Lancashire wrote:
> I figured it out
>
>
$item2save{'cpu01'} = IO::File->new("> cpu01.out");
>
$item2save{'cpu02'} = IO::File->new("> cpu02.out");
>
$item2save{'cpu03'} = IO::File->new("> cpu03.out");
>
...
>
> print { $item2save{ $itemfound } } <stuff to write
to the respective file>
>
> where $itemfound can have the
values that match the keys in the
> %item2save hash ...
>
> sorry to bug the list
>
> -pete
>
>
> On Mon, Mar 5, 2012 at 10:48 AM, Benjamin Foote
<plug at bnf.net> wrote:
>> #!/usr/bin/perl
>>
>> use strict;
>> use warnings;
>>
>>
my $logfile = $ARGV[0];
>>
>> open (LOG, $logfile) or
die "can't open $logfile: " . $!;
>>
>> while
(my $line = <LOG>) {
>> Â chomp($line);
>> Â my @cols = split /\s+/, $line;
>>
 my $cpufile = shift @cols;
>> Â open
(OUT, ">> " . $file") or die "can't open $cpufile:
" . $!;
>> Â print OUT join " ",
@cols;
>> Â close OUT;
>> }
>>
>> Benjamin Foote
>> http://pdxstump.com - a search engine
and news aggregator for Portland
>> http://bnf.net - Linux and Java
Consulting
>> ben at bnf.net
>> 503-313-5379
>>
@pdxstump on twitter
>>
>>
>>
>>
On Mon, Mar 5, 2012 at 10:26 AM, Pete Lancashire
>>
<pete at petelancashire.com>wrote:
>>
>>> my brain
this morning is blocked on this one
>>>
>>> I have
a data file
>>>
>>> cpu01 Â value value
value
>>> cpu02 Â value value value
>>>
cpu03 Â value value value
>>> ...
>>>
cpu01 Â value value value
>>> cpu02
 value value value
>>> cpu03 Â value
value value
>>> ...
>>> cpu01 Â value
value value
>>> cpu02 Â value value value
>>> cpu03 Â value value value
>>> ...
>>>
>>> column 1 can be cpu\d+ and cpu_all
>>>
>>> I want to open files for writing, one for
each unique value in the first
>>> column.
>>> so
that if the value f the data in the first column is "cpu01" then
>>> write to the file
>>> with the FH of $cpu01
>>>
>>> This has to be simple ...
>>>
>>> -pete
>>>
_______________________________________________
>>> PLUG mailing
list
>>> PLUG at lists.pdxlinux.org
>>>
http://lists.pdxlinux.org/mailman/listinfo/plug
>>>
>> _______________________________________________
>> PLUG
mailing list
>> PLUG at lists.pdxlinux.org
>>
http://lists.pdxlinux.org/mailman/listinfo/plug
>
_______________________________________________
> PLUG mailing list
> PLUG at lists.pdxlinux.org
>
http://lists.pdxlinux.org/mailman/listinfo/plug
>
--
Michael Rasmussen
http://www.jamhome.us/
Be
Appropriate && Follow Your Curiosity
More information about the PLUG
mailing list