Rodrick Brown wrote:
> Can someone take a look at the following sample code and let me know if you
> see any areas I can improve upon I tend to use the same structure when
> parsing txt files and before I commit this convention into memory maybe one
> of you guru's could let me know what I can improve upon.
>
> Thanks
>
>
> #!/usr/bin/perl -w
> use strict;
use warnings;
> use Data::Dumper;
>
> my $file = 'sample.txt';
> my ($ds,$time_v,$host);
>
> open(my $fh, "<", $file ) or die("Fatal error unable to read $file: $!");
>
> while(<$fh>) {
chomp;
> /(^[a-zA-Z].*)/ and $host = $1 and next;
> /(^\d+)/ and $time_v = $1;
> if ( defined $host and defined $time_v )
> {
> push @{$ds->{$host}},$time_v;
There is no need to keep an array of times if all you want is the total.
if (/^[A-Z]/i) {
$host = $_;
}
elsif (/(^\d+)/) {
$ds->{$host} += $1 if defined $host;
}
> }
> }
> close ($fh);
>
> #print Dumper($ds);
>
> my $total = 0;
>
> while ( my ($k, $v) = each(%{$ds}) ) {
Declare
my $total = 0;
here
> if ( ref $v eq 'ARRAY') {
> foreach(@{$v}) {
> $total +=$_;
> }
> print "$k: $total\n";
> $total = 0;
and then there's no need to reset it.
> }
> }
It would help us to see your data, but I hope this helps.
Rob
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/