X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlretut.pod;h=95e3f03432df307b5061b34a17fd81a5fa7c9315;hb=0c8d858bc5dbd18f38dfa055bba011a276ec0bb8;hp=77e99429aa99d2788b1b2185989c3645d55ccbd6;hpb=3229381570cd559d546c04f62dc3e86718ceccd8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlretut.pod b/pod/perlretut.pod index 77e9942..95e3f03 100644 --- a/pod/perlretut.pod +++ b/pod/perlretut.pod @@ -710,9 +710,12 @@ indicated below it: /(ab(cd|ef)((gi)|j))/; 1 2 34 -so that if the regexp matched, e.g., C<$2> would contain 'cd' or 'ef'. -For convenience, perl sets C<$+> to the highest numbered C<$1>, C<$2>, -... that got assigned. +so that if the regexp matched, e.g., C<$2> would contain 'cd' or 'ef'. For +convenience, perl sets C<$+> to the string held by the highest numbered +C<$1>, C<$2>, ... that got assigned (and, somewhat related, C<$^N> to the +value of the C<$1>, C<$2>, ... most-recently assigned; i.e. the C<$1>, +C<$2>, ... associated with the rightmost closing parenthesis used in the +match). Closely associated with the matching variables C<$1>, C<$2>, ... are the B C<\1>, C<\2>, ... . Backreferences are simply @@ -1644,13 +1647,18 @@ sequence of bytes (the old way) or as a sequence of Unicode characters than C may be represented using the C<\x{hex}> notation, with C a hexadecimal integer: - use utf8; # We will be doing Unicode processing /\x{263a}/; # match a Unicode smiley face :) Unicode characters in the range of 128-255 use two hexadecimal digits with braces: C<\x{ab}>. Note that this is different than C<\xab>, -which is just a hexadecimal byte with no Unicode -significance. +which is just a hexadecimal byte with no Unicode significance. + +B: in perl 5.6.0 it used to be that one needed to say C +to use any Unicode features. This is no more the case: for almost all +Unicode processing, the explicit C pragma is not needed. +(The only case where it matters is if your Perl script is in Unicode, +that is, encoded in UTF-8/UTF-16/UTF-EBCDIC: then an explicit C +is needed.) Figuring out the hexadecimal sequence of a Unicode character you want or deciphering someone else's hexadecimal Unicode regexp is about as @@ -1661,15 +1669,12 @@ specified in the Unicode standard. For instance, if we wanted to represent or match the astrological sign for the planet Mercury, we could use - use utf8; # We will be doing Unicode processing use charnames ":full"; # use named chars with Unicode full names $x = "abc\N{MERCURY}def"; $x =~ /\N{MERCURY}/; # matches One can also use short names or restrict names to a certain alphabet: - use utf8; # We will be doing Unicode processing - use charnames ':full'; print "\N{GREEK SMALL LETTER SIGMA} is called sigma.\n"; @@ -1680,7 +1685,7 @@ One can also use short names or restrict names to a certain alphabet: print "\N{sigma} is Greek sigma\n"; A list of full names is found in the file Names.txt in the -lib/perl5/5.6.0/unicode directory. +lib/perl5/5.X.X/unicore directory. The answer to requirement 2), as of 5.6.0, is that if a regexp contains Unicode characters, the string is searched as a sequence of @@ -1690,7 +1695,6 @@ characters, but matching a single byte is required, we can use the C<\C> escape sequence. C<\C> is a character class akin to C<.> except that it matches I byte 0-255. So - use utf8; # We will be doing Unicode processing use charnames ":full"; # use named chars with Unicode full names $x = "a"; $x =~ /\C/; # matches 'a', eats one byte @@ -1712,7 +1716,6 @@ the C<\P{name}> character class, which is the negation of the C<\p{name}> class. For example, to match lower and uppercase characters, - use utf8; # We will be doing Unicode processing use charnames ":full"; # use named chars with Unicode full names $x = "BOB"; $x =~ /^\p{IsUpper}/; # matches, uppercase char class @@ -1748,11 +1751,10 @@ letter, the braces can be dropped. For instance, C<\pM> is the character class of Unicode 'marks', for example accent marks. For the full list see L. -The Unicode has also been separated into blocks of charaters which you -can test with C<\p{InBlock}> and C<\P{InBlock}>, for example C<\p{InGreek}> -and C<\P{InKatakana}. For the full list see L. - -For the the full and latest information see the latest Unicode standard. +The Unicode has also been separated into various sets of charaters +which you can test with C<\p{In...}> (in) and C<\P{In...}> (not in), +for example C<\p{InLatin}>, C<\p{InGreek}>, or C<\P{InKatakana}>. +For the full list see L. C<\X> is an abbreviation for a character class sequence that includes the Unicode 'combining character sequences'. A 'combining character @@ -1764,6 +1766,9 @@ S >, which translates in Danish to A with the circle atop it, as in the word Angstrom. C<\X> is equivalent to C<\PM\pM*}>, i.e., a non-mark followed by one or more marks. +For the the full and latest information about Unicode see the latest +Unicode standard, or the Unicode Consortium's website http://www.unicode.org/ + As if all those classes weren't enough, Perl also defines POSIX style character classes. These have the form C<[:name:]>, with C the name of the POSIX class. The POSIX classes are C, C, @@ -1783,7 +1788,6 @@ be used just like C<\d>, both inside and outside of character classes: /\s+[abc[:digit:]xyz]\s*/; # match a,b,c,x,y,z, or a digit /^=item\s[:digit:]/; # match '=item', # followed by a space and a digit - use utf8; use charnames ":full"; /\s+[abc\p{IsDigit}xyz]\s+/; # match a,b,c,x,y,z, or a digit /^=item\s\p{IsDigit}/; # match '=item',