#! perl -slw use strict; my %stats; while( ) { my ($date, $user, $agency, $url, undef, $type, $module, undef) = split ' '; $stats{"$agency $url $module"}{$type}++; $stats{"$agency $url $module"}{user}{$user}=undef; } for my $key ( sort keys %stats ) { my ($agency, $url, $module) = split ' ', $key; printf "%8s %5s %3d %3d %3d %3d %s\n", $agency, $url, $stats{$key}{pass} ||0, $stats{$key}{fail} ||0, $stats{$key}{new_a} ||0, scalar keys %{ $stats{$key}{user} }, $module; } __DATA__ 05/Jun/2003:00:01:23 user1 agency1 url1 garbage pass mod1 more_garbage 05/Jun/2003:00:03:17 user2 null url1 garbage fail mod1 more_garbage 05/Jun/2003:00:03:42 user1 agency1 url1 garbage pass mod1 more_garbage 05/Jun/2003:00:05:03 user6 agency2 url1 garbage pass mod1 more_garbage 05/Jun/2003:00:08:34 user3 agency2 url1 garbage pass mod1 more_garbage 05/Jun/2003:00:11:59 user4 agency2 url2 garbage fail mod1 more_garbage 05/Jun/2003:00:14:30 user5 agency2 url1 garbage new_a mod1 more_garbage 05/Jun/2003:00:15:02 user1 agency1 url1 garbage pass mod1 more_garbage 05/Jun/2003:00:16:56 user7 agency2 url2 garbage pass mod2 more_garbage 05/Jun/2003:00:17:31 user1 agency1 url1 garbage fail mod1 more_garbage 05/Jun/2003:00:17:31 user1 agency1 url1 garbage pass mod2 more_garbage #### D:\Perl\test>test agency1 url1 3 1 0 1 mod1 agency1 url1 1 0 0 1 mod2 agency2 url1 2 0 1 3 mod1 agency2 url2 0 1 0 1 mod1 agency2 url2 1 0 0 1 mod2 null url1 0 1 0 1 mod1