我已经创建了一个函数来解析命令的输出。用于解析命令输出的正则表达式
的命令的输出将是以下:
Host-profile-count User 114
(注:号码114是不constant.it可以是任何正数> = 0)
现在我只需要在号码(在这种情况下是114)被返回。 我想我的脚本中的正则表达式是错误的。当我运行脚本,我得到的输出为0.它应该是114. 有人可以帮助我与正则表达式吗?
sub _count {
my ($self) = @_;
my $cmd = 'command goes here ';
my $profiles = 0;
$self->execute($cmd);
foreach my $line (@{ $self->get_stdout() }) {
if ($line =~ m/Host\sprofile\scount\s+\S*\s+(\S*)/msx) {
$profiles = $1;
}
}
$profiles =~ s/^\s+|\s+$//msxg;
return $profiles;
}
将单词之间的'\ s's更改为连字符,并且工作正常。你也不需要这些修饰符。 – hwnd 2015-02-24 02:44:46
除非你需要检查是否存在Host-profile-count(这可能会更好地单独完成),我只会去'我的($ profiles)= $ line =〜/(\ d +)/'哪个找到第一个数字序列并将其分配给'$ profiles'。你不应该为你写的每一个正则表达式添加'/ msx' - 这会浪费你的代码读者难以理解的原因。 – Borodin 2015-02-24 03:10:19