for (my $i = 0; $i <= $#list; $i += $C) { push @AoA, [ @list[$i .. $i + $C - 1] ]; } #### [[1 .. 4], [5 .. 8], [9 .. 12]] [1 .. 12] #### [[1 .. 4], [5 .. 8], [9 .. 12], [13, 14, undef, undef]] [1 .. 14] #### for (my $i = 0; $i <= $#list; $i += $C) { my $end = $i + $C - 1; $end = $#list if $end > $#list; push @AoA, [ @list[$i .. $end] ]; } #### [[1 .. 4], [5 .. 8], [9 .. 12], [13, 14]] [1 .. 14] #### [[1 .. 4], [5 .. 8], [9 .. 12]] [1 .. 12]