不匹配时Perl正则表达式命中条件

时间:2016-08-11 10:50:45

标签: regex perl

我正在检查程序的状态并对其进行操作。

所以我要么接收所有本地错误

然而,在用我的regex检查后,即使不匹配,我总是会遇到这种情况。

    if ($pri !~ /local/ || $pri !~ /all/) {
            print $pri."\n";
            print "[PRIMARY] Heartbeat is not responding correctly \n";
            $status++;
    }

以上打印显示为:

perl test.pl -p xx.xx.xx.xx -s xx.xx.xx.xx
all
[PRIMARY] Heartbeat is not responding correctly

转储看起来像

perl test.pl -p xx.xx.xx.xx -s xx.xx.xx.xx
$VAR1 = 'all';
[PRIMARY] Heartbeat is not responding correctly

我错过了一些明显的东西吗?对我来说,应该跳过这个条件,因为值全部

任何反馈都将不胜感激。

1 个答案:

答案 0 :(得分:3)

正则表达式几乎没问题,你只是使用了错误的逻辑运算符 - 或者。它应该是和:

if ($pri !~ /local/ && $pri !~ /all/) {
    ...

同样对于正则表达式,请考虑使用^和$进行完全字符串匹配。