This will be part of my talk at YAPC. I recommend you use 2.xxx, where xxx is always zero-padded.
our $VERSION = '2.001'; # 2nd version of revision 2 our $VERSION = '2.420'; # 421st version of revision 2 It has the following properties: * It is fully compatible with the advice in * perlmodstyle * version.pm * "strict" version rules <http://p3rl.org/perl5120delta#Version-number-formats> * <http://www.dagolden.com/index.php/369/> ¹ * Perl::Critic::Policy::ValuesAndExpressions::ProhibitVersionStrings * Perl::Critic::Policy::ValuesAndExpressions::RequireNumericVersion * It completely prevents: * trailing zeros from disappearing because it's a quoted string * the confusion about 1.10 < 1.9 (Perl says that's true, other system say the opposite) because there are always exactly 3 digits after the decimal mark, so any(numeric,lexicographical,naturalsort) comparison has the same result * the confusion about 5.10.1 == 5.010001 (and the variant mentioned by Aldo) since there is only a single representation because there are only enough decimal places (namely 3) for one portion of semver (or Perl's notion thereof) * the confusion around v-strings which after all those years still are such an usual and (on average) poorly understood data type * that ugly v-prefix in the distro package name * It is fully compatible with downstream packaging toolchains (RPM specfile macros and the like). * It is incompatible with semver. Not a big loss, for the reasons already mentioned by David. ¹ Avoid underscore version numbers and you don't need that ugly `eval`. Simply use the `TRIAL` feature for trial releases instead. <https://pause.perl.org/pause/query?ACTION=pause_04about#convention
signature.asc
Description: PGP signature