Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: Template: calling a method

by lachoy (Parson)
on Mar 23, 2004 at 17:11 UTC ( #339082=note: print w/replies, xml ) Need Help??

in reply to Template: calling a method

Something else must be going on -- are you sure that package 'Foo' is included and 'compute()' is getting called? Are you sure that 'process()' is working properly (check return value). Here's an example that works for me, just copy them both into the same directory and run the first one:
#!/usr/bin/perl use strict; use Foo; use Template; my $template = Template->new(); my @data = ( 1, 2, 3 ); $template->process( \*DATA, { object => Foo->new, data => \@data }) || die "Cannot process: ", $template->error(); __DATA__ [% FOREACH d = data %] The datum is [% d %] and the computed result is '[% object.compute( d ) %]' [% END %]

And the Foo object:

package Foo; # save as sub new { my ( $class, %params ) = @_; return bless( \%params, $class ); } sub compute { my ( $self, $data ) = @_; return "compute() called with: $data"; } 1;

Running this I get the expected:

$ perl The datum is 1 and the computed result is 'compute() called with: 1' The datum is 2 and the computed result is 'compute() called with: 2' The datum is 3 and the computed result is 'compute() called with: 3'

Good luck!

M-x auto-bs-mode

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2022-05-21 06:23 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (76 votes). Check out past polls.