This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ExtUtils::MakeMaker 6.02 -> 6.03
[perl5.git] / lib / overload.pm
index 838c91f..fb1a0d1 100644 (file)
@@ -91,7 +91,7 @@ sub AddrRef {
 }
 
 sub StrVal {
-  (OverloadedStringify($_[0]) or ref($_[0]) eq 'Regexp') ?
+  (ref $_[0] && OverloadedStringify($_[0]) or ref($_[0]) eq 'Regexp') ?
     (AddrRef(shift)) :
     "$_[0]";
 }
@@ -333,9 +333,9 @@ The following symbols can be specified in C<use overload> directive:
     "**", "**=", "<<", "<<=", ">>", ">>=", "x", "x=", ".", ".=",
 
 For these operations a substituted non-assignment variant can be called if
-the assignment variant is not available.  Methods for operations "C<+>",
-"C<->", "C<+=>", and "C<-=>" can be called to automatically generate
-increment and decrement methods.  The operation "C<->" can be used to
+the assignment variant is not available.  Methods for operations C<+>,
+C<->, C<+=>, and C<-=> can be called to automatically generate
+increment and decrement methods.  The operation C<-> can be used to
 autogenerate missing methods for unary minus or C<abs>.
 
 See L<"MAGIC AUTOGENERATION">, L<"Calling Conventions for Mutators"> and
@@ -355,10 +355,10 @@ arrays, C<cmp> is used to compare values subject to C<use overload>.
 
     "&", "^", "|", "neg", "!", "~",
 
-"C<neg>" stands for unary minus.  If the method for C<neg> is not
+C<neg> stands for unary minus.  If the method for C<neg> is not
 specified, it can be autogenerated using the method for
-subtraction. If the method for "C<!>" is not specified, it can be
-autogenerated using the methods for "C<bool>", or "C<\"\">", or "C<0+>".
+subtraction. If the method for C<!> is not specified, it can be
+autogenerated using the methods for C<bool>, or C<"">, or C<0+>.
 
 =item * I<Increment and decrement>
 
@@ -382,11 +382,11 @@ C<0+>.
 
 =item * I<Boolean, string and numeric conversion>
 
-    "bool", "\"\"", "0+",
+    'bool', '""', '0+',
 
 If one or two of these operations are not overloaded, the remaining ones can
 be used instead.  C<bool> is used in the flow control operators
-(like C<while>) and for the ternary "C<?:>" operation.  These functions can
+(like C<while>) and for the ternary C<?:> operation.  These functions can
 return any arbitrary Perl value.  If the corresponding operation for this value
 is overloaded too, that operation will be called again with this value.
 
@@ -404,6 +404,9 @@ glob (which may require a stringification).  The same overloading
 happens both for the I<read-filehandle> syntax C<E<lt>$varE<gt>> and
 I<globbing> syntax C<E<lt>${var}E<gt>>.
 
+B<BUGS> Even in list context, the iterator is currently called only
+once and with scalar context.
+
 =item * I<Dereferencing>
 
     '${}', '@{}', '%{}', '&{}', '*{}'.