Один из ваших входных файлов - это документ XML. Вы не должны анализировать XML-документы с помощью регулярных выражений. Намного лучше использовать правильный синтаксический анализатор XML (я бы порекомендовал XML :: LibXML ).
Если вы настаиваете на синтаксическом анализе XML с помощью регулярных выражений, то вы не можете обрабатывать входной файл по одной строке за раз, поскольку элементы XML часто (обычно?) Занимают несколько строк.
Также, пожалуйста, обновите ваш код обработки файлов, чтобы использовать трехаргументную версию open()
и лексические дескрипторы файлов.
open ( my $in_fh, '<', "...") or die("Could not open xml file.");
И
open( my $out_fh, '>', $outffile) || die "ERROR: Can't open the output file $outffile: $!";
О, и это хорошая идея стандартизировать использование or
или ||
в этих командах.