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).