my (@loop_two,@loop_one); for(@arr_name) { push @loop_two, { name_one => 1, value_one => 2 }; } for(@arr_one) { push @loop_one, { name => 1, value => 2, loop_two => \@loop_two }; } $html->param(loop_one => \@loop_one); return $html->output(); where $html is HTML::Template object.