my @AoA; for (0 .. $#list) { push @AoA, [] if $_ % $C == 0; push @{ $AoA[-1] }, $list[$_]; }