avoid v-strings with require/use
Ronald J. Kimball [Fri, 21 Sep 2001 12:34:40 +0000 (08:34 -0400)]
Message-Id: <20010921123440.A148500@linguist.thayer.dartmouth.edu>

p4raw-id: //depot/perl@12113

51 files changed:
ext/ByteLoader/bytecode.h
ext/Data/Dumper/Dumper.pm
ext/Devel/DProf/DProf.pm
ext/IO/lib/IO/Dir.pm
ext/IO/lib/IO/File.pm
ext/IO/lib/IO/Handle.pm
ext/IO/lib/IO/Pipe.pm
ext/IO/lib/IO/Seekable.pm
ext/Opcode/Opcode.pm
lib/AnyDBM_File.pm
lib/AutoLoader.pm
lib/AutoSplit.pm
lib/Class/Struct.pm
lib/Cwd.pm
lib/Dumpvalue.pm
lib/ExtUtils/Command.pm
lib/ExtUtils/Install.pm
lib/ExtUtils/Installed.pm
lib/ExtUtils/Liblist.pm
lib/ExtUtils/Mksymlists.pm
lib/ExtUtils/Packlist.pm
lib/Fatal.pm
lib/File/Basename.pm
lib/File/CheckTree.pm
lib/File/Compare.pm
lib/File/Copy.pm
lib/File/Find.pm
lib/File/Path.pm
lib/File/stat.pm
lib/FileHandle.pm
lib/Math/Trig.pm
lib/Net/Ping.pm
lib/Net/hostent.pm
lib/Net/netent.pm
lib/Net/protoent.pm
lib/Net/servent.pm
lib/Shell.pm
lib/Tie/Array.pm
lib/Tie/Handle.pm
lib/Time/Local.pm
lib/Time/gmtime.pm
lib/Time/localtime.pm
lib/User/grent.pm
lib/base.pm
lib/diagnostics.pm
lib/fields.pm
lib/vars.pm
pod/perl56delta.pod
pod/perlfunc.pod
pp_ctl.c
utils/pl2pm.PL

