我有一个perl程序,通过SNMP拉下内存值告诉我它们是否正常。如果内存良好,它将返回03。在系统中,内存量可能会有所不同,但在一个中我有一组12个模块。 SNMP将作为单个字符串返回:
03 03 03 03 03 03 03 03 03 03 03 03
03表示没问题。 03以外的任何东西都是个问题。在Perl中是否有一种简单的方法来解析通过我猜的是一个空格分隔的列表,如果包含03以外的任何内容返回错误或返回OK?
感谢。
JR
答案 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