Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Passing arguments to subroutines using Template Toolkit

by elbie (Deacon)
on Nov 30, 2001 at 01:00 UTC ( #128457=perlquestion: print w/ replies, xml ) Need Help??
elbie has asked for the wisdom of the Perl Monks concerning the following question:

Using the process method in the Template Toolkit, I often want to call a subroutine with arguments, as follows:

$some_var = 'Hello world!'; $my_templ->process( "$TEMPLATE_DIR/hello_world.html", { 'filler' => \&some_sub( $some_var ) } );

But when I do that, I get ARRAY(0x84ab2c30) or similar where the replacement happens in the output.

Typically, I've been getting around this by calling the subroutine beforehand:

$some_var = &some_sub( 'Hello world!' ); $my_templ->process( "$TEMPLATE_DIR/hello_world.html", { 'filler' => $some_var } );
but I'd like to avoid this if I can. What is the "proper" way to pass variables?

elbieelbieelbie

Comment on Passing arguments to subroutines using Template Toolkit
Select or Download Code
Re: Passing arguments to subroutines using Template Toolkit
by guha (Priest) on Nov 30, 2001 at 01:30 UTC
    Never worked with TT but wouldn't this work ??
    { 'filler' => &some_sub( $some_var ) } );
    HTH
      Grr. Of course this works. sigh. I think I spent too much time looking at the first page of the TT perldoc where it tells me to pass it as a reference. I tried every combination of \&some_sub I could think of...

      elbieelbieelbie

        You only need to pass the sub as a reference if you plan to call it from within the template. Passing it as a ref lets you do this in your template:
        [% filler(some_var) %]
        Personally, I like to avoid callbacks from within templates when possible, but this can be useful for things like passing in a subroutine that escapes HTML characters.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://128457]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (8)
As of 2014-07-29 18:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (226 votes), past polls