Поскольку типы переменных и значений хеш-функции могут изменяться в Perl, нет никакого способа "объявить" трехуровневый хеш-код, как вы, вероятно, думаете.Вы можете создать пустой хеш-адрес в каждом ключе по мере его создания, что аналогично:
# First pass
my $data = {};
# Later...
$data->{group} = {};
# Still later...
$data->{group}->{1104} = {};
# Finally...
$data->{group}->{1104}->{a} = 1;
Но вы можете так же легко заполнить данные, как только получите их, что позволит автовивификации делать свое дело:
my $data;
# Fill one piece of data... Perl creates all three hash levels now.
$data->{group}->{1104}->{a} = 1;
# Fill another piece of data, this one has two values in the "bottom" hash.
$data->{group}->{52202} = { b => 1, c => 2};
Но нет способа (в простом Perl) «принудить», чтобы значения для любого конкретного ключа содержали хэши, а не строки или ссылки на подпрограммы, что обычно подразумевается объявлением в языкахс системами типа C.