in reply to Assign a hash to an array

But when I push that into an array its changing.

To keep the structure, push the reference, not the hash:

push (@return_array, \%hash);

If that doesn't give you what you want then you'll have to be a lot more specific about what you do want. (Note: ravi45722 has since silently updated his post to include the output that he wants)