Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хеш Хешей, добавление значения 
V
    Опции темы
shamber
Дата 17.1.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Что то я не понимаю....

хочется создать хеш хешей, я думаю он так называется :

Код

use strict;

my %hesh = ('fun'=> "my i fun", 'bla' => "bla");

my %hesh2 =('hesh'=>\%hesh);


 все нормально создается.

Далее, когда я пытаюсь добавить в hesh2 еще один хеш, то он затирает предидущий.

Код


my %hesh3 = ('anower'=> "bla");
%hesh2 =('hesh'=>\%hesh3);


Понимаю, что что-то делаю не так. Подскажите как правильно плиз.
Надеюсь ясно выразился.
PM MAIL Jabber   Вверх
JAPH
Дата 17.1.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 3
Всего: 23



Во-первых, ключи должны отличаться. Во-вторых,
Код

%hesh2 = (...);

создаёт хэш только с теми значениями, что указаны в скобках.
Чтоб добавить нечто к хэшу, надо пользоваться присваиванием
Код

$hesh2{'new_key'} = \%hash3;




--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
shamber
Дата 17.1.2007, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



А внутрь никак? 
А ведь очень хочется smile

фишка ж то в том, что я в hesh2, создаю хеш хешей.

%hesh2 
       \
        %hesh
                  \ 'fun'=> "my i fun"
                  \ 'bla' => "bla"
                  \ 'anower' => "bla" #этот пункт добавляется позднее

т.е. этого результата, я никогда не добьюсь?
PM MAIL Jabber   Вверх
Nab
Дата 17.1.2007, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Почему нет?

Ваш код, но записанный правильно smile
Код

use strict;

my %hesh = ('fun'=> "my i fun", 'bla' => "bla");

my %hesh2 =('hesh'=>\%hesh);
$hesh2->{'hesh'}->{'anower'} = "bla";


Или если нужно слияние хешей то:
Код

use strict;

my %hesh = ('fun'=> "my i fun", 'bla' => "bla");

my %hesh2 =('hesh'=>\%hesh);
my %hesh3 = ('anower'=> "bla");

%{$hesh2->{'hesh'}} = %{%{$hesh2->{'hesh'}}, %hesh3};


А вообще почитайте чего про ссылки, в классических трудах...
К сожалению ссылками не располагаю smile



--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
nitr
Дата 17.1.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Код

#!perl -w
use strict;
use Data::Dumper;

my %hesh2 = ('1' => 'bla', '2' => 'bla');
my %hesh = ('hesh' => \%hesh2);

$hesh2{'3'} = 'bla';
print Dumper(%hesh);


Добавлено @ 23:37 
и как сказал JAPH, 
Цитата

Чтоб добавить нечто к хэшу, надо пользоваться присваиванием
  $hesh{new_key} = value;



--------------------
PM   Вверх
shamber
Дата 17.1.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Nab, 
nitr, 
спасибо, пошел использовать.
я теоритически догадывался, что придется, через 
Код

$hesh2->{'hesh'}->{'anower'} = "bla";

но думал, можно проще. smile Халявки хотелось. smile
PM MAIL Jabber   Вверх
Nab
Дата 18.1.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Цитата(shamber @  17.1.2007,  23:43 Найти цитируемый пост)
но думал, можно проще. smile Халявки хотелось. smile

Куда уж проще smile


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
nitr
Дата 18.1.2007, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



shamber, заметь этот способ ;)
http://forum.vingrad.ru/index.php?showtopi...t&p=1001582

пример на твоём, только исправлен, но я лично юзаю (если такое необходимо) - способ Nab'а


--------------------
PM   Вверх
shamber
Дата 18.1.2007, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18




nitr, Про присвоение я понял, спасибо.
Способ Nab мне тоже понравился smile
его и юзаю smile 
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.