# 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
---------------------------------------------------

Reply via email to