in reply to Hash in Array

You are pushing a reference to the same hash twice on the array. So why shouldn't it tell you that? If you want different hashes, put the my %customer_type; inside the loop.