[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