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:

foo.get_thing # the get_thing method
or
foo.bar.baz.thing # the bar => { baz => 'thing' } data structure

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

Any suggestions?

perl -e 'split//,q{john hurl, pest caretaker}and(map{print @_[$_]}(joi +n(q{},map{sprintf(qq{%010u},$_)}(2**2*307*4993,5*101*641*5261,7*59*79 +*36997,13*17*71*45131,3**2*67*89*167*181))=~/\d{2}/g));'

In reply to Forcing context of dot operator in Template Toolkit by agianni

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.