Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-App-cpanminus for 
openSUSE:Factory checked in at 2025-01-07 20:52:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-App-cpanminus (Old)
 and      /work/SRC/openSUSE:Factory/.perl-App-cpanminus.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-App-cpanminus"

Tue Jan  7 20:52:55 2025 rev:23 rq:1235294 version:1.7048

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-App-cpanminus/perl-App-cpanminus.changes    
2024-08-27 19:40:06.702438916 +0200
+++ 
/work/SRC/openSUSE:Factory/.perl-App-cpanminus.new.1881/perl-App-cpanminus.changes
  2025-01-07 20:53:25.476925508 +0100
@@ -1,0 +2,10 @@
+Thu Dec 12 16:09:21 UTC 2024 - Tina Müller <[email protected]>
+
+- updated to 1.7048
+   see /usr/share/doc/packages/perl-App-cpanminus/Changes
+
+  1.7048  2024-10-29 11:48:22 PDT
+     [Bug Fix]
+        - Upgrade fatpacked version to 0.9929 (#682)
+
+-------------------------------------------------------------------

Old:
----
  App-cpanminus-1.7047.tar.gz

New:
----
  App-cpanminus-1.7048.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-App-cpanminus.spec ++++++
--- /var/tmp/diff_new_pack.M5B65A/_old  2025-01-07 20:53:27.008988874 +0100
+++ /var/tmp/diff_new_pack.M5B65A/_new  2025-01-07 20:53:27.016989205 +0100
@@ -18,7 +18,7 @@
 
 %define cpan_name App-cpanminus
 Name:           perl-App-cpanminus
-Version:        1.7047
+Version:        1.7048
 Release:        0
 License:        Artistic-1.0 OR GPL-1.0-or-later
 Summary:        Get, unpack, build and install modules from CPAN

++++++ App-cpanminus-1.7047.tar.gz -> App-cpanminus-1.7048.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/App-cpanminus-1.7047/Changes 
new/App-cpanminus-1.7048/Changes
--- old/App-cpanminus-1.7047/Changes    2023-07-30 07:59:23.000000000 +0200
+++ new/App-cpanminus-1.7048/Changes    2024-10-29 19:48:26.000000000 +0100
@@ -1,5 +1,9 @@
 See http://github.com/miyagawa/cpanminus/ for the latest development.
 
+1.7048  2024-10-29 11:48:22 PDT
+   [Bug Fix]
+      - Upgrade fatpacked version to 0.9929 (#682)
+
 1.7047  2023-07-29 22:59:16 PDT
    [Bug Fix]
       - Upgrade fatpacked CPAN::Meta::Check to 0.018 (#662)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/App-cpanminus-1.7047/META.json 
new/App-cpanminus-1.7048/META.json
--- old/App-cpanminus-1.7047/META.json  2023-07-30 07:59:23.000000000 +0200
+++ new/App-cpanminus-1.7048/META.json  2024-10-29 19:48:26.000000000 +0100
@@ -101,7 +101,7 @@
          "web" : "https://github.com/miyagawa/cpanminus";
       }
    },
-   "version" : "1.7047",
+   "version" : "1.7048",
    "x_contributors" : [
       "Aaron Moses <[email protected]>",
       "Alessandro Ghedini <[email protected]>",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/App-cpanminus-1.7047/META.yml 
new/App-cpanminus-1.7048/META.yml
--- old/App-cpanminus-1.7047/META.yml   2023-07-30 07:59:23.000000000 +0200
+++ new/App-cpanminus-1.7048/META.yml   2024-10-29 19:48:26.000000000 +0100
@@ -29,7 +29,7 @@
   bugtracker: https://github.com/miyagawa/cpanminus/issues
   homepage: https://github.com/miyagawa/cpanminus
   repository: https://github.com/miyagawa/cpanminus.git
-version: '1.7047'
+version: '1.7048'
 x_contributors:
   - 'Aaron Moses <[email protected]>'
   - 'Alessandro Ghedini <[email protected]>'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/App-cpanminus-1.7047/Makefile.PL 
new/App-cpanminus-1.7048/Makefile.PL
--- old/App-cpanminus-1.7047/Makefile.PL        2023-07-30 07:59:23.000000000 
+0200
+++ new/App-cpanminus-1.7048/Makefile.PL        2024-10-29 19:48:26.000000000 
+0100
@@ -23,7 +23,7 @@
   "TEST_REQUIRES" => {
     "Test::More" => 0
   },
-  "VERSION" => "1.7047",
+  "VERSION" => "1.7048",
   "test" => {
     "TESTS" => "t/*.t"
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/App-cpanminus-1.7047/bin/cpanm 
new/App-cpanminus-1.7048/bin/cpanm
--- old/App-cpanminus-1.7047/bin/cpanm  2023-07-30 07:59:23.000000000 +0200
+++ new/App-cpanminus-1.7048/bin/cpanm  2024-10-29 19:48:26.000000000 +0100
@@ -21,7 +21,7 @@
 my %fatpacked;
 
 $fatpacked{"App/cpanminus.pm"} = '#line '.(1+__LINE__).' 
"'.__FILE__."\"\n".<<'APP_CPANMINUS';
-  package App::cpanminus;our$VERSION="1.7047";1;
+  package App::cpanminus;our$VERSION="1.7048";1;
 APP_CPANMINUS
 
 $fatpacked{"App/cpanminus/Dependency.pm"} = '#line '.(1+__LINE__).' 
"'.__FILE__."\"\n".<<'APP_CPANMINUS_DEPENDENCY';
@@ -439,22 +439,22 @@
 PARENT
 
 $fatpacked{"version.pm"} = '#line '.(1+__LINE__).' 
"'.__FILE__."\"\n".<<'VERSION';
-  package version;use 5.006002;use strict;use warnings::register;if ($] >= 
5.015){warnings::register_categories(qw/version/)}use vars qw(@ISA $VERSION 
$CLASS $STRICT $LAX *declare 
*qv);$VERSION=0.9912;$CLASS='version';{local$SIG{'__DIE__'};if (1){eval "use 
version::vpp $VERSION";die "$@" if ($@);push@ISA,"version::vpp";local 
$^W;*version::qv=\&version::vpp::qv;*version::declare=\&version::vpp::declare;*version::_VERSION=\&version::vpp::_VERSION;*version::vcmp=\&version::vpp::vcmp;*version::new=\&version::vpp::new;*version::numify=\&version::vpp::numify;*version::normal=\&version::vpp::normal;if
 ($] >= 5.009000){no strict 
'refs';*version::stringify=\&version::vpp::stringify;*{'version::(""'}=\&version::vpp::stringify;*{'version::(<=>'}=\&version::vpp::vcmp;*version::parse=\&version::vpp::parse}}else
 {push@ISA,"version::vxs";local 
$^W;*version::declare=\&version::vxs::declare;*version::qv=\&version::vxs::qv;*version::_VERSION=\&version::vxs::_VERSION;*version::vcmp=\&version::vxs::VCM
 
P;*version::new=\&version::vxs::new;*version::numify=\&version::vxs::numify;*version::normal=\&version::vxs::normal;if
 ($] >= 5.009000){no strict 
'refs';*version::stringify=\&version::vxs::stringify;*{'version::(""'}=\&version::vxs::stringify;*{'version::(<=>'}=\&version::vxs::VCMP;*version::parse=\&version::vxs::parse}}}require
 
