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):
my $dbh= DBI->connect("DBI:mysql:test", "test", "")
or die $DBI::errstr;
my $minAge = 10;
my $t = Data::Table::fromSQL
"select * from mytable where age >= ?",
# Print out an HTML Table.