我想要检查的是,“自由”是否出现在单词边界中,这是不起作用的(不打印):
use strict;
my @words= ("free hotmail msn");
my $free = "free";
$free =~ s/.*/\b$&\b/;
if ( $words[0] =~ m/$free/)
{
print "found\n";
}
答案 0 :(得分:2)
您需要做的就是写
my $free = 'free';
$free = qr/\b$free\b/;
print "found" if $words[0] =~ $free;
但是如果你的@words
数组应该包含每个元素一个单词,那么你更可能想要
use strict;
use warnings;
my @words= qw( free hotmail msn );
my $free = "free";
print "found\n" if $words[0] eq $free;
答案 1 :(得分:1)
在模式替换中,如在双引号字符串中,\b
被解释为退格符(大多数系统上为chr(8)
)。
$free =~ s/.*/\\b$&\\b/;
是编写其中一个
的尴尬方式$free = '\b' . $free . '\b';
$free = "\\b$free\\b";
但它会完成这项工作。