version::regex;*version::is_lax=\&version::regex::is_lax;*version::is_strict=\&version::regex::is_strict;*LAX=\$version::regex::LAX;*STRICT=\$version::regex::STRICT;sub
 import {no strict 'refs';my ($class)=shift;unless ($class eq $CLASS){local 
$^W;*{$class.'::declare'}=\&{$CLASS.'::declare'};*{$class.'::qv'}=\&{$CLASS.'::qv'}}my%args;if
 (@_){map {$args{$_}=1}@_}else 
{%args=(qv=>1,'UNIVERSAL::VERSION'=>1,)}my$callpkg=caller();if 
(exists($args{declare})){*{$callpkg.'::declare'}=sub 
{return$class->declare(shift)}unless defined(&{$callpkg.'::declare'})}if 
(exists($args{qv})){*{$callpkg.'::qv'}=sub {return$class->qv(shift)}unless 
defined(&{$callpkg.'::qv'})}if (e
 xists($args{'UNIVERSAL::VERSION'})){local $^W;*UNIVERSAL::VERSION 
=\&{$CLASS.'::_VERSION'}}if 
(exists($args{'VERSION'})){*{$callpkg.'::VERSION'}=\&{$CLASS.'::_VERSION'}}if 
(exists($args{'is_strict'})){*{$callpkg.'::is_strict'}=\&{$CLASS.'::is_strict'}unless
 defined(&{$callpkg.'::is_strict'})}if 
(exists($args{'is_lax'})){*{$callpkg.'::is_lax'}=\&{$CLASS.'::is_lax'}unless 
defined(&{$callpkg.'::is_lax'})}}1;
+  package version;use 5.006002;use strict;use warnings::register;if ($] >= 
5.015){warnings::register_categories(qw/version/)}our$VERSION=0.9929;our$CLASS='version';our
 (@ISA,$STRICT,$LAX);{local$SIG{'__DIE__'};if (1){eval "use version::vpp 
$VERSION";die "$@" if ($@);push@ISA,"version::vpp";local 
$^W;*version::qv=\&version::vpp::qv;*version::declare=\&version::vpp::declare;*version::_VERSION=\&version::vpp::_VERSION;*version::vcmp=\&version::vpp::vcmp;*version::new=\&version::vpp::new;*version::numify=\&version::vpp::numify;*version::normal=\&version::vpp::normal;if
 ($] >= 5.009000){no strict 
'refs';*version::stringify=\&version::vpp::stringify;*{'version::(""'}=\&version::vpp::stringify;*{'version::(<=>'}=\&version::vpp::vcmp;*{'version::(cmp'}=\&version::vpp::vcmp;*version::parse=\&version::vpp::parse}}else
 {push@ISA,"version::vxs";local 
$^W;*version::declare=\&version::vxs::declare;*version::qv=\&version::vxs::qv;*version::_VERSION=\&version::vxs::_VERSION;*version::vcmp=\&version
 
::vxs::VCMP;*version::new=\&version::vxs::new;*version::numify=\&version::vxs::numify;*version::normal=\&version::vxs::normal;if
 ($] >= 5.009000){no strict 
'refs';*version::stringify=\&version::vxs::stringify;*{'version::(""'}=\&version::vxs::stringify;*{'version::(<=>'}=\&version::vxs::VCMP;*{'version::(cmp'}=\&version::vxs::VCMP;*version::parse=\&version::vxs::parse}}}require
 
version::regex;*version::is_lax=\&version::regex::is_lax;*version::is_strict=\&version::regex::is_strict;*LAX=\$version::regex::LAX;*LAX_DECIMAL_VERSION=\$version::regex::LAX_DECIMAL_VERSION;*LAX_DOTTED_DECIMAL_VERSION=\$version::regex::LAX_DOTTED_DECIMAL_VERSION;*STRICT=\$version::regex::STRICT;*STRICT_DECIMAL_VERSION=\$version::regex::STRICT_DECIMAL_VERSION;*STRICT_DOTTED_DECIMAL_VERSION=\$version::regex::STRICT_DOTTED_DECIMAL_VERSION;sub
 import {no strict 'refs';my ($class)=shift;unless ($class eq $CLASS){local 
$^W;*{$class.'::declare'}=\&{$CLASS.'::declare'};*{$class.'::qv'}=\&{$CLASS.'::qv'}}my%args;if
 (
 @_){map {$args{$_}=1}@_}else 
{%args=(qv=>1,'UNIVERSAL::VERSION'=>1,)}my$callpkg=caller();if 
(exists($args{declare})){*{$callpkg.'::declare'}=sub 
{return$class->declare(shift)}unless defined(&{$callpkg.'::declare'})}if 
(exists($args{qv})){*{$callpkg.'::qv'}=sub {return$class->qv(shift)}unless 
defined(&{$callpkg.'::qv'})}if (exists($args{'UNIVERSAL::VERSION'})){local 
$^W;*UNIVERSAL::VERSION =\&{$CLASS.'::_VERSION'}}if 
(exists($args{'VERSION'})){*{$callpkg.'::VERSION'}=\&{$CLASS.'::_VERSION'}}if 
(exists($args{'is_strict'})){*{$callpkg.'::is_strict'}=\&{$CLASS.'::is_strict'}unless
 defined(&{$callpkg.'::is_strict'})}if 
(exists($args{'is_lax'})){*{$callpkg.'::is_lax'}=\&{$CLASS.'::is_lax'}unless 
defined(&{$callpkg.'::is_lax'})}}1;
 VERSION
 
 $fatpacked{"version/regex.pm"} = '#line '.(1+__LINE__).' 
"'.__FILE__."\"\n".<<'VERSION_REGEX';
-  package version::regex;use strict;use vars qw($VERSION $CLASS $STRICT 
$LAX);$VERSION=0.9912;my$FRACTION_PART=qr/\.[0-9]+/;my$STRICT_INTEGER_PART=qr/0|[1-9][0-9]*/;my$LAX_INTEGER_PART=qr/[0-9]+/;my$STRICT_DOTTED_DECIMAL_PART=qr/\.[0-9]{1,3}/;my$LAX_DOTTED_DECIMAL_PART=qr/\.[0-9]+/;my$LAX_ALPHA_PART=qr/_[0-9]+/;my$STRICT_DECIMAL_VERSION=qr/
 $STRICT_INTEGER_PART $FRACTION_PART? /x;my$STRICT_DOTTED_DECIMAL_VERSION=qr/ v 
$STRICT_INTEGER_PART $STRICT_DOTTED_DECIMAL_PART{2,} /x;$STRICT=qr/ 
$STRICT_DECIMAL_VERSION | $STRICT_DOTTED_DECIMAL_VERSION 
/x;my$LAX_DECIMAL_VERSION=qr/ $LAX_INTEGER_PART (?: \. | $FRACTION_PART 
$LAX_ALPHA_PART? )?
+  package version::regex;use 
strict;our$VERSION=0.9929;my$FRACTION_PART=qr/\.[0-9]+/;my$STRICT_INTEGER_PART=qr/0|[1-9][0-9]*/;my$LAX_INTEGER_PART=qr/[0-9]+/;my$STRICT_DOTTED_DECIMAL_PART=qr/\.[0-9]{1,3}/;my$LAX_DOTTED_DECIMAL_PART=qr/\.[0-9]+/;my$LAX_ALPHA_PART=qr/_[0-9]+/;our$STRICT_DECIMAL_VERSION=qr/
 $STRICT_INTEGER_PART $FRACTION_PART? /x;our$STRICT_DOTTED_DECIMAL_VERSION=qr/ 
v $STRICT_INTEGER_PART $STRICT_DOTTED_DECIMAL_PART{2,} /x;our$STRICT=qr/ 
$STRICT_DECIMAL_VERSION | $STRICT_DOTTED_DECIMAL_VERSION 
/x;our$LAX_DECIMAL_VERSION=qr/ $LAX_INTEGER_PART (?: $FRACTION_PART | \. )? 
$LAX_ALPHA_PART?
        |
        $FRACTION_PART $LAX_ALPHA_PART?
-      /x;my$LAX_DOTTED_DECIMAL_VERSION=qr/
+      /x;our$LAX_DOTTED_DECIMAL_VERSION=qr/
        v $LAX_INTEGER_PART (?: $LAX_DOTTED_DECIMAL_PART+ $LAX_ALPHA_PART? )?
        |
        $LAX_INTEGER_PART? $LAX_DOTTED_DECIMAL_PART{2,} $LAX_ALPHA_PART?
-      /x;$LAX=qr/ undef | $LAX_DECIMAL_VERSION | $LAX_DOTTED_DECIMAL_VERSION 
/x;sub is_strict {defined $_[0]&& $_[0]=~ qr/ \A $STRICT \z /x}sub is_lax 
{defined $_[0]&& $_[0]=~ qr/ \A $LAX \z /x}1;
+      /x;our$LAX=qr/ undef | $LAX_DOTTED_DECIMAL_VERSION | 
$LAX_DECIMAL_VERSION /x;sub is_strict {defined $_[0]&& $_[0]=~ qr/ \A $STRICT 
\z /x}sub is_lax {defined $_[0]&& $_[0]=~ qr/ \A $LAX \z /x}1;
 VERSION_REGEX
 
 $fatpacked{"version/vpp.pm"} = '#line '.(1+__LINE__).' 
"'.__FILE__."\"\n".<<'VERSION_VPP';
-  package charstar;use overload 
('""'=>\&thischar,'0+'=>\&thischar,'++'=>\&increment,'--'=>\&decrement,'+'=>\&plus,'-'=>\&minus,'*'=>\&multiply,'cmp'=>\&cmp,'<=>'=>\&spaceship,'bool'=>\&thischar,'='=>\&clone,);sub
 new {my ($self,$string)=@_;my$class=ref($self)|| 
$self;my$obj={string=>[split(//,$string)],current=>0,};return 
bless$obj,$class}sub thischar {my 
($self)=@_;my$last=$#{$self->{string}};my$curr=$self->{current};if ($curr >= 0 
&& $curr <= $last){return$self->{string}->[$curr]}else {return ''}}sub 
increment {my ($self)=@_;$self->{current}++}sub decrement {my 
($self)=@_;$self->{current}--}sub plus {my 
($self,$offset)=@_;my$rself=$self->clone;$rself->{current}+= 
$offset;return$rself}sub minus {my 
($self,$offset)=@_;my$rself=$self->clone;$rself->{current}-= 
$offset;return$rself}sub multiply {my 
($left,$right,$swapped)=@_;my$char=$left->thischar();return$char * $right}sub 
spaceship {my ($left,$right,$swapped)=@_;unless 
(ref($right)){$right=$left->new($right)}return$left->{current}
 <=> $right->{current}}sub cmp {my ($left,$right,$swapped)=@_;unless 
(ref($right)){if (length($right)==1){return$left->thischar cmp 
$right}$right=$left->new($right)}return$left->currstr cmp $right->currstr}sub 
bool {my ($self)=@_;my$char=$self->thischar;return ($char ne '')}sub clone {my 
($left,$right,$swapped)=@_;$right={string=>[@{$left->{string}}],current=>$left->{current},};return
 bless$right,ref($left)}sub currstr {my 
($self,$s)=@_;my$curr=$self->{current};my$last=$#{$self->{string}};if 
(defined($s)&& $s->{current}< 
$last){$last=$s->{current}}my$string=join('',@{$self->{string}}[$curr..$last]);return$string}package
 version::vpp;use 5.006002;use strict;use warnings::register;use Config;use 
vars qw($VERSION $CLASS @ISA $LAX $STRICT 
$WARN_CATEGORY);$VERSION=0.9912;$CLASS='version::vpp';if ($] > 
5.015){warnings::register_categories(qw/version/);$WARN_CATEGORY='version'}else 
{$WARN_CATEGORY='numeric'}require 
version::regex;*version::vpp::is_strict=\&version::regex::is_strict;*version
 
::vpp::is_lax=\&version::regex::is_lax;*LAX=\$version::regex::LAX;*STRICT=\$version::regex::STRICT;use
 overload 
('""'=>\&stringify,'0+'=>\&numify,'cmp'=>\&vcmp,'<=>'=>\&vcmp,'bool'=>\&vbool,'+'=>\&vnoop,'-'=>\&vnoop,'*'=>\&vnoop,'/'=>\&vnoop,'+='=>\&vnoop,'-='=>\&vnoop,'*='=>\&vnoop,'/='=>\&vnoop,'abs'=>\&vnoop,);sub
 import {no strict 'refs';my ($class)=shift;unless ($class eq $CLASS){local 
$^W;*{$class.'::declare'}=\&{$CLASS.'::declare'};*{$class.'::qv'}=\&{$CLASS.'::qv'}}my%args;if
 (@_){map {$args{$_}=1}@_}else 
{%args=(qv=>1,'UNIVERSAL::VERSION'=>1,)}my$callpkg=caller();if 
(exists($args{declare})){*{$callpkg.'::declare'}=sub 
{return$class->declare(shift)}unless defined(&{$callpkg.'::declare'})}if 
(exists($args{qv})){*{$callpkg.'::qv'}=sub {return$class->qv(shift)}unless 
defined(&{$callpkg.'::qv'})}if (exists($args{'UNIVERSAL::VERSION'})){no 
warnings qw/redefine/;*UNIVERSAL::VERSION =\&{$CLASS.'::_VERSION'}}if 
(exists($args{'VERSION'})){*{$callpkg.'::VERSION'}=\&{$CLASS.'::_VERSION
 '}}if 
(exists($args{'is_strict'})){*{$callpkg.'::is_strict'}=\&{$CLASS.'::is_strict'}unless
 defined(&{$callpkg.'::is_strict'})}if 
(exists($args{'is_lax'})){*{$callpkg.'::is_lax'}=\&{$CLASS.'::is_lax'}unless 
defined(&{$callpkg.'::is_lax'})}}my$VERSION_MAX=0x7FFFFFFF;use constant 
TRUE=>1;use constant FALSE=>0;sub isDIGIT {my ($char)=shift->thischar();return 
($char =~ /\d/)}sub isALPHA {my ($char)=shift->thischar();return ($char =~ 
/[a-zA-Z]/)}sub isSPACE {my ($char)=shift->thischar();return ($char =~ 
/\s/)}sub BADVERSION {my ($s,$errstr,$error)=@_;if 
($errstr){$$errstr=$error}return$s}sub prescan_version {my 
($s,$strict,$errstr,$sqv,$ssaw_decimal,$swidth,$salpha)=@_;my$qv=defined$sqv ? 
$$sqv : FALSE;my$saw_decimal=defined$ssaw_decimal ? $$ssaw_decimal : 
0;my$width=defined$swidth ? $$swidth : 3;my$alpha=defined$salpha ? $$salpha : 
FALSE;my$d=$s;if ($qv && isDIGIT($d)){goto dotted_decimal_version}if ($d eq 
'v'){$d++;if (isDIGIT($d)){$qv=TRUE}else {return BADVERSION($s,$errstr,"Invalid 
v
 ersion format (dotted-decimal versions require at least three 
parts)")}dotted_decimal_version: if ($strict && $d eq '0' && 
isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid version format (no leading 
zeros)")}while (isDIGIT($d)){$d++}if ($d eq '.'){$saw_decimal++;$d++}else {if 
($strict){return BADVERSION($s,$errstr,"Invalid version format (dotted-decimal 
versions require at least three parts)")}else {goto 
version_prescan_finish}}{my$i=0;my$j=0;while (isDIGIT($d)){$i++;while 
(isDIGIT($d)){$d++;$j++;if ($strict && $j > 3){return 
BADVERSION($s,$errstr,"Invalid version format (maximum 3 digits between 
decimals)")}}if ($d eq '_'){if ($strict){return BADVERSION($s,$errstr,"Invalid 
version format (no underscores)")}if ($alpha){return 
BADVERSION($s,$errstr,"Invalid version format (multiple 
underscores)")}$d++;$alpha=TRUE}elsif ($d eq '.'){if ($alpha){return 
BADVERSION($s,$errstr,"Invalid version format (underscores before 
decimal)")}$saw_decimal++;$d++}elsif (!isDIGIT($d)){last}$j=0}if (
 $strict && $i < 2){return BADVERSION($s,$errstr,"Invalid version format 
(dotted-decimal versions require at least three parts)")}}}else {my$j=0;if 
($strict){if ($d eq '.'){return BADVERSION($s,$errstr,"Invalid version format 
(0 before decimal required)")}if ($d eq '0' && isDIGIT($d+1)){return 
BADVERSION($s,$errstr,"Invalid version format (no leading zeros)")}}if ($d eq 
'-'){return BADVERSION($s,$errstr,"Invalid version format (negative version 
number)")}while (isDIGIT($d)){$d++}if ($d eq '.'){$saw_decimal++;$d++}elsif 
(!$d || $d eq ';' || isSPACE($d)|| $d eq '}'){if ($d==$s){return 
BADVERSION($s,$errstr,"Invalid version format (version required)")}goto 
version_prescan_finish}elsif ($d==$s){return BADVERSION($s,$errstr,"Invalid 
version format (non-numeric data)")}elsif ($d eq '_'){if ($strict){return 
BADVERSION($s,$errstr,"Invalid version format (no underscores)")}elsif 
(isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid version format (alpha 
without decimal)")}else {return BADVERS
 ION($s,$errstr,"Invalid version format (misplaced underscore)")}}elsif 
($d){return BADVERSION($s,$errstr,"Invalid version format (non-numeric 
data)")}if ($d &&!isDIGIT($d)&& ($strict ||!($d eq ';' || isSPACE($d)|| $d eq 
'}'))){return BADVERSION($s,$errstr,"Invalid version format (fractional part 
required)")}while (isDIGIT($d)){$d++;$j++;if ($d eq '.' && isDIGIT($d-1)){if 
($alpha){return BADVERSION($s,$errstr,"Invalid version format (underscores 
before decimal)")}if ($strict){return BADVERSION($s,$errstr,"Invalid version 
format (dotted-decimal versions must begin with 'v')")}$d=$s;$qv=TRUE;goto 
dotted_decimal_version}if ($d eq '_'){if ($strict){return 
BADVERSION($s,$errstr,"Invalid version format (no underscores)")}if 
($alpha){return BADVERSION($s,$errstr,"Invalid version format (multiple 
underscores)")}if (!isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid 
version format (misplaced 
underscore)")}$width=$j;$d++;$alpha=TRUE}}}version_prescan_finish: while 
(isSPACE($d)){$d++}if ($d 
 &&!isDIGIT($d)&& (!($d eq ';' || $d eq '}'))){return 
BADVERSION($s,$errstr,"Invalid version format (non-numeric data)")}if 
($saw_decimal > 1 && ($d-1)eq '.'){return BADVERSION($s,$errstr,"Invalid 
version format (trailing decimal)")}if (defined$sqv){$$sqv=$qv}if 
(defined$swidth){$$swidth=$width}if 
(defined$ssaw_decimal){$$ssaw_decimal=$saw_decimal}if 
(defined$salpha){$$salpha=$alpha}return$d}sub scan_version {my 
($s,$rv,$qv)=@_;my$start;my$pos;my$last;my$errstr;my$saw_decimal=0;my$width=3;my$alpha=FALSE;my$vinf=FALSE;my@av;$s=new
 charstar$s;while 
(isSPACE($s)){$s++}$last=prescan_version($s,FALSE,\$errstr,\$qv,\$saw_decimal,\$width,\$alpha);if
 ($errstr){if ($s ne 'undef'){require Carp;Carp::croak($errstr)}}$start=$s;if 
($s eq 'v'){$s++}$pos=$s;if ($qv){$$rv->{qv}=$qv}if 
($alpha){$$rv->{alpha}=$alpha}if (!$qv && $width < 
3){$$rv->{width}=$width}while (isDIGIT($pos)){$pos++}if 
(!isALPHA($pos)){my$rev;for (;;){$rev=0;{my$end=$pos;my$mult=1;my$orev;if (!$qv 
&& $s > $start && $saw_decimal=
 =1){$mult *= 100;while ($s < $end){$orev=$rev;$rev += $s * $mult;$mult /= 
10;if ((abs($orev)> abs($rev))|| (abs($rev)> $VERSION_MAX)){warn("Integer 
overflow in version %d",$VERSION_MAX);$s=$end - 
1;$rev=$VERSION_MAX;$vinf=1}$s++;if ($s eq '_'){$s++}}}else {while (--$end >= 
$s){$orev=$rev;$rev += $end * $mult;$mult *= 10;if ((abs($orev)> abs($rev))|| 
(abs($rev)> $VERSION_MAX)){warn("Integer overflow in version");$end=$s - 
1;$rev=$VERSION_MAX;$vinf=1}}}}push@av,$rev;if ($vinf){$s=$last;last}elsif 
($pos eq '.'){$pos++;if ($qv){while ($pos eq '0'){$pos++}}$s=$pos}elsif ($pos 
eq '_' && isDIGIT($pos+1)){$s=++$pos}elsif ($pos eq ',' && 
isDIGIT($pos+1)){$s=++$pos}elsif (isDIGIT($pos)){$s=$pos}else {$s=$pos;last}if 
($qv){while (isDIGIT($pos)){$pos++}}else {my$digits=0;while ((isDIGIT($pos)|| 
$pos eq '_')&& $digits < 3){if ($pos ne '_'){$digits++}$pos++}}}}if 
($qv){my$len=$#av;$len=2 - $len;while ($len-- > 0){push@av,0}}if 
($vinf){$$rv->{original}="v.Inf";$$rv->{vinf}=1}elsif ($s > $start){$$
 rv->{original}=$start->currstr($s);if ($qv && $saw_decimal==1 && $start ne 
'v'){$$rv->{original}='v' .$$rv->{original}}}else 
{$$rv->{original}='0';push(@av,0)}$$rv->{version}=\@av;if ($s eq 'undef'){$s += 
5}return$s}sub new {my$class=shift;unless (defined$class or $#_ > 1){require 
Carp;Carp::croak('Usage: version::new(class, version)')}my$self=bless ({},ref 
($class)|| $class);my$qv=FALSE;if ($#_==1){$qv=TRUE}my$value=pop;if 
(ref($value)&& 
eval('$value->isa("version")')){$self->{version}=[@{$value->{version}}];$self->{qv}=1
 if$value->{qv};$self->{alpha}=1 
if$value->{alpha};$self->{original}=''.$value->{original};return$self}if (not 
defined$value or $value =~ /^undef$/){push 
@{$self->{version}},0;$self->{original}="0";return ($self)}if (ref($value)=~ 
m/ARRAY|HASH/){require Carp;Carp::croak("Invalid version format (non-numeric 
data)")}$value=_un_vstring($value);if ($Config{d_setlocale}){use POSIX 
qw/locale_h/;use 
if$Config{d_setlocale},'locale';my$currlocale=setlocale(LC_ALL);if (local
 econv()->{decimal_point}eq ','){$value =~ tr/,/./}}if ($value =~ 
/\d+.?\d*e[-+]?\d+/){$value=sprintf("%.9f",$value);$value =~ 
s/(0+)$//}my$s=scan_version($value,\$self,$qv);if ($s){warn("Version string 
'%s' contains invalid data; " ."ignoring: '%s'",$value,$s)}return 
($self)}*parse=\&new;sub numify {my ($self)=@_;unless (_verify($self)){require 
Carp;Carp::croak("Invalid version object")}my$width=$self->{width}|| 
3;my$alpha=$self->{alpha}|| 
"";my$len=$#{$self->{version}};my$digit=$self->{version}[0];my$string=sprintf("%d.",$digit);if
 ($alpha and 
warnings::enabled()){warnings::warn($WARN_CATEGORY,'alpha->numify() is 
lossy')}for (my$i=1 ;$i < $len ;$i++ ){$digit=$self->{version}[$i];if ($width < 
3){my$denom=10**(3-$width);my$quot=int($digit/$denom);my$rem=$digit - ($quot * 
$denom);$string .= sprintf("%0".$width."d_%d",$quot,$rem)}else {$string .= 
sprintf("%03d",$digit)}}if ($len > 0){$digit=$self->{version}[$len];if ($alpha 
&& $width==3){$string .= "_"}$string .= sprintf("%0".$width."d
 ",$digit)}else {$string .= sprintf("000")}return$string}sub normal {my 
($self)=@_;unless (_verify($self)){require Carp;Carp::croak("Invalid version 
object")}my$alpha=$self->{alpha}|| "";my$qv=$self->{qv}|| 
"";my$len=$#{$self->{version}};my$digit=$self->{version}[0];my$string=sprintf("v%d",$digit);for
 (my$i=1 ;$i < $len ;$i++ ){$digit=$self->{version}[$i];$string .= 
sprintf(".%d",$digit)}if ($len > 0){$digit=$self->{version}[$len];if 
($alpha){$string .= sprintf("_%0d",$digit)}else {$string .= 
sprintf(".%0d",$digit)}}if ($len <= 2){for ($len=2 - $len;$len!=0;$len-- 
){$string .= sprintf(".%0d",0)}}return$string}sub stringify {my 
($self)=@_;unless (_verify($self)){require Carp;Carp::croak("Invalid version 
object")}return exists$self->{original}? $self->{original}: exists$self->{qv}? 
$self->normal : $self->numify}sub vcmp {require UNIVERSAL;my 
($left,$right,$swap)=@_;my$class=ref($left);unless 
(UNIVERSAL::isa($right,$class)){$right=$class->new($right)}if 
($swap){($left,$right)=($right,$l
 eft)}unless (_verify($left)){require Carp;Carp::croak("Invalid version 
object")}unless (_verify($right)){require Carp;Carp::croak("Invalid version 
format")}my$l=$#{$left->{version}};my$r=$#{$right->{version}};my$m=$l < $r ? $l 
: 
$r;my$lalpha=$left->is_alpha;my$ralpha=$right->is_alpha;my$retval=0;my$i=0;while
 ($i <= $m && $retval==0){$retval=$left->{version}[$i]<=> 
$right->{version}[$i];$i++}if ($retval==0 && $l==$r && 
$left->{version}[$m]==$right->{version}[$m]&& ($lalpha || $ralpha)){if ($lalpha 
&&!$ralpha){$retval=-1}elsif ($ralpha &&!$lalpha){$retval=+1}}if ($retval==0 && 
$l!=$r){if ($l < $r){while ($i <= $r && $retval==0){if 
($right->{version}[$i]!=0){$retval=-1}$i++}}else {while ($i <= $l && 
$retval==0){if ($left->{version}[$i]!=0){$retval=+1}$i++}}}return$retval}sub 
vbool {my ($self)=@_;return vcmp($self,$self->new("0"),1)}sub vnoop {require 
Carp;Carp::croak("operation not supported with version object")}sub is_alpha 
{my ($self)=@_;return (exists$self->{alpha})}sub qv {my$valu
 e=shift;my$class=$CLASS;if (@_){$class=ref($value)|| 
$value;$value=shift}$value=_un_vstring($value);$value='v'.$value unless$value 
=~ /(^v|\d+\.\d+\.\d)/;my$obj=$CLASS->new($value);return 
bless$obj,$class}*declare=\&qv;sub is_qv {my ($self)=@_;return 
(exists$self->{qv})}sub _verify {my ($self)=@_;if (ref($self)&& eval 
{exists$self->{version}}&& ref($self->{version})eq 'ARRAY'){return 1}else 
{return 0}}sub _is_non_alphanumeric {my$s=shift;$s=new charstar$s;while 
($s){return 0 if isSPACE($s);return 1 unless (isALPHA($s)|| isDIGIT($s)|| $s =~ 
/[.-]/);$s++}return 0}sub _un_vstring {my$value=shift;if (length($value)>= 1 && 
$value !~ /[,._]/ && _is_non_alphanumeric($value)){my$tvalue;if ($] >= 
5.008_001){$tvalue=_find_magic_vstring($value);$value=$tvalue if 
length$tvalue}elsif ($] >= 5.006_000){$tvalue=sprintf("v%vd",$value);if 
($tvalue =~ /^v\d+(\.\d+)*$/){$value=$tvalue}}}return$value}sub 
_find_magic_vstring {my$value=shift;my$tvalue='';require 
B;my$sv=B::svref_2object(\$value);my$magic
 =ref($sv)eq 'B::PVMG' ? $sv->MAGIC : undef;while ($magic){if ($magic->TYPE eq 
'V'){$tvalue=$magic->PTR;$tvalue =~ s/^v?(.+)$/v$1/;last}else 
{$magic=$magic->MOREMAGIC}}return$tvalue}sub _VERSION {my 
($obj,$req)=@_;my$class=ref($obj)|| $obj;no strict 'refs';if 
(exists$INC{"$class.pm"}and not %{"$class\::"}and $] >= 5.008){require 
Carp;Carp::croak("$class defines neither package nor VERSION" ."--version check 
failed")}my$version=eval "\$$class\::VERSION";if (defined$version){local $^W if 
$] <= 5.008;$version=version::vpp->new($version)}if (defined$req){unless 
(defined$version){require Carp;my$msg=$] < 5.006 ? "$class version $req 
required--this is only version " : "$class does not define \$$class\::VERSION" 
."--version check failed";if ($ENV{VERSION_DEBUG}){Carp::confess($msg)}else 
{Carp::croak($msg)}}$req=version::vpp->new($req);if ($req > $version){require 
Carp;if ($req->is_qv){Carp::croak(sprintf ("%s version %s required--"."this is 
only version %s",$class,$req->normal,$version->nor
 mal))}else {Carp::croak(sprintf ("%s version %s required--"."this is only 
version %s",$class,$req->stringify,$version->stringify))}}}return 
defined$version ? $version->stringify : undef}1;
+  package charstar;use overload 
('""'=>\&thischar,'0+'=>\&thischar,'++'=>\&increment,'--'=>\&decrement,'+'=>\&plus,'-'=>\&minus,'*'=>\&multiply,'cmp'=>\&cmp,'<=>'=>\&spaceship,'bool'=>\&thischar,'='=>\&clone,);sub
 new {my ($self,$string)=@_;my$class=ref($self)|| 
$self;my$obj={string=>[split(//,$string)],current=>0,};return 
bless$obj,$class}sub thischar {my 
($self)=@_;my$last=$#{$self->{string}};my$curr=$self->{current};if ($curr >= 0 
&& $curr <= $last){return$self->{string}->[$curr]}else {return ''}}sub 
increment {my ($self)=@_;$self->{current}++}sub decrement {my 
($self)=@_;$self->{current}--}sub plus {my 
($self,$offset)=@_;my$rself=$self->clone;$rself->{current}+= 
$offset;return$rself}sub minus {my 
($self,$offset)=@_;my$rself=$self->clone;$rself->{current}-= 
$offset;return$rself}sub multiply {my 
($left,$right,$swapped)=@_;my$char=$left->thischar();return$char * $right}sub 
spaceship {my ($left,$right,$swapped)=@_;unless 
(ref($right)){$right=$left->new($right)}return$left->{current}
 <=> $right->{current}}sub cmp {my ($left,$right,$swapped)=@_;unless 
(ref($right)){if (length($right)==1){return$left->thischar cmp 
$right}$right=$left->new($right)}return$left->currstr cmp $right->currstr}sub 
bool {my ($self)=@_;my$char=$self->thischar;return ($char ne '')}sub clone {my 
($left,$right,$swapped)=@_;$right={string=>[@{$left->{string}}],current=>$left->{current},};return
 bless$right,ref($left)}sub currstr {my 
($self,$s)=@_;my$curr=$self->{current};my$last=$#{$self->{string}};if 
(defined($s)&& $s->{current}< 
$last){$last=$s->{current}}my$string=join('',@{$self->{string}}[$curr..$last]);return$string}package
 version::vpp;use 5.006002;use strict;use warnings::register;use 
Config;our$VERSION=0.9929;our$CLASS='version::vpp';our 
($LAX,$STRICT,$WARN_CATEGORY);if ($] > 
5.015){warnings::register_categories(qw/version/);$WARN_CATEGORY='version'}else 
{$WARN_CATEGORY='numeric'}require 
version::regex;*version::vpp::is_strict=\&version::regex::is_strict;*version::vpp::is_lax=\&versio
 
n::regex::is_lax;*LAX=\$version::regex::LAX;*STRICT=\$version::regex::STRICT;use
 overload 
('""'=>\&stringify,'0+'=>\&numify,'cmp'=>\&vcmp,'<=>'=>\&vcmp,'bool'=>\&vbool,'+'=>\&vnoop,'-'=>\&vnoop,'*'=>\&vnoop,'/'=>\&vnoop,'+='=>\&vnoop,'-='=>\&vnoop,'*='=>\&vnoop,'/='=>\&vnoop,'abs'=>\&vnoop,);sub
 import {no strict 'refs';my ($class)=shift;unless ($class eq $CLASS){local 
$^W;*{$class.'::declare'}=\&{$CLASS.'::declare'};*{$class.'::qv'}=\&{$CLASS.'::qv'}}my%args;if
 (@_){map {$args{$_}=1}@_}else 
{%args=(qv=>1,'UNIVERSAL::VERSION'=>1,)}my$callpkg=caller();if 
(exists($args{declare})){*{$callpkg.'::declare'}=sub 
{return$class->declare(shift)}unless defined(&{$callpkg.'::declare'})}if 
(exists($args{qv})){*{$callpkg.'::qv'}=sub {return$class->qv(shift)}unless 
defined(&{$callpkg.'::qv'})}if (exists($args{'UNIVERSAL::VERSION'})){no 
warnings qw/redefine/;*UNIVERSAL::VERSION =\&{$CLASS.'::_VERSION'}}if 
(exists($args{'VERSION'})){*{$callpkg.'::VERSION'}=\&{$CLASS.'::_VERSION'}}if 
(exists($args{'i
 s_strict'})){*{$callpkg.'::is_strict'}=\&{$CLASS.'::is_strict'}unless 
defined(&{$callpkg.'::is_strict'})}if 
(exists($args{'is_lax'})){*{$callpkg.'::is_lax'}=\&{$CLASS.'::is_lax'}unless 
defined(&{$callpkg.'::is_lax'})}}my$VERSION_MAX=0x7FFFFFFF;use constant 
TRUE=>1;use constant FALSE=>0;sub isDIGIT {my ($char)=shift->thischar();return 
($char =~ /\d/)}sub isALPHA {my ($char)=shift->thischar();return ($char =~ 
/[a-zA-Z]/)}sub isSPACE {my ($char)=shift->thischar();return ($char =~ 
/\s/)}sub BADVERSION {my ($s,$errstr,$error)=@_;if 
($errstr){$$errstr=$error}return$s}sub prescan_version {my 
($s,$strict,$errstr,$sqv,$ssaw_decimal,$swidth,$salpha)=@_;my$qv=defined$sqv ? 
$$sqv : FALSE;my$saw_decimal=defined$ssaw_decimal ? $$ssaw_decimal : 
0;my$width=defined$swidth ? $$swidth : 3;my$alpha=defined$salpha ? $$salpha : 
FALSE;my$d=$s;if ($qv && isDIGIT($d)){goto dotted_decimal_version}if ($d eq 
'v'){$d++;if (isDIGIT($d)){$qv=TRUE}else {return BADVERSION($s,$errstr,"Invalid 
version format (dotted-
 decimal versions require at least three parts)")}dotted_decimal_version: if 
($strict && $d eq '0' && isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid 
version format (no leading zeros)")}while (isDIGIT($d)){$d++}if ($d eq 
'.'){$saw_decimal++;$d++}else {if ($strict){return 
BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions require 
at least three parts)")}else {goto version_prescan_finish}}{my$i=0;my$j=0;while 
(isDIGIT($d)){$i++;while (isDIGIT($d)){$d++;$j++;if ($strict && $j > 3){return 
BADVERSION($s,$errstr,"Invalid version format (maximum 3 digits between 
decimals)")}}if ($d eq '_'){if ($strict){return BADVERSION($s,$errstr,"Invalid 
version format (no underscores)")}if ($alpha){return 
BADVERSION($s,$errstr,"Invalid version format (multiple 
underscores)")}$d++;$alpha=TRUE}elsif ($d eq '.'){if ($alpha){return 
BADVERSION($s,$errstr,"Invalid version format (underscores before 
decimal)")}$saw_decimal++;$d++}elsif (!isDIGIT($d)){last}$j=0}if ($strict && $i 
< 2){ret
 urn BADVERSION($s,$errstr,"Invalid version format (dotted-decimal versions 
require at least three parts)")}}}else {my$j=0;if ($strict){if ($d eq 
'.'){return BADVERSION($s,$errstr,"Invalid version format (0 before decimal 
required)")}if ($d eq '0' && isDIGIT($d+1)){return 
BADVERSION($s,$errstr,"Invalid version format (no leading zeros)")}}if ($d eq 
'-'){return BADVERSION($s,$errstr,"Invalid version format (negative version 
number)")}while (isDIGIT($d)){$d++}if ($d eq '.'){$saw_decimal++;$d++}elsif 
(!$d || $d eq ';' || isSPACE($d)|| $d eq '}'){if ($d==$s){return 
BADVERSION($s,$errstr,"Invalid version format (version required)")}goto 
version_prescan_finish}elsif ($d==$s){return BADVERSION($s,$errstr,"Invalid 
version format (non-numeric data)")}elsif ($d eq '_'){if ($strict){return 
BADVERSION($s,$errstr,"Invalid version format (no underscores)")}elsif 
(isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid version format (alpha 
without decimal)")}else {return BADVERSION($s,$errstr,"Invali
 d version format (misplaced underscore)")}}elsif ($d){return 
BADVERSION($s,$errstr,"Invalid version format (non-numeric data)")}if ($d 
&&!isDIGIT($d)&& ($strict ||!($d eq ';' || isSPACE($d)|| $d eq '}'))){return 
BADVERSION($s,$errstr,"Invalid version format (fractional part 
required)")}while (isDIGIT($d)){$d++;$j++;if ($d eq '.' && isDIGIT($d-1)){if 
($alpha){return BADVERSION($s,$errstr,"Invalid version format (underscores 
before decimal)")}if ($strict){return BADVERSION($s,$errstr,"Invalid version 
format (dotted-decimal versions must begin with 'v')")}$d=$s;$qv=TRUE;goto 
dotted_decimal_version}if ($d eq '_'){if ($strict){return 
BADVERSION($s,$errstr,"Invalid version format (no underscores)")}if 
($alpha){return BADVERSION($s,$errstr,"Invalid version format (multiple 
underscores)")}if (!isDIGIT($d+1)){return BADVERSION($s,$errstr,"Invalid 
version format (misplaced 
underscore)")}$width=$j;$d++;$alpha=TRUE}}}version_prescan_finish: while 
(isSPACE($d)){$d++}if ($d &&!isDIGIT($d)&& (!($d
  eq ';' || $d eq '}'))){return BADVERSION($s,$errstr,"Invalid version format 
(non-numeric data)")}if ($saw_decimal > 1 && ($d-1)eq '.'){return 
BADVERSION($s,$errstr,"Invalid version format (trailing decimal)")}if 
(defined$sqv){$$sqv=$qv}if (defined$swidth){$$swidth=$width}if 
(defined$ssaw_decimal){$$ssaw_decimal=$saw_decimal}if 
(defined$salpha){$$salpha=$alpha}return$d}sub scan_version {my 
($s,$rv,$qv)=@_;my$start;my$pos;my$last;my$errstr;my$saw_decimal=0;my$width=3;my$alpha=FALSE;my$vinf=FALSE;my@av;$s=new
 charstar$s;while 
(isSPACE($s)){$s++}$last=prescan_version($s,FALSE,\$errstr,\$qv,\$saw_decimal,\$width,\$alpha);if
 ($errstr){if ($s ne 'undef'){require Carp;Carp::croak($errstr)}}$start=$s;if 
($s eq 'v'){$s++}$pos=$s;if ($qv){$$rv->{qv}=$qv}if 
($alpha){$$rv->{alpha}=$alpha}if (!$qv && $width < 
3){$$rv->{width}=$width}while (isDIGIT($pos)|| $pos eq '_'){$pos++}if 
(!isALPHA($pos)){my$rev;for (;;){$rev=0;{my$end=$pos;my$mult=1;my$orev;if (!$qv 
&& $s > $start && $saw_decimal==1){$mul
 t *= 100;while ($s < $end){next if$s eq '_';$orev=$rev;$rev += $s * 
$mult;$mult /= 10;if ((abs($orev)> abs($rev))|| (abs($rev)> 
$VERSION_MAX)){warn("Integer overflow in version %d",$VERSION_MAX);$s=$end - 
1;$rev=$VERSION_MAX;$vinf=1}$s++;if ($s eq '_'){$s++}}}else {while (--$end >= 
$s){next if$end eq '_';$orev=$rev;$rev += $end * $mult;$mult *= 10;if 
((abs($orev)> abs($rev))|| (abs($rev)> $VERSION_MAX)){warn("Integer overflow in 
version");$end=$s - 1;$rev=$VERSION_MAX;$vinf=1}}}}push@av,$rev;if 
($vinf){$s=$last;last}elsif ($pos eq '.'){$s=++$pos}elsif ($pos eq '_' && 
isDIGIT($pos+1)){$s=++$pos}elsif ($pos eq ',' && 
isDIGIT($pos+1)){$s=++$pos}elsif (isDIGIT($pos)){$s=$pos}else {$s=$pos;last}if 
($qv){while (isDIGIT($pos)|| $pos eq '_'){$pos++}}else {my$digits=0;while 
((isDIGIT($pos)|| $pos eq '_')&& $digits < 3){if ($pos ne 
'_'){$digits++}$pos++}}}}if ($qv){my$len=$#av;$len=2 - $len;while ($len-- > 
0){push@av,0}}if ($vinf){$$rv->{original}="v.Inf";$$rv->{vinf}=1}elsif ($s > 
$start){$$
 rv->{original}=$start->currstr($s);if ($qv && $saw_decimal==1 && $start ne 
'v'){$$rv->{original}='v' .$$rv->{original}}}else 
{$$rv->{original}='0';push(@av,0)}$$rv->{version}=\@av;if ($s eq 'undef'){$s += 
5}return$s}sub new {my$class=shift;unless (defined$class or $#_ > 1){require 
Carp;Carp::croak('Usage: version::new(class, version)')}my$self=bless ({},ref 
($class)|| $class);my$qv=FALSE;if ($#_==1){$qv=TRUE}my$value=pop;if 
(ref($value)&& 
eval('$value->isa("version")')){$self->{version}=[@{$value->{version}}];$self->{qv}=1
 if$value->{qv};$self->{alpha}=1 
if$value->{alpha};$self->{original}=''.$value->{original};return$self}if (not 
defined$value or $value =~ /^undef$/){push 
@{$self->{version}},0;$self->{original}="0";return ($self)}if (ref($value)=~ 
m/ARRAY|HASH/){require Carp;Carp::croak("Invalid version format (non-numeric 
data)")}$value=_un_vstring($value);if ($Config{d_setlocale}){use POSIX 
qw/locale_h/;use 
if$Config{d_setlocale},'locale';my$currlocale=setlocale(LC_ALL);if (local
 econv()->{decimal_point}eq ','){$value =~ tr/,/./}}if ($value =~ 
/\d+.?\d*e[-+]?\d+/){$value=sprintf("%.9f",$value);$value =~ 
s/(0+)$//}my$s=scan_version($value,\$self,$qv);if ($s){warn(sprintf "Version 
string '%s' contains invalid data; " ."ignoring: '%s'",$value,$s)}return 
($self)}*parse=\&new;sub numify {my ($self)=@_;unless (_verify($self)){require 
Carp;Carp::croak("Invalid version object")}my$alpha=$self->{alpha}|| 
"";my$len=$#{$self->{version}};my$digit=$self->{version}[0];my$string=sprintf("%d.",$digit);if
 ($alpha and 
warnings::enabled()){warnings::warn($WARN_CATEGORY,'alpha->numify() is 
lossy')}for (my$i=1 ;$i <= $len ;$i++ ){$digit=$self->{version}[$i];$string .= 
sprintf("%03d",$digit)}if ($len==0){$string .= sprintf("000")}return$string}sub 
normal {my ($self)=@_;unless (_verify($self)){require Carp;Carp::croak("Invalid 
version 
object")}my$len=$#{$self->{version}};my$digit=$self->{version}[0];my$string=sprintf("v%d",$digit);for
 (my$i=1 ;$i <= $len ;$i++ ){$digit=$self->{ver
 sion}[$i];$string .= sprintf(".%d",$digit)}if ($len <= 2){for ($len=2 - 
$len;$len!=0;$len-- ){$string .= sprintf(".%0d",0)}}return$string}sub stringify 
{my ($self)=@_;unless (_verify($self)){require Carp;Carp::croak("Invalid 
version object")}return exists$self->{original}? $self->{original}: 
exists$self->{qv}? $self->normal : $self->numify}sub vcmp {my 
($left,$right,$swap)=@_;die "Usage: version::vcmp(lobj, robj, ...)" if @_ < 
2;my$class=ref($left);unless 
(UNIVERSAL::isa($right,$class)){$right=$class->new($right)}if 
($swap){($left,$right)=($right,$left)}unless (_verify($left)){require 
Carp;Carp::croak("Invalid version object")}unless (_verify($right)){require 
Carp;Carp::croak("Invalid version 
format")}my$l=$#{$left->{version}};my$r=$#{$right->{version}};my$m=$l < $r ? $l 
: 
$r;my$lalpha=$left->is_alpha;my$ralpha=$right->is_alpha;my$retval=0;my$i=0;while
 ($i <= $m && $retval==0){$retval=$left->{version}[$i]<=> 
$right->{version}[$i];$i++}if ($retval==0 && $l!=$r){if ($l < $r){while ($i
  <= $r && $retval==0){if ($right->{version}[$i]!=0){$retval=-1}$i++}}else 
{while ($i <= $l && $retval==0){if 
($left->{version}[$i]!=0){$retval=+1}$i++}}}return$retval}sub vbool {my 
($self)=@_;return vcmp($self,$self->new("0"),1)}sub vnoop {require 
Carp;Carp::croak("operation not supported with version object")}sub is_alpha 
{my ($self)=@_;return (exists$self->{alpha})}sub qv 
{my$value=shift;my$class=$CLASS;if (@_){$class=ref($value)|| 
$value;$value=shift}$value=_un_vstring($value);$value='v'.$value unless$value 
=~ /(^v|\d+\.\d+\.\d)/;my$obj=$CLASS->new($value);return 
bless$obj,$class}*declare=\&qv;sub is_qv {my ($self)=@_;return 
(exists$self->{qv})}sub _verify {my ($self)=@_;if (ref($self)&& eval 
{exists$self->{version}}&& ref($self->{version})eq 'ARRAY'){return 1}else 
{return 0}}sub _is_non_alphanumeric {my$s=shift;$s=new charstar$s;while 
($s){return 0 if isSPACE($s);return 1 unless (isALPHA($s)|| isDIGIT($s)|| $s =~ 
/[.-]/);$s++}return 0}sub _un_vstring {my$value=shift;if (length($
 value)>= 1 && $value !~ /[,._]/ && _is_non_alphanumeric($value)){my$tvalue;if 
($] >= 5.008_001){$tvalue=_find_magic_vstring($value);$value=$tvalue if 
length$tvalue}elsif ($] >= 5.006_000){$tvalue=sprintf("v%vd",$value);if 
($tvalue =~ /^v\d+(\.\d+)*$/){$value=$tvalue}}}return$value}sub 
_find_magic_vstring {my$value=shift;my$tvalue='';require 
B;my$sv=B::svref_2object(\$value);my$magic=ref($sv)eq 'B::PVMG' ? $sv->MAGIC : 
undef;while ($magic){if ($magic->TYPE eq 'V'){$tvalue=$magic->PTR;$tvalue =~ 
s/^v?(.+)$/v$1/;last}else {$magic=$magic->MOREMAGIC}}$tvalue =~ 
tr/_//d;return$tvalue}sub _VERSION {my ($obj,$req)=@_;my$class=ref($obj)|| 
$obj;no strict 'refs';if (exists$INC{"$class.pm"}and not %{"$class\::"}and $] 
>= 5.008){require Carp;Carp::croak("$class defines neither package nor VERSION" 
."--version check failed")}my$version=eval "\$$class\::VERSION";if 
(defined$version){local $^W if $] <= 
5.008;$version=version::vpp->new($version)}if (defined$req){unless 
(defined$version){require Carp
 ;my$msg=$] < 5.006 ? "$class version $req required--this is only version " : 
"$class does not define \$$class\::VERSION" ."--version check failed";if 
($ENV{VERSION_DEBUG}){Carp::confess($msg)}else 
{Carp::croak($msg)}}$req=version::vpp->new($req);if ($req > $version){require 
Carp;if ($req->is_qv){Carp::croak(sprintf ("%s version %s required--"."this is 
only version %s",$class,$req->normal,$version->normal))}else 
{Carp::croak(sprintf ("%s version %s required--"."this is only version 
%s",$class,$req->stringify,$version->stringify))}}}return defined$version ? 
$version->stringify : undef}1;
 VERSION_VPP
 
 s/^  //mg for values %fatpacked;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/App-cpanminus-1.7047/lib/App/cpanminus/fatscript.pm 
new/App-cpanminus-1.7048/lib/App/cpanminus/fatscript.pm
--- old/App-cpanminus-1.7047/lib/App/cpanminus/fatscript.pm     2023-07-30 
07:59:23.000000000 +0200
+++ new/App-cpanminus-1.7048/lib/App/cpanminus/fatscript.pm     2024-10-29 
19:48:26.000000000 +0100
@@ -22,7 +22,7 @@
 
 $fatpacked{"App/cpanminus.pm"} = '#line '.(1+__LINE__).' 
"'.__FILE__."\"\n".<<'APP_CPANMINUS';
   package App::cpanminus;
-  our $VERSION = "1.7047";
+  our $VERSION = "1.7048";
   
   =encoding utf8
   
@@ -23329,10 +23329,9 @@
       warnings::register_categories(qw/version/);
   }
   
-  use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
-  
-  $VERSION = 0.9912;
-  $CLASS = 'version';
+  our $VERSION = 0.9929;
+  our $CLASS = 'version';
+  our (@ISA, $STRICT, $LAX);
   
   # !!!!Delete this next block completely when adding to Perl core!!!!
   {
@@ -23354,6 +23353,7 @@
            *version::stringify = \&version::vpp::stringify;
            *{'version::(""'} = \&version::vpp::stringify;
            *{'version::(<=>'} = \&version::vpp::vcmp;
+           *{'version::(cmp'} = \&version::vpp::vcmp;
            *version::parse = \&version::vpp::parse;
        }
       }
@@ -23372,6 +23372,7 @@
            *version::stringify = \&version::vxs::stringify;
            *{'version::(""'} = \&version::vxs::stringify;
            *{'version::(<=>'} = \&version::vxs::VCMP;
+           *{'version::(cmp'} = \&version::vxs::VCMP;
            *version::parse = \&version::vxs::parse;
        }
       }
@@ -23382,7 +23383,11 @@
   *version::is_lax = \&version::regex::is_lax;
   *version::is_strict = \&version::regex::is_strict;
   *LAX = \$version::regex::LAX;
+  *LAX_DECIMAL_VERSION = \$version::regex::LAX_DECIMAL_VERSION;
+  *LAX_DOTTED_DECIMAL_VERSION = \$version::regex::LAX_DOTTED_DECIMAL_VERSION;
   *STRICT = \$version::regex::STRICT;
+  *STRICT_DECIMAL_VERSION = \$version::regex::STRICT_DECIMAL_VERSION;
+  *STRICT_DOTTED_DECIMAL_VERSION = 
\$version::regex::STRICT_DOTTED_DECIMAL_VERSION;
   
   sub import {
       no strict 'refs';
@@ -23451,9 +23456,7 @@
   
   use strict;
   
-  use vars qw($VERSION $CLASS $STRICT $LAX);
-  
-  $VERSION = 0.9912;
+  our $VERSION = 0.9929;
   
   #--------------------------------------------------------------------------#
   # Version regexp components
@@ -23506,19 +23509,19 @@
   
   # Strict decimal version number.
   
-  my $STRICT_DECIMAL_VERSION =
+  our $STRICT_DECIMAL_VERSION =
       qr/ $STRICT_INTEGER_PART $FRACTION_PART? /x;
   
   # Strict dotted-decimal version number.  Must have both leading "v" and
   # at least three parts, to avoid confusion with decimal syntax.
   
-  my $STRICT_DOTTED_DECIMAL_VERSION =
+  our $STRICT_DOTTED_DECIMAL_VERSION =
       qr/ v $STRICT_INTEGER_PART $STRICT_DOTTED_DECIMAL_PART{2,} /x;
   
   # Complete strict version number syntax -- should generally be used
   # anchored: qr/ \A $STRICT \z /x
   
-  $STRICT =
+  our $STRICT =
       qr/ $STRICT_DECIMAL_VERSION | $STRICT_DOTTED_DECIMAL_VERSION /x;
   
   #--------------------------------------------------------------------------#
@@ -23529,8 +23532,8 @@
   # allowing an alpha suffix or allowing a leading or trailing
   # decimal-point
   
-  my $LAX_DECIMAL_VERSION =
-      qr/ $LAX_INTEGER_PART (?: \. | $FRACTION_PART $LAX_ALPHA_PART? )?
+  our $LAX_DECIMAL_VERSION =
+      qr/ $LAX_INTEGER_PART (?: $FRACTION_PART | \. )? $LAX_ALPHA_PART?
        |
        $FRACTION_PART $LAX_ALPHA_PART?
       /x;
@@ -23541,7 +23544,7 @@
   # enough, without the leading "v", Perl takes .1.2 to mean v0.1.2,
   # so when there is no "v", the leading part is optional
   
-  my $LAX_DOTTED_DECIMAL_VERSION =
+  our $LAX_DOTTED_DECIMAL_VERSION =
       qr/
        v $LAX_INTEGER_PART (?: $LAX_DOTTED_DECIMAL_PART+ $LAX_ALPHA_PART? )?
        |
@@ -23554,8 +23557,8 @@
   # The string 'undef' is a special case to make for easier handling
   # of return values from ExtUtils::MM->parse_version
   
-  $LAX =
-      qr/ undef | $LAX_DECIMAL_VERSION | $LAX_DOTTED_DECIMAL_VERSION /x;
+  our $LAX =
+      qr/ undef | $LAX_DOTTED_DECIMAL_VERSION | $LAX_DECIMAL_VERSION /x;
   
   #--------------------------------------------------------------------------#
   
@@ -23691,9 +23694,11 @@
   use warnings::register;
   
   use Config;
-  use vars qw($VERSION $CLASS @ISA $LAX $STRICT $WARN_CATEGORY);
-  $VERSION = 0.9912;
-  $CLASS = 'version::vpp';
+  
+  our $VERSION = 0.9929;
+  our $CLASS = 'version::vpp';
+  our ($LAX, $STRICT, $WARN_CATEGORY);
+  
   if ($] > 5.015) {
       warnings::register_categories(qw/version/);
       $WARN_CATEGORY = 'version';
@@ -24069,7 +24074,7 @@
        $$rv->{width} = $width;
       }
   
-      while (isDIGIT($pos)) {
+      while (isDIGIT($pos) || $pos eq '_') {
        $pos++;
       }
       if (!isALPHA($pos)) {
@@ -24090,6 +24095,7 @@
                if ( !$qv && $s > $start && $saw_decimal == 1 ) {
                    $mult *= 100;
                    while ( $s < $end ) {
+                       next if $s eq '_';
                        $orev = $rev;
                        $rev += $s * $mult;
                        $mult /= 10;
@@ -24109,6 +24115,7 @@
                }
                else {
                    while (--$end >= $s) {
+                       next if $end eq '_';
                        $orev = $rev;
                        $rev += $end * $mult;
                        $mult *= 10;
@@ -24130,14 +24137,7 @@
                last;
            }
            elsif ( $pos eq '.' ) {
-               $pos++;
-               if ($qv) {
-                   # skip leading zeros
-                   while ($pos eq '0') {
-                       $pos++;
-                   }
-               }
-               $s = $pos;
+               $s = ++$pos;
            }
            elsif ( $pos eq '_' && isDIGIT($pos+1) ) {
                $s = ++$pos;
@@ -24153,7 +24153,7 @@
                last;
            }
            if ( $qv ) {
-               while ( isDIGIT($pos) ) {
+               while ( isDIGIT($pos) || $pos eq '_') {
                    $pos++;
                }
            }
@@ -24273,7 +24273,7 @@
       my $s = scan_version($value, \$self, $qv);
   
       if ($s) { # must be something left over
-       warn("Version string '%s' contains invalid data; "
+       warn(sprintf "Version string '%s' contains invalid data; "
                   ."ignoring: '%s'", $value, $s);
       }
   
@@ -24288,7 +24288,6 @@
        require Carp;
        Carp::croak("Invalid version object");
       }
-      my $width = $self->{width} || 3;
       my $alpha = $self->{alpha} || "";
       my $len = $#{$self->{version}};
       my $digit = $self->{version}[0];
@@ -24298,28 +24297,12 @@
        warnings::warn($WARN_CATEGORY, 'alpha->numify() is lossy');
       }
   
-      for ( my $i = 1 ; $i < $len ; $i++ ) {
+      for ( my $i = 1 ; $i <= $len ; $i++ ) {
        $digit = $self->{version}[$i];
-       if ( $width < 3 ) {
-           my $denom = 10**(3-$width);
-           my $quot = int($digit/$denom);
-           my $rem = $digit - ($quot * $denom);
-           $string .= sprintf("%0".$width."d_%d", $quot, $rem);
-       }
-       else {
-           $string .= sprintf("%03d", $digit);
-       }
+       $string .= sprintf("%03d", $digit);
       }
   
-      if ( $len > 0 ) {
-       $digit = $self->{version}[$len];
-       if ( $alpha && $width == 3 ) {
-           $string .= "_";
-       }
-       $string .= sprintf("%0".$width."d", $digit);
-      }
-      else # $len = 0
-      {
+      if ( $len == 0 ) {
        $string .= sprintf("000");
       }
   
@@ -24332,28 +24315,16 @@
        require Carp;
        Carp::croak("Invalid version object");
       }
-      my $alpha = $self->{alpha} || "";
-      my $qv = $self->{qv} || "";
   
       my $len = $#{$self->{version}};
       my $digit = $self->{version}[0];
       my $string = sprintf("v%d", $digit );
   
-      for ( my $i = 1 ; $i < $len ; $i++ ) {
+      for ( my $i = 1 ; $i <= $len ; $i++ ) {
        $digit = $self->{version}[$i];
        $string .= sprintf(".%d", $digit);
       }
   
-      if ( $len > 0 ) {
-       $digit = $self->{version}[$len];
-       if ( $alpha ) {
-           $string .= sprintf("_%0d", $digit);
-       }
-       else {
-           $string .= sprintf(".%0d", $digit);
-       }
-      }
-  
       if ( $len <= 2 ) {
        for ( $len = 2 - $len; $len != 0; $len-- ) {
            $string .= sprintf(".%0d", 0);
@@ -24377,8 +24348,8 @@
   }
   
   sub vcmp {
-      require UNIVERSAL;
       my ($left,$right,$swap) = @_;
+      die "Usage: version::vcmp(lobj, robj, ...)" if @_ < 2;
       my $class = ref($left);
       unless ( UNIVERSAL::isa($right, $class) ) {
        $right = $class->new($right);
@@ -24407,20 +24378,6 @@
        $i++;
       }
   
-      # tiebreaker for alpha with identical terms
-      if ( $retval == 0
-       && $l == $r
-       && $left->{version}[$m] == $right->{version}[$m]
-       && ( $lalpha || $ralpha ) ) {
-  
-       if ( $lalpha && !$ralpha ) {
-           $retval = -1;
-       }
-       elsif ( $ralpha && !$lalpha) {
-           $retval = +1;
-       }
-      }
-  
       # possible match except for trailing 0's
       if ( $retval == 0 && $l != $r ) {
        if ( $l < $r ) {
@@ -24542,6 +24499,7 @@
            $magic = $magic->MOREMAGIC;
        }
       }
+      $tvalue =~ tr/_//d;
       return $tvalue;
   }
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/App-cpanminus-1.7047/lib/App/cpanminus.pm 
new/App-cpanminus-1.7048/lib/App/cpanminus.pm
--- old/App-cpanminus-1.7047/lib/App/cpanminus.pm       2023-07-30 
07:59:23.000000000 +0200
+++ new/App-cpanminus-1.7048/lib/App/cpanminus.pm       2024-10-29 
19:48:26.000000000 +0100
@@ -1,5 +1,5 @@
 package App::cpanminus;
-our $VERSION = "1.7047";
+our $VERSION = "1.7048";
 
 =encoding utf8
 

Reply via email to