Perl сохранить в новый массив после достижения предела количества элементов в одном массиве - PullRequest
0 голосов
/ 14 июля 2020

У меня есть массив в формате:

@arr = ABHCKPDLT OJEWFNONP POJEWPOFJ IWOJEFPPW IHWEF_IPIA

Мне нужно проверить, достигнуто ли ограничение на количество элементов, скажем, 4k символов. Если это так, необходимо создать новый массив и сохранить следующий предел массивов.

@arr_final = [[ABHCKPDLT OJEWFNONP POJEWPOFJ],[IWOJEFPPW IHWEF_IPIA]]

 #!usr/bin/perl
 use List::MoreUtils qw(natatime);
 my @VAR;
 {
  my $iter = natatime 3, @arr;
  while( my @tmp = $iter->() ){
    push @VAR, \@tmp;
  }
 }

Пожалуйста, предложите, какой будет лучший подход в perl.

1 Ответ

2 голосов
/ 14 июля 2020

Сохранить количество символов в переменной, сбросить его при запуске нового подмассива.

#!/usr/bin/perl
use strict;
use warnings;

my $THRESHOLD = 15;

my @arr = qw( 123456789 123456 123456789 132 123456789 1234 123456789 12345 1234567890 );

my @final = ([]);
my $size = 0;
while (@arr) {
    $size += length $arr[0];
    if ($size > $THRESHOLD) {
        $size = length $arr[0];
        push @final, [];
    }
    push @{ $final[-1] }, shift @arr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...