Binary ".." is the range operator, which is really two different
operators depending on the context. In list context, it returns an
-array of values counting (up by ones) from the left value to the right
+list of values counting (up by ones) from the left value to the right
value. If the left value is greater than the right value then it
returns the empty array. The range operator is useful for writing
-C<foreach (1..10)> loops and for doing slice operations on arrays. In
+C<foreach (1..10)> loops and for doing slice operations on arrays. In
the current implementation, no temporary array is created when the
range operator is used as the expression in C<foreach> loops, but older
versions of Perl might burn a lot of memory when you write something
# code
}
+The range operator also works on strings, using the magical auto-increment,
+see below.
+
In scalar context, ".." returns a boolean value. The operator is
bistable, like a flip-flop, and emulates the line-range (comma) operator
of B<sed>, B<awk>, and various editors. Each ".." operator maintains its
@alphabet = ('A' .. 'Z');
-to get all normal letters of the alphabet, or
+to get all normal letters of the English alphabet, or
$hexdigit = (0 .. 9, 'a' .. 'f')[$num & 15];
\x1b hex char (ESC)
\x{263a} wide hex char (SMILEY)
\c[ control char (ESC)
- \N{name} named char
+ \N{name} named Unicode character
The following escape sequences are available in constructs that interpolate
but not in transliterations.
\E end case modification
\Q quote non-word characters till \E
-If C<use locale> is in effect, the case map used by C<\l>, C<\L>, C<\u>
-and C<\U> is taken from the current locale. See L<perllocale>. For
-documentation of C<\N{name}>, see L<charnames>.
+If C<use locale> is in effect, the case map used by C<\l>, C<\L>,
+C<\u> and C<\U> is taken from the current locale. See L<perllocale>.
+If Unicode (for example, C<\N{}> or wide hex characters of 0x100 or
+beyond) is being used, the case map used by C<\l>, C<\L>, C<\u> and
+C<\U> is as defined by Unicode. For documentation of C<\N{name}>,
+see L<charnames>.
All systems use the virtual C<"\n"> to represent a line terminator,
called a "newline". There is no such thing as an unvarying, physical