Perl - “if”条件无法正常工作

时间:2018-04-16 09:23:28

标签: perl

我想比较两个字符串,如果匹配则打印“是”。当我打印字符串值相同时。但脚本打印“No”匹配。

Perl脚本:

foreach my $lines(@mylogFileLines)
{
    if ($lines =~ m/^*.ERROR/i)
    {

        my @errorline = split ('/',$lines);
        my @getline = split ('  ',$errorline[4]);
        my @vresp_id = $resp_id;
        @mygetline = $getline[0];
        foreach my $resp (@vresp_id)
        {

            print "$resp --- $getline[0]\n";
            if ($resp =~ $getline[0])
            {
                $remarks = "Error";
                print "yesss-\n";
            }
            else
            {
                print "no\n";
                $remarks = "-";
            }
        }

    }
}

命令行输出:

dom_RESP_2018-03-02T14-26-29-029+10-00.xml --- dom_RESP_2018-03-02T14-26-29-029+10-00.xml
no
testing_RESP_2018-03-02T14-26-29-029+10-00.xml --- dom_RESP_2018-03-02T14-26-29-
029+10-00.xml

1 个答案:

答案 0 :(得分:12)

使用eq运算符进行字符串相等。 =~将右侧解释为正则表达式,其中+具有特殊含义,因此

'a+b' eq 'a+b'  # true
'a+b' =~ /a+b/  # false, `+` is not matched

要在正则表达式中逐字解释+,您需要逃避它:

'a+b' =~ /a\+b/  # true

您可以使用quotemeta功能自动转义所有非单词字符。