use List::MoreUtils qw(part); use constant NWAYS => 3; my $i; #my @AoA = part { $i++ % NWAYS } keys %hash; my @AoH = map +{map {$_ => $hash{$_}} @$_}, part { $i++ % NWAYS } keys %hash;