[Catalyst] putting an object in the stash

Dave Rolsky autarch at urth.org
Tue Mar 13 15:23:31 GMT 2007


On Tue, 13 Mar 2007, Dave Howorth wrote:

> In the context of the original question, it's also worth remembering
> that an object is not the same as a hash as far as TT is concerned. It
> unifies the syntax to call accessors and to access the members of a
> hash. But it does *not* let you access arbitrary elements in a blessed
> hash as Perl does. In TT, you can only use the methods.

Huh? That's not true at all. In fact, TT2 does exactly the opposite. If I 
do this in my template:

  [% object.something %]

It tries to call a method something() on that object. However, if that 
method does not exist and the object is a blessed hash, then TT2 
"helpfully" looks up "something" as a hash key. Of course, if that key 
does not exist, TT2 will "helpfully" just keep going without a warning or 
error. This helpful behavior has cost me many hours of debugging.

And yes, I know there's a mode for TT2 where you can make it barf on any 
instance of undef in a template substitution, but that's often _too_ 
strict.


-dave

/*===================================================
VegGuide.Org                        www.BookIRead.com
Your guide to all that's veg.       My book blog
===================================================*/



More information about the Catalyst mailing list