X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/f23102e2d635682f5818275abd91b9deefde470e..98af1e142028dcf116f32636ea54f4c3e9494651:/pod/perlop.pod diff --git a/pod/perlop.pod b/pod/perlop.pod index 9ef1aec..7b0b0d2 100644 --- a/pod/perlop.pod +++ b/pod/perlop.pod @@ -200,7 +200,7 @@ 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". If, however, the string begins with a -non-alphabetic character (exluding "+" or "-"), Perl will attempt to convert +non-alphabetic character (excluding "+" 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. @@ -260,9 +260,11 @@ X<*> Binary "/" divides two numbers. X X -Binary "%" computes the modulus of two numbers. Given integer +Binary "%" is the modulo operator, which computes the division +remainder of its first argument with respect to its second argument. +Given integer operands C<$a> and C<$b>: If C<$b> is positive, then C<$a % $b> is -C<$a> minus the largest multiple of C<$b> that is not greater than +C<$a> minus the largest multiple of C<$b> less than or equal to C<$a>. If C<$b> is negative, then C<$a % $b> is C<$a> minus the smallest multiple of C<$b> that is not less than C<$a> (i.e. the result will be less than or equal to zero). If the operands @@ -273,14 +275,14 @@ the integer portion of C<$a> and C<$b> will be used in the operation If the absolute value of the right operand (C) is greater than or equal to C<(UV_MAX + 1)>, "%" computes the floating-point remainder C<$r> in the equation C<($r = $a - $i*$b)> where C<$i> is a certain -integer that makes C<$r> should have the same sign as the right operand +integer that makes C<$r> have the same sign as the right operand C<$b> (B as the left operand C<$a> like C function C) and the absolute value less than that of C<$b>. Note that when C is in scope, "%" gives you direct access -to the modulus operator as implemented by your C compiler. This +to the modulo operator as implemented by your C compiler. This operator is not as well defined for negative operands, but it will execute faster. -X<%> X X X +X<%> X X X Binary "x" is the repetition operator. In scalar context or if the left operand is not enclosed in parentheses, it returns a string consisting @@ -447,8 +449,6 @@ X Binary "~~" does a smart match between its arguments. Smart matching is described in L. -This operator is only available if you enable the "~~" feature: -see L for more information. X<~~> "lt", "le", "ge", "gt" and "cmp" use the collation (sort) order specified @@ -568,7 +568,7 @@ right operand is true, I which the range operator becomes false again. It doesn't become false till the next time the range operator is evaluated. It can test the right operand and become false on the same evaluation it became true (as in B), but it still returns true once. -If you don't want it to test the right operand till the next +If you don't want it to test the right operand until the next evaluation, as in B, just use three dots ("...") instead of two. In all other regards, "..." behaves just like ".." does. @@ -809,6 +809,39 @@ between keys and values in hashes, and other paired elements in lists. %hash = ( $key => $value ); login( $username => $password ); +=head2 Yada Yada Operators +X<...> X<... operator> X X X X +X + +The yada yada operators are placeholders for code. They parse without error, +but when executed either throw an exception or a warning. + +The C<...> operator takes no arguments. When executed, it throws an exception +with the text C: + + sub foo { ... } + foo(); + + Unimplemented at line . + +The C operator is similar, but it takes one argument, a string to use as +the text of the exception: + + sub bar { !!! "Don't call me, Ishmael!" } + bar(); + + Don't call me, Ishmael! at line . + +The C operator also takes one argument, but it emits a warning instead of +throwing an exception: + + sub baz { ??? "Who are you? What do you want?" } + baz(); + say "Why are you here?"; + + Who are you? What do you want? at line . + Why are you here? + =head2 List Operators (Rightward) X X @@ -1151,6 +1184,8 @@ the life of the script. However, mentioning C constitutes a promise that you won't change the variables in the pattern. If you change them, Perl won't even notice. See also L<"qr/STRING/msixpo">. +=item The empty pattern // + If the PATTERN evaluates to the empty string, the last I matched regular expression is used instead. In this case, only the C and C flags on the empty pattern is honoured - @@ -1167,6 +1202,8 @@ will assume you meant defined-or. If you meant the empty regex, just use parentheses or spaces to disambiguate, or even prefix the empty regex with an C (so C becomes C). +=item Matching in list context + If the C option is not used, C in list context returns a list consisting of the subexpressions matched by the parentheses in the pattern, i.e., (C<$1>, C<$2>, C<$3>...). (Note that here C<$1> etc. are @@ -1213,6 +1250,8 @@ search position to the beginning of the string, but you can avoid that by adding the C modifier (e.g. C). Modifying the target string also resets the search position. +=item \G assertion + You can intermix C matches with C, where C<\G> is a zero-width assertion that matches the exact position where the previous C, if any, left off. Without the C modifier, the C<\G> assertion