use strict; use warnings; use XML::TreeBuilder; my $xml = < Paul Rutter 24 Ruth Brewster 22 Cas Creer 23 XML my $root = XML::TreeBuilder->new (); $root->parse ($xml); my @firstNames = map {$_->as_text ()} $root->look_down (_tag => 'firstname'); print "TreeBuilder: @firstNames\n"; use XML::Twig; my $twig = XML::Twig->new (twig_roots => { 'person/firstname' => \&pushName}); @firstNames = (); $twig->parse ($xml); print "Twig: @firstNames\n"; sub pushName { my ($t, $elt) = @_; push @firstNames, $elt->text (); }