In case you want to start using an array for the entry as soon as there is more
than one element (and only then), you could do
...
my $key = <STDIN>;
chomp($key);
my $val = <STDIN>;
chomp($val);
if (exists $hash{$key}) {
$hash{$key} = [ $hash{$key} ] unless ref($hash{$key});
push @{$hash{$key}}, $val;
} else {
$hash{$key} = $val;
}
Update: this would produce a data structure like this
$VAR1 = {
'bar' => 'val3',
'baz' => 'val4',
'foo' => [
'val1',
'val2'
]
};
Whether that's convenient to use further on, is another question... Maybe you'd want to always use an array for each entry, in which case you could simply write (using autovivification):
...
my $key = <STDIN>;
chomp($key);
my $val = <STDIN>;
chomp($val);
push @{$hash{$key}}, $val;
producing:
$VAR1 = {
'bar' => [
'val3'
],
'baz' => [
'val4'
],
'foo' => [
'val1',
'val2'
]
};
|