http://www.perlmonks.org?node_id=907757


in reply to Re^2: using AUTOLOAD to access read-only data structures
in thread using AUTOLOAD to access read-only data structures

$foo doesn't hold an object that stringifies to Blorf or throws a better error on method call.

Replies are listed 'Best First'.
Re^4: using AUTOLOAD to access read-only data structures
by shmem (Chancellor) on Jun 02, 2011 at 06:39 UTC
    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