2016-08-11 3 views
-1

私はプログラムのステータスを確認しています。正規表現が一致しない場合の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 

のように見える私は明らかに何かが足りないのですか?私には、値がであり、すべてであるため、条件をスキップする必要があります。

フィードバックは高く評価されます。

+0

編集のおかげで、いくつかの文法上の誤りのために投票がかなり不自由でした。 –

答えて

3

正規表現はほとんど問題なく、間違った論理演算子を使用しました。それはでなければなりません:

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

また、正規表現の場合は、^と$で囲むことで完全な文字列の一致が考えられます。

+0

私はあなたがそれに答えてこれを実現しました。簡単なことええ?感謝。 –