use strict; use warnings; my ( %outhash, @array_out, @array_in ); for( my $i = 0; $i < 5; $i++ ) { $outhash{key1} = $i; push( @array_out, \%outhash ); my %inhash; $inhash{key1} = $i; push( @array_in, \%inhash ); } print "array_out:\n"; foreach my $hashref ( @array_out ) { print "$hashref\n"; } print "array_in:\n"; foreach my $hashref ( @array_in ) { print "$hashref\n"; } output: array_out: HASH(0x183285c) HASH(0x183285c) HASH(0x183285c) HASH(0x183285c) HASH(0x183285c) array_in: HASH(0x198c014) HASH(0x1835164) HASH(0x18351dc) HASH(0x1835254) HASH(0x18352cc)