my($index, $record) = (0); while (<$fh>) { chomp; s/\cM//; if (/^(\d)-RECORD$/) { $index = $1; $record->[$index]->{items} = []; } elsif (/ITEMNAME-(.*)/) { $record->[$index]->{name} = $1; } elsif (/ITEM \d-(.*)/) { push @{$record->[$index]->{items}}, $1; } }