Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 08.07.2009
Сообщений: 32
1

хеш хешей

29.11.2010, 11:44. Показов 1878. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Два примера, первый работает, во втором помогите понять причину отказа, ведь только меняю ключ на переменную в цикле:

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
for($i=1;$i<10;$i++){
%hash = (
     1 => {100 => 1,
             2 => 20},
 
 vegetables => {favorite => "corn",
       'second favorite' => "peas",
        'least favorite' => "turnip"}
);
}
print $hash{1}{2};
 
 
for($i=1;$i<10;$i++){
%hash = (
     1 => {100 => 1,
            $i => 2},
 
 vegetables => {favorite => "corn",
       'second favorite' => "peas",
        'least favorite' => "turnip"}
);
}
print $hash{1}{2};
Добавлено через 20 минут
Ответ наверно в том что фигурные скобки превращают массив/хеш в ССЫЛКУ на хеш,
но если переменную вынести за фигурные
Perl
1
2
3
4
5
6
7
8
9
10
11
for($i=1;$i<10;$i++){
%hash = (
     $i => {100 => 1,
            2 => 2},
 
 vegetables => {favorite => "corn",
       'second favorite' => "peas",
        'least favorite' => "turnip"}
);
}
print $hash{1}{2};
третий пример всё равно не работает.
Моя задача использовать хеш хешей 4 уровней вложенности, примерно так: хеш хешей хешей хешей;
$z{a}{b}{c}{d}. Заполнение/извлечение в цикле что то не поддается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2010, 11:44
Ответы с готовыми решениями:

Link на массив хешей
Возникла проблема, нужно сделать ссылку на массив хешей. Никогда раньше не возникало потребности...

Рекурсия хеш
Здравствуйте! Пытаюсь рекурсивно вывести дерево из хеша, почему то зацикливается ......... сам...

Файл в хеш
Добрый день. Есть текстовый файл конфигурации типа: {Цена}=price {Количество}=quant ... ...

Ссылки на анонимный хеш
Добрый день, помогите пожалуйста разобраться. Имеются хеши вида: dmz==&gt;p2p3 192.168.66.2...

2
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.11.2010, 16:57 2
Да, {} создает ссылку на хеш.
Perl
1
$perHash = {};
аналогично (если не считать временной переменной)
Perl
1
2
%tmp = ();
$perHash = \%tmp;
Вот примерв три уровня
Perl
1
2
3
4
5
6
7
8
9
10
11
%hash = ();
for $x (1,2) {
    $hash{$x} = {};
    for $y (1,2) {
        $hash{$x}{$y} = {};
        for $z (1,2) {
            $hash{$x}{$y}{$z} = $x*100 + $y*10 + $z;
        }
    }
}
print $hash{1}{2}{1};
А вот он же, но немного по-другому
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
%hash = ();
for $x (1,2) {
    my %x = ();
    $hash{$x} = \%x;
    for $y (1,2) {
        my %y = ();
        $x{$y} = \%y;
        for $z (1,2) {
            $y{$z} = $x*100 + $y*10 + $z;
        }
    }
}
print $hash{1}{2}{1};
1
1 / 1 / 0
Регистрация: 08.07.2009
Сообщений: 32
29.11.2010, 18:01  [ТС] 3
Vovan-VE спасибо! Примеры новые, я так что то не видел, вот построил перед этим так:

Код
my %hash = (); my $g = 25; my $i;

for($a= 1;$a<11;$a++){
 for($b= 1;$b<11;$b++){
  for($c= 1;$c<11;$c++){$i++;
   $hash{$g}{$a}{$b}{$c} = $i;
  }
 }
}

for my $k1 (keys %hash ) {
 for my $k2 (keys %{$hash{ $k1 }} ) {
  for my $k3 (keys %{$hash{$k1}{$k2}} ) {
   for my $k4 (keys %{$hash{$k1}{$k2}{$k3}} ) {$ga++;
    print "k4: $k4 ==$k1->$k2->$k3->$k4 :::: $hash{$k1}{$k2}{$k3}{$k4}  ==== № $ga<BR>";
   }
  }
 }
}
0
29.11.2010, 18:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2010, 18:01
Помогаю со студенческими работами здесь

Построить хеш массивов для расписания занятий
Помогите пожалуйста сделать лабораторную. Очень надеюсь на вашу помощь. я в этом нуб. 2.Для...

Взять из строки число и построить хеш с агрегацией
Есть строки вида: 3222-произвольный текст 2-произвольный текст2 456-произвольный текст...

Для формирования хеш-адреса использовать хеш-функцию универсального хеширования
Для формирования хеш-адреса использовать хеш-функцию универсального хеширования . Подскажите...

Хеш, хеш-функция, хеширование и HashMap
Снова приветствую, я начал свое знакомство с классом HashMap в Java и ввиду расхождений в разных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru