我成功地解析思科配置文件,並抓住每一個標記之間配置的部分(Cisco使用符號!)使用的多行正則表達式:Perl的正則表達式多行匹配到散列
/(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 2012-03-29 11:26:22
是的,你說得對,謝謝你的評論,我會盡力在未來更加清晰。 – user1039417 2012-03-29 19:55:08