Perl,如何小写所有哈希值?

时间:2011-08-10 16:17:42

标签: perl hash lowercase

我需要将(一级)哈希复制到一个新哈希值,所有值都是小写的。

你知道一个聪明的方法(只是为了避免丑陋的 foreach ...; - )

5 个答案:

答案 0 :(得分:13)

my %new = map { $_ => lc $old{$_} } keys %old;

答案 1 :(得分:6)

这是使用map

的单行班次
my %newHash = map { $_ => lc $existingHash{$_} } keys %existingHash;

答案 2 :(得分:6)

只是为了好玩,从另一个角度来看待同样的事情:

my %new_hash;
@new_hash{keys %old_hash} = map lc, values %old_hash;

是的,keysvalues函数是guaranteed以相应的顺序生成列表,前提是您不修改他们在调用一个和另一个。

答案 3 :(得分:3)

只是另一种方式(现在我不知道你想要哈希的副本,这不是很酷)。

my %new = %old;
$_ = lc for values %new;

答案 4 :(得分:2)

本着乐趣的精神,这里有一个使用有点模糊的each函数的解决方案。 (不要相信我曾经用过它。)

$new{$key} = lc $val while ($key,$val) = each %old;