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
Post a Comment