Re: [pcre-dev] (*THEN) works differently in Perl

Top Page
Delete this message
Author: Zoltán Herczeg
Date:  
To: ph10@hermes.cam.ac.uk, Pcre-dev
CC: ND
Subject: Re: [pcre-dev] (*THEN) works differently in Perl
> A Perl developer has admitted there is some ambiguity, but suggests that
> (*COMMIT) just means "never advance the starting point". That pattern
> can find a match without advancing the starting point.


The documentation says two rules:

1) It's a zero-width pattern similar to (*SKIP) , except that when backtracked into on failure it causes the match to fail outright.
2) No further attempts to find a valid match by advancing the start pointer will occur again.

If the first rule is not honored at all, the description is clearly wrong. However, you can put (*COMMIT) at the beginning of the pattern which ignores the 1st rule, so changing the verb would be a hidden feature removal.

Anyway it concerns me that the verbs are not clearly defined / implemented in perl. They are quite powerful tools, but undefined behavior breaks them. The documentation should list exceptions, e.g. they work differently inside assertions. If that is unintended then fix assertions.

Regards,
Zoltan