Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
HTML::Template::FAQ(3)User Contributed Perl DocumentatioHTML::Template::FAQ(3)

       HTML::Template::FAQ - Frequently	Asked Questions	about HTML::Template

       In the interest of greater understanding	I've started a FAQ section of
       the perldocs. Please look in here before	you send me email.

   Is there a place to go to discuss HTML::Template and/or get help?
       There's a mailing-list for discussing HTML::Template at Join at:

       If you just want	to get email when new releases are available you can
       join the	announcements mailing-list here:

   Is there a searchable archive for the mailing-list?
       Yes, you	can find an archive of the SourceForge list here:

   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!

   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 ( Please
       feel free to fork it and	send me	a pull request with any	changes	you

   <TMPL_VAR>s from the	main template aren't working inside a <TMPL_LOOP>!
       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

	   use HTML::Template;
	   use File::Find;

	   print STDERR	"Pre-loading HTML Templates...\n";
	       sub {
		   return unless /\.tmpl$/;
		       filename	=> "$File::Find::dir/$_",
		       cache	=> 1,

       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
       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	'_'.

   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('')">

       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'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.

perl v5.32.1			  2013-10-21		HTML::Template::FAQ(3)


Want to link to this manual page? Use this URL:

home | help