use strict; use warnings; use XML::Twig; my $outStr = ''; open my $outFile, '>', \$outStr; my $twig = XML::Twig->new ( twig_roots => {'wibble' => sub {put_new_jump (@_, $outFile, 'wibble')}}, twig_print_outside_roots => $outFile, keep_encoding => 1, ); $twig->parse (< The wibble element XML close $outFile; print "All done now. Result is:\n\n"; print $outStr; sub put_new_jump { my ($tree, $elem, $fh, $path) = @_; my $name = $elem->att ('name'); print STDOUT "Name: $name\n"; $elem->print ($fh); } #### Name: My Name is Mr. Wibble All done now. Result is: The wibble element