Используйте ломтик хеша:
my %hash = (foo => 1, bar => 2, fubb => 3);
my @subset_of_keys = qw(foo fubb);
my @subset_of_values = @hash{@subset_of_keys}; # (1, 3)
Две точки уточнения.(1) Вам никогда не нужно перебирать хеш, ища определенные ключи или значения.Вы просто передаете хеш ключу, и он возвращает соответствующее значение - или, в случае срезов хеша, вы предоставляете список ключей и получаете список значений.(2) Существует разница между defined
и exists
.Если вас просто интересует, содержит ли хеш определенный ключ, exists
является правильным тестом.