# from Michael G Schwern
# on Monday 20 April 2009 13:05:
>> Sure, you can't just treat a float as a tuple without fixing the
>> width of the second column. I imagine this is where everybody gets
>> confused and I think all we need to do is explain that.
>>
>> X convert to vX
>> X.Y convert to vX.Y00
>> X.YY convert to vX.YY0
>> X.YYY convert to vX.YYY
>> X.YYYZ convert to vX.YYY.Z00
>>
>> vX sort as a dotted tuple
>> vX.Y sort as a dotted tuple
>> vX.Y.Z sort as a dotted tuple
>> vX.Y.Z.A sort as a dotted tuple
>
>I was almost convinced, then I remembered what caused this whole
> problem. Class::Delegation went from 1.06 to 1.7.1. That's 1.60.0 to
> 1.7.1 in your system. Text::Autoformat went from 1.13 to 1.14.0
> which is 1.130.0 to 1.14.0. These are all incorrect, but not
> obviously so.
But that is (and always was) just "doing it wrong".
$ perl -Mversion -E 'say version->new("1.06")->normal'
v1.60.0
$ perl -Mversion -E 'say version->new("1.13")->normal'
v1.130.0
> CPAN authors
> already have to write $VERSION = "1.20", so we know how many places
> are in their Y portion. Use it. 1.06 becomes 1.6.0, as expected.
> 1.20 becomes 1.20.0, as expected.
They do? Making a distinction between "1.20" and "1.200" isn't going to
solve the confusion. The current system treats them both as v1.200.0.
It's a simple insertion of dots at "every three places". (Where we add
zeroes until we get to a number of places which is a multiple of 3.)
>Converting numeric X.Y to tuple X.Y.Z is going to have to make an
> assumption, and its going to be wrong in some cases.
It's a *convention*, not assumption. To preserve sort order, you have
to left-align the decimal portion. Essentially, consider the decimal
portion as being zero-padded to infinity. Now, because infinity causes
problems, we chose to insert dots at every three places.
Aside: it _should have been_ "insert dots at every one place".
1.06 -> 1.0.6
1.0859 -> 1.0.8.5.9
But, we're too late for that. The number is 3. Unfortunately, I don't
think we can go back on that because we have to preserve the sort order
for any distro which changed from float to tuple.
--Eric
--
"Politics is not a bad profession. If you succeed there are many
rewards, if you disgrace yourself you can always write a book."
--Ronald Reagan
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------