Просто для удовольствия, под другим углом взглянуть на одно и то же:
my %new_hash;
@new_hash{keys %old_hash} = map lc, values %old_hash;
И да, функции keys
и values
гарантируют для создания их списков в соответствующем порядке, при условии, что вы не изменяете хэш, над которым они работают, между вызовами одного и другого. .