X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCPAN%2FVersion.pm;h=d2791349be94dacb46ab4d5887efa9237bfebaaa;hb=917f17002097ee577163787c18abe1a911b23f4e;hp=04f37809269190dbab9b2f97089f76d16cb2aeb7;hpb=26844e2782d7192ed739172c5303bb52947596dc;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/CPAN/Version.pm b/lib/CPAN/Version.pm index 04f3780..d279134 100644 --- a/lib/CPAN/Version.pm +++ b/lib/CPAN/Version.pm @@ -2,7 +2,7 @@ package CPAN::Version; use strict; use vars qw($VERSION); -$VERSION = sprintf "%.6f", substr(q$Rev: 844 $,4)/1000000 + 5.4; +$VERSION = sprintf "%.6f", substr(q$Rev: 1387 $,4)/1000000 + 5.4; # CPAN::Version::vcmp courtesy Jost Krieger sub vcmp { @@ -13,26 +13,39 @@ sub vcmp { return 0 if $l eq $r; # short circuit for quicker success for ($l,$r) { + s/_//g; + } + CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG; + for ($l,$r) { next unless tr/.// > 1; s/^v?/v/; - 1 while s/\.0+(\d)/.$1/; + 1 while s/\.0+(\d)/.$1/; # remove leading zeroes per group } + CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG; if ($l=~/^v/ <=> $r=~/^v/) { for ($l,$r) { next if /^v/; $_ = $self->float2vv($_); } } + CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG; + my $lvstring = "v0"; + my $rvstring = "v0"; + if ($] >= 5.006 + && $l =~ /^v/ + && $r =~ /^v/) { + $lvstring = $self->vstring($l); + $rvstring = $self->vstring($r); + CPAN->debug(sprintf "lv[%vd] rv[%vd]", $lvstring, $rvstring) if $CPAN::DEBUG; + } return ( - ($l ne "undef") <=> ($r ne "undef") || - ( - $] >= 5.006 && - $l =~ /^v/ && - $r =~ /^v/ && - $self->vstring($l) cmp $self->vstring($r) - ) || - $l <=> $r || + ($l ne "undef") <=> ($r ne "undef") + || + $lvstring cmp $rvstring + || + $l <=> $r + || $l cmp $r ); }