HTML::T...ate::FAQ(3)
π
HTML::Template::FAQ β Frequently Asked Questions about HTML::Template π
This is the HTML::Template::FAQ page β a User Contributed Perl Documentation moment β and it's literally the FAQ for HTML::Template. Bestie, it's giving "read this before you email me" energy, and honestly? Iconic. π«Ά
β¨ NAME β¨
HTML::Template::FAQ β Frequently Asked Questions about HTML::Template. Periodt. π
πΈ SYNOPSIS πΈ
So like, in the interest of greater understanding I've started a FAQ section of the perldocs. Please look in here before you send me email. No cap, it's literally here for you. π
π FREQUENTLY ASKED QUESTIONS π
π¬ Is there a place to go to discuss HTML::Template and/or get help? π¬
Yes bestie! There's a mailing-list for discussing HTML::Template at html-template-users@lists.sourceforge.net. Join at:
http://lists.sourceforge.net/lists/listinfo/html-template-users
If you just want to get email when new releases are available you can join the announcements mailing-list here:
http://lists.sourceforge.net/lists/listinfo/html-template-announce
ποΈ Is there a searchable archive for the mailing-list? ποΈ
Yes, you can find an archive of the SourceForge list here:
http://dir.gmane.org/gmane.comp.lang.perl.modules.html-template
π I want support for <TMPL_XXX>! How about it? π
Maybe. I definitely encourage people to discuss their ideas for HTML::Template on the mailing list. Please be ready to explain to me how the new tag fits in with HTML::Template's mission to provide a fast, lightweight system for using HTML templates. π
NOTE: Offering to program said addition and provide it in the form of a patch to the most recent version of HTML::Template will definitely have a softening effect on potential opponents! Like, instant slay. β¨
π I found a bug, can you fix it? π
That depends. Did you send me the VERSION of HTML::Template, a test script and a test template? If so, then almost certainly. π
If you're feeling really adventurous, HTML::Template is publicly available on GitHub (https://github.com/mpeters/html-template). Please feel free to fork it and send me a pull request with any changes you have. π«Ά
π <TMPL_VAR>s from the main template aren't working inside a <TMPL_LOOP>! Why? π
This is the intended behavior. <TMPL_LOOP> introduces a separate scope for <TMPL_VAR>s much like a subroutine call in Perl introduces a separate scope for my variables.
If you want your <TMPL_VAR>s to be global you can set the global_vars option when you call new(). See above for documentation of the global_vars new() option. π
π How can I pre-load my templates using cache-mode and mod_perl? π
Add something like this to your startup.pl:
use HTML::Template;
use File::Find;
print STDERR "Pre-loading HTML Templates...\n";
find(
sub {
return unless /\.tmpl$/;
HTML::Template->new(
filename => "$File::Find::dir/$_",
cache => 1,
);
},
'/path/to/templates',
'/another/path/to/templates/'
);
Note that you'll need to modify the return unless line to specify the extension you use for your template files - I use .tmpl, as you can see. You'll also need to specify the path to your template files. π
One potential problem: the /path/to/templates/ must be EXACTLY the same path you use when you call HTML::Template->new(). Otherwise the cache won't know they're the same file and will load a new copy - instead of getting a speed increase, you'll double your memory usage. To find out if this is happening set "cache_debug =" 1> in your application code and look for CACHE MISS messages in the logs. π
π€ What characters are allowed in TMPL_* names? π€
Numbers, letters, '.', '/', '+', '-' and '_'. That's the whole guest list, bestie. ποΈ
𧨠How can I execute a program from inside my template? π§¨
Short answer: you can't. Longer answer: you shouldn't since this violates the fundamental concept behind HTML::Template - that design and code should be separate. π«
But, inevitably some people still want to do it. If that describes you then you should take a look at HTML::Template::Expr. Using HTML::Template::Expr it should be easy to write a run_program() function. Then you can do awful stuff like:
<tmpl_var expr="run_program('foo.pl')">
Just, please, don't tell me about it. I'm feeling guilty enough just for writing HTML::Template::Expr in the first place. ππ
ποΈ What's the best way to create a <select> form element using HTML::Template? ποΈ
There is much disagreement on this issue. My personal preference is to use CGI.pm's excellent popup_menu() and scrolling_list() functions to fill in a single <tmpl_var select_foo> variable. β¨
To some people this smacks of mixing HTML and code in a way that they hoped HTML::Template would help them avoid. To them I'd say that HTML is a violation of the principle of separating design from programming. There's no clear separation between the programmatic elements of the <form> tags and the layout of the <form> tags. You'll have to draw the line somewhere - clearly the designer can't be entirely in charge of form creation. π
It's a balancing act and you have to weigh the pros and cons on each side. It is certainly possible to produce a <select> element entirely inside the template. What you end up with is a rat's nest of loops and conditionals. Alternately you can give up a certain amount of flexibility in return for vastly simplifying your templates. I generally choose the latter. π«Ά
Another option is to investigate HTML::FillInForm which some have reported success using to solve this problem. π
Okay that's the whole FAQ, bestie! This page came from source/version perl v5.42.0 and is dated 2017-05-19 β HTML::T...ate::FAQ(3) out. πβ¨π
π¦ where this page comes from
- opensuse-leap 16.0: perl-HTML-Template 2.97-bp160.1.11 Β· Artistic-1.0 or GPL-1.0+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms