如何使用perl在数组中搜索变量的值

时间:2014-06-10 13:31:17

标签: arrays perl

我在数组@bgp_status中有以下结果

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
::100:1:1:2     4   100       6       6       21    0    0 00:00:15       10
::200:1:1:2     4   200       6       6       21    0    0 00:00:10       10

现在我想知道State / pfxRcd的值是多少?这是10点。我想为:: 100:1:1:2和:: 200:1:1:2邻居提取状态值。

任何建议将不胜感激。提前谢谢

1 个答案:

答案 0 :(得分:0)

假设你的意思是每一行都是数组中的一个条目,那么像这样的代码将起作用:

my @bgp_status = ("Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd",
                  "::100:1:1:2 4 100 6 6 21 0 0 00:00:15 10",
                  "::200:1:1:2 4 200 6 6 21 0 0 00:00:10 10");
my @states = ();
for my $line (@bgp_status) {
    if ($line =~ /^::\d/) { # Check if it's an IP row
        $line =~ /(\d+$)/; # Assuming last # in row is state
        my $state = $1;
        push(@states, $state);
    }
}

print @states;

您可以将其重构为更短或更强大,或使用某种数据结构来保存IP:State关联。我想把它作为练习留给读者。