my @AoH; for (0..9) { my %monks = ( Zaxo => 'W. Virginia', tye => 'California', theorbtwo => 'Germany', castaway => 'Germany', atcroft => 'Georgia', rozallin => 'England', ); print "\%monks is at address ", 0+\%monks, "\n"; # save a reference every other iteration $AoH[$_/2] ||= \%monks; } print "\%{\$AoH[$_]} is at address ", 0+$AoH[$_], "\n" for 0..$#AoH; __END__ %monks is at address 269696284 %monks is at address 269696716 %monks is at address 269696716 %monks is at address 269696812 %monks is at address 269696812 %monks is at address 269696908 %monks is at address 269696908 %monks is at address 269697004 %monks is at address 269697004 %monks is at address 269706344 %{$AoH[0]} is at address 269696284 %{$AoH[1]} is at address 269696716 %{$AoH[2]} is at address 269696812 %{$AoH[3]} is at address 269696908 %{$AoH[4]} is at address 269697004