Perl - "if"条件没有按预期工作

-2 perl

我想比较两个字符串,如果匹配则打印"是".当我打印字符串值相同时.但脚本打印"否"匹配.

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 = "-";
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

命令行输出:

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
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 12

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

'a+b' eq 'a+b'  # true
'a+b' =~ /a+b/  # false, `+` is not matched
Run Code Online (Sandbox Code Playgroud)

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

'a+b' =~ /a\+b/  # true
Run Code Online (Sandbox Code Playgroud)

您可以使用quotemeta函数自动转义所有非单词字符.