Re: protecting access to object instance fields?
Stuart Johnston <[email protected]> Mon, 11 Feb 2013 11:35:38 -0600
| Newsgroups | gmane.comp.lang.perl.modules.template-toolkit |
|---|---|
| Message-ID | <[email protected]> |
On 2/11/2013 10:54 AM, E R wrote:
> When I have an object (e.g. blessed hash) in the stash, I'd like to
> prevent TT from accessing any of the hash fields directly. It can still
> access the method functions.
>
> A simple example - suppose the TT template looks like:
>
> [% obj.the_time %]
> [% obj._unix_time %]
>
> and in the stash 'obj' is a blessed hash:
>
> package foo;
>
> sub new { bless { _unix_time => time }, shift }
> sub the_time { ... }
>
> I'd like the first GET to succeed and the second one to either fail,
> raise and exception, return the empty string or something like that.
>
> Is this possible?
This is already the default. Vars that start with '.' or '_' are
considered private, and ignored. If you want to die, rather than
getting undef, add STRICT => 1 to your Template->new.