Forcing context of dot operator in Template Toolkitby agianni (Hermit)
|on Oct 24, 2007 at 14:44 UTC
agianni has asked for the wisdom of the Perl Monks concerning the following question:
In our Web application architecture, I'm changing a component to use objects where data structures were previously used. For backwards compatibility, I'm using Contextual::Return, which works nicely until I get to the templates. We're using Template Toolkit for our presentation layer and I'm running into trouble when the data in question comes into play. I have a method in my controller logic that uses Contextual::Return to return either a hashref or an object depending on context. Unfortunately, it seems that Template Toolkit always tries to evaluate the results of the method call as an object first, so I can never seem to access the hash.
My understanding is that Template Toolkit attempts to evaluate the return value of the dot operator in order, and I'm assuming that it tries the object first, which Contextual::Return happily provides.
The upshot is that I would like to be able to do this:
But the second example gives me an error along the lines of:
undef error - Can't call method 'bar' on OBJREF value returned by My::Module