use strict;
use warnings;
use XML::Twig;
my $xml = q(
name1
address1
contact1
name2
address2
contact2
);
my %handlers = ( site => sub {
# my ($twig, $cnt) = @_;
# $cnt is unuseful: iirc $_ is mapped $_[1]
$_->delete if $_->children ('name[string() =~ /name2/]');
} );
my $twig= new XML::Twig( PrettyPrint => 'indented', twig_handlers => \%handlers);
$twig->parse($xml);
$twig->print;
# output:
name1
address1
contact1