我想检查一个特定的字是否存在于哈希键中。检查'哈希键字符串'是否包含perl中的一个字
我试图以下列方式:
while (($key, $value) = each(%hash))
{
if($key =~ /\b$some_word\b/)
{
print"$key contains $some_word \n";
}
}
我的问题是有同样的任何内置功能或者是有什么替代方法?
我想检查一个特定的字是否存在于哈希键中。检查'哈希键字符串'是否包含perl中的一个字
我试图以下列方式:
while (($key, $value) = each(%hash))
{
if($key =~ /\b$some_word\b/)
{
print"$key contains $some_word \n";
}
}
我的问题是有同样的任何内置功能或者是有什么替代方法?
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
),这通常是一个好主意,把一个变量为正则表达式时。它确保变量中的任何内容都不会被解释为正则表达式元字符。
谢谢......这有帮助。 –
'/ \ b \ Q $ some_word \ E \ b \'以防万一...... – Kenosis
开关操作数:'$ key =〜/ \ b $ some_word \ b /'。 –
@Linus Kleen:Pheww:P那是一个错字。谢谢。我在问题中纠正了它。 –