my $parser = XML::LibXML->new(); $dom = $parser->parse_file( "OLDFILE" ); for my $matrix ( $dom->findnodes( q{ //version_matrix/vm[@type='br'] } )) { my $version = $matrix->findvalue('./release/@version'); if( $version gt $brver ) { print "discarding version_matrix for $version\n"; my $version_matrix_node = $matrix->parentNode; $version_matrix_node->unbindNode; } } my $changed = $dom->toString; my $fh; open( $fh, '>', "NEWFILE" ); print { $fh } $changed;