This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Restrict features in wildcards
authorKarl Williamson <khw@cpan.org>
Sun, 16 Feb 2020 00:39:00 +0000 (17:39 -0700)
committerKarl Williamson <khw@cpan.org>
Thu, 20 Feb 2020 05:09:48 +0000 (22:09 -0700)
commit4829f32decd128e6a122bd8ce35fe944bd87f104
treeb75fb15b5cc5c3321468801f5a12d212ab6f36de
parent809471154ccc09f339d9a2841b7c32c4aa9c40a2
Restrict features in wildcards

The algorithm for dealing with Unicode property wildcards is to wrap the
user-supplied pattern with /miaa.  We don't want the user to be able to
override the /m and /aa parts.  Modifiers that are only specifiable as a
modifier in a qr or similar op (like /gc) can't be included in things
like (?gc).  These normally incur a warning that they are ignored, but
the texts of those warnings are misleading when using wildcards, so I
chose to just make them illegal.  Of course that could be changed to
having custom useful warning texts, but I didn't think it was worth it.

I also chose to forbid recursion of using nested \p{}, just from fear
that it might lead to issues down the road, and it really isn't useful
for this limited universe of strings to match against.  Because
wildcards currently can't handle '}' inside them, only the single letter
\p,\P are valid anyway.

Similarly, I forbid the '*' quantifier to make it harder for the
constructed subpattern to take forever to make any progress and decide
to halt.  Again, using it would be overkill on the universe of possible
match strings.
charclass_invlists.h
lib/unicore/mktables
lib/unicore/uni_keywords.pl
op.h
pod/perldelta.pod
pod/perldiag.pod
pod/perlunicode.pod
regcharclass.h
regcomp.c
t/re/reg_mesg.t
uni_keywords.h