Вам нужно использовать оператор \
, чтобы получить ссылку на множественный тип данных (массив или хэш), прежде чем вы сможете сохранить его в одном слоте. Но в приведенном примере кода, если на него есть ссылка, каждый будет одним и тем же хешем.
Способ инициализации вашей структуры данных:
foreach my $key (keys %superhash) {
$superhash{ $key } = {}; # New empty hash reference
}
Но такая инициализация в основном не нужна в Perl из-за автовивификации (создание соответствующих объектов контейнера, когда переменная используется в качестве контейнера).
my %hash;
$hash{a}{b} = 1;
Теперь %hash
имеет один ключ, 'a', который имеет значение анонимного hashref, содержащего пару ключ / значение b => 1
. Массивы автовивифицируются таким же образом.