in reply to Hash pointing to multiple items

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.

Replies are listed 'Best First'.
Re^2: Hash pointing to multiple items
by pjofnj (Initiate) on Mar 23, 2005 at 19:15 UTC
    Thanks.. That did the trick.. You're awsome..