in reply to Re^4: Preparing data for Template
in thread Preparing data for Template

Does this journey tell you anything about the advisability of mixing presentation and code in this fashion? This sort of popping back and forth between presentation and code makes for maintenance headaches. It's also a great temptation with Template Toolkit. For something simple like populating a list with HTML::Template you can:

use strict; use warnings; use HTML::Template; my @items = map {{item => $_}} qw(first second third fourth); my $template = HTML::Template->new(filehandle => *DATA); $template->param(items => \@items); print $template->output(); __DATA__ <TMPL_IF name="items"> <ul><TMPL_LOOP name="items"> <li><TMPL_VAR name="item"></li></TMPL_LOOP> </ul></TMPL_IF>

Prints:

<ul> <li>first</li> <li>second</li> <li>third</li> <li>fourth</li> </ul>

and renders as:

Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond

Replies are listed 'Best First'.
Re^6: Preparing data for Template
by Bod (Parson) on Jan 01, 2021 at 13:48 UTC
    Does this journey tell you anything about the advisability of mixing presentation and code in this fashion?

    Mixing presentation and code is exactly what I am trying to avoid.
    The 'real' code will have multiple values pulled from the backend DB, not just one value which is why I put them in an anonymous hash. Having said that, for this part of the code at least, the values will be static in the sense that they won't change during the runtime so having Template call a function won't be necessary.

    I think perhaps I need to do some more studying of the different kinds of loop that Template offers. Already I have changed quite a bit of what I have written so that one template file includes another instead of having the code process each separately...so much to learn!