Hi,

I thought id bring a tricky subject that ive encountered in Perl core
development up here so you testing mavens can have a look at the
problem and maybe come up some suggestions for me.

The problem is this: one of the main obstacles for adding new regex
flags to the perl regex engine are the oodles of tests that expect
stringified regular expressions to look like:

/\A\(\?[msix-]*:.*\)\z/s

There are also lots of tests out there that do thing like:

is("$qr","(?ms-ix:...)",'Got back the regex we expected');

all of these break if I add a new modifier or change the flag layout
in any way (it was surprising how many test failures were caused by
reordering the flags). With Perl 5.9.4 or so there is a new modifier
'p' (for 'preserve') but various special properties of what it
represents mean I was able to bypass the problem as it only shows up
in the list if its on, there is no 'off' form of it. However for a
true boolean flag this wont work.

So assuming we want to add new modifiers (we kinda do) how should this
be addressed? Both going forward and dealing with legacy code.

BTW I recall that a notable area in the core which does this type of
naughty testing is actually the Test:: modules themselves. :-)

Im open to suggestions that dont involve hunting down all of these
naughty tests and fixing them. Including stuff that doesnt strictly
involve test modules.

Cheers,
Yves


-- 
perl -Mre=debug -e "/just|another|perl|hacker/"

Reply via email to