2014-05-14 56 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