use warnings; use strict; use XML::Twig; my $twig = XML::Twig->new( twig_handlers => { httpsRoute => \&httpsRoute } ); $twig->parsefile('test.xml'); sub httpsRoute { my ( $twig, $httpsRoute ) = @_; print $httpsRoute->att('hostname'), "\n"; print $httpsRoute->att('tier'), "\n"; print $httpsRoute->first_child('key')->text(), "\n"; print "\n"; } __END__ hostname1.xxx.com dmz 6924 hostname3.xxx.com dmz 9990068