[% FOREACH item IN report.rows.values %] [% item.id %] [% item.delta %] % [% END %] #### #!/usr/bin/env perl use strict; use warnings; use Template; my $r = { 'rows' => { 'category1' => [ {'id' => 'AAA', 'delta' => '0.01%'}, {'id' => 'BBB', 'delta' => '0.03%'} ], 'category2' => [ {'id' => 'CCC', 'delta' => '0.02%'}, {'id' => 'DDD', 'delta' => '0.04%'} ], }, }; my $text = q# [% FOREACH item IN report.rows.values %] [% FOREACH one IN item %] [% one.id %] [% one.delta %] % [% END %] [% END %] #; my $tt = Template->new; $tt->process (\$text, {report => $r});