This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Doc fix for [perl #78642] Logical defined or not equivalent to ternary operator with...
authorRafael Garcia-Suarez <rgs@consttype.org>
Mon, 15 Nov 2010 10:47:53 +0000 (11:47 +0100)
committerRafael Garcia-Suarez <rgs@consttype.org>
Mon, 15 Nov 2010 10:47:53 +0000 (11:47 +0100)
The ternary operator can be used in lvalue context; $a // $b cannot.

pod/perlop.pod

index 5dd86eb..aaa86de 100644 (file)
@@ -510,10 +510,11 @@ Although it has no direct equivalent in C, Perl's C<//> operator is related
 to its C-style or.  In fact, it's exactly the same as C<||>, except that it
 tests the left hand side's definedness instead of its truth.  Thus, C<$a // $b>
 is similar to C<defined($a) || $b> (except that it returns the value of C<$a>
-rather than the value of C<defined($a)>) and is exactly equivalent to
-C<defined($a) ? $a : $b>.  This is very useful for providing default values
-for variables.  If you actually want to test if at least one of C<$a> and
-C<$b> is defined, use C<defined($a // $b)>.
+rather than the value of C<defined($a)>) and yields the same result than
+C<defined($a) ? $a : $b> (except that the ternary-operator form can be
+used as a lvalue, while C<$a // $b> cannot).  This is very useful for
+providing default values for variables.  If you actually want to test if
+at least one of C<$a> and C<$b> is defined, use C<defined($a // $b)>.
 
 The C<||>, C<//> and C<&&> operators return the last value evaluated
 (unlike C's C<||> and C<&&>, which return 0 or 1). Thus, a reasonably