Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Passing arguments to subroutines using Template Toolkit

by elbie (Curate)
on Nov 30, 2001 at 01:00 UTC ( [id://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

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 ) } );
    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
Domain Nodelet?
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?Last hourOther CB clients
Other Users?
Others studying the Monastery: (7)
As of 2024-04-23 10:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found