• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1The perltest program
2--------------------
3
4The perltest.pl script tests Perl's regular expressions; it has the same
5specification as pcretest, and so can be given identical input, except that
6input patterns can be followed only by Perl's lower case modifiers and certain
7other pcretest modifiers that are either handled or ignored:
8
9  /+   recognized and handled by perltest
10  /++  the second + is ignored
11  /8   recognized and handled by perltest
12  /J   ignored
13  /K   ignored
14  /W   ignored
15  /S   ignored
16  /SS  ignored
17  /Y   ignored
18
19The pcretest \Y escape in data lines is removed before matching. The data lines
20are processed as Perl double-quoted strings, so if they contain " $ or @
21characters, these have to be escaped. For this reason, all such characters in
22the Perl-compatible testinput1 file are escaped so that they can be used for
23perltest as well as for pcretest. The special upper case pattern modifiers such
24as /A that pcretest recognizes, and its special data line escapes, are not used
25in the Perl-compatible test file. The output should be identical, apart from
26the initial identifying banner.
27
28The perltest.pl script can also test UTF-8 features. It recognizes the special
29modifier /8 that pcretest uses to invoke UTF-8 functionality. The testinput4
30and testinput6 files can be fed to perltest to run compatible UTF-8 tests.
31However, it is necessary to add "use utf8; require Encode" to the script to
32make this work correctly. I have not managed to find a way to handle this
33automatically.
34
35The other testinput files are not suitable for feeding to perltest.pl, since
36they make use of the special upper case modifiers and escapes that pcretest
37uses to test certain features of PCRE. Some of these files also contain
38malformed regular expressions, in order to check that PCRE diagnoses them
39correctly.
40
41Philip Hazel
42January 2012
43