use strict; use warnings; use XML::Twig; my $xml = < xxx a yyy b XML my $root = XML::Twig->new (twig_handlers => {data => \&handler}); $root->parse ($xml); sub handler { my $elt = $_; return if $elt->children (\&badType); print "Handling ", $elt->text (), "\n"; } sub badType { return $_->text () =~ /^yyy/; }