Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^7: Why eval $version?

by LanX (Saint)
on Jul 09, 2020 at 15:42 UTC ( [id://11119091]=note: print w/replies, xml ) Need Help??


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

Hi

2 things

  • make-maker and other tools are statically parsing perl files for $VERSION = "numberwang" so your example with $str won't work.
  • the comparison is supposed to be numeric, it's no surprise that string comparison will often fail on numbers! Just try sort 8..12 to see what I mean. °

I'm afraid make-maker is keeping us stuck with $VERSION syntax for backwards compatibility.

see also davido's research: Re: Why eval $version?

But I could imagine a module Version::Smart exporting a tied object in $VERSION which DWIM.

Though I'm wary of XKCD's standards ...

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

Update

°) yes I know, since it's quoted it looks like a string

Replies are listed 'Best First'.
Re^8: Why eval $version?
by syphilis (Archbishop) on Jul 10, 2020 at 00:27 UTC
    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
      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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11119091]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (1)
As of 2024-04-18 23:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found