summaryrefslogtreecommitdiff
path: root/pod
diff options
context:
space:
mode:
authorDominic Dunlop <domo@slipper.ip.lu>1997-08-07 00:00:00 +0000
committerTim Bunce <Tim.Bunce@ig.co.uk>1997-08-07 00:00:00 +1200
commit84850974f570c6c594cc0df54611ffc5f0b26130 (patch)
treee04cad942ec48979bb0e560c12f84b921b901660 /pod
parent744c5d8ad78d7234bac4c9f20e9850c814faa8bc (diff)
downloadperl-84850974f570c6c594cc0df54611ffc5f0b26130.tar.gz
Document use of - in a regex char class.
Subject: [PATCH] Re: regex matcher incorrect At 13:17 +0200 1997-06-24, Ulrich Windl wrote: >In a statement like "$_[0] =~ /^([ugoa]+)([+-=])([rwxst]*)$/;" some >incorrect patterns were matched. As an example "go/rw" was matched. >Adding a backslash in front of the minus, making "[+\-=]", solved the >problem. > >As this is a non-obvious feature, I'd consider that as a bug. Originally >the problem was seen on Linux running the same version of Perl. Thanks Ulrich. You're right. While all UNIX-descended regular expression packages work pretty much the same way in respect how you make "-" a member of a character class, neither the documentation delivered with Perl nor the book "Programming Perl" tells you what to do, and they should. Here's a patch to apply to the perlre.pod documentation file: p5p-msgid: v03102804afd578bcef2c@[194.51.248.88]
Diffstat (limited to 'pod')
-rw-r--r--pod/perlre.pod6
1 files changed, 5 insertions, 1 deletions
diff --git a/pod/perlre.pod b/pod/perlre.pod
index 2b24379c8b..37434a67e7 100644
--- a/pod/perlre.pod
+++ b/pod/perlre.pod
@@ -515,7 +515,11 @@ in C<[]>, which will match any one of the characters in the list. If the
first character after the "[" is "^", the class matches any character not
in the list. Within a list, the "-" character is used to specify a
range, so that C<a-z> represents all the characters between "a" and "z",
-inclusive.
+inclusive. If you want "-" itself to be a member of a class, put it
+at the start or end of the list, or escape it with a backslash. (The
+following all specify the same class of three characters: C<[-az]>,
+C<[az-]>, and C<[a\-z]>. All are different from C<[a-z]>, which
+specifies a class containing twenty-six characters.)
Characters may be specified using a metacharacter syntax much like that
used in C: "\n" matches a newline, "\t" a tab, "\r" a carriage return,