Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^4: Why version strings?

by ikegami (Patriarch)
on Mar 29, 2011 at 15:33 UTC ( [id://896202]=note: print w/replies, xml ) Need Help??


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

You can use require for version checks, but a better solution is to put it in the installation script.

Replies are listed 'Best First'.
Re^5: Why version strings?
by JavaFan (Canon) on Mar 29, 2011 at 16:24 UTC
    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).

      That delays the version check to run-time,

      You know how to execute code at compile-time.

      That would be an argument against the entire use 5.XXX; syntax;

      There may be the premise for an argument, but there's no an argument. Could you actually state this argument? I can't guess what it could be.

      it also assumes there's only one Perl version on the system

      No it doesn't because each has its own lib directory.

      Before you mention PERL5LIB or local::lib, consider that they already break when you use them with more than one version of Perl. (PERL5LIB breaks if the directory was built using the suggested INSTALL_BASE, and local::lib breaks because it uses INSTALL_BASE.)

      Not to mention many scripts don't come with an installation script.

      So? Are you trying to say that no scripts should come with an installation script?

        Can we just conclude that you don't know the answer to 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.
        either?

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2024-03-28 13:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found