As an example, in one place in Date::Manip, I match a set of related regular expressions that match various date strings, and there are 23 different possibilities containing 65 different matches between them (NOT all in the same order)
You've mentioned several times the need to work around the fact that you don't know which of many alternatives matched. Would it be possible, instead of
$string =~ /$re1|$re2/ and ( $h, $m, $s ) = ...
, to do
$string =~ $re1 and ( $h, $m, $s ) = ... or $string =~ $re2 and ( $h,
+$m, $s ) = ...
and just have to worry about the order for individual regexes (rather than trying to find one order that works for all regexes); or does that also fall afoul of the maintainability requirement? Note that this approach means that introducing one new regex involves one simple counting problem, rather than one big counting problem that could interefere with all the old counts.