我想比较两个字符串,如果匹配则打印“是”。当我打印字符串值相同时。但脚本打印“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
答案 0 :(得分:12)
使用eq
运算符进行字符串相等。 =~
将右侧解释为正则表达式,其中+
具有特殊含义,因此
'a+b' eq 'a+b' # true
'a+b' =~ /a+b/ # false, `+` is not matched
要在正则表达式中逐字解释+
,您需要逃避它:
'a+b' =~ /a\+b/ # true
您可以使用quotemeta功能自动转义所有非单词字符。