Paul Seamons wrote:
> Objects returning undef is fine (2.19 TT):
> 
> perl -e 'package A; sub foo {}; $a = bless {}, A; use Template; 
> Template->new->process(\qq{([% a.foo %])\n},{a=>$a})'
> 
> ()
> 
> Objects returning a list of (undef, "true value") is not fine which is 
> even more obscure:
> 
> perl -e 'package A; sub foo {(undef,"ouch")}; $a = bless {}, A; use 
> Template; Template->new->process(\qq{([% TRY; a.foo ; CATCH; e; END 
> %])\n},{a=>$a})'
> 
> (undef error - ouch at input text line 1.
> 
> )
> 
> I'd be interested to see what is getting returned. I'm wondering if in 
> the original post if foo is an object blessed into the Foo namespace - 
> I'm guessing it isn't.
> 
> Paul Seamons
> 

Here's an example of what I'm talking about:

perl -e 'package MyPackage; sub returnundef { return undef}; $object = 
bless {}, MyPackage; use Template; Template->new->process(\qq{([% 
object.returnundef %]) ([% object.nonexistantmethod %])}, 
{object=>$object});'

The issue isn't that undef is not allowed, it's that I can call 
nonexistent methods on an object, and get no error.  If I turn on 
DEBUG_UNDEF, which would throw an error on

[% object.nonexistantmethod %]

I also get an error on

[% object.returnundef %]

TT doesn't differentiate between an existing method that returns undef, 
and a nonexistent method.

-- 
Keith Barrette
The Conference Exchange

_______________________________________________
templates mailing list
templates@template-toolkit.org
http://mail.template-toolkit.org/mailman/listinfo/templates

Reply via email to