检查“哈希键字符串”是否在perl中包含单词

SS *_*gde 2 regex perl perl-hash

我想检查哈希键中是否存在特定单词。

我尝试了以下方式:

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

我的问题是是否有相同的内置函数或有其他替代方法?

dan*_*111 5

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" 
}
Run Code Online (Sandbox Code Playgroud)

更新:也包括价值。

更新2:谢谢kenosis,建议使用引号文字修饰符(\Q...\E),这在将变量放入正则表达式中通常是一个好主意。它确保变量中的任何内容均不解释为正则表达式元字符。