是否可以將文件中的記錄直接加載到散列中?記錄以/ begin和/ end結尾,並且具有固定的內容順序。Perl - 將文件中的記錄加載到散列表
我要的是填充像這樣的哈希:對「slurped_record」條目
hash_city{London}{slurped_record}='/begin CITY London\n big\n England\n Sterling\n/end CITY'
hash_city{Paris}{slurped_record}='/begin CITY\n Paris\n big\n France\n Euro\n/end CITY'
hash_city{Melbourne}{slurped_record}='/begin CITY\n\n Melbourne\n big\n Australia\n Dollar\n hot\n/end CITY'
然後我就可以去中斷過程中的散列等記錄。(原因是以後我要添加新的密鑰說倫敦一樣,「國家=英格蘭等
hash_city{London}{Country}='England'
我已經成功地實現的東西,通過啜而不是讀文件中的行由行。匹配在工作/開始,建立一個記錄($ rec。= $ _),然後匹配a/end和處理。這有點亂,想知道是否有一個更優雅的Perl的方法..
我的代碼試圖到目前爲止如下:
use strict;
use warnings;
use Data::Dumper;
my $string = do {local $/; <DATA>};
my %hash_city = map{$2=>$1} $string =~ /(\/begin\s+CITY\s+(\w+).+\/end\s+CITY)/smg;
print Dumper(%hash_city);
__DATA__
stuff
stuff
/begin CITY London
big
England
Sterling
/end CITY
stuff
stuff
/begin CITY
Paris
big
France
Euro
/end CITY
stuff
/begin CITY
Melbourne
big
Australia
Dollar
hot
/end CITY
stuff
你啜食生成的文件內容一分式兩份,並更好地寫作'我$串; {local $ /; $ string = ;}'。 – Borodin 2012-02-28 02:14:49