# from John Peacock
# on Wednesday 23 September 2009 07:23:
>When an
>underbar/underscore is encountered, that is used as an additional
> split character and the is_alpha flag set, so that the last "digit"
> of the version is the "alpha release".
Why is the underscore treated as a split character? This is actually
counter to how v-strings work.
$ perl -E 'say join(".", map({ord($_)} split(//, v2.3.4_5)))'
2.3.45
Although this also means that v-strings don't preserve the underscore.
This means the behavior of 5.8.8 changes depending on whether
version.pm was loaded (ever).
$ perl -e 'BEGIN {
package foo; our $VERSION = v2.3.4_5; $INC{"foo.pm"} = 1};
use version; use foo v2.3.5;'
foo version v2.3.5 required--this is only version v2.3.4_5 ...
$ perl -e 'BEGIN {
package foo; our $VERSION = v2.3.4_5; $INC{"foo.pm"} = 1};
use foo v2.3.5;'
# no error (45 > 5)
So, the only dependable way to move past an alpha release is to bump the
next digit to the left of the dot before the underscore.
But I'm looking forward to a world where we don't need to juggle the
numeric/string duality to mark alpha status.
--Eric
--
"If you only know how to use a hammer, every problem begins to look like
a nail."
--Richard B. Johnson
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------