use strict; use warnings; use XML::Twig; my $xml = q( name1
address1
contact1
name2
address2
contact2
); my %handlers = ( 'name[string() =~ /name2/]' => sub { my ($twig, $cnt) = @_; my $parent = $cnt->parent; foreach ($parent->children) { print "Deleting: " . $_->text . "\n"; $_->delete; } $parent->delete; } ); my $twig= new XML::Twig( PrettyPrint => 'indented', twig_handlers => \%handlers); $twig->parse($xml); print $twig->sprint; #### Deleting: name2 name1
address1
contact1
address2
contact2