我成功地解析了一个思科配置文件,并使用多行正则表达式抓取每个标记(思科使用!符号)之间的配置部分,正则表达式如下:
/(search string)/i .. /^!/
我的代码看起来像:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my (@results, @data) ;
#Test data to simulate a while loop on a file-handle running through a config file.
@data = (
"vlan 81" ,
" name Vlan 81 test1" ,
"!" ,
"vlan 82" ,
" name Vlan 82 test2" ,
"!" ,
"vlan 83" ,
" name Vlan 83 test3" ,
"!"
);
foreach ( @data ) {
if ( /vlan/i .. /^!/ ) {
push (@results , $_) ;
}
}
print Dumper ( @results ) . "\n" ;
exit;
它的功能非常好,但我想将结果推入哈希表中,其中每个代码部分都是匿名数组,因此结果看起来会像这样:
%Vlan -> [Vlan 81, name Vlan 81 test1] , [Vlan 82, name Vlan 82 test2] , [Vlan 83, name Vlan 83 test3]
但我不知道该怎么做,我的代码在搜索字符串和标记之间每行匹配,最终只是逐行重建结果到另一个数组中。
非常感谢任何帮助。
谢谢,
安迪
Vlan
的单个条目。对于这个键,你有一个数组列表。难道你的意思不是对于每个键(例如Vlan 81),你都有一个值的哈希表吗? - Matteo