Попытка разобрать массив с общими элементами, чтобы создать новый хеш, содержащий информацию о количестве.Структура, которую я пытаюсь создать, выглядит следующим образом:
{
var1 => [
cat1 => 50,
cat2 => 3,
cat3 => 5
],
var2 => [
cat2 => 12,
cat4 => 4,
cat5 => 1
]
}
Я знаю, как создать хэш массивов, но я не могу понять, как внутренний массив представляет хэш счетчиков.как указано выше.У меня есть структура данных, представляющая собой массив массивов с большим количеством элементов.Но, в качестве игрушечного примера, вот что я пытаюсь работать:
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
use Data::Dump;
my @array = (
["cat1", "var1"],
["cat2", "var1"],
["cat2", "var1"],
["cat2", "var2"],
["cat1", "var1"],
["cat1", "var1"],
);
my %counts;
for my $elem (@array) {
push(@{$counts{$elem->[1]}}, $elem->[0]);
}
dd \%counts;
Я не могу понять, как изменить этот вызов push()
для передачи анонимного массива с счетчиками, полученными изцикл по @array
(плохое имя, я знаю ... только для демонстрационных целей).
Я думаю, я могу сделать это в два этапа.Но, похоже, должен быть простой способ подсчитать элементы, когда я загружаю их в %counts
.Может кто-нибудь показать мне, где я иду не так?