X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Foverload.pm;h=c02fddbfab2e5243b4bb89aab8fcc67cbd45853d;hb=f3828575f121139b95363dc2ba6aab15ad201a85;hp=fdc1cfef5889e44ca39bd5c555767155417b79c5;hpb=e1a479c5e0c08fb10925261f03573261c69ca0dc;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/overload.pm b/lib/overload.pm index fdc1cfe..c02fddb 100644 --- a/lib/overload.pm +++ b/lib/overload.pm @@ -1,6 +1,6 @@ package overload; -our $VERSION = '1.05'; +our $VERSION = '1.06'; sub nil {} @@ -72,7 +72,13 @@ sub OverloadedStringify { sub Method { my $package = shift; - $package = ref $package if ref $package; + if(ref $package) { + local $@; + local $!; + require Scalar::Util; + $package = Scalar::Util::blessed($package); + return undef if !defined $package; + } #my $meth = $package->can('(' . shift); ov_method mycan($package, '(' . shift), $package; #return $meth if $meth ne \&nil; @@ -83,12 +89,14 @@ sub AddrRef { my $package = ref $_[0]; return "$_[0]" unless $package; - require Scalar::Util; - my $class = Scalar::Util::blessed($_[0]); - my $class_prefix = defined($class) ? "$class=" : ""; - my $type = Scalar::Util::reftype($_[0]); - my $addr = Scalar::Util::refaddr($_[0]); - return sprintf("$class_prefix$type(0x%x)", $addr); + local $@; + local $!; + require Scalar::Util; + my $class = Scalar::Util::blessed($_[0]); + my $class_prefix = defined($class) ? "$class=" : ""; + my $type = Scalar::Util::reftype($_[0]); + my $addr = Scalar::Util::refaddr($_[0]); + return sprintf("$class_prefix$type(0x%x)", $addr); } *StrVal = *AddrRef;