Kenton Brede wrote:

> I've cobbled some code together that will allow me to parse a file
> snarfing 4 lines which consist of server name and Daily output of
> bandwith usage.  I've pasted an example of what I have at the bottom of
> this mail.  If anyone would like to take the time to show me how it
> should really be done I would apreciate it.  I'm not exactly a
> programming wonder and trying to learn.
> Thanks,
> Kent
> 
> #!/usr/bin/perl
> use warnings;
> use strict;

good practice. 

> my @lines;
> 
> while ( <DATA> ) {
>     push ( @lines, $_ );
> }
> 

do you really need to store all the lines in an array?

> for ( my $count = 0; $count <= $#lines; $count++ ) {
>     if ( $lines[$count] =~ m/\*/g ) { # grab server names
>         print "$lines[$count]";
>     }
>     if ( $lines[$count] =~ m/Daily/g ) { # grab daily output
>         print "$lines[$count] $lines[$count+1] $lines[$count+2]\n";
>     }
> }

this is very c-ish which is fine for your purpose but Perl encourages a 
different style. if you just want to print out the server and the daily 
average, there are many ways to accomplish that. one way of doing it would 
be:

#!/usr/bin/perl -w
use strict;

my $found;

while(<DATA>){
        $found = 1 && print if /^\*/;
        if($found){
                $found = 0;
                while(<DATA>){/Daily/ && last}
                print <DATA> . <DATA>;
        }
}

__DATA__
* Leo

# Bandwidth Usage
eth0 Total for 106.95 days:
    RX 307.28 MB
    TX 768.05 MB
eth0 Daily average:
    RX 2.87 MB
    TX 7.18 MB

* Buffy2

# Bandwidth Usage
eth0 Total for 14.70 days:
    RX 141.28 MB
    TX 2.03 MB
eth0 Daily average:
    RX 9.61 MB
    TX 0.14 MB

__END__

prints:

* Leo
    RX 2.87 MB
    TX 7.18 MB
* Buffy2
    RX 9.61 MB
    TX 0.14 MB

i think the only line that deserve any explanation is:

print <DATA> . <DATA>;

which simply forecs <DATA> to be in scalar context so it return the next 2 
lines which we know will be the stat of the server.

david
-- 
s,.*,<<,e,y,\n,,d,y,.s,10,,s
.ss.s.s...s.s....ss.....s.ss
s.sssss.sssss...s...s..s....
...s.ss..s.sss..ss.s....ss.s
s.sssss.s.ssss..ss.s....ss.s
..s..sss.sssss.ss.sss..ssss.
..sss....s.s....ss.s....ss.s

,....{4},"|?{*=}_'y!'+0!$&;"
,ge,y,!#:$_(-*[./<[EMAIL PROTECTED],b-t,
.y...,$~=q~=?,;^_#+?{~,,$~=~
y.!-&*-/:[EMAIL PROTECTED] ().;s,;,
);,g,s,s,$~s,g,y,y,%,,g,eval

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to