http://www.perlmonks.org?node_id=852446


in reply to Can't use three part version number for CPAN modules

My viewpoint is that version 'numbers' are not really numbers at all; they are strings that may or may not look like numbers. This is not a computer science statement but a philosophical one. A version number is more like a model name. Does 'Windows 7' sort higher than both 'Windows 98' and 'Windows 2000'? (I know, this is a cheap shot and yes, I know better. Does 'NT 3.5' sort higher than '3.11'?)

It's an error to think of any version number format as pure, correct, or a real number. To be precise, the set of version numbers (for any project) do not constitute a field or even a ring. We should all be grateful that Perl Hackers aren't trying to release modules with versions like 'Cougar' and 'SX-2010'.

That said, it's good to play nice with others sometimes. This is one of those times. I don't endorse novel version numbering schemes. Use an accepted format. Understand how various formats are incremented.

Everyone agrees that mixing version number formats is Bad News. I say, once you pick a format, that's it -- you're stuck with that format forever, for the life of the module. Comparing 0.2.0 to 0.12.0 is funky enough without trying to compare either to 0.010002 let alone... well.

Docs for version say clearly: "You are strongly urged to set 0.77 as a minimum in your code..."

Combining this with Conway's recommendations yields:

use version 0.77; our $VERSION = qv('1.2.3');
Note: Contents may change.