Хеш хешей хешей хешей массивов

#!/usr/bin/perl

foreach $lett(qw(meat beer)){
  foreach $num(qw(war peace)){
    foreach $tes(qw(one two)){
      foreach $users(qw(bred pitt)){
        @{$hhh{$lett}{$num}{$tes}{$users}}=qw(beer vodka);
      }
    }
  }
}
print "hash\tsubhash\t  subsubhash\tmassives\n";
for $let(sort keys %hhh) {
  print "hash $let: (\n";
  for $nums (sort keys %{$hhh{$let}}) {
    print "\tsubhash $nums (\n\t";
    for $ltr(sort keys %{$hhh{$let}{$nums}}){
      print "\tsubsubhash $ltr (\n\t";
      for $aa(sort keys %{$hhh{$let}{$nums}{$ltr}}){
        print "\t\t'$aa'  => [ ";
        print join " | " => @{$hhh{$let}{$nums}{$ltr}{$aa}};
        print " ]\n\t";
      }
      print ")\n\t";
    }
    print "    \t)\n";
  }
  print ")\n";
}

** Joe's Own Editor v2.8l ** Copyright (C) 1995 Joseph H. Allen **
File hhhsh.pl not changed so no update needed.
bash-2.05$ ./hhhsh.pl | less
hash    subhash   subsubhash    massives
hash beer: (
        subhash peace (
                subsubhash one (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                subsubhash two (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                )
        subhash war (
                subsubhash one (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                subsubhash two (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                )
)
hash meat: (
        subhash peace (
                subsubhash one (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                subsubhash two (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                )
        subhash war (
                subsubhash one (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                subsubhash two (
                        'bred'  => [ beer | vodka ]
                        'pitt'  => [ beer | vodka ]
        )
                )
)
bash-2.05$

Хеши можно строить любой степени вложенности просто прибавляя лишний цикл и лишнюю пару фигурных скобок в $hhh{$lett}{$num}{$tes}{$users}, т.е. $hhh{$lett}{$num}{$tes}{$users}{$dream} уже будет хешем хешей хешей хешей хешей т.д.

А в конце, используя оператор @{а тут хеш хешей хешей хешей хешей ... n+1 ...}=qw(blah blah blah) можно приспособить хешn массивов. Итого это будет выглядеть так:

@{$hhh{$lett}{$num}{$tes}{$users}}=qw(beer vodka);

Соответственно дает быстрый доступ к катологизированной информации.

Осталось сделать хеш любой степени вложенности для, например, хранения дерева каталогов и, скажем, базы пермишнов на файлы, если вдруг нечаянно ввел не ту команду.