use HTML::Template; my $template = HTML::Template->new(filename => "test.tmpl"); my @data = (1 .. 30); my $items_per_row = 5; my $x = 0; my @loop; foreach (@data) { my %row = ( data => $_ ); $row{break} = 1 unless $x % $items_per_row or $x == 0; push @loop, \%row; $x++; } $template->param(loop => \@loop); print $template->output();