perl:如何让脚本打印'pattern matched'

时间:2013-11-05 13:00:04

标签: perl

$out="MMNT123 out in a1 a2";
    if($out=m(MM\w+\s\w+))
        print 'pattern matched';
    else
        print 'pattern not matched';

如何将'模式匹配'作为输出......?

3 个答案:

答案 0 :(得分:4)

在Perl中,if / else块必须有大括号。您还需要使用=~运算符:

if($out =~ m(MM\w+\s\w+)) {
    print 'pattern matched';
} else {
    print 'pattern not matched';
}

答案 1 :(得分:3)

您有语法错误,因为您已在if .. else ...语句中省略了大括号。

$out = "MMNT123 out in a1 a2";
if ($out = m(MM\w+\s\w+)) {
    print 'pattern matched';
} else {
   print 'pattern not matched';
}

但是仍然无法正常使用赋值运算符(=),您应该使用绑定运算符(=~)。

$out = "MMNT123 out in a1 a2";
if ($out =~ m(MM\w+\s\w+)) {
    print 'pattern matched';
} else {
   print 'pattern not matched';
}

为了完整起见,我应该指出:

$out = m(MM\w+\s\w+)

实际上是:

$out = ($_ =~ /MM\w+\s\w+/)

即。 “将$_的内容与正则表达式匹配,如果匹配则将$out设置为真值,如果匹配则设置为假值”。我猜$_的内容与你的正则表达式不匹配,所以$out总是得到一个假值。

答案 2 :(得分:0)

对于if

,大括号中没有必要
print 'pattern matched' if $out =~ /MM\w+\s\w+/;