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