Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: using AUTOLOAD to access read-only data structures

by ikegami (Pope)
on Jun 02, 2011 at 06:23 UTC ( #907755=note: print w/ replies, xml ) Need Help??


in reply to using AUTOLOAD to access read-only data structures

The dangerous aspect can be mitigated by returning an object that stringifies or throws a better error on method call.


Comment on Re: using AUTOLOAD to access read-only data structures
Re^2: using AUTOLOAD to access read-only data structures
by shmem (Canon) on Jun 02, 2011 at 06:27 UTC
    It can't be done from within, since the method call is out of the scope of that package. It's like saying
    perl -le '$foo = "Blorf"; $foo->quux' Can't locate object method "quux" via package "Blorf" (perhaps you for +got to load "Blorf"?) at -e line 1.
      $foo doesn't hold an object that stringifies to Blorf or throws a better error on method call.
        Thanks, got it. Sometimes I'm slow.

        update: something like that would do:

        ... sub import { shift; $config or $config = XMLin(shift) if @_; $XSConf::strict = shift if @_; return; # don't give $config away } .... ref $thing and $token = $thing or return bless \$thing, XS +Conf::Str; } } return $package; } package XSConf::Str; use overload '""' => \&str, fallback => 1; sub str { ${$_[0]} } our $AUTOLOAD; sub AUTOLOAD { return if $AUTOLOAD eq 'XSConf::Str::DESTROY'; my @caller = caller; die "you cannot invoke the method '$AUTOLOAD' on the string '$_[0] +'" . " at $caller[1] line $caller[2]\n" if $XSConf::strict; $_[0]; } 1;

        update: added $XSConf::strict, caller and die

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://907755]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (16)
As of 2014-09-02 15:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (25 votes), past polls