Pass by reference array inside hash in perl -


i want modify array located inside hash in perl. however, can't seem pass reference here. if array not inside hash, works fine. here code:

%hash = (     array1 => ['foo', 2, 'bar']  ); print @{$hash{array1}}, "\n"; changearray($hash{array1}); print @{$hash{array1}}, "\n";   sub changearray {     @array = @{$_[0]};     $array[0] = "not foo"; } 

output:

$ ./scrap.pl foo2bar foo2bar 

isn't $hash{array1} reference anonymous array ['foo',2,'bar']?

in changearray sub, making array @array, arrayref contained in hash, changes @array, going out of scope when changearray done.

try

sub changearray {    $arrayref = $_[0];    $arrayref->[0] = "not foo"; } 

Comments