3

私が確認したいのは、「フリー」が単語境界で発生するかどうかであり、これは機能していません(何も出力されません):

use strict;

my @words= ("free hotmail msn");

my $free = "free";

$free =~ s/.*/\b$&\b/;


if ( $words[0] =~ m/$free/)
{
    print "found\n";
}
4

2 に答える 2

2

あなたがする必要があるのは書くことだけです

my $free = 'free';

$free = qr/\b$free\b/;

print "found" if $words[0] =~ $free;

ただし、@words配列に要素ごとに 1 つの単語が含まれていると想定されている場合は、必要になる可能性が高くなります

use strict;
use warnings;

my @words= qw( free hotmail msn );

my $free = "free";

print "found\n" if $words[0] eq $free;
于 2012-07-06T17:49:52.510 に答える
1

パターン置換では、二重引用符で囲まれた文字列のように、バックスペース文字 (ほとんどのシステムで)\bとして解釈されます。chr(8)

$free =~ s/.*/\\b$&\\b/;

のいずれかを書くのは厄介な方法です

$free = '\b' . $free . '\b';
$free = "\\b$free\\b";

しかし、それは仕事をします。

于 2012-07-06T19:42:24.987 に答える