Perl确定是否在字符串中重复值

时间:2015-12-28 18:34:11

标签: regex perl

我有一个perl程序,通过SNMP拉下内存值告诉我它们是否正常。如果内存良好,它将返回03。在系统中,内存量可能会有所不同,但在一个中我有一组12个模块。 SNMP将作为单个字符串返回:

03 03 03 03 03 03 03 03 03 03 03 03

03表示没问题。 03以外的任何东西都是个问题。在Perl中是否有一种简单的方法来解析通过我猜的是一个空格分隔的列表,如果包含03以外的任何内容返回错误或返回OK?

感谢。

JR

2 个答案:

答案 0 :(得分:2)

当然,您可以在空格上拆分字符串,并过滤非'03'的值:

use strict;
use warnings; 

my $SNMP_OK = '03';
sub valid { 
   my ($snmp_string) = @_;

   return ! grep { $_ ne $SNMP_OK } 
            split ' ', $snmp_string;
}

valid('03 03 03 03 03 03 03 03 03 03 03 03'); # True
valid('03 03 03 03 03 03 03 03 03 03 03 02'); # False

答案 1 :(得分:0)

my $str = "03 03 03 03 03";
# replace all 03 
$str =~s/03//g;
# replace all space 
$str=~ s/ //g;
# str length >1 ,problem