Perl按值删除简单哈希值

时间:2014-05-14 22:14:27

标签: regex perl hash

我在Perl中有一个哈希值,它存储一个简单的键值,如下所示

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

我想有效地删除所有具有模式的键值对" hello"在他们中。通过grep可以轻松实现这一点吗? 提前致谢

2 个答案:

答案 0 :(得分:3)

您可以在此处使用hash slice。散列片返回与键列表关联的值。

要立即删除键/值对,您可以执行以下操作..

my $regex = qr/hello/;
delete @h{ grep { $h{$_} =~ $regex } keys %h };

答案 1 :(得分:2)

for (keys %h) {
   delete $h{$_} if $h{$_} =~ /hello/;
}

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

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