ファイルから直接ハッシュにレコードをロードできますか?レコードは/ beginと/ endで区切られ、内容は固定されています。私が欲しいものPerl - ファイルからハッシュにレコードをロードする
は次のように読み込まハッシュです:
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'
私は、オフに行くとなどハッシュ内のレコードを処理することができます...(「slurped_record」エントリ理由は後で私が追加したいれます「国=イングランドなど
hash_city{London}{Country}='England'
、などのロンドンを言うために新しいキーは私がズルズルの代わりに、ファイルライン・バイ・ラインを読むことによって、作品に何かを達成するために管理してきました。/開始のマッチング、構築しますレコード($ rec。= $ _)、そして/ 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
あなたの吸い込みは、ファイルの内容の2つのコピーを生成し、より良い私の$文字列 'として書かれています。 {ローカル$ /; $ string = ;} '。 – Borodin