use XML::Rules; my $parser = XML::Rules->new( stripspaces => 7, rules => { 'services,plugins,probes' => 'pass', 'conf,service,plugin,probe' => 'by name', _default => 'as is' } ); my $configuration = $parser->parse(\*DATA); use Data::Dumper; print Dumper($configuration); __DATA__