I think your example is too complicated. It made me look twice, so anyone unfamiliar with HTML::Template will likely not understand it at all. You're actually using a template and inserting its output into another template. Pretty confusing.
A simpler method would be to use a TMPL_LOOP for the table of data entries, and put the actual data in a suitable data structure for HTML::Template to make a nice table in the TMPL_LOOP.
On second thought, that might not be much simpler at all, since it requires understanding of complicated data structures.
Morbo: "Windmills do not work that way!"