my %q_u; open PAGELOG, "< page_log" or die "unable to open pagelog for read: $!\n"; while (<>) { chomp; my( $queue, $user, $jobid, @rest ) = split; defined $jobid or next; $q_u{$queue}{$user}{'jobids'}{$jobid}++; $q_u{$queue}{$user}{'npages'}++; } close PAGELOG; for my $queue ( sort keys %q_u ) { print "[$queue]\n"; for my $user ( sort keys %{ $q_u{$queue} } ) { my $nj = keys %{ $q_u{$queue}{$user}{'jobids'} }; my $np = $q_u{$queue}{$user}{'npages'}; print " [$user]\n"; print " $nj jobs - $np pages total\n"; } }