#!/usr/bin/perl use strict; use warnings; use XML::Twig; my $xml=join('',); my $t=XML::Twig->new( twig_handlers => { '/gibsonca/item//*' => \&warn_on_empty_elt, #all descendants of item 'item' => sub { $_[0]->purge; }, #purge if it is item tag }, ); $t->parse($xml); sub warn_on_empty_elt { my( $twig, $elt)= @_; if ($elt->children_trimmed_text eq ''){ printf "empty tag gi=%s,line col=%s,%s\n", $elt->gi, $twig->current_line,$twig->current_column; } } __DATA__ fds