Não use expressões regulares para analisar XML. É uma excelente maneira de criar códigos frágeis, porque há um monte de coisas perfeitamente válidas que você pode fazer com XML, que quebrarão um regex. Coisas como reformatar o XML de maneiras inteiramente válidas (como 'imprimir bonito' em um formulário aninhado / indentado) irão quebrar seu código.
Em vez disso, sugiro - use um analisador XML. Pessoalmente, gosto do módulo XML::Twig
em perl.
Seu comentário sugere que o que você está tentando fazer é adicionar itens a um elemento <Networks>
em seu XML.
Então, que tal algo como isto:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $xml_text = '<XML>
<Networks><units><unit ip="1.2.3.4" /></units><ranges/></Networks>
</XML>';
my $parser = XML::Twig->new( 'pretty_print' => 'indented' );
#would probably use 'parsefile' instead here
$parser->parse($xml_text);
print "\nBefore:\n";
$parser->print;
#insert a new element into 'Networks':
$parser->root->first_child('Networks')->insert_new_elt(
'last_child', #position - end of "Networks" element
'new_element', #element
{ 'attribute_here' => "value_here",
'another_attribute' => 'another_value',
}, #attributes as key value pairs
"Content_here", #element content
);
print "\nAfter:\n";
$parser->print;