Я точно не знаю, как сформулировать мою проблему ниже в вопросе, поэтому, пожалуйста, потерпите меня.
Проблема:
У меня есть многомерный массив, который выглядит следующим образом:
$raw_list[0]['123','foo','foo1','300']
$raw_list[1]['456','foo2','foo3','4']
$raw_list[2]['123','foo4','foo5','67']
$raw_list[3]['456','foo6','foo7','34']
Это обычно становится очень большим (может достигнуть более тысячи индексов?)
Я хочу разделить все записи с одинаковым значением 0-го элемента в $ raw_list [nth] [0] и работать с каждой группой так, чтобы ...
$raw_list[0]['123','foo','foo1','300']
$raw_list[2]['123','foo4','foo5','67']
Затем я оперирую этой группой, чтобы получить различную статистическую информацию. Например, сумма значений элементов «300» и «67» и т. Д.
Текущее решение:
На данный момент так выглядит мой код.
my @anum_group = ();
@die_raw_list = sort {$a->[0] <=> $b->[0]} @die_raw_list;
my $anum_reference = @die_raw_list[0][0];
for my $row (0..$#die_raw_list)
{
if ($die_raw_list[$row][0] == $anum_reference)
{
push @anum_group, $die_raw_list[$row];
}
else
{
# Profile ANUM group
# ... operation to get statistical info on group here
# Initialize next ANUM group
$anum_reference = $die_raw_list[$row][0];
@anum_group = ();
push @anum_group, $die_raw_list[$row];
}
}
# Profile last ANUM group
# ... operation to get statistical info on group here
Заключительные мысли и вопрос:
Я понял, что на очень больших данных это очень медленно, и я хочу ускорить процесс.
Я новичок в Perl и не знаю, как лучше всего решить эту проблему.