#!/usr/bin/perl use strict; use warnings; use XML::Twig; my $twig = XML::Twig->new( twig_handlers => { 'server' => sub { print "server: ", $_->first_child('name')->text, "\n"; foreach my $c ($_->children('file')) { print "filename: ", $_->text, "\n" foreach $c->children('filename'); } }, }, ); $twig->parse(*DATA); __DATA__ server1 /etc/named.conf /etc/nsswitch.conf server2 /etc/named.conf /etc/nsswitch.conf /etc/hosts