A possibly non-obvious "other means" is to produce the table HTML by using a separate HTML::Template instance that uses its own template for the table part. This looks like
sub tableHTML {
my %table_data = @_;
my $template = HTML::Template->new(filename => 'table.tmpl');
$template->param(%table_data);
return $template->output;
}
You now have the basis for a reusable component that you can pull out any time you need to embed tables in a template. Variations include passing a query into the component, which then extracts data from some data source. This technique also extends nicely to other types of components.
One thing that concerns me about this approach is that
you now have to worry about managing a template widget
library. Either you copy table.tmpl into
every project directory that needs it, or you introduce
some scheme for looking these widgets up every time they're
referenced -- and doing version control ala "DLL Hell".
(There may be a third way that escapes me at the moment; I
suppose you could symlink to table.tmpl
every time you need it, but that seems to me like the worst
of both worlds.)
This is hardly an insurmountable problem, but I don't
think it's trivial, either. (Maybe I'm wrong; if so, would
someone point me to the trivial solution please? :-) So it
seems to me that this "template widgets" approach would be
more useful for a large, relatively heavyweight project than
for something smaller... and my point of view is no doubt
coloured by the fact that I'm mostly interested in smaller
projects.
--
F
o
x
t
r
o
t
U
n
i
f
o
r
m
Found a typo in this node? /msg me
% man 3 strfry