#!/usr/bin/perl -w use strict; use CGI qw(:standard); use HTML::Template; # my guess about what your data structure might be: my %information = ( txt_foo => ['chk_foo','name_foo','cost_foo','number_foo'], txt_bar => ['chk_bar','name_bar','cost_bar','number_bar'], txt_baz => ['chk_baz','name_baz','cost_baz','number_baz'], ); # initialise the template and other vars: my $results_tmpl = HTML::Template->new(filename => 'results.tmpl'); my @results; # populate @results with the data from %information: for (keys %information) { my %row_data; $row_data{'txt'} = $_; $row_data{'chk'} = $information{$_}[0]; $row_data{'name'} = $information{$_}[1]; $row_data{'cost'} = $information{$_}[2]; $row_data{'number'} = $information{$_}[3]; push @results, \%row_data; } # drop the info into the template: $results_tmpl->param(results => \@results); # print the page: print header, start_html, $results_tmpl->output(), end_html;