This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to File-Temp-0.21
[perl5.git] / lib / overload.pm
index 23dbebb..e5b2f97 100644 (file)
@@ -2,8 +2,6 @@ package overload;
 
 our $VERSION = '1.06';
 
-require Scalar::Util;
-
 sub nil {}
 
 sub OVERLOAD {
@@ -75,6 +73,9 @@ sub OverloadedStringify {
 sub Method {
   my $package = shift;
   if(ref $package) {
+    local $@;
+    local $!;
+    require Scalar::Util;
     $package = Scalar::Util::blessed($package);
     return undef if !defined $package;
   }
@@ -88,6 +89,9 @@ sub AddrRef {
   my $package = ref $_[0];
   return "$_[0]" unless $package;
 
+  local $@;
+  local $!;
+  require Scalar::Util;
   my $class = Scalar::Util::blessed($_[0]);
   my $class_prefix = defined($class) ? "$class=" : "";
   my $type = Scalar::Util::reftype($_[0]);
@@ -584,7 +588,8 @@ appear as lvalue when the above code is executed.
 
 If the copy constructor is required during the execution of some mutator,
 but a method for C<'='> was not specified, it can be autogenerated as a
-string copy if the object is a plain scalar.
+string copy if the object is a plain scalar or a simple assignment if it
+is not.
 
 =over 5
 
@@ -671,7 +676,8 @@ C<E<lt>=E<gt>> or C<cmp>:
 =item I<Copy operator>
 
 can be expressed in terms of an assignment to the dereferenced value, if this
-value is a scalar and not a reference.
+value is a scalar and not a reference, or simply a reference assignment
+otherwise.
 
 =back