Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^2: Why version strings?

by ikegami (Pope)
on Mar 28, 2011 at 23:12 UTC ( #896049=note: print w/replies, xml ) Need Help??


in reply to Re: Why version strings?
in thread Why version strings?

Also note that use v5.10; == use 5.10.0; == 5.010;. But use 5.10; == use 5.100;. Which, IMO, is not very DWIM.

An unfortunate side-effect of having two similar but very different numbering systems. At least the error message is useful.

$ perl -e'use 5.10;' Perl v5.100.0 required (did you mean v5.10.0?)--this is only v5.12.2, +stopped at -e line 1. BEGIN failed--compilation aborted at -e line 1.

I don't know whether there's a (single-line) syntax that at compile time checks for 5.10, but which doesn't enable features.

$ perl -M5.014 -e1 Perl v5.14.0 required--this is only v5.12.2, stopped. BEGIN failed--compilation aborted.

Replies are listed 'Best First'.
Re^3: Why version strings?
by JavaFan (Canon) on Mar 29, 2011 at 09:13 UTC
    $ perl -M5.014 -e1 Perl v5.14.0 required--this is only v5.12.2, stopped. BEGIN failed--compilation aborted.
    I fail to understand how that answers my question:
    I don't know whether there's a (single-line) syntax that at compile time checks for 5.10, but which doesn't enable features.
    If I substitute 5.010 for 5.014, 5.10 features are enabled:
    $ perl -M5.010 -e 'say "foo"' foo
      You can use require for version checks, but a better solution is to put it in the installation script.
        You can use require for version checks
        That delays the version check to run-time, resulting in unwanted compilation errors:
        $ perl-5.8.8 -e 'require 5.010; /1++/' Nested quantifiers in regex; marked by <-- HERE in m/1++ <-- HERE / at + -e line 1.
        as opposed to
        $ perl-5.8.8 -e 'use 5.010; /1++/' Perl v5.10.0 required--this is only v5.8.8, stopped at -e line 1. BEGIN failed--compilation aborted at -e line 1.
        but a better solution is to put it in the installation script.
        That would be an argument against the entire use 5.XXX; syntax; it also assumes there's only one Perl version on the system - and it will never change. Not to mention many scripts don't come with an installation script. (For instance, most complete programs posted on Perlmonks are presented as-is, without an installation script).

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2021-05-14 01:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Perl 7 will be out ...





    Results (146 votes). Check out past polls.

    Notices?