#!/usr/bin/perl use warnings; use strict; use XML::LibXML; my $xml = 'XML::LibXML'->load_xml( string => << '======' ); ====== my $root = $xml->documentElement; my ($value) = $root->findnodes('parameters/key/@value[.="500"]'); $value->setValue(501); print $root->serialize;