I simply don't see what you are trying to achieve with having string data in a version.
If you simply want some sort of reference for when something was released, its better to encode that in the metadata somewhere.
Had perl a way of having 2 versions, one external, and one for "Humans" you could put the ascii in the "Human" one, but the (computer readable) version field is the wrong place for it.
Versions are complicated enough as it is, and adding string-data to them just makes them needlessly *more* complicated.
For some, the string data will be just annotative, and not add any value to the version, for others, it will be expected to be treated as ASCII sort order.
Does A.B mean "A.B00" or A.00B" ?
Having recently had to work with this stuff, I can confess, even simple numeric versions have a large amount of sneakily hidden suck in them, and more complexity in versions is just far far too painful.
And its not "Just Perl" that matters, there are all those Linux distributions, each with their own versioning criteria, and virtually *all* of them completely incompatible with yours.
For lack of a better option, my current solution for Gentoo at least, in order to have something that even slightly corresponds with versioning schemes like your own that is in any way reliable, is to treat the data like an ASCII encoded number of some sorts.
1.6.A7RJKwl => 1.6.367.991.752.21 ( A7 -> 367, RJ -> 991 , Kw -> KW -> 752, l -> L -> 21 )
This is pretty much the best we can do in terms of automation, because from a downstream perspective, there is no way to differentiate
1.6.A7RJKwl # intended as a comment
1.6.A7RJKwl # intended as a version
And we must assume that the next logical increment from
1.6.A7RJKwl
is
1.6.A7RJKwm
because somebody else will want it so they can do
1.6a , 1.6b, 1.6c
or
1.6.Alpha, 1.6.Beta, 1.6.Gamma
And its pretty much just insanity trying to write *any* code that can handle that all nicely.
Due to the implicit complications that come with permitting ASCII in versions, I'd much *sooner* want PAUSE to *reject* things with non-numeric versions than I would to have the toolchain, and the *whole world* be forced to change how their versioning systems work.
If you want to keep your trailing noise, just keep it out of the places that matter in terms of API conformance:
1. Keep it out of $MY::PACKAGE::VERSION
2. Keep it out of Dist-Name-$version
you can keep stuffing it in your POD I guess, because nothing programming needs that a whole bunch as far as I know, but I may be wrong about that.
And the question is really, do you *need* ascii in your versions? What uses it? what do you have that parses / consumes this data?
We on the contrary, *need* your version to *not* have ascii in it.
If you don't have a reason why you *need* it, then you merely *want* it, and wants tend to be < needs. "wants" are often very irrational =).