use Template::Alloy; use Data::Dumper qw(Dumper); my %vars; my $out = ""; my $t = Template::Alloy->new; my $data_str = q{ [% foo = "bar" %] [% bingo.bango.bongo = /matchme/ %] [% a //= []; a.0.b.3 = "C" %] }; $t->process_simple(\$data_str, \%vars, \$out) || die $t->error; print Dumper \%vars; __END__ prints: $VAR1 = { 'a' => [ { 'b' => { '3' => 'C' } } ], 'bingo' => { 'bango' => { 'bongo' => qr/(?-xism:matchme)/ } }, 'foo' => 'bar' };