The perltest program
--------------------

The perltest.pl script tests Perl's regular expressions; it has the same
specification as pcretest, and so can be given identical input, except that
input patterns can be followed only by Perl's lower case modifiers and certain
other pcretest modifiers that are either handled or ignored:

  /+   recognized and handled by perltest
  /++  the second + is ignored
  /8   recognized and handled by perltest
  /J   ignored
  /K   ignored
  /W   ignored
  /S   ignored
  /SS  ignored

The data lines are processed as Perl double-quoted strings, so if they contain
" $ or @ characters, these have to be escaped. For this reason, all such
characters in testinput1, testinput4, testinput6, and testinput11 are escaped
so that they can be used for perltest as well as for pcretest. The pcretest \Y
escape in data lines is removed.

The special upper case pattern modifiers such as /A that pcretest recognizes,
and its special data line escapes, are not used in these files. The output
should be identical, apart from the initial identifying banner.

The perltest.pl script can also test UTF-8 features. It recognizes the special
modifier /8 that pcretest uses to invoke UTF-8 functionality. The testinput4
and testinput6 files can be fed to perltest to run compatible UTF-8 tests.
However, it is necessary to add "use utf8;" to the script to make this work
correctly.

The testinput11 file contains tests that use features of Perl 5.10, so does not
work with Perl 5.8.

The other testinput files are not suitable for feeding to perltest.pl, since
they make use of the special upper case modifiers and escapes that pcretest
uses to test some features of PCRE. Some of these files also contains malformed
regular expressions, in order to check that PCRE diagnoses them correctly.

Philip Hazel
August 2011
