我正在检查程序的状态并对其进行操作。
所以我要么接收所有,本地或错误。
然而,在用我的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
我错过了一些明显的东西吗?对我来说,应该跳过这个条件,因为值全部。
任何反馈都将不胜感激。
答案 0 :(得分:3)
正则表达式几乎没问题,你只是使用了错误的逻辑运算符 - 或者。它应该是和:
if ($pri !~ /local/ && $pri !~ /all/) {
...
同样对于正则表达式,请考虑使用^和$进行完全字符串匹配。