On Aug 31, 6:05 pm, [EMAIL PROTECTED] (Chris E. Rempola) wrote:
> I'm trying to parse qmail-qread data, but don't know how to find the
> number of occurrences after a particular string.  Here is the data:
>
> +++++++++++ Beginning of data +++++++++++++++++++++++++++++++++++++++++
> 28 Aug 2007 17:00:47 GMT  #8807850  41428  <[EMAIL PROTECTED]>
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>
>    28 Aug 2007 17:00:47 GMT  #8807850  41428  <[EMAIL PROTECTED]>
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
>    done  remote  [EMAIL PROTECTED]
> ++++++++++++ End of Data ++++++++++++++++++++++++++++++++++++++
>
> How would I make it look for the (#) sign and count every occurence of
> the word(remote) below it?  So the script would know that
> '[EMAIL PROTECTED]' sent 10 emails and that '[EMAIL PROTECTED]' sent
> 5 emails.  Any help appreciated.  Thank you.
>
> -Chris

I posted this last night about 7:30 but for some reason it doesn't
show up.  Maybe there's something wrong with using groups.google.com
web portal to this group.

For something this trivial, where you're using if elsif blocks that
only contain 1 simple line as shown by others, I prefer to condense it
a little to 2 slightly more complex statements, but are still easily
understood.  I'm sure others here will disagree with my approach.

use warnings;
use strict;
use Data::Dumper;

my ($key, %remote);

while( my $line = <DATA> ) {
   $key = $1 if $line =~ /#[\d ]+<([^>]+)>/;
   $remote{$key}++ if defined $key and $line =~ /done  remote/;
}

print Dumper \%remote;


__DATA__
 28 Aug 2007 17:00:47 GMT  #8807850  41428  <[EMAIL PROTECTED]>
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]

   28 Aug 2007 17:00:47 GMT  #8807850  41428  <[EMAIL PROTECTED]>
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]
   done  remote  [EMAIL PROTECTED]


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


Reply via email to