2013-04-24 5 views
2

Я задаю этот вопрос, прежде чем спуститься по длинному/подробному/неправильному способу сделать это.Как я могу объединить два хэша Perl?

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

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

$defaults = { 
type => paper, 
number => 3 
}; 

$user_defined = { 
number => 5 
}; 

Конечный соединенная выход/хэш требуется

$result = { 
    type => paper, 
    number => 5, 
} 

ответ

10

Я использую

my $result = { %$defaults, %$user_defined }; 
+0

Да - прохладно. Протестировано, это отлично работает – evolution

4

Очевидное решение является правильным:

$result = { %$defaults, %$user_defined }; 
4

Приведенные ответы хорошо, если хэш имеет простые скалярные значения (т. это только один уровень глубины). Если ваш хэш может содержать другие хеши и массивы на произвольной глубине, посмотрите на Hash::Merge в качестве опции для объединения информации в нее.

Смежные вопросы