Можно ли загрузить записи из файла прямо в хеш, пожалуйста?Записи разделяются символами / begin и / end и имеют фиксированный порядок содержимого.
Мне нужен хеш, заполняемый следующим образом:
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'
Мне удалосьдостичь чего-то, что работает, путаясь вместо того, чтобы читать файл построчно. Сопоставление с / begin, построение записи ($ 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