++ed by:
10 non-PAUSE users
Author image Damian Conway
and 1 contributors

Changes for version 0.001000

  • Improved parsing of modern subroutine signatures (Thanks, Juerd!)
  • Now supports all the new syntactic features added in Perls v5.28 to v5.36 including:
    • try/catch/finally
    • the isa operator
    • named regex assertions
    • missing lower bounds on regex counted repetitions
    • "spacey" curlies in regexes
    • 0o7777 octal constants
    • Unicode paired delimiters on quotelikes
  • Improved parsing of s/.../{...}e code blocks (Thanks, Zaki!)
  • Fixed several edge cases of postfix dereferencing (Thanks, Zaki!)
  • The perlop manpage states: "Interpolation in patterns has several quirks: $|, $(, and $) are not interpolated..." PPR now enforces that. (Thanks, Zaki!)
  • Also fixed NON-interpolation of variables inside qq'...', qr'...', etc. (Thanks, Zaki!)
  • NOTE: BACKWARDS INCOMPATIBLE CHANGE... Solving some of the above issues required deep changes to the mechanism of term-matching within the regex...to better reflect actual term precedence within Perl. This means that the subrules (?&PerlTerm), (?&PerlScalarAccess) and (?&PerlArrayAccess) now match differently. Specifically, (?&PerlTerm) now matches chains of trailing -> dereferences and/or -> sub/method calls, while (?&PerlScalarAccess) and (?&PerlArrayAccess) no longer do so. If you were previously using these last two subrules for stand-along matching you will need to be more specific:
    • Old behaviour of... # Now requires...
    • / (?&PerlScalarAccess) /x / (?&PerlScalarAccess) (?&PerlTermPostfixDerefence) /x
    • / (?&PerlArrayAccess) /x / (?&PerlArrayAccess) (?&PerlTermPostfixDerefence) /x


Generate test of block matching by scouring a source tree
Generate test of statement matching by scouring a source tree


Pattern-based Perl Recognizer
Pattern-based Perl Recognizer


in lib/PPR.pm
in lib/PPR/X.pm