2014-05-14 57 views
0

删除我在Perl中的哈希存储简单的键值查找如下图所示Perl的简单的哈希按值

'a' => hello 
'b' => world 
'c' => hellooo 

我想有效地删除具有模式“你好”的所有键值对在他们中。提前

回答

3

您可以使用hash slice这里这是很容易有可能通过grep 感谢。散列片返回与键列表关联的值。

一次删除键/值对,你可以做这样的事情..

my $regex = qr/hello/; 
delete @h{ grep { $h{$_} =~ $regex } keys %h }; 
2
for (keys %h) { 
    delete $h{$_} if $h{$_} =~ /hello/; 
} 

delete $h{$_} for grep { $h{$_} =~ /hello/ } keys %h; 

delete @h{ grep { $h{$_} =~ /hello/ } keys %h }; 
+2

你能解释一下每个解决方案,并与其他有什么不同?这应该是一个教育答案,而不是一个快速解决方案。 –

+0

@PaulHicks就这一点而言,如果OP被告知足以能够提出他想要的答案类型(即'grep'),那么他应该被告知足够的解密或查找这3个例子中所展示的基本选项。 – Miller

+0

@保罗希克斯,他应该选择一个他认为更具可读性的人。 – ikegami