$data_tmpl->param(NAME => $name); my @data; while ( my ( $key, $entry ) = each %{ $more_data } ) { push @data, { NUMBER => $entry->{NUMBER}, DATE => $entry->{DATE}, COL => $entry->{COL}, FIRST => $entry->{FIRST}, LAST => $entry->{NAME}, }; } # the following line is JUST FOR DEBUGGING, remove for production code use Data::Dumper; print STDERR Dumper(\@data); # show @data on STDERR $template->param(DATA => \@data); # now you can write your file