Как лучше всего объединить оба хэша в% hash1? Я всегда знаю, что% hash2 и% hash1 всегда имеют уникальные ключи. Если возможно, я бы предпочел одну строчку кода.
$hash1{'1'} = 'red';
$hash1{'2'} = 'blue';
$hash2{'3'} = 'green';
$hash2{'4'} = 'yellow';
perl
dictionary
hash
merge
Млейкамп
источник
источник
%hash1 = (%hash1, %hash2)
$hash_ref1
значение$hash_ref2
, без слияния. Хочешь$hash_ref1 = { %$hash_ref1, %$hash_ref2 };
, я подредактирую ответ.Посмотрите perlfaq4: Как объединить два хэша . В документации Perl уже есть много полезной информации, и вы можете получить ее прямо сейчас, а не ждать, пока кто-нибудь ответит. :)
Прежде чем вы решите объединить два хэша, вы должны решить, что делать, если оба хэша содержат одинаковые ключи, и если вы хотите оставить исходные хэши такими, какими они были.
Если вы хотите сохранить исходные хеши, скопируйте один хеш (% hash1) в новый хэш (% new_hash), затем добавьте ключи из другого хеша (% hash2 в новый хеш. Проверка того, что ключ уже существует в% new_hash) дает вам возможность решить, что делать с дубликатами:
Если вы не хотите создавать новый хэш, вы все равно можете использовать эту технику цикла; просто измените% new_hash на% hash1.
Если вам все равно, что один хэш перезаписывает ключи и значения другого, вы можете просто использовать хеш-срез, чтобы добавить один хеш к другому. В этом случае значения из% hash2 заменяют значения из% hash1, если у них есть общие ключи:
источник
Это старый вопрос, но он часто встречается в моем поиске в Google по запросу «хеши слияния perl» - и при этом не упоминается очень полезный модуль CPAN Hash :: Merge.
источник
Для хеш-ссылок. Вы должны использовать фигурные скобки, как показано ниже:
а не предложенный выше ответ с использованием скобок:
источник