Срезы хешей
Как и в случае с переменной-массивом (или списочным литералом), можно воспользоваться срезом хеша, что даст возможность обращаться не к одному его элементу, а одновременно к набору элементов. Возьмем, к примеру, результаты игры в кегли:
$score("fred"} - 205;
$score("barney"} = 195;
$scoref"dino"} = 30;
Все это можно записать одной строкой:
($score("fred"},$score("barney"),$score("dino")) ° (205,195,30);
Но даже она слишком длинна, поэтому давайте используем срез хеша:
$score{"fred","barney","dino"} = (205,195,30);
Вот так гораздо короче. Можно сочетать использование среза хеша и интерполяции переменных:
@players = qwffred barney dino);
print "scores are: @score(@players}\n";
Срезы хешей можно также использовать для слияния небольшого хеша с более крупным. В этом примере меньший хеш имеет приоритет в том смысле, что при наличии ключей-дубликатов используется значение из меньшего хеша:
@league{keys %score( = values %score;
Здесь значения хеша %score сливаются с хешем %league. Это эквивалентно выполнению гораздо более медленной операции:
%league = (%league, %score); = # слить %score с %league