Один из самых простых способов - использовать функции List::MoreUtils
и natatime
или part
.
С помощью natatime он создает итератор, поэтому это может быть не то, что вам нужно:
my $iter = natatime 3, @orig_list;
И каждый вызов $iter->()
возвращает 3 элемента в списке.
Тогда есть part
.
my $i = 0;
my @groups = part { int( $i++ / 3 ) } @orig_array;
Если вы хотите сделать это проще, вы можете написать свою собственную функцию: chunk_array
.
sub chunk_array {
my $size = shift;
my $i = 0;
return part { int( $i++ / $size ) } @_;
}
И вы бы назвали это так просто:
my @trios = chunk_array( 3, @orig_array );