How about using a reference to an array. Here's a little ditty that builds the kind of hash for which you're looking and then prints out the results:
use strict;
use warnings;
use diagnostics;
use Data::Dumper;
my %hash;
my $key;
my $value;
my @data = ("foo",1, "bar",2, "foo",3, "baz",4);
while ($key = shift (@data))
{
$value = shift (@data);
# push the value on the array
push @{$hash{$key}}, $value;
}
print Dumper \%hash;
Note: you have to create the anonymous reference -- you can't just push a value if the key doesn't exist.
Update: apparently you can just push the value.
|