Поиск общих или различающихся ключей в двух хэшах
Проблема
Требуется найти в хэше ключи, присутствующие в другом хэше, — или наоборот, не входящие в другой хэш.
Решение
Организуйте перебор ключей хэша с помощью функции
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
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|