use warnings; use strict; use XML::Twig; my $xmlStr = < XML my $result = ''; my $twig = XML::Twig->new (twig_roots => {one => sub {oneHandler (\$result, @_);}}); $twig->parse ($xmlStr); print $result; sub oneHandler { my ($resRef, $twig, $elt) = @_; $$resRef = join ' ', $$resRef, $elt->att ('id'); return; }