foreach (...) { foreach $catId (@catIds) { # make a new subArray individual every time my @subArray; push( @subArray, { 'categoryName' => $catNames[$catId}, 'categoryUrl' => "list.cgi?category=" . $catId, }, ); } # push the reference push @mainArray, \@subArray; }