summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2018-02-19 20:52:29 -0700
committerKarl Williamson <khw@cpan.org>2018-02-19 21:04:12 -0700
commit30457add2d1f514977190c5b66b67eae3b64bcc6 (patch)
tree3952b1624e9d155ddad6ca4453fce635889930ea
parent3337229ca19b517df4e7e43fd4312f0ee9e5b6c0 (diff)
downloadperl-30457add2d1f514977190c5b66b67eae3b64bcc6.tar.gz
perlre: Add note that nested (?>...) are not no-ops
-rw-r--r--pod/perlre.pod12
1 files changed, 12 insertions, 0 deletions
diff --git a/pod/perlre.pod b/pod/perlre.pod
index 29082a66d0..0c6ef15e9d 100644
--- a/pod/perlre.pod
+++ b/pod/perlre.pod
@@ -2248,6 +2248,18 @@ to inside of one of these constructs. The following equivalences apply:
PAT?+ (?>PAT?)
PAT{min,max}+ (?>PAT{min,max})
+Nested C<(?E<gt>...)> constructs are not no-ops, even if at first glance
+they might seem to be. This is because the nested C<(?E<gt>...)> can
+restrict internal backtracking that otherwise might occur. For example,
+
+ "abc" =~ /(?>a[bc]*c)/
+
+matches, but
+
+ "abc" =~ /(?>a(?>[bc]*)c)/
+
+does not.
+
The alphabetic form (C<(*atomic:...)>) is experimental; using it
yields a warning in the C<experimental::alpha_assertions> category.