This depends on how you set up your application, but when I have a web-based application with a database backend, I often use
Data::Table for maximum laziness. After performing a database query, you can filter, sort, reformat, etc. and then print the resulting data as an HTML table. There are plenty of options for formatting the HTML table nicely.
A lazy example (based on the module's documentation):
use Data::Table;
use DBI;
my $dbh= DBI->connect("DBI:mysql:test", "test", "")
or die $DBI::errstr;
my $minAge = 10;
my $t = Data::Table::fromSQL
(
$dbh,
"select * from mytable where age >= ?",
[$minAge],
);
# Print out an HTML Table.
print $t->html;