my $tmpl = HTML::Template->new( ... ); my @loopvar = (); foreach my $id ( keys %people ) { my $email = $people{$id}->{email}; my %rowhash = ( id => $id, email => $email, ); push( @loopvar, \%rowhash ); } $tmpl->param( myloop => \@loopvar );