5 use Data::Dump qw(dump);
11 my ( $mon, $dd, $time, $host, $daemon, $msg ) = split(/\s+/,$_,6);
13 next unless $msg =~ m/from=<([^>]+)>/;
17 $t =~ s/\d:\d\d$/_/; # group by 10 min
19 $stat->{$mon}->{$dd}->{$t}->{$from}++;
22 print STDERR "$l " if $l % 10000 == 0;
25 #warn "# stat = ", dump( $stat );
27 foreach my $mon ( sort keys %$stat ) {
28 foreach my $dd ( sort keys %{$stat->{$mon}} ) {
29 foreach my $t ( sort keys %{ $stat->{$mon}->{$dd} } ) {
31 my $e = $stat->{$mon}->{$dd}->{$t};
32 foreach my $email ( sort { $e->{$b} <=> $e->{$a} } keys %$e ) {
34 printf "%3s %2s %5s %d %s\n", $mon, $dd, $t, $e->{$email}, $email;
35 } elsif ( $n == 5 ) { # XXX top
38 printf "%3s %2s %5s %d %s\n", '', '', '', $e->{$email}, $email;
40 $stat->{_from}->{$email} += $e->{$email};
46 #print "_from = ",dump( $stat->{_from} );
47 foreach my $email ( sort { $stat->{_from}->{$b} <=> $stat->{_from}->{$a} } keys %{ $stat->{_from} } ) {
48 printf "%4d %s\n", $stat->{_from}->{$email}, $email;