I like to use simpler tags for variables in templates so I use the filter to turn %~foo~% into <TMPL_VAR NAME="foo"> like so:
use HTML::Template;
my $tmpl = HTML::Template->new(
scalarref => \do { local $/; <DATA> },
die_on_bad_params => 0,
loop_context_vars => 1,
filter => sub {
my $s=shift;
$$s=~s/%~([^~]+)~%/<TMPL_VAR NAME="$1">/g;
},
);
$tmpl->param( userid => 99999 );
$tmpl->param( username => 'foo' );
print $tmpl->output;
__DATA__
<a href="%~userid~%">%~username~%</a>
is easier to edit than
<a href="<TMPL_VAR NAME="userid">"><TMPL_VAR NAME="username"></a>
The heck with patents, here's how to protect your thoughts: <tinfoil>.o0(Martians can't read this)</tinfoil>