Для распространенного формата данных, такого как XML, не пытайтесь делать это вручную, читая файл построчно и анализируя его самостоятельно.Вместо этого используйте модуль Perl, чтобы сделать это за вас.
Для начала вам может быть достаточно модуля XML :: Simple .Я думаю, что модуль уже установлен в вашей системе по умолчанию.
use strict; # tip: always use strict and warnings for safety
use warnings;
use Data::Dumper;
use XML::Simple;
my $data = XMLin(\*DATA); # loads up xml into a hash reference assigned to $data
print Dumper $data; # uses Data::Dumper to print entire data structure to console
# the below section emulates a file, accessed via the special DATA file handle
# but you can replace this with an actual file and pass a filename to XMLin()
__DATA__
<DATA>
<!-- removed -->
</DATA>
ОБНОВЛЕНИЕ
Теперь, когда XML-файл загружен в хэш-ссылку, вы можете получить доступ к этому хешу и организовать его вструктура, которую вы хотите.
# loads up xml into a hash reference assigned to $data
my $data = XMLin(\*DATA);
# organise into [testnumber => description] mappings
# not sure if 'Detection' is what you meant by 'description'
my %table = ( $data->{Testnumber} => $data->{Detection} );
Проблема этого сценария состоит в том, что данные xml содержат только один номер теста, который обрабатывает весь этот код.Если вы хотите обрабатывать больше, то вам, вероятно, нужно где-то перебрать массив.Я не знаю, как будут выглядеть XML-данные, если их будет больше, поэтому я не знаю, где будет массив.