in reply to pushing hash values to an array

Well, you are "pushing it through a reference" indeed. However, since that reference doesn't exist, only undefined values will be pushed (things get added, you don't see them).

Either strict or warnings would have given you hints on what's wrong with your code.