in reply to O, the horrors of references and complex data structures

The easiest way to solve this problem is to create an anonymous hash and push it onto the array: push @AoH, { %globHash }; The other way to solve this problem is to push a reference to a lexical that goes out of scope. For example:
while (<>) { my %hash = split; push @AoH, \%hash; }
Each iteration of the loop will create a new instance of %hash, while the old instances will be accessible through the references in @AoH.