Поиск общих или различающихся ключей в двух хэшах

Проблема

Требуется найти в хэше ключи, присутствующие в другом хэше, — или наоборот, не входящие в другой хэш.

Решение

Организуйте перебор ключей хэша с помощью функции keys и проверяйте, присутствует ли текущий ключ в другом хэше.
Поиск общих ключей
my @common = ();
foreach (keys %hash1) {
  push(@common, $_) if exists $hash2{$_};
}
# @common содержит общие ключи
Поиск ключей, отсутствующих в другом хэше
my @this_not_that = ();
foreach (keys %hash1) {
  push(@this_not_that, $_) unless exists $hash2{$_};
}

Комментарий

При поиске общих или различающихся ключей хэшей можно воспользоваться рецептами для поиска общих или различающихся элементов в массивах ключей хэшей.
В следующем фрагменте поиск различающихся ключей применяется для нахождения продуктов, не входящих в хэш с описаниями цитрусовых:
# %citrus_color - хэш, связывающий названия цитрусовых плодов с их цветами
%citrus_color = (Lemon  => "yellow",
                 Orange => "orange",
                 Lime   => "green" );
# Построить список продуктов, не входящих в хэш цитрусовых
@non-citrus = ();
foreach (keys %food_color) {
  push (@non_citrus, $_) unless exists $citrus_color{$_};
}

См. также

Описание функции each



2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: