use strict; use warnings; my $xml = < sam1 sam2 mike1 mike2 luke1 luke2 ben1 ben2 XML use XML::Twig; my $t = XML::Twig->new(twig_handlers => {class => \&class}); $t->parse($xml); sub class { my ($twig, $cl) = @_; print "class name = ", $cl->att('name'), "\n"; for my $rec ($cl->children('record')) { print "type = ", $rec->att('type'); print ", index = ", $rec->att('index'), "\n"; } } __END__ class name = music type = month, index = 0 type = month, index = 1 class name = english type = week, index = 2 type = month, index = 3