in reply to Re^7: Why eval $version?
in thread Why eval $version?

it's no surprise that string comparison will often fail on numbers! Just try sort 8..12 to see what I mean

Yes - and that's the reason we compare them in numeric context.

It's just that if I assign a version as "2.30" I like it to print as "2.30", not "2.3".
Otherwise I would have saved myself the keystroke and assigned "2.3".
And to check on that, I generally run a test that $VERSION eq "2.30" - which of course fails if I eval $VERSION.

As I said, it's not a big deal.
It annoys me that the string I assigned is being changed ... so I simply avoid the procedure.

Cheers,
Rob

Replies are listed 'Best First'.
Re^9: Why eval $version?
by LanX (Saint) on Jul 10, 2020 at 01:10 UTC
    Frankly, both string and float are crippled concepts here and all those problems stem from bad compromises on the expanse of boilerplating and tribal knowledge.

    What we really want and need is a tuple of integers, which stringifies to a dotted number and compares numerically.

    I'm going to have a look at this version object tomorrow to see if it does the right overloads.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

      What we really want and need is a tuple of integers, which stringifies to a dotted number and compares numerically

      Well, I neither need nor want that wrt perl modules - but if others do, then so be it.
      I'm quite happy just doing our $VERSION = "x.yz" where x, y and z are decimal digits.
      I could just as happily extend that spec to our $VERSION = "X.Y" where both X and Y consist only of (one or more) decimal digits, and the length of the string being assigned to $VERSION is no greater than 16.

      Cheers,
      Rob