#!/bin/perl5 use strict; use warnings; use Data::Dumper; use HTML::Template; $Data::Dumper::Indent = 1; $Data::Dumper::Sortkeys = 1; my $data = [ [qw{one two three}], [qw{four five six}], [qw{seven eight nine}], ]; my @outer_loop; for my $outer (@{$data}){ my @inner_loop; for my $inner (@{$outer}){ push @inner_loop, {data => $inner}; } push @outer_loop, {inner_loop => \@inner_loop}; } print Dumper \@outer_loop; my $param = {outer_loop => \@outer_loop}; my $tmpl = do{local $/;}; my $t = HTML::Template->new(scalarref => \$tmpl) or die qq{tmpl obj failed\n}; $t->param($param); print $t->output; __DATA__ ---------------------------