use XML::XPath; use strict; my $filename = 'test.xml'; my $header = do { open my $fh, $filename or die "$filename: $!"; <$fh>; }; my $xp = XML::XPath->new(filename => $filename); $xp->setNodeText("/project/dependencies/dependency[version='1.0']/version", 2.0); open my $fh, '>', $filename or die "$filename: $!"; print $fh $header; print $fh XML::XPath::XMLParser::as_string($xp->findnodes('/')); close $fh;