in reply to Night of the Day of the Dawn of the Son of the Bride of the Return of the Attack of the Revenge of the Horrors of References and Complex Data Structures

A different hash reference should be pushed onto the array every time in the situation you describe. However, its possible that the contents of those hashes are the same (use Data::Dumper to see the contents, if they are the same references also, it would show that).

I still question the need to use the same global hash everywhere, but if you need to push a snapshot of the hash onto the array, the 'push @array, { %hash }' should work for a simple hash, or if you need a deeper copy, then see dclone in Storable.