in reply to Trouble using setNodeText()

Using XML::Twig, the below script takes your ip blocks and reverses their order:
use XML::Twig; use strict; my $xml = do {local $/; <DATA>}; my $twig = XML::Twig->new( keep_spaces => 1, ); $twig->parse($xml); foreach my $node ($twig->findnodes(q{//cidr-map-to[@name='AKA Edge']/b +locks})) { $node->set_text(join ' ', reverse split ' ', $node->text()); } $twig->print(); __DATA__ <root> <cidr-map name="Internal test" default-datacenter="Default Datacenter" +> <cidr-map-to name="AKA Edge"> <blocks>127.0.241.174 127.0.0.181</blocks> </cidr-map-to> </cidr-map> <cidr-map name="Prod Internal Actual" default-datacenter="Default Data +center"> <cidr-map-to name="AKA Edge"> <blocks>127.0.12.1 10.0.0.1 198.168.1.1</blocks> </cidr-map-to> </cidr-map> </root>