my (%data); while () { my ($submitter, $ticket_number) = split(/\|/); push(@{$data{$submitter}}, $ticket_number); } print "Submitters, by ticket count:\n"; foreach my $sub (sort { scalar $#{$data{$a}} <=> $#{$data{$b}} } keys %data) { print $sub, ": ", scalar $#{$data{$sub}}, "\n"; } print "\n", "Submitters and tickets, ordered by submitter:\n"; foreach my $sub (sort keys %data) { print $sub, ": ", join(", ", @{$data{$sub}}), "\n"; } __DATA__ Joe|1 Joe|2 Gary|3 Gary|4 Kelly|5 Joe|6 Joe|7