Пожалуйста, не анализируйте XML с помощью регулярных выражений. Используйте правильный синтаксический анализатор XML.
Но, временно игнорируя этот совет, я не понимаю поведение, которое вы описываете при тестировании вашего кода.
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
while (<DATA>) {
next unless /<SomeAddr>/;
my $i = index($_, ">");
my $j = index($_, "<");
my $Size_in_bits = substr $_, $i + 1, $j - $i - 3;
say $Size_in_bits;
}
__END__
<Instance>Fuse_Name</Instance>
<Id>8'hed</ID>
<SomeAddr>17'h00baf</SomeAddr>
<PSomeAddr>17'h00baf</PSomeAddr>
И запустить его:
$ perl parsexml
17'h00baf
Конечно, мне пришлось угадать, как выглядит большая часть вашего кода, потому что вы не дали нам полный пример для тестирования. Таким образом, похоже, что ваши проблемы заключены в части кода, который вы нам не показали.
(Полагаю, в файле есть еще один тег <SomeAddr>
.)