http://www.perlmonks.org?node_id=660307


in reply to Re^2: The history of a templating engine
in thread The history of a templating engine

I'm looking at rolling my own template system as well. I had that "switch the quotes" moment as well, but without actually coming up with words for it.

Anyhow, here's how I intend to handle the data thwomping problem, as well as STDOUT. Templates are to be mangled into:

use UrsusTemplate::tmpl; $tmpl_sub{$tmpl_path} = sub { my $out = ''; <i>some Perl</i> $out .= "<i>some HTML</i>"; return $out; }
Which gets evaled. As long as your code uses my (or the template engine inserts it), you have data safety. Imported via UrsusTemplate::tmpl, we have:
sub run { my $tmpl_path = shift; generate($tmpl_path) unless $tmpl_sub{$tmpl_path}; return $tmpl_sub{$tmpl_path}->(@_); #goto &$tmpl_sub{$tmpl_path}; #if you want to scare the other devs ;-) } sub emit { print $site_head; print run(@_); print $site_tail; }
Now we have an easy way to do includes, plus an API for the controller. If we keep the timestamp from the source file, we can easily implement caching as well.

If anyone can sanity-check this for me, I'd love that.