Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Include files using Text::Template and a closure

by crenz (Priest)
on Apr 26, 2005 at 21:40 UTC ( [id://451778]=CUFP: print w/replies, xml ) Need Help??

Text::Template is a nice and fast module if you need to create a few simple dynamic webpages. I recently used it for a project where I needed easy installation, and since Text::Template didn't require any other Perl modules than what is in the core, it came in very handy.

The documentation gives a simple example on how to include sub-templates. In my improved example, by using a closure, you can very comfortably inherit the parameters set for your current template in the templates you include.

I use this function to fill in templates:

sub _fill_in { my ($template, %params) = @_; $params{include} = sub { _fill_in(shift, %params, @_); return ''; }; my $template = Text::Template->new( SOURCE => catfile($templates_path, "$template.tmpl")); $template->fill_in(HASH => \%params, OUTPUT => \*STDOUT); }

Then, a template might look like this:

{include('_header', title => 'Page title')} <p>Some text...</P> {include('_footer')}

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: CUFP [id://451778]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2026-03-07 00:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.