in reply to List into two-dimensional array

With List::MoreUtils:

use strict; use warnings; use Test::More tests => 2; use List::MoreUtils 'part'; my ($C, $R) = (4, 3); my @list = 1..12; my $i = 0; my @AoA = part { int ($i++ / $C) } @list; is_deeply \@AoA, [[1 .. 4], [5 .. 8], [9 .. 12]]; is_deeply \@list, [1..12];

🦛

Replies are listed 'Best First'.
Re^2: List into two-dimensional array
by eyepopslikeamosquito (Archbishop) on Dec 14, 2020 at 20:12 UTC

    With more List::MoreUtils:

    use strict; use warnings; use Test::More tests => 2; use List::MoreUtils 'natatime'; my ($C, $R) = (4, 3); my @list = 1..12; my @AoA; my $iter = natatime($C, @list); while ( my @chunk = $iter->() ) { push @AoA, [@chunk]; } is_deeply \@AoA, [[1 .. 4], [5 .. 8], [9 .. 12]]; is_deeply \@list, [1..12];

    Updated: fixed two blunders in original post. Thanks LanX.

    Update: This question reminds me of another recent node: How to Split on specific occurrence of a comma (where my response contains some CPAN List module refs)

      Thanks to CPAN, most things devolve into "already-thoroughly-solved problems." MoreUtils is priceless.