N
Niall
The attached code is intended to populate a hash with 2 keys , each
data element of the has being an array of integers - ie
key1 -> [5, 8, 19]
key2 -> [10,25]
However I end up with each array being empty. Can someone point me at
what I doing wrong ? Is it because when I set up the anonymous array I
need to pass a refernce ? I tried
$rh_hoa->{$key} = \[];
but this gave me a 'Not an Array reference' error
Thanks
use strict;
use warnings;
use Data:umper;
##################################################
sub AddValueToHash
{
my($rh_hoa, $key, $value) = @_;
if( !exists ($rh_hoa->{$key} ) )
{
$rh_hoa->{$key} = [];
}
push @ {$rh_hoa->{$key}}, $value;
return;
}
################################################
my %hoa = ();
while (<DATA>)
{
chomp;
my ($key, $value) = split;
AddValueToHash(\%hoa, $key, $value);
}
foreach my $key (keys %hoa)
{
print Dumper $key;
print Dumper $hoa{key};
}
################################################
__END__
key1 5
key1 8
key2 10
key1 19
key2 25
data element of the has being an array of integers - ie
key1 -> [5, 8, 19]
key2 -> [10,25]
However I end up with each array being empty. Can someone point me at
what I doing wrong ? Is it because when I set up the anonymous array I
need to pass a refernce ? I tried
$rh_hoa->{$key} = \[];
but this gave me a 'Not an Array reference' error
Thanks
use strict;
use warnings;
use Data:umper;
##################################################
sub AddValueToHash
{
my($rh_hoa, $key, $value) = @_;
if( !exists ($rh_hoa->{$key} ) )
{
$rh_hoa->{$key} = [];
}
push @ {$rh_hoa->{$key}}, $value;
return;
}
################################################
my %hoa = ();
while (<DATA>)
{
chomp;
my ($key, $value) = split;
AddValueToHash(\%hoa, $key, $value);
}
foreach my $key (keys %hoa)
{
print Dumper $key;
print Dumper $hoa{key};
}
################################################
__END__
key1 5
key1 8
key2 10
key1 19
key2 25