index e7ac6c8..73f3544 100644 (file)
@@ -205,7 +205,7 @@ typedef IV IV64;
        bset_obj_store(aTHX_ bstate, obj, (I32)ix) : (bstate->bs_obj_list[ix] = obj)
 
 /* NOTE: the bytecode header only sanity-checks the bytecode. If a script cares about
- * what version of Perl it's being called under, it should do a 'require 5.6.0' or
+ * what version of Perl it's being called under, it should do a 'use 5.006_001' or
  * equivalent. However, since the header includes checks requiring an exact match in
  * ByteLoader versions (we can't guarantee forward compatibility), you don't 
  * need to specify one:
index 5897e1f..6cf7d35 100644 (file)
@@ -13,7 +13,7 @@ $VERSION = '2.103';
 
 #$| = 1;
 
-require 5.6.1;
+use 5.006_001;
 require Exporter;
 use XSLoader ();
 require overload;
index 6eb4c22..d5d8a82 100644 (file)
@@ -1,4 +1,4 @@
-require 5.6.1;
+use 5.006_001;
 
 =head1 NAME
 
index d09eb7f..0a083ef 100644 (file)
@@ -6,7 +6,7 @@
 
 package IO::Dir;
 
-use 5.6.0;
+use 5.006;
 
 use strict;
 use Carp;
index 83699fb..240033f 100644 (file)
@@ -103,7 +103,7 @@ Derived from FileHandle.pm by Graham Barr E<lt>F<gbarr@pobox.com>E<gt>.
 
 =cut
 
-require 5.6.1;
+use 5.006_001;
 use strict;
 our($VERSION, @EXPORT, @EXPORT_OK, @ISA);
 use Carp;
index 37aa99c..6fdba17 100644 (file)
@@ -247,7 +247,7 @@ Derived from FileHandle.pm by Graham Barr E<lt>F<gbarr@pobox.com>E<gt>
 
 =cut
 
-require 5.6.1;
+use 5.006_001;
 use strict;
 our($VERSION, @EXPORT_OK, @ISA);
 use Carp;
index 27747ce..a500f29 100644 (file)
@@ -6,7 +6,7 @@
 
 package IO::Pipe;
 
-require 5.6.1;
+use 5.006_001;
 
 use IO::Handle;
 use strict;
index 987cbc3..684b8bc 100644 (file)
@@ -94,7 +94,7 @@ Derived from FileHandle.pm by Graham Barr E<lt>gbarr@pobox.comE<gt>
 
 =cut
 
-require 5.6.1;
+use 5.006_001;
 use Carp;
 use strict;
 our($VERSION, @EXPORT, @ISA);
index 544b284..1524f67 100644 (file)
@@ -1,6 +1,6 @@
 package Opcode;
 
-require 5.6.1;
+use 5.006_001;
 
 use strict;
 
index 476df47..d73abab 100644 (file)
@@ -1,6 +1,6 @@
 package AnyDBM_File;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = '1.00';
 our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
 
index 4e1eb1b..b42d5ff 100644 (file)
@@ -1,6 +1,6 @@
 package AutoLoader;
 
-use 5.6.0;
+use 5.006_001;
 our(@EXPORT, @EXPORT_OK, $VERSION);
 
 my $is_dosish;
index 281d5c6..ae119d3 100644 (file)
@@ -1,6 +1,6 @@
 package AutoSplit;
 
-use 5.6.1;
+use 5.006_001;
 use Exporter ();
 use Config qw(%Config);
 use Carp qw(carp);
index ee23190..bad4f78 100644 (file)
@@ -2,7 +2,7 @@ package Class::Struct;
 
 ## See POD after __END__
 
-use 5.6.1;
+use 5.006_001;
 
 use strict;
 use warnings::register;
index 8b9a780..01f5ce4 100644 (file)
@@ -1,5 +1,5 @@
 package Cwd;
-require 5.6.0;
+use 5.006;
 
 =head1 NAME
 
index 456261a..427f57c 100644 (file)
@@ -1,4 +1,4 @@
-use 5.6.1;                     # for (defined ref) and $#$v and our
+use 5.006_001;                 # for (defined ref) and $#$v and our
 package Dumpvalue;
 use strict;
 our $VERSION = '1.00';
index b7b41cd..bf1e0e5 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::Command;
 
-use 5.6.1;
+use 5.006_001;
 use strict;
 # use AutoLoader;
 use Carp;
index d701042..14a6e08 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::Install;
 
-use 5.6.1;
+use 5.006_001;
 our(@ISA, @EXPORT, $VERSION);
 $VERSION = substr q$Revision: 1.29 $, 10;
 # $Date: 1998/01/25 07:08:24 $
index 942185e..7433c01 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::Installed;
 
-use 5.6.1;
+use 5.006_001;
 use strict;
 use Carp qw();
 use ExtUtils::Packlist;
index ae565fc..09421e3 100644 (file)
@@ -21,7 +21,7 @@ package ExtUtils::Liblist::Kid;
 # This kid package is to be used by MakeMaker.  It will not work if
 # $self is not a Makemaker.
 
-use 5.6.1;
+use 5.006_001;
 # Broken out of MakeMaker from version 4.11
 
 our $VERSION = substr q$Revision: 1.27 $, 10;
index 5861131..0135cda 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::Mksymlists;
 
-use 5.6.1;
+use 5.006_001;
 use strict qw[ subs refs ];
 # no strict 'vars';  # until filehandles are exempted
 
index 7b664d1..ea4ec5e 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::Packlist;
 
-use 5.6.1;
+use 5.006_001;
 use strict;
 use Carp qw();
 our $VERSION = '0.04';
index bf54d91..0ea5963 100644 (file)
@@ -1,6 +1,6 @@
 package Fatal;
 
-use 5.6.1;
+use 5.006_001;
 use Carp;
 use strict;
 our($AUTOLOAD, $Debug, $VERSION);
index e16f871..c765788 100644 (file)
@@ -135,7 +135,7 @@ BEGIN {
 
 
 
-use 5.6.0;
+use 5.006;
 use warnings;
 our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase);
 require Exporter;
index 35f7906..e58e3ec 100644 (file)
@@ -2,7 +2,7 @@ package File::CheckTree;
 
 our $VERSION = '4.1';
 
-require 5.6.0;
+use 5.006;
 require Exporter;
 use warnings;
 
index b83ba62..e1d5e7d 100644 (file)
@@ -1,6 +1,6 @@
 package File::Compare;
 
-use 5.6.0;
+use 5.006;
 use strict;
 use warnings;
 our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big);
index 7daa3ed..afb7635 100644 (file)
@@ -7,7 +7,7 @@
 
 package File::Copy;
 
-use 5.6.0;
+use 5.006;
 use strict;
 use warnings;
 use Carp;
index 1ebfba3..de0b534 100644 (file)
@@ -1,7 +1,7 @@
 package File::Find;
+use 5.006;
 use strict;
 use warnings;
-use 5.6.0;
 our $VERSION = '1.02';
 require Exporter;
 require Cwd;
index 7d56d48..3560a97 100644 (file)
@@ -91,7 +91,7 @@ Charles Bailey <F<bailey@newman.upenn.edu>>
 
 =cut
 
-use 5.6.0;
+use 5.006;
 use Carp;
 use File::Basename ();
 use Exporter ();
index aff5d03..accae9f 100644 (file)
@@ -1,8 +1,9 @@
 package File::stat;
+use 5.006;
+
 use strict;
 use warnings;
 
-use 5.6.0;
 our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 
 our $VERSION = '1.00';
index 51c73be..6be2242 100644 (file)
@@ -1,6 +1,6 @@
 package FileHandle;
 
-use 5.6.1;
+use 5.006;
 use strict;
 our($VERSION, @ISA, @EXPORT, @EXPORT_OK);
 
index e4732c1..d1ac4f5 100644 (file)
@@ -7,7 +7,7 @@
 require Exporter;
 package Math::Trig;
 
-use 5.6.1;
+use 5.006;
 use strict;
 
 use Math::Complex qw(:trig);
index 8226a97..c963a07 100644 (file)
@@ -12,7 +12,7 @@ package Net::Ping;
 # Copyright (c) 2001, Colin McMillen.  All rights reserved.  This
 # program is free software; you may redistribute it and/or modify it
 # under the same terms as Perl itself.
-use 5.6.1;
+use 5.006_001;
 require Exporter;
 
 use strict;
index 44537a2..04cbee3 100644 (file)
@@ -1,7 +1,7 @@
 package Net::hostent;
 use strict;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = '1.00';
 our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 BEGIN { 
index 210da62..f7d32cb 100644 (file)
@@ -1,7 +1,7 @@
 package Net::netent;
 use strict;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = '1.00';
 our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 BEGIN { 
index 5bd0b83..2cbccad 100644 (file)
@@ -1,7 +1,7 @@
 package Net::protoent;
 use strict;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = '1.00';
 our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 BEGIN { 
index eaf621a..63ae307 100644 (file)
@@ -1,7 +1,7 @@
 package Net::servent;
 use strict;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = '1.00';
 our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 BEGIN {
index 5d2f217..9762a3a 100644 (file)
@@ -1,5 +1,5 @@
 package Shell;
-use 5.6.1;
+use 5.006_001;
 use strict;
 use warnings;
 our($capture_stderr, $VERSION, $AUTOLOAD);
index c751d5b..1cc99b8 100644 (file)
@@ -1,6 +1,6 @@
 package Tie::Array;
 
-use 5.6.1;
+use 5.006_001;
 use strict;
 use Carp;
 our $VERSION = '1.02';
index 8e40589..6fd30d8 100644 (file)
@@ -1,6 +1,6 @@
 package Tie::Handle;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = '4.1';
 
 =head1 NAME
index 6180584..e99aab1 100644 (file)
@@ -1,5 +1,5 @@
 package Time::Local;
-require 5.6.0;
+use 5.006;
 require Exporter;
 use Carp;
 use strict;
index 39cfdc2..4e1359b 100644 (file)
@@ -1,8 +1,9 @@
 package Time::gmtime;
 use strict;
+use 5.006_001;
+
 use Time::tm;
 
-use 5.6.1;
 our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
 BEGIN { 
     use Exporter   ();
index 5495559..c3d9fb3 100644 (file)
@@ -1,8 +1,9 @@
 package Time::localtime;
 use strict;
+use 5.006_001;
+
 use Time::tm;
 
-use 5.6.1;
 our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
 BEGIN {
     use Exporter   ();
index e146ec0..d9581d8 100644 (file)
@@ -1,7 +1,7 @@
 package User::grent;
 use strict;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = '1.00';
 our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 BEGIN { 
index 00391b4..c6d8cca 100644 (file)
@@ -44,7 +44,7 @@ L<fields>
 
 package base;
 
-use 5.6.1;
+use 5.006_001;
 our $VERSION = "1.02";
 
 sub import {
index 5d8f4e7..031b08e 100755 (executable)
@@ -168,7 +168,7 @@ Tom Christiansen <F<tchrist@mox.perl.com>>, 25 June 1995.
 =cut
 
 use strict;
-use 5.6.0;
+use 5.006;
 use Carp;
 
 our $VERSION = 1.1;
index 5374848..be2a7ae 100644 (file)
@@ -127,7 +127,7 @@ L<perlref/Pseudo-hashes: Using an array as a hash>
 
 =cut
 
-use 5.6.1;
+use 5.006_001;
 use strict;
 no strict 'refs';
 use warnings::register;
index 4abc2d1..a051ba1 100644 (file)
@@ -1,6 +1,6 @@
 package vars;
 
-require 5.6.0;
+use 5.006;
 
 our $VERSION = '1.01';
 
index fc0d668..75d7728 100644 (file)
@@ -112,16 +112,14 @@ to check if you're running a particular version of Perl:
         # new features supported
     }
 
-C<require> and C<use> also have some special magic to support such literals.
-They will be interpreted as a version rather than as a module name:
-
-    require v5.6.0;            # croak if $^V lt v5.6.0
-    use v5.6.0;                        # same, but croaks at compile-time
-
-Alternatively, the C<v> may be omitted if there is more than one dot:
-
-    require 5.6.0;
-    use 5.6.0;
+C<require> and C<use> also have some special magic to support such
+literals, but this particular usage should be avoided because it leads to
+misleading error messages under versions of Perl which don't support vector
+strings.  Using a true version number will ensure correct behavior in all
+versions of Perl:
+
+    require 5.006;    # run time check for v5.6
+    use 5.006_001;    # compile time check for v5.6.1
 
 Also, C<sprintf> and C<printf> support the Perl-specific format flag C<%v>
 to print ordinals of characters in arbitrary strings:
index 0761412..2c198c1 100644 (file)
@@ -3755,19 +3755,23 @@ rename(2) manpage or equivalent system documentation for details.
 
 =item require
 
-Demands some semantics specified by EXPR, or by C<$_> if EXPR is not
-supplied.
+Demands a version of Perl specified by VERSION, or demands some semantics
+specified by EXPR or by C<$_> if EXPR is not supplied.
 
-If a VERSION is specified as a literal of the form v5.6.1,
-demands that the current version of Perl (C<$^V> or $PERL_VERSION) be
-at least as recent as that version, at run time.  (For compatibility
-with older versions of Perl, a numeric argument will also be interpreted
-as VERSION.)  Compare with L</use>, which can do a similar check at
-compile time.
+VERSION may be either a numeric argument such as 5.006, which will be
+compared to C<$]>, or a literal of the form v5.6.1, which will be compared
+to C<$^V> (aka $PERL_VERSION).  A fatal error is produced at run time if
+VERSION is greater than the version of the current Perl interpreter.
+Compare with L</use>, which can do a similar check at compile time.
+
+Specifying VERSION as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl which do not support this syntax.  The equivalent numeric
+version should be used instead.
 
     require v5.6.1;    # run time version check
     require 5.6.1;     # ditto
-    require 5.005_03;  # float version allowed for compatibility
+    require 5.006_001; # ditto; preferred for backwards compatibility
 
 Otherwise, demands that a library file be included if it hasn't already
 been included.  The file is included via the do-FILE mechanism, which is
@@ -5640,18 +5644,21 @@ package.  It is exactly equivalent to
 
 except that Module I<must> be a bareword.
 
-VERSION, which can be specified as a literal of the form v5.6.1, demands
-that the current version of Perl (C<$^V> or $PERL_VERSION) be at least
-as recent as that version.  (For compatibility with older versions of Perl,
-a numeric literal will also be interpreted as VERSION.)  If the version
-of the running Perl interpreter is less than VERSION, then an error
-message is printed and Perl exits immediately without attempting to
-parse the rest of the file.  Compare with L</require>, which can do a
-similar check at run time.
+VERSION may be either a numeric argument such as 5.006, which will be
+compared to C<$]>, or a literal of the form v5.6.1, which will be compared
+to C<$^V> (aka $PERL_VERSION.  A fatal error is produced if VERSION is
+greater than the version of the current Perl interpreter; Perl will not
+attempt to parse the rest of the file.  Compare with L</require>, which can
+do a similar check at run time.
+
+Specifying VERSION as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl which do not support this syntax.  The equivalent numeric
+version should be used instead.
 
     use v5.6.1;                # compile time version check
     use 5.6.1;         # ditto
-    use 5.005_03;      # float version allowed for compatibility
+    use 5.006_001;     # ditto; preferred for backwards compatibility
 
 This is often useful if you need to check the current Perl version before
 C<use>ing library modules that have changed in incompatible ways from
index 0b7daa1..5d2d10f 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -3078,7 +3078,7 @@ PP(pp_require)
                if (sver == 0 && (rev > 5 || (rev == 5 && ver >= 100))) {
                    DIE(aTHX_ "Perl v%"UVuf".%"UVuf".%"UVuf" required--"
                        "this is only v%d.%d.%d, stopped"
-                       " (did you mean v%"UVuf".%"UVuf".0?)",
+                       " (did you mean v%"UVuf".%03"UVuf"?)",
                        rev, ver, sver, PERL_REVISION, PERL_VERSION,
                        PERL_SUBVERSION, rev, ver/100);
                }
index 5637818..d135bc8 100644 (file)
@@ -129,7 +129,7 @@ while (<>) {
     if ( open(PM, ">$newname") ) {
         print PM <<"END";
 package $newpack;
-require 5.6.0;
+use 5.006;
 require Exporter;
 $carp
 \@ISA = qw(Exporter);