This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Unicode::UCD: Add charprops_all() public function
[perl5.git] / pod / perlrebackslash.pod
index 670f3e3..230e76d 100644 (file)
@@ -68,14 +68,17 @@ as C<Not in [].>
  \A                Beginning of string.  Not in [].
  \b                Word/non-word boundary. (Backspace in []).
  \B                Not a word/non-word boundary.  Not in [].
- \cX               Control-X
+ \cX               Control-X.
  \C                Single octet, even under UTF-8.  Not in [].
+                   (Deprecated)
  \d                Character class for digits.
  \D                Character class for non-digits.
  \e                Escape character.
  \E                Turn off \Q, \L and \U processing.  Not in [].
  \f                Form feed.
- \g{}, \g1         Named, absolute or relative backreference.  Not in []
+ \F                Foldcase till \E.  Not in [].
+ \g{}, \g1         Named, absolute or relative backreference.
+                   Not in [].
  \G                Pos assertion.  Not in [].
  \h                Character class for horizontal whitespace.
  \H                Character class for non horizontal whitespace.
@@ -84,12 +87,13 @@ as C<Not in [].>
  \l                Lowercase next character.  Not in [].
  \L                Lowercase till \E.  Not in [].
  \n                (Logical) newline character.
- \N                Any character but newline.  Experimental.  Not in [].
+ \N                Any character but newline.  Not in [].
  \N{}              Named or numbered (Unicode) character or sequence.
  \o{}              Octal escape sequence.
  \p{}, \pP         Character with the given Unicode property.
  \P{}, \PP         Character without the given Unicode property.
- \Q                Quotemeta till \E.  Not in [].
+ \Q                Quote (disable) pattern metacharacters till \E.  Not
+                   in [].
  \r                Return character.
  \R                Generic new line.  Not in [].
  \s                Character class for whitespace.
@@ -167,17 +171,17 @@ Mnemonic: I<c>ontrol character.
 
 =head3 Named or numbered characters and character sequences
 
-Unicode characters have a Unicode name and numeric ordinal value.  Use the
+Unicode characters have a Unicode name and numeric code point (ordinal)
+value.  Use the
 C<\N{}> construct to specify a character by either of these values.
 Certain sequences of characters also have names.
 
 To specify by name, the name of the character or character sequence goes
-between the curly braces.  In this case, you have to C<use charnames> to
-load the Unicode names of the characters; otherwise Perl will complain.
+between the curly braces.
 
 To specify a character by Unicode code point, use the form C<\N{U+I<code
 point>}>, where I<code point> is a number in hexadecimal that gives the
-ordinal number that Unicode has assigned to the desired character.  It is
+code point that Unicode has assigned to the desired character.  It is
 customary but not required to use leading zeros to pad the number to 4
 digits.  Thus C<\N{U+0041}> means C<LATIN CAPITAL LETTER A>, and you will
 rarely see it written without the two leading zeros.  C<\N{U+0041}> means
@@ -200,7 +204,6 @@ meaning by the regex engine, and will match "as is".
 
 =head4 Example
 
- use charnames ':full';               # Loads the Unicode names.
  $str =~ /\N{THAI CHARACTER SO SO}/;  # Matches the Thai SO SO character
 
  use charnames 'Cyrillic';            # Loads Cyrillic names.
@@ -209,7 +212,7 @@ meaning by the regex engine, and will match "as is".
 =head3 Octal escapes
 
 There are two forms of octal escapes.  Each is used to specify a character by
-its ordinal, specified in octal notation.
+its code point specified in octal notation.
 
 One form, available starting in Perl 5.14 looks like C<\o{...}>, where the dots
 represent one or more octal digits.  It can be used for any Unicode character.
@@ -220,8 +223,7 @@ octal digits.  One problem with this form is that it can look exactly like an
 old-style backreference (see
 L</Disambiguation rules between old-style octal escapes and backreferences>
 below.)  You can avoid this by making the first of the three digits always a
-zero, but that makes \077 the largest ordinal unambiguously specifiable by this
-form.
+zero, but that makes \077 the largest code point specifiable.
 
 In some contexts, a backslash followed by two or even one octal digits may be
 interpreted as an octal escape, sometimes with a warning, and because of some
@@ -236,7 +238,7 @@ a character without special meaning by the regex engine, and will match
 "as is".
 
 To summarize, the C<\o{}> form is always safe to use, and the other form is
-safe to use for ordinals up through \077 when you use exactly three digits to
+safe to use for code points through \077 when you use exactly three digits to
 specify them.
 
 Mnemonic: I<0>ctal or I<o>ctal.
@@ -246,16 +248,17 @@ Mnemonic: I<0>ctal or I<o>ctal.
  $str = "Perl";
  $str =~ /\o{120}/;  # Match, "\120" is "P".
  $str =~ /\120/;     # Same.
- $str =~ /\o{120}+/; # Match, "\120" is "P", it's repeated at least once
+ $str =~ /\o{120}+/; # Match, "\120" is "P",
+                     # it's repeated at least once.
  $str =~ /\120+/;    # Same.
  $str =~ /P\053/;    # No match, "\053" is "+" and taken literally.
  /\o{23073}/         # Black foreground, white background smiling face.
- /\o{4801234567}/    # Raises a warning, and yields chr(4)
+ /\o{4801234567}/    # Raises a warning, and yields chr(4).
 
 =head4 Disambiguation rules between old-style octal escapes and backreferences
 
 Octal escapes of the C<\000> form outside of bracketed character classes
-potentially clash with old-style backreferences (see L</Absolute referencing>
+potentially clash with old-style backreferences (see L</Absolute referencing>
 below).  They both consist of a backslash followed by numbers.  So Perl has to
 use heuristics to determine whether it is a backreference or an octal escape.
 Perl uses the following rules to disambiguate:
@@ -282,11 +285,11 @@ takes only the first three for the octal escape; the rest are matched as is.
     $pat .= ")" x 999;
  /^($pat)\1000$/;   #  Matches 'aa'; there are 1000 capture groups.
  /^$pat\1000$/;     #  Matches 'a@0'; there are 999 capture groups
-                    #    and \1000 is seen as \100 (a '@') and a '0'
+                    #  and \1000 is seen as \100 (a '@') and a '0'.
 
 =back
 
-You can the force a backreference interpretation always by using the C<\g{...}>
+You can force a backreference interpretation always by using the C<\g{...}>
 form.  You can the force an octal interpretation always by using the C<\o{...}>
 form, or for numbers up through \077 (= 63 decimal), by using three digits,
 beginning with a "0".
@@ -329,16 +332,23 @@ functions C<lcfirst> and C<ucfirst>.
 To uppercase or lowercase several characters, one might want to use
 C<\L> or C<\U>, which will lowercase/uppercase all characters following
 them, until either the end of the pattern or the next occurrence of
-C<\E>, whatever comes first. They provide functionality similar to what
+C<\E>, whichever comes first. They provide functionality similar to what
 the functions C<lc> and C<uc> provide.
 
-C<\Q> is used to escape all characters following, up to the next C<\E>
-or the end of the pattern. C<\Q> adds a backslash to any character that
-isn't a letter, digit, or underscore. This ensures that any character
-between C<\Q> and C<\E> shall be matched literally, not interpreted
-as a metacharacter by the regex engine.
+C<\Q> is used to quote (disable) pattern metacharacters, up to the next
+C<\E> or the end of the pattern. C<\Q> adds a backslash to any character
+that could have special meaning to Perl.  In the ASCII range, it quotes
+every character that isn't a letter, digit, or underscore.  See
+L<perlfunc/quotemeta> for details on what gets quoted for non-ASCII
+code points.  Using this ensures that any character between C<\Q> and
+C<\E> will be matched literally, not interpreted as a metacharacter by
+the regex engine.
 
-Mnemonic: I<L>owercase, I<U>ppercase, I<Q>uotemeta, I<E>nd.
+C<\F> can be used to casefold all characters following, up to the next C<\E>
+or the end of the pattern. It provides the functionality similar to
+the C<fc> function.
+
+Mnemonic: I<L>owercase, I<U>ppercase, I<F>old-case, I<Q>uotemeta, I<E>nd.
 
 =head4 Examples
 
@@ -365,8 +375,9 @@ New in perl 5.10.0 are the classes C<\h> and C<\v> which match horizontal
 and vertical whitespace characters.
 
 The exact set of characters matched by C<\d>, C<\s>, and C<\w> varies
-depending on various pragma and regular expression modifiers.  See
-L<perlre>.
+depending on various pragma and regular expression modifiers.  It is
+possible to restrict the match to the ASCII range by using the C</a>
+regular expression modifier.  See L<perlrecharclass>.
 
 The uppercase variants (C<\W>, C<\D>, C<\S>, C<\H>, and C<\V>) are
 character classes that match, respectively, any character that isn't a
@@ -422,7 +433,7 @@ Mnemonic: I<g>roup.
 =head4 Examples
 
  /(\w+) \g1/;    # Finds a duplicated word, (e.g. "cat cat").
- /(\w+) \1/;     # Same thing; written old-style
+ /(\w+) \1/;     # Same thing; written old-style.
  /(.)(.)\g2\g1/;  # Match a four letter palindrome (e.g. "ABBA").
 
 
@@ -565,11 +576,14 @@ categories above. These are:
 
 =item \C
 
-C<\C> always matches a single octet, even if the source string is encoded
+(Deprecated.) C<\C> always matches a single octet, even if the source
+string is encoded
 in UTF-8 format, and the character to be matched is a multi-octet character.
-C<\C> was introduced in perl 5.6.  This is very dangerous, because it violates
+This is very dangerous, because it violates
 the logical character abstraction and can cause UTF-8 sequences to become malformed.
 
+Use C<utf8::encode()> instead.
+
 Mnemonic: oI<C>tet.
 
 =item \K
@@ -583,7 +597,7 @@ Mnemonic: I<K>eep.
 
 =item \N
 
-This is an experimental feature new to perl 5.12.0.  It matches any character
+This feature, available starting in v5.12,  matches any character
 that is B<not> a newline.  It is a short-hand for writing C<[^\n]>, and is
 identical to the C<.> metasymbol, except under the C</s> flag, which changes
 the meaning of C<.>, but not C<\N>.
@@ -602,11 +616,21 @@ linebreak sequence by Unicode. This includes all characters matched by
 C<\v> (vertical whitespace), and the multi character sequence C<"\x0D\x0A">
 (carriage return followed by a line feed, sometimes called the network
 newline; it's the end of line sequence used in Microsoft text files opened
-in binary mode). C<\R> is equivalent to C<< (?>\x0D\x0A)|\v) >>. Since
+in binary mode). C<\R> is equivalent to C<< (?>\x0D\x0A|\v) >>.  (The
+reason it doesn't backtrack is that the sequence is considered
+inseparable.  That means that
+
+ "\x0D\x0A" =~ /^\R\x0A$/   # No match
+
+fails, because the C<\R> matches the entire string, and won't backtrack
+to match just the C<"\x0D">.)  Since
 C<\R> can match a sequence of more than one character, it cannot be put
 inside a bracketed character class; C</[\R]/> is an error; use C<\v>
 instead.  C<\R> was introduced in perl 5.10.0.
 
+Note that this does not respect any locale that might be in effect; it
+matches according to the platform's native character set.
+
 Mnemonic: none really. C<\R> was picked because PCRE already uses C<\R>,
 and more importantly because Unicode recommends such a regular expression
 metacharacter, and suggests C<\R> as its notation.
@@ -623,14 +647,15 @@ Unicode, but one can be composed by using a G followed by a Unicode "COMBINING
 UPWARDS ARROW BELOW", and would be displayed by Unicode-aware software as if it
 were a single character.
 
+The match is greedy and non-backtracking, so that the cluster is never
+broken up into smaller components.
+
 Mnemonic: eI<X>tended Unicode character.
 
 =back
 
 =head4 Examples
 
- "\x{256}" =~ /^\C\C$/;    # Match as chr (0x256) takes 2 octets in UTF-8.
-
  $str =~ s/foo\Kbar/baz/g; # Change any 'bar' following a 'foo' to 'baz'
  $str =~ s/(.)\K\g1//g;    # Delete duplicated characters.