use warnings; use strict; use XML::Rules; use Data::Dump; my $parser = XML::Rules->new( stripspaces => 3|4, rules => [ root=>'pass', config=>'', build=>'', ref=>'by name', func=>'as is', _default => sub { die "Unknown tag $_[0]" } ] ); my $data = $parser->parse(<<'END_XML'); END_XML dd $data; __END__ { "abc_sia_%version1.ref%" => { func => { base => "default_771", envname => "test01", objectdir => "/home/pv66" }, }, }