http://qs321.pair.com?node_id=128457

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