Remove switch from perltodo
[p5sagit/p5-mst-13.2.git] / pod / perlop.pod
index 32a58b8..c2fba59 100644 (file)
@@ -41,7 +41,7 @@ values only, not array values.
     left       << >>
     nonassoc   named unary operators
     nonassoc   < > <= >= lt gt le ge
-    nonassoc   == != <=> eq ne cmp
+    nonassoc   == != <=> eq ne cmp ~~
     left       &
     left       | ^
     left       &&
@@ -199,7 +199,11 @@ the operand is an identifier, a string consisting of a minus sign
 concatenated with the identifier is returned.  Otherwise, if the string
 starts with a plus or minus, a string starting with the opposite sign
 is returned.  One effect of these rules is that -bareword is equivalent
-to the string "-bareword".
+to the string "-bareword".  If, however, the string begins with a
+non-alphabetic character (exluding "+" or "-"), Perl will attempt to convert
+the string to a numeric and the arithmetic negation is performed. If the
+string cannot be cleanly converted to a numeric, Perl will give the warning
+B<Argument "the string" isn't numeric in negation (-) at ...>.
 X<-> X<negation, arithmetic>
 
 Unary "~" performs bitwise negation, i.e., 1's complement.  For
@@ -426,6 +430,12 @@ argument is stringwise less than, equal to, or greater than the right
 argument.
 X<cmp>
 
+Binary "~~" does a smart match between its arguments. Smart matching
+is described in L<perlsyn/"Smart Matching in Detail">.
+This operator is only available if you enable the "~~" feature:
+see L<feature> for more information.
+X<~~>
+
 "lt", "le", "ge", "gt" and "cmp" use the collation (sort) order specified
 by the current locale if C<use locale> is in effect.  See L<perllocale>.
 
@@ -687,7 +697,7 @@ That should probably be written more simply as:
 
 =head2 Assignment Operators
 X<assignment> X<operator, assignment> X<=> X<**=> X<+=> X<*=> X<&=>
-X<<< <<= >>> X<&&=> X<-=> X</=> X<|=> X<<< >>= >>> X<||=> X<.=>
+X<<< <<= >>> X<&&=> X<-=> X</=> X<|=> X<<< >>= >>> X<||=> X<//=> X<.=>
 X<%=> X<^=> X<x=>
 
 "=" is the ordinary assignment operator.
@@ -705,8 +715,8 @@ might trigger, such as from tie().  Other assignment operators work similarly.
 The following are recognized:
 
     **=    +=    *=    &=    <<=    &&=
-           -=    /=    |=    >>=    ||=
-           .=    %=    ^=
+           -=    /=    |=    >>=    ||=    
+           .=    %=    ^=           //= 
                 x=
 
 Although these are grouped by family, they all have the precedence
@@ -828,7 +838,9 @@ Then again, you could always use parentheses.
 Binary "err" is equivalent to C<//>--it's just like binary "or", except it tests
 its left argument's definedness instead of its truth.  There are two ways to 
 remember "err":  either because many functions return C<undef> on an B<err>or,
-or as a sort of correction:  C<$a=($b err 'default')>
+or as a sort of correction:  C<$a=($b err 'default')>. This keyword
+is only available when the 'err' feature is enabled: see L<feature>
+for more information.
 
 Binary "xor" returns the exclusive-OR of the two surrounding expressions.
 It cannot short circuit, of course.
@@ -2215,8 +2227,8 @@ you're supplying bitstrings: If an operand is a number, that will imply
 a B<numeric> bitwise operation.  You may explicitly show which type of
 operation you intend by using C<""> or C<0+>, as in the examples below.
 
-    $foo =  150  |  105 ;      # yields 255  (0x96 | 0x69 is 0xFF)
-    $foo = '150' |  105 ;      # yields 255
+    $foo =  150  |  105;       # yields 255  (0x96 | 0x69 is 0xFF)
+    $foo = '150' |  105;       # yields 255
     $foo =  150  | '105';      # yields 255
     $foo = '150' | '105';      # yields string '155' (under ASCII)