perl:如何使脚本打印';模式匹配';

perl:如何使脚本打印';模式匹配';,perl,Perl,如何将“模式匹配”作为输出…?在Perl中,if/else块必须有大括号。您还需要使用=~运算符: $out="MMNT123 out in a1 a2"; if($out=m(MM\w+\s\w+)) print 'pattern matched'; else print 'pattern not matched'; 对于if,大括号中不需要 if($out =~ m(MM\w+\s\w+)) { print 'pattern matc

如何将“模式匹配”作为输出…?

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

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

对于if,大括号中不需要

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

您有一个语法错误,因为您省略了
if。。否则…
语句

print 'pattern matched' if $out =~ /MM\w+\s\w+/;
但这仍然不起作用,因为您正在使用赋值运算符(
=
),而您应该在其中使用绑定运算符(
=~

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

$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
设置为真值,如果不匹配,则将其设置为假值”。我猜
$的内容与您的正则表达式不匹配,因此
$out
总是得到一个错误的值。

通常情况下,
使用警告可以解释更多:
在模式匹配(m/)中使用未初始化的值$。
$out = m(MM\w+\s\w+)
$out = ($_ =~ /MM\w+\s\w+/)