У меня есть файл, который выглядит так:
*NEWRECORD
RECTYPE = D
MH = Calcimycin
AQ = AA
MED = *62
*NEWRECORD
RECTYPE = D
MH = Urinary Bladder
AQ = AB AH BS CH CY DE EM EN GD IM IN IR ME MI PA PH PP PS RA RE RI SE SU TR UL US VI
CX = consider also terms at CYST- and VESIC-
MED = *1359
Каждый блок записи имеет разное количество строк (например, CX
запись не всегда присутствует).
Но если CX
существует, он отображается только как 1 запись.
Мы хотим получить хэш, который принимает «MH» в качестве ключей и «CX» в качестве значений.
Следовательно, анализируя приведенные выше данные, мы надеемся получить эту структуру:
$VAR = { "Urinary Bladder" => ["CYST-" , "VESIC-"]};
Какой правильный способ разобрать это?
Я застрял с этим, это не дает мне результат, как я хочу.
use Data::Dumper;
my %bighash;
my $key = "";
my $cx = "";
while (<>) {
chomp;
if (/^MH = (\w+/)) {
$key = $1;
push @{$bighash{$key}}, " ";
}
elsif ( /^CX = (\w+/)) {
$cx = $1;
}
else {
push @{$bighash{$key}}, $cx;
}
}