我在Perl中有一个哈希值,它存储一个简单的键值,如下所示
'a' => hello
'b' => world
'c' => hellooo
我想有效地删除所有具有模式的键值对" hello"在他们中。通过grep
可以轻松实现这一点吗?
提前致谢
答案 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 };