perlmeditation
Aristotle
<p>This is a technique I discovered a while ago. It will probably underwhelm a lot of people who may already have been using it for a while. However I've yet to see it explicitly discussed.</p>
<p>I refer to TT2 and CGI.pm's HTML generation methods as yin and yang here because their common uses represent polar opposites in the emphasis on application- vs. presentation centric design. By combinging the two, you can follow presentation centric design and get stickiness for form elements very painlessly.</p>
<p>So much fuss, so very little to show for it:</p>
<code>
#!/usr/bin/perl -w
use strict;
use CGI;
use Template
# ...
my $q = CGI->new;
# ...
$template->process("foo.tmpl.html", {
query => $q,
@other_variables,
}) or die $Template::ERROR;
</code>
Now you can achieve sticky form elements simply by using TT2's object access capabilities to say things like
<code>
[% query.textfield("name", "J. Random Hacker", 30) %]
</code>
<p>It is nothing earth shattering. But IMO, its usefulness is in fact because of rather than despite that.</p>
<p>Another use might be to implement purely presentation relevant aspects of a web application completely outside the core CGI script - after all, nothing stops you from querying parameter values as in <tt>lang = query.param('lang');</tt> in the template. I have used this to retrofit internationalization on a CGI script without touching the Perl code at all.</p>
<div class="pmsig pmsig-114691">
<p align="right"><em>Makeshifts last the longest.</em></p>
</div>