Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Слияние хэшей |
Автор: meridian 13.4.2011, 12:19 | ||
Привет! Задача сложить два хэша. При печати выводит правильные значения, а результат какой-то не тот. Помогите разобраться, плиз. Я так понял, если просто выполнить %res = (%hash1, %hash2), то значения %hash2 перетрут %hash1.
И второй вопрос. Можно ли сделать, что бы значение %hash1 добавлялось к %hash2, например %hash1 = ( id1 => "str1", id2 => "str2", id3 => "str3" ); %hash2 = ( id1 => "str6", id2 => "str7", id3 => "str8" ); результат %res = ( id1 => "str1", "str6" id2 => "str2", "str7" id3 => "str3", "str8" ); |
Автор: IceSunrise 13.4.2011, 12:37 | ||
meridian, привет твой код выдал мне вот такой результат
Это не то, что нужно? |
Автор: meridian 13.4.2011, 13:22 |
Привет, это то что нужно, но у меня что-то не дает, странно. Все равно пасиб, сейчас попробую еще раз. |
Автор: meridian 13.4.2011, 13:38 | ||||
Сделал вот что, заполнил хэши
по идее должны получиться значения "да;нет", но при печати получаю следующее
т.е. res пустое |
Автор: meridian 13.4.2011, 14:16 | ||
Со второй часть вопроса разобрался - создание хэшей массивов. Добавление всех значений к первому хэшу
|
Автор: IceSunrise 13.4.2011, 14:47 | ||||||||||
meridian, а какую версию перла ты используешь? Дело в том, что вот эта твоя строчка
у меня печатает:
Правильный синтаксис в данном случае такой:
Но не понятно, зачем здесь так хитрить, пиши просто:
Для вывода в консоль всего хеша используй модуль Data::Dumper, очень просто и удобно:
|
Автор: IceSunrise 13.4.2011, 16:31 | ||||
meridian, Вот твой код, который работает как ты хочешь ![]()
Вот его вывод:
Но учти, что в результирующий хеш попадут только ключи из первого хеша (hash1). Если во втором хеше (hash2) будут ключи, которых нет в первом, то и в результирующем хеше их не будет. |
Автор: meridian 13.4.2011, 16:33 | ||||
Вот такой будет работать ? for my $key ( keys %res ) { print "$key = ".join( ', ', @{ $res{$key} } ); } Добавлено через 2 минуты и 8 секунд
Спасибо! Это я знаю, в моем случае так и надо, т.е. что не входит - отбрасываем. |
Автор: meridian 13.4.2011, 17:50 |
IceSunrise спасибо! Вопрос решен. |