|
对$_进行匹配只是默认的行为,使用绑定操作符(=~)将告诉Perl 将右边的模式在左边的字符串上进行匹配,而非对$_匹配。
例如:
my $some_other = “I dream of betty rubble.”;
if($some_other =~ /\brub/){
print “Aye, there’s the rub.\n”;
}
第一次见到绑定操作符(binding operator:=~),可能觉得它有些像赋值操作符,但它不是。其含义是:“这个模式默认将对
$_进行匹配,但此时将对左边的字符串进行匹配”。如果没有绑定操作符,则此表达式将对$_匹配。
在下面的例子中(有些不寻常),$likes_perl 将根据用户的输入而得到一个boolean 值。它有一些quick-and-ditry,因为输入
行很快就被丢弃了。这段代码将读入一行,由右边的模式进行匹配,然后丢弃此输入◆。它没有使用$_。
◆输入的字符不会自动存储在$_中,除非行输入操作(<STDIN>)单独出现在while 循环的条件判断部分。
print “Do you like Perl? ”;
my $likes_perl = (<STDIN> =~ /\byes\b/i);
… #Times passes…
if($likes_perl){
print “You said earlier that you like Perl, So… \n”;
…
}
由于绑定操作有非常高的优先级,因此,模式测试部分的括号不是必需的,下面的代码和上面代码的含义是一样的。它将
测试部分的结果(而非行输入)返回给变量$likes_perl:
my $likes_perl = <STDIN> =~ /\byes\b/i; |
|