This patch should be applied as soon as practical, as it improves the v-string
detection in Perl releases from 5.6.x through 5.8.0 (inclusive).  It is not
required for the 5.10.2 release (though I wouldn't cry if it were included
anyways, just to be consistent, since 5.10.2 should ship with version.pm 0.78).

I have an in-progress patch to deal with multiple underscores in version
initialization, so if that lands before this gets applied, I'll provide a new 
patch.

John

--- lib/Module/Build/Version.pm (revision 2870)
+++ lib/Module/Build/Version.pm (local)
@@ -121,8 +121,7 @@
 use POSIX qw/locale_h/;
 use locale;
 use vars qw ($VERSION @ISA @REGEXS);
-$VERSION = '0.77';
-$VERSION = eval $VERSION;
+$VERSION = 0.78;

 push @REGEXS, qr/
        ^v?     # optional leading 'v'
@@ -613,9 +612,10 @@
 sub _un_vstring {
     my $value = shift;
     # may be a v-string
-    if ( $] >= 5.006_000 && length($value) >= 3 && $value !~ /[._]/ ) {
+    if ( $] >= 5.006_000 && length($value) >= 3 && $value !~ /[._]/
+       && (ord($value) < ord('0') || ord($value) > ord('9')) ) {
        my $tvalue = sprintf("v%vd",$value);
-       if ( $tvalue =~ /^v\d+\.\d+\.\d+$/ ) {
+       if ( $tvalue =~ /^v\d+(\.\d+){2,}$/ ) {
            # must be a v-string
            $value = $tvalue;
        }

Reply via email to