Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: RFC: Syntax::Construct

by davido (Cardinal)
on Dec 24, 2013 at 00:13 UTC ( [id://1068272]=note: print w/replies, xml ) Need Help??


in reply to RFC: Syntax::Construct

One comment I have: // and //= don't require you to say anything at all to use them. You just have to be running Perl 5.10 or later. So if the intent is to now say, "use Syntax::Construct qw( // ); so that someone looking at the script knows they must be using a sufficiently new version of Perl to provide the // operator, that requires that the person looking at the script now do the footwork of figuring out what Perl version started providing that syntax, which seems to sort of go against the spirit of the module. In such a case, it would be much clearer to say, "use v5.10; # Because we like //"


Dave

Replies are listed 'Best First'.
Re^2: RFC: Syntax::Construct (information++)
by tye (Sage) on Dec 25, 2013 at 01:06 UTC

    Sorry, but 'use v5.10;' really sucks. Did you look at what Syntax::Construct does? It also tells the user what version of Perl they need. I think the error message could be made more obviously clear on this point, though. But the big win is that the error message tells you why you need Perl 5.010.

    This is how I'd do such a thing:

    BEGIN { eval '1 // 2' or die "Perl version $] unsupported (version 5.010 required to get // ope +rator)\n" }

    I'd actually change "use 5.010;" so that it was much more informative, especially in the interesting situations. I'd delay its impact until after the code has failed to compile (or not). So you'd get information like:

    Search pattern not terminated at bin/script line 123. Perhaps because bin/script requires Perl version 5.010 (and this is on +ly 5.008_008). # or Aborting; Perl version 5.010 required (this is only 5.008_008) by bin/ +script. Yet it compiled without error -- set PERLANYVER to run anyway.

    But it is probably even better (in the short term) to have something like Syntax::Construct that can be installed on old versions of Perl to get this improved behavior.

    - tye        

      I was hoping, as I posted my thoughts, that I hadn't missed the point to the module. It looks like you've discovered where it brings added value. I appreciate that, and can see now where it can be useful.


      Dave

        In fact, the message originally did not include the version of Perl needed to run the script, as you can see in the commit history. Adding it, though, was a matter of one line of code. Thank you for inspiration.
        لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2024-04-25 12:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found