Try a hash of arrays. For example,
my (%data); while (<DATA>) { 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
The above sample would give you something along the lines of:
Submitters, by ticket count: Kelly: 1 Gary: 2 Joe: 4 Submitters and tickets, ordered by submitter: Gary: 3, 4 Kelly: 5 Joe: 1, 2, 6, 7
See also perldsc, for more information on data structures in perl. Hope that helps.
Update: 23 Mar 2005 - Fixed typo in code sample; added note regarding perldsc.
In reply to Re: Hash pointing to multiple items
by atcroft
in thread Hash pointing to multiple items
by pjofnj
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |