Each time through do_something(), not only does %hash get new data, but the hash reference pushed onto @array gets the old data.my (@array, %hash); do_something($_) for (1 .. 3); sub do_something { my $num = shift; $hash{$num} = $num; push @array, { %hash }; } use Data::Dumper; print Dumper(\%hash); foreach my $href (@array) { my ($key, $value); print "Hash ($href):\n"; foreach $key (keys %$href) { $value = $href->{$key}; print "\t$key => $value\n"; } }
This may or may not be what you want. In fact, I'm really not sure what you want. Instead of asking "How do I fix this bit of code that isn't working?" perhaps you should ask "Here is a textual description of the task I am trying to accomplish. What methods might I use to perform this task?" (XYZ Questions)
|
|---|