Mar*_*coS 5 perl hash lowercase
我需要将一个(一级)哈希值复制到一个新哈希值,所有值都是小写的.
你知道一个聪明的方法(只是为了避免丑陋的foreach ...... ;-)
fri*_*edo 13
my %new = map { $_ => lc $old{$_} } keys %old;
Run Code Online (Sandbox Code Playgroud)
这是一个使用的单线程map
:
my %newHash = map { $_ => lc $existingHash{$_} } keys %existingHash;
Run Code Online (Sandbox Code Playgroud)
只是为了好玩,一个不同的角度看同样的事情:
my %new_hash;
@new_hash{keys %old_hash} = map lc, values %old_hash;
Run Code Online (Sandbox Code Playgroud)
是的,保证keys
和values
函数按相应的顺序生成列表,前提是你不要修改它们在调用一个和另一个之间的哈希值.
本着有趣的精神,这里有一个使用有点晦涩的each
函数的解决方案。(别相信我以前用过它。)
$new{$key} = lc $val while ($key,$val) = each %old;
Run Code Online (Sandbox Code Playgroud)