Data, Logic, Display: The Multi-Tiered Decoupled Approach to Web Design

In Refining the CGI process through structure and templates, boo_radley does state:
A good CGI framework should provide 1.Template handling -- go TT2! Keeping templates divorced from code allows me to to farm out HTML and probably SQL, not to mention benefits of maintenance, etc
But one must ask. Does Template force one to separate Perl and HTML? The answer is no, it does not. In fact, anything you can do in Perl, you can do using the [% PERL %] Template directive.

Furthermore, Template exports a mini-language, containing loops and conditionals and simplified methods of defining Perl hash and array refs. And beyond that, people have written plugins to extend this mini-langauge even further to support database interaction among other things.

So, with Template as your templating solution, you have Perl and Template as programming languages and then you have HTML.

On the other hand HTML::Template has far more limited mini-language, forcing one to do much more in pure Perl.

Web App Frameworks and Their Chosen Template Engine

OpenInteract made by our own lachoy. Template
boo_radley's framework Template
CGI::Application HTML::Template
CGI HTML::Template --- this is not entirely true. What is true is that HTML::Template @ISA qw(CGI) And therefore anywhere that you use HTML::Template you are already using CGI.
Apache::PageKit HTML::Template
AxKit XPathScript or XSLT (your choice)
CGI::MxScreen None --- use what you want
HTML::EP Builtin --- has a Perl tag (uh-oh). Is extensible (uh-oh#2).
BingoX Builtin --- has a Perl tag (uh-oh). Is extensible (uh-oh#2).
CGI::Portable It's can't figure out what it has.
LibWeb I can't figure out what it has!
HTML::Embperl and HTML::Mason Perl. That may sound funny but that's how these two modules do it. Of course you can develop your own HTML display modules in Perl and use them inline.


In my eyes, Template is offering replicated functionality through its too-powerful and too-feature-packed mini-language. There is nothing that this mini-language offers that cannot and should not be done in re-usable Perl modules.

On the other hand, HTML::Template by creating a very narrow snake's tube between Perl computation and HTML display, forces one to use Perl for it's strength and HTML for it's without any chance for the feature overlap phenomenon that has happened with Template.

In reply to Web Application Frameworks and their Templating Engines with a Comparative Study of Template and HTML::Template by princepawn

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":