X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlre.pod;h=ea88fc08b5d9b7fd82006f95fd36d38a6471b130;hb=12fc24939aa1955e247b87a4837866062d192a17;hp=a11e3e833b502679816699c0a78c1f996957d99e;hpb=f02c194e1a40f11d020685cd18b41e5261091b12;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlre.pod b/pod/perlre.pod index a11e3e8..ea88fc0 100644 --- a/pod/perlre.pod +++ b/pod/perlre.pod @@ -394,11 +394,15 @@ the most-recently closed group (submatch). C<$^N> can be used in extended patterns (see below), for example to assign a submatch to a variable. -The numbered variables ($1, $2, $3, etc.) and the related punctuation +The numbered match variables ($1, $2, $3, etc.) and the related punctuation set (C<$+>, C<$&>, C<$`>, C<$'>, and C<$^N>) are all dynamically scoped until the end of the enclosing block or until the next successful match, whichever comes first. (See L.) +B: failed matches in Perl do not reset the match variables, +which makes easier to write code that tests for a series of more +specific cases and remembers the best match. + B: Once Perl sees that you need one of C<$&>, C<$`>, or C<$'> anywhere in the program, it has to provide them for every pattern match. This may substantially slow your program. Perl @@ -570,6 +574,10 @@ track of the number of nested parentheses. For example: /the (\S+)(?{ $color = $^N }) (\S+)(?{ $animal = $^N })/i; print "color = $color, animal = $animal\n"; +Inside the C<(?{...})> block, C<$_> refers to the string the regular +expression is matching against. You can also use C to know what is +the current position of matching withing this string. + The C is properly scoped in the following sense: If the assertion is backtracked (compare L<"Backtracking">), all changes introduced after Cization are undone, so that