我想检查散列键中是否存在特定单词。
我尝试了以下方式:
while (($key, $value) = each(%hash))
{
if( $key =~ /\b$some_word\b/ )
{
print"$key contains $some_word \n";
}
}
我的问题是有相同的内置函数还是有其他替代方法?
答案 0 :(得分: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:感谢kenosis,建议使用quote-literal修饰符(\Q...\E
),这在将变量放入正则表达式时通常是个好主意。它确保变量中的任何内容都不会被解释为正则表达式元字符。