use XML::LibXML; my $d = XML::LibXML->new->parse_string(join "", ); for my $dead ($d->findnodes(q{/opt/node[val = "2"]})) { $dead->unbindNode; } print $d->toString; __END__ 1 2 3 #### 1 3