+ s{
+ (\d+\.\d+ # major.minor
+ (?:[_.]\d+)? # optional patchlevel
+ (?:\.\d+|[_-]RC\d+|[_-]?dev(?:start)?)? # optional microrelease, or RC, or dev(start)
+ (?:(?:[_-]\d+)? # git tag distance
+ [-_][[:xdigit:]]+)? # git id
+ (?:[-_]XX)?\0 # git dirty bit
+ <<eximversion>> # marker
+ )
+ }
+ {"x.yz\0" . ("*" x (length($1) - 5))}xe;