...
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 |