You can use XML::Twig for parsing that XML tree:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig->new(
twig_handlers => {
'server' => sub {
print "server: ", $_->first_child('name')->tex
+t, "\n";
foreach my $c ($_->children('file')) {
print "filename: ", $_->text, "\n" for
+each $c->children('filename');
}
},
},
);
$twig->parse(*DATA);
__DATA__
<config>
<server>
<name>server1</name>
<file>
<filename>/etc/named.conf</filename>
<filename>/etc/nsswitch.conf</filename>
</file>
</server>
<server>
<name>server2</name>
<file>
<filename>/etc/named.conf</filename>
<filename>/etc/nsswitch.conf</filename>
<filename>/etc/hosts</filename>
</file>
</server>
</config>
Outputs:
server: server1
filename: /etc/named.conf
filename: /etc/nsswitch.conf
server: server2
filename: /etc/named.conf
filename: /etc/nsswitch.conf
filename: /etc/hosts
Igor 'izut' Sutton
your code, your rules.