2012-12-12 53 views
2

我想检查一个特定的字是否存在于哈希键中。检查'哈希键字符串'是否包含perl中的一个字

我试图以下列方式:

while (($key, $value) = each(%hash)) 
{ 
    if($key =~ /\b$some_word\b/) 
    { 
     print"$key contains $some_word \n"; 
    } 
} 

我的问题是有同样的任何内置功能或者是有什么替代方法?

+0

开关操作数:'$ key =〜/ \ b $ some_word \ b /'。 –

+0

@Linus Kleen:Pheww:P那是一个错字。谢谢。我在问题中纠正了它。 –

回答

4
use warnings; 
use strict; 

my %hash = (
    'foo' => 1, 
    'foo bar' => 2, 
    'bar' => 3, 
    'food' => 4 
); 

my $some_word = "foo"; 

for (grep /\b\Q$some_word\E\b/, keys %hash) 
{ 
    print "$_ contains $some_word (value: $hash{$_})\n" 
} 

更新:包括价值为好。

更新2:感谢,虚己,提出了这个报价字面修饰符(\Q...\E),这通常是一个好主意,把一个变量为正则表达式时。它确保变量中的任何内容都不会被解释为正则表达式元字符。

+0

谢谢......这有帮助。 –

+1

'/ \ b \ Q $ some_word \ E \ b \'以防万一...... – Kenosis

相关问题