Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

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?


Replies are listed 'Best First'.
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 ) } );
      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...


        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?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://128457]
Approved by root
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (2)
As of 2017-04-27 02:48 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (498 votes). Check out past polls.