%loop_data = ( rows => [ { cells => [ { data => 'one'}, { data => 'ein'}, ], }, { cells => [ { data => 'two'}, { data => 'zwei'}, ], }, { cells => [ { data => 'three'}, { data => 'drei'}, ], }, ], ); #### #!/usr/bin/perl -wT use strict; use CGI; use DBI; use HTML::Template; use vars qw/ $q $dbh $sth $rv $rc $template $html @columns @headings_data @rows_data $sql /; @columns = qw/ prod_code dep_1 dep_2 dep_3 /; @headings_data = map {{ cell_data => $_ }} @columns; $sql = 'SELECT ' . join(', ', @columns) . ' FROM products WHERE dep_1=01'; $dbh = DBI->connect("dbi:mysql:database:host", "user", "pass") or print_error("Could not connect to Database", $DBI::errstr); $sth = $dbh->prepare( $sql ) or die("Couldn't prepare the database", "$DBI::errstr"); $rv = $sth->execute(@_) or die("Couldn't execute database", "$DBI::errstr"); while ( my @data = $sth->fetchrow_array ) { my @cells = map {{ cell_data => $_ }} @data; push @rows_data, { cells => \@cells }; } $html = do { local $/; }; $template = HTML::Template->new(scalarref => \$html); $template->param( headings => \@headings_data, rows => \@rows_data ); $q = new CGI; print $q->header; print $template->output; $dbh->disconnect; exit; __DATA__