diff options
author | gregor herrmann <gregoa@debian.org> | 2022-04-10 16:41:00 +0200 |
---|---|---|
committer | gregor herrmann <gregoa@debian.org> | 2022-04-10 16:41:00 +0200 |
commit | 5985a7f800a427906363b7929e9e4fac1026fc22 (patch) | |
tree | a09381330b08a519ef8c4ee433c577a621e0bf2a |
Import original source of Parse-Distname 0.05
-rw-r--r-- | Changes | 17 | ||||
-rw-r--r-- | LICENSE | 380 | ||||
-rw-r--r-- | MANIFEST | 14 | ||||
-rw-r--r-- | META.json | 58 | ||||
-rw-r--r-- | META.yml | 30 | ||||
-rw-r--r-- | Makefile.PL | 18 | ||||
-rw-r--r-- | README | 20 | ||||
-rw-r--r-- | cpanfile | 8 | ||||
-rw-r--r-- | lib/Parse/Distname.pm | 406 | ||||
-rw-r--r-- | t/00_load.t | 5 | ||||
-rw-r--r-- | t/basic.t | 81 | ||||
-rw-r--r-- | t/compat/ext.t | 584 | ||||
-rw-r--r-- | t/compat/path.t | 299 | ||||
-rw-r--r-- | xt/walk_through.t | 2931 |
14 files changed, 4851 insertions, 0 deletions
@@ -0,0 +1,17 @@ +Revision history for Parse-Distname + +0.05 2019/09/29 + - fixed is_perl6 + +0.04 2019/08/09 + - fixed a case that contains SSL3 + +0.03 2018/11/20 + - fixed to return early correctly + +0.02 2018/11/15 + - renamed two hash keys (dist/distv => name/name_and_version) + - fixed cpan_path not to have a needless slash + +0.01 2018/11/15 + - initial release @@ -0,0 +1,380 @@ +This software is copyright (c) 2018 by Kenichi Ishigaki. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +Terms of the Perl programming language system itself + +a) the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any + later version, or +b) the "Artistic License" + +--- The GNU General Public License, Version 1, February 1989 --- + +This software is Copyright (c) 2018 by Kenichi Ishigaki. + +This is free software, licensed under: + + The GNU General Public License, Version 1, February 1989 + + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! + + +--- The Artistic License 1.0 --- + +This software is Copyright (c) 2018 by Kenichi Ishigaki. + +This is free software, licensed under: + + The Artistic License 1.0 + +The Artistic License + +Preamble + +The intent of this document is to state the conditions under which a Package +may be copied, such that the Copyright Holder maintains some semblance of +artistic control over the development of the package, while giving the users of +the package the right to use and distribute the Package in a more-or-less +customary fashion, plus the right to make reasonable modifications. + +Definitions: + + - "Package" refers to the collection of files distributed by the Copyright + Holder, and derivatives of that collection of files created through + textual modification. + - "Standard Version" refers to such a Package if it has not been modified, + or has been modified in accordance with the wishes of the Copyright + Holder. + - "Copyright Holder" is whoever is named in the copyright or copyrights for + the package. + - "You" is you, if you're thinking about copying or distributing this Package. + - "Reasonable copying fee" is whatever you can justify on the basis of media + cost, duplication charges, time of people involved, and so on. (You will + not be required to justify it to the Copyright Holder, but only to the + computing community at large as a market that must bear the fee.) + - "Freely Available" means that no fee is charged for the item itself, though + there may be fees involved in handling the item. It also means that + recipients of the item may redistribute it under the same conditions they + received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications derived +from the Public Domain or from the Copyright Holder. A Package modified in such +a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided that +you insert a prominent notice in each changed file stating how and when you +changed that file, and provided that you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or an + equivalent medium, or placing the modifications on a major archive site + such as ftp.uu.net, or by allowing the Copyright Holder to include your + modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict with + standard executables, which must also be provided, and provide a separate + manual page for each non-standard executable that clearly documents how it + differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or executable +form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where to + get the Standard Version. + + b) accompany the distribution with the machine-readable source of the Package + with your modifications. + + c) accompany any non-standard executables with their corresponding Standard + Version executables, giving the non-standard executables non-standard + names, and clearly documenting the differences in manual pages (or + equivalent), together with instructions on where to get the Standard + Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this Package. You +may not charge a fee for this Package itself. However, you may distribute this +Package in aggregate with other (possibly commercial) programs as part of a +larger (possibly commercial) software distribution provided that you do not +advertise this Package as a product of your own. + +6. The scripts and library files supplied as input to or produced as output +from the programs of this Package do not automatically fall under the copyright +of this Package, but belong to whomever generated them, and may be sold +commercially, and may be aggregated with this Package. + +7. C or perl subroutines supplied by you and linked into this Package shall not +be considered part of this Package. + +8. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +The End + + diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..d6545c6 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,14 @@ +Changes +cpanfile +lib/Parse/Distname.pm +LICENSE +Makefile.PL +MANIFEST This list of files +README +t/00_load.t +t/basic.t +t/compat/ext.t +t/compat/path.t +xt/walk_through.t +META.yml Module YAML meta-data (added by MakeMaker) +META.json Module JSON meta-data (added by MakeMaker) diff --git a/META.json b/META.json new file mode 100644 index 0000000..a7828ab --- /dev/null +++ b/META.json @@ -0,0 +1,58 @@ +{ + "abstract" : "parse a distribution name", + "author" : [ + "Kenichi Ishigaki <ishigaki@cpan.org>" + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : 2 + }, + "name" : "Parse-Distname", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker::CPANfile" : "0.08" + } + }, + "runtime" : { + "requires" : { + "Exporter" : "5.57" + } + }, + "test" : { + "requires" : { + "JSON::PP" : "0", + "Test::Differences" : "0", + "Test::More" : "0.88", + "Test::UseAllModules" : "0.17" + } + } + }, + "release_status" : "stable", + "resources" : { + "bugtracker" : { + "web" : "https://github.com/charsbar/Parse-Distname/issues" + }, + "repository" : { + "url" : "https://github.com/charsbar/Parse-Distname" + } + }, + "version" : "0.05", + "x_serialization_backend" : "JSON::PP version 4.00" +} diff --git a/META.yml b/META.yml new file mode 100644 index 0000000..f6e71cd --- /dev/null +++ b/META.yml @@ -0,0 +1,30 @@ +--- +abstract: 'parse a distribution name' +author: + - 'Kenichi Ishigaki <ishigaki@cpan.org>' +build_requires: + ExtUtils::MakeMaker: '0' + JSON::PP: '0' + Test::Differences: '0' + Test::More: '0.88' + Test::UseAllModules: '0.17' +configure_requires: + ExtUtils::MakeMaker::CPANfile: '0.08' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: Parse-Distname +no_index: + directory: + - t + - inc +requires: + Exporter: '5.57' +resources: + bugtracker: https://github.com/charsbar/Parse-Distname/issues + repository: https://github.com/charsbar/Parse-Distname +version: '0.05' +x_serialization_backend: 'CPAN::Meta::YAML version 0.012' diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..b9a9fe7 --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,18 @@ +use strict; +use warnings; +use ExtUtils::MakeMaker::CPANfile; + +WriteMakefile( + NAME => 'Parse::Distname', + AUTHOR => 'Kenichi Ishigaki <ishigaki@cpan.org>', + VERSION_FROM => 'lib/Parse/Distname.pm', + ABSTRACT_FROM => 'lib/Parse/Distname.pm', + LICENSE => 'perl', + test => {TESTS => 't/*.t t/*/*.t'}, + META_MERGE => { + resources => { + repository => 'https://github.com/charsbar/Parse-Distname', + bugtracker => 'https://github.com/charsbar/Parse-Distname/issues', + }, + }, +); @@ -0,0 +1,20 @@ +Parse-Distname + +INSTALLATION + +To install this module, run the following commands: + + perl Makefile.PL + make + make test + make install + +COPYRIGHT AND LICENSE + +Copyright (C) 2018 Kenichi Ishigaki + +This software is copyright (c) 2018 by Kenichi Ishigaki. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + diff --git a/cpanfile b/cpanfile new file mode 100644 index 0000000..6f72d7f --- /dev/null +++ b/cpanfile @@ -0,0 +1,8 @@ +requires 'Exporter' => '5.57'; # for import + +on 'test' => sub { + requires 'Test::More' => '0.88'; # for done_testing + requires 'Test::UseAllModules' => '0.17'; + requires 'Test::Differences'; + requires 'JSON::PP'; +}; diff --git a/lib/Parse/Distname.pm b/lib/Parse/Distname.pm new file mode 100644 index 0000000..6965009 --- /dev/null +++ b/lib/Parse/Distname.pm @@ -0,0 +1,406 @@ +package Parse::Distname; + +use strict; +use warnings; +use Carp; +use Exporter 5.57 'import'; + +our $VERSION = '0.05'; +our @EXPORT_OK = qw/parse_distname/; + +our $SUFFRE = qr/\.(?:tgz|tbz|tar[\._-]gz|tar\.bz2|tar\.Z|zip)$/; + +sub parse_distname { + my $distname = shift; + + my %res; + + # Stringify first, in case $distname is some kind of an object + my $path = "$distname"; + $res{arg} = $path; + + # Small path normalization + $path =~ s!\\!/!g; + $path =~ s!//+!/!g; + $path =~ s!/\./!/!g; + + $path =~ s!^(.*?/)?(?:authors/)?id/!!; + + # Get pause_id + my ($pause_id, $author_dir); + + # A/AU/AUTHOR/Dist-Version.ext + if ($path =~ s!^(([A-Z])/(\2[A-Z0-9])/(\3[A-Z0-9-]{0,7})/)!!) { + $author_dir = $1; + $pause_id = $4; + } + # AUTHOR/Dist-Version.ext as a handy shortcut (esp. for testing) + elsif ($path =~ s!^([A-Z][A-Z0-9][A-Z0-9-]{0,7})/!!) { + $pause_id = $1; + $author_dir = join '/', + substr($pause_id, 0, 1), + substr($pause_id, 0, 2), + $pause_id, + ""; + } + # A little backward incompatibility here (id/A/AU/AUTHOR etc) + # but I believe nobody cares. + else { + $pause_id = ""; + + # Assume it's a local distribution + $author_dir = "L/LO/LOCAL/"; + } + $res{pause_id} = $pause_id; + $res{cpan_path} = "$author_dir$path"; + + # Now the path should be (subdir/)dist-version + if ($path =~ s!^(.+/)!!) { + $res{subdir} = $1; + + # Typical Perl6 distributions are located under Perl6/ directory + $res{perl6} = 1 if $res{subdir} =~ m!^Perl6/!; + } + + # PAUSE allows only a few extensions ($PAUSE::dist::SUFFQR + zip) + $path =~ s/($SUFFRE)//i or return; + $res{extension} = $1; + + $res{name_and_version} = $path; + + # Parse dist-version + my $info = _parse_distv($path); + $res{$_} = $info->{$_} for keys %$info; + + return \%res; +} + +sub _parse_distv { + my $distv = shift; + + my %res; + + # Remove potential -withoutworldwriteables suffix + $distv =~ s/-withoutworldwriteables$//; + + my $trial; + # Remove TRIAL (PAUSE::dist::isa_dev_version seems to be + # a little too strict) + if ($distv =~ s/([_\-])(TRIAL(?:[0-9]*|[_.\-].+))$//) { + $trial = [$1, $2]; + } + + # Remove RC for perl as well + my $rc; + if ($distv =~ /^perl/ and $distv =~ s/\-(RC[0-9]*)$//) { + $rc = $1; + } + + my $version; + # Usually a version, which starts with a number (or a 'v'-number), + # is the last part of the name. + if ($distv =~ s/\-((?:[vV][0-9]|[0-9.])[^-]*)$//) { + $version = $1; + } + # However, there may be a trailing part. + elsif ($distv =~ s/\-((?:[vV][0-9]|[0-9.])(?![A-Z]).*?)$//) { + $version = $1; + + # Special case + if ($distv eq 'perl' and $version !~ /\./) { + $distv = "$distv-$version"; + $version = undef; + } + } + + # If the name still contains a dot between numbers, + # it's probably a part of the version. + if ($distv =~ s/([_\.-]?)([vV]?[0-9]*\.[0-9]+.*)$//) { + my $separator = $1 || ''; + $version = defined $version ? "$2-$version" : $2; + $version =~ s/^\.//; + + # Special case + if ($distv =~ s/_v$//) { + $version = "v$separator$version"; + } + } + + # If we still don't have a version and the name has a tailing number + # with a small-letter prefix (other than 'v') + if (!defined $version and $distv =~ s/\-([a-z]+[0-9][0-9_]*)$//) { + $version = $1; + } + + # If we still don't have a version, and the name doesn't have a hyphen, + # and it has a tailing number... (and an occasional alpha/beta marker) + # (and the number is not a part of a few proper names) + if (!defined $version and $distv !~ /\-(?:S3|MSWin32|OS2|(?:[A-Za-z][A-Za-z0-9_]*)?SSL3)$/i and $distv =~ s/([_\.]?)([vV]?[0-9_]+[ab]?)$//) { + my $separator = $1; + $version = $2; + + # Special case + if (!$separator and $distv =~ s/_([a-z])$//) { + $version = "$1$version"; + } + } + + # Special case that should be put at the end + if (!defined $version and $distv =~ s/\-undef$//) { + $version = undef; + } + + my $dist = $distv; + + my $dev; + if ($dist eq 'perl') { + if ($version =~ /\d\.(\d+)(?:\D(\d+))?/) { + $dev = 1 if ($1 > 6 and $1 & 1) or ($2 and $2 >= 50); + } + if ($rc) { + $version = "$version-$rc"; + $dev = 1; + } + } + elsif (($version and $version =~ /\d\.\d+_\d/) or $trial) { + $dev = 1; + } + + if ($trial) { + $version = defined $version ? "$version$trial->[0]$trial->[1]" : $trial->[1]; + $dev = 1; + } + + # Normalize the Dist.pm-1.23 convention which CGI.pm and + # a few others use. + $dist =~ s/\.pm$//; + + # Remove apparent remnants that can't be a part of a package name + $dist =~ s/[\-\.]+$//; + + my $version_number; + if (defined $version) { + if ($version =~ /^([vV]?[0-9._]+)(?:\-|$)/) { + $version_number = $1; + $version_number =~ s/[\._]+$//; + } + } + + return { + name => $dist, + version => $version, + version_number => $version_number, + is_dev => $dev, + }; +} + +# for compatibility with CPAN::DistnameInfo + +sub new { + my ($class, $distname) = @_; + my $info = parse_distname($distname) || {}; + bless $info, $class; +} + +sub distname_info { + my $distname = shift; + my $info = parse_distname($distname); + @$info{qw/name version is_dev/}; +} + +sub dist { shift->{name} } +sub version { shift->{version} } +sub maturity { shift->{is_dev} ? 'developer' : 'released' } +sub filename { + my $self = shift; + join "", grep defined $_, @$self{qw/subdir name_and_version extension/}; +} +sub cpanid { shift->{pause_id} } +sub distvname { shift->{name_and_version} } +sub extension { substr(shift->{extension}, 1) } +sub pathname { shift->{arg} } + +sub properties { + my $self = shift; + my @methods = qw/ + dist version maturity filename + cpanid distvname extension pathname + /; + my %properties; + for my $method (@methods) { + $properties{$method} = $self->$method; + } + %properties; +} + +# extra accessors + +sub is_perl6 { shift->{perl6} } +sub version_number { shift->{version_number} } + +1; + +__END__ + +=encoding utf-8 + +=head1 NAME + +Parse::Distname - parse a distribution name + +=head1 SYNOPSIS + + use Parse::Distname 'parse_distname'; + my $info = parse_distname('ISHIGAKI/Parse-Distname-0.01.tar.gz'); + + # for compatibility with CPAN::DistnameInfo + my $info_obj = Parse::Distname->new('ISHIGAKI/Parse-Distname-0.01.tar.gz'); + say $info_obj->dist; # Parse-Distname + +=head1 DESCRIPTION + +Parse::Distname is yet another distribution name parser. It works +almost the same as L<CPAN::DistnameInfo>, but Parse::Distname takes +a different approach. It tries to extract a version part of a +distribution and treat the rest as a distribution name, contrary to +CPAN::DistnameInfo which tries to define a name part and treat +the rest as a version. + +Because of this difference, when Parse::Distname parses a weird +distribution name such as "AUTHOR/v1.0.tar.gz", it says the name +is empty and the version is "v1.0", while CPAN::DistnameInfo +says the name is "v" and the version is "1.0". See test files +in this distribution if you need more details. As of this writing, +Parse::Distname returns a different result for about 200+ +distributions among about 320000 BackPan distributions. + +=head1 FUNCTION + +Parse::Distname exports one function C<parse_distname> if requested. +It returns a hash reference, with the following keys as of this +writing: + +=over 4 + +=item arg + +The path you passed to the function. If what you passed is some kind +of an object (of Path::Tiny, for example), it's stringified. + +=item cpan_path + +A relative path to the distribution, whose base directory is +assumed CPAN/authors/id/. If org_path doesn't contain a pause_id, +the distribution is assumed to belong to LOCAL user. For example, + + say parse_distname('Dist-0.01.tar.gz')->{cpan_path}; + # L/LO/LOCAL/Dist-0.01.tar.gz + +If you only gives a pause_id, parent directories are supplemented. + + say parse_distname('ISHIGAKI/Dist-0.01.tar.gz')->{cpan_path}; + # I/IS/ISHIGAKI/Dist-0.01.tar.gz + +=item pause_id + +The pause_id of the distribution. Contrary to the above, this is +empty if you don't give a pause_id. + + say parse_distname('Dist-0.01.tar.gz')->{pause_id}; + # (undef, not LOCAL) + +=item subdir + +A PAUSE distribution may be put into a subdirectory under the author +directory. If the name contains such a subdirectory, it's kept here. + + say parse_distname('AUTHOR/sub/Dist-0.01.tar.gz')->{subdir}; + # sub + +Perl 6 distributions are (almost) always put under Perl6/ +subdirectory under each author's directory (with a few exceptions). + +=item name_and_version + +The name and version of the distribution, without an extension and +directory parts, which should not be empty as long as the +distribution has an extension that PAUSE accepts. + + say parse_distname('AUTHOR/sub/Dist-0.01.tar.gz')->{name_and_version}; + # Dist-0.01 + +=item name + +The name part of the distribution. This may be empty if no valid +name is found + + say parse_distname('AUTHOR/sub/Dist-0.01.tar.gz')->{name}; + # Dist + + say parse_distname('AUTHOR/v0.1.tar.gz')->{name}; + # (empty) + +=item version + +The version part of the distribution. This also may be empty, and +this may not always be a valid version, and may have a following +part such as C<-TRIAL>. + + say parse_distname('AUTHOR/Dist.tar.gz')->{version}; + # (undef) + + say parse_distname('AUTHOR/Dist-0.01-TRIAL.tar.gz')->{version}; + # 0.01-TRIAL + +=item version_number + +The first numerical part of the version. This also may be empty, and +this may not always be a valid version. + + say parse_distname('AUTHOR/Dist-0.01-TRIAL.tar.gz')->{version_number}; + # 0.01 + + say parse_distname('AUTHOR/Dist-0_0_1.tar.gz')->{version_number}; + # 0_0_1 + +=item extension + +The extension of the distribution. If no valid extension is found, +parse_distname returns false (undef). + +=item is_perl6 + +For convenience, if subdir exists and it starts with Perl6/, +this becomes true. + +=item is_dev + +If the version looks like C<\d+.\d+_\d+>, or contains C<-TRIAL>, +this becomes true. PAUSE treats such a distribution as a developer's +release and doesn't list it in its indices. + +=back + +=head1 METHODS + +For compatibility with CPAN::DistnameInfo, Parse::Distname has the +same methods/accessors, so you can use it as a drop-in replacement. + +In addition, C<is_perl6> and C<version_number> are available. + +=head1 SEE ALSO + +L<CPAN::DistnameInfo> + +=head1 AUTHOR + +Kenichi Ishigaki, E<lt>ishigaki@cpan.orgE<gt> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2018 by Kenichi Ishigaki. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut diff --git a/t/00_load.t b/t/00_load.t new file mode 100644 index 0000000..f895158 --- /dev/null +++ b/t/00_load.t @@ -0,0 +1,5 @@ +use strict; +use warnings; +use Test::UseAllModules; + +BEGIN { all_uses_ok(); } diff --git a/t/basic.t b/t/basic.t new file mode 100644 index 0000000..4c7b225 --- /dev/null +++ b/t/basic.t @@ -0,0 +1,81 @@ +use strict; +use warnings; +use Test::More; +use Test::Differences; +use Parse::Distname qw/parse_distname/; + +my $path = "CPAN/authors/id/I/IS/ISHIGAKI/Parse-Distname-0.01.tar.gz"; +my $info = parse_distname($path); + +unified_diff; + +eq_or_diff $info => +{ + arg => $path, + cpan_path => "I/IS/ISHIGAKI/Parse-Distname-0.01.tar.gz", + pause_id => "ISHIGAKI", + name => "Parse-Distname", + name_and_version => "Parse-Distname-0.01", + version => "0.01", + version_number => "0.01", + extension => ".tar.gz", + is_dev => undef, +}, "parse_distname"; + +# distname_info + +eq_or_diff [Parse::Distname::distname_info($path)] => [ + "Parse-Distname", + "0.01", + undef, +], "distname_info"; + +# accessors + + $info = Parse::Distname->new($path); +is $info->dist => "Parse-Distname", "dist"; +is $info->version => "0.01", "version"; +is $info->maturity => "released", "maturity"; +is $info->filename => "Parse-Distname-0.01.tar.gz", "filename"; +is $info->cpanid => "ISHIGAKI", "cpanid"; +is $info->distvname => "Parse-Distname-0.01", "distvname"; +is $info->extension => "tar.gz", "extension"; +is $info->pathname => $path, "pathname"; + +ok !$info->is_perl6, "is_perl6"; +is $info->version_number => "0.01", "version_number"; + +# unrelated files +ok !parse_distname("authors/id/A/AU/AUTHOR/CHECKSUMS"); +ok !parse_distname("RECENT-6h.json"); +ok !parse_distname("authors/00whois.xml"); + +my $p6path = 'CPAN/authors/id/S/SK/SKAJI/Perl6/App-Mi6-0.0.2.tar.gz'; +my $p6info = parse_distname($p6path); + +eq_or_diff $p6info => +{ + arg => $p6path, + cpan_path => "S/SK/SKAJI/Perl6/App-Mi6-0.0.2.tar.gz", + pause_id => "SKAJI", + name => "App-Mi6", + name_and_version => "App-Mi6-0.0.2", + version => "0.0.2", + version_number => "0.0.2", + extension => ".tar.gz", + is_dev => undef, + subdir => 'Perl6/', + perl6 => 1, +}, "parse_distname"; + + $p6info = Parse::Distname->new($p6path); +is $p6info->dist => "App-Mi6", "dist"; +is $p6info->version => "0.0.2", "version"; +is $p6info->maturity => "released", "maturity"; +is $p6info->filename => "Perl6/App-Mi6-0.0.2.tar.gz", "filename"; +is $p6info->cpanid => "SKAJI", "cpanid"; +is $p6info->distvname => "App-Mi6-0.0.2", "distvname"; +is $p6info->extension => "tar.gz", "extension"; +is $p6info->pathname => $p6path, "pathname"; +ok $p6info->is_perl6, "is_perl6"; +is $p6info->version_number => "0.0.2", "version_number"; + +done_testing; diff --git a/t/compat/ext.t b/t/compat/ext.t new file mode 100644 index 0000000..62fbab7 --- /dev/null +++ b/t/compat/ext.t @@ -0,0 +1,584 @@ +use strict; +use warnings; +use Test::More; +use Test::Differences; +use JSON::PP; +use Parse::Distname; + +sub encode { JSON::PP->new->canonical->pretty->encode(shift) }; + +unified_diff; + +while(<DATA>) { + chomp; + s/\s*#.+$//; + my($file,@ret) = (split(/ +/, $_))[0..3]; + $ret[2] = $ret[2] ? 'developer' : 'released'; + my $d = Parse::Distname->new($file); + my @tst = ($d->dist, $d->version, $d->maturity); + eq_or_diff(encode(\@tst), encode(\@ret), "output for $file"); +} + +done_testing; + +__DATA__ +ncheck.tar.gz ncheck +Thread_52.tar.gz Thread 52 +Thread-oct02.tar.gz Thread oct02 +TransitiveClosure-1.4.tgz TransitiveClosure 1.4 +RFC_RFC822_Address-1.5.tgz RFC_RFC822_Address 1.5 +Logger.0.34.tar.gz Logger 0.34 +libplot-perl-2.1.6.2b.tar.gz libplot-perl 2.1.6.2b +finance-quote_0.18.tar.gz finance-quote 0.18 +finance-quote_1.02.tar.gz finance-quote 1.02 +finance-quote_0.17.tar.gz finance-quote 0.17 +Win32-GuiTest-0.6.zip Win32-GuiTest 0.6 +Win32-GuiTest-0.4.zip Win32-GuiTest 0.4 +Win32-GuiTest-1.3.zip Win32-GuiTest 1.3 +libwin32-0.16.zip libwin32 0.16 +VMS-Monitor-0_06.zip VMS-Monitor 0_06 +NISPlus-0.06-alpha.tar.gz NISPlus 0.06-alpha +NISPlus-0.04-alpha.tar.gz NISPlus 0.04-alpha +DelimMatch-1.06a.tar.gz DelimMatch 1.06a +Convert-Scalar-0.1e.tar.gz Convert-Scalar 0.1e +Win32-Printer-0.6.4.zip Win32-Printer 0.6.4 +variable-1.1.tgz variable 1.1 +glist-0.9.17a10.tar.gz glist 0.9.17a10 +JBrowseEntry.4.22.tar.gz JBrowseEntry 4.22 +cshar-3.0@15.tar.gz cshar 3.0@15 +Acme-POE-Knee-1.00.zip Acme-POE-Knee 1.00 +Acme-POE-Knee-1.02.zip Acme-POE-Knee 1.02 +Acme-POE-Knee-1.10.zip Acme-POE-Knee 1.10 +ControlX10-CM17.0.060.tar.gz ControlX10-CM 17.0.060 +VMS-User-0_01.zip VMS-User 0_01 +Win32-SystemInfo-0.05.zip Win32-SystemInfo 0.05 +Win32-SystemInfo-0.06.zip Win32-SystemInfo 0.06 +Win32-SystemInfo-0.02.zip Win32-SystemInfo 0.02 +curses_widgets_1_1.tar.gz curses_widgets 1_1 +Tk-CheckbuttonGroup-0.2.1.tgz Tk-CheckbuttonGroup 0.2.1 +NewsClipper-1.30-OpenSource.tar.gz NewsClipper 1.30-OpenSource +NewsClipper-1.32-OpenSource.tar.gz NewsClipper 1.32-OpenSource +NewsClipper-1.17-os.tar.gz NewsClipper 1.17-os +DateTime-Format-DBI-0.03a.tar.gz DateTime-Format-DBI 0.03a +Win32-MIDI-0_2.zip Win32-MIDI 0_2 +Ananke-Utils-1.0.2.tgz Ananke-Utils 1.0.2 +AI-ExpertSystem-Simple.1.2.tgz AI-ExpertSystem-Simple 1.2 +AI-ExpertSystem-Simple.1.1.tgz AI-ExpertSystem-Simple 1.1 +AI-ExpertSystem-Simple.1.0.tgz AI-ExpertSystem-Simple 1.0 +MEMStats.tgz MEMStats +VMS_System-1_04.zip VMS_System 1_04 +Tie-Hash-Longest-1.0.reupload-again-because-im-stupid.tar.gz Tie-Hash-Longest 1.0.reupload-again-because-im-stupid +DBI_Talk5_2001.tar.gz DBI_Talk 5_2001 +DBI_Talk1_1997.tar.gz DBI_Talk 1_1997 +DBI_Talk4_2000.tar.gz DBI_Talk 4_2000 +POE-Component-IRC-1.0b.tar.gz POE-Component-IRC 1.0b +Orac-1.2.0.tgz Orac 1.2.0 +ThousandWords_0.05.tar.gz ThousandWords 0.05 +Module-MakeDist-1.04.tgz Module-MakeDist 1.04 +Module-MakeDist-1.05.tgz Module-MakeDist 1.05 +AxKit-XSP-Swish-0.2a.tar.gz AxKit-XSP-Swish 0.2a +jp_beta_1.tar.gz jp_beta 1 +DBIx-CodeKit-1.07.tgz DBIx-CodeKit 1.07 +PDF-API2-0.3r74.tar.gz PDF-API2 0.3r74 +DBIx-HTML-LinkedMenus-1.05.tgz DBIx-HTML-LinkedMenus 1.05 +FileKGlob.tar.gz FileKGlob +DBD-NET-0.1.tgz DBD-NET 0.1 +smime-0.7.tgz smime 0.7 +NIS-a2.tar.gz NIS a2 +HPUX-LVM_0.05.tar.gz HPUX-LVM 0.05 +HPUX-LVM_0.06.tar.gz HPUX-LVM 0.06 +Parse-FixedDelimiter-1.00.tgz Parse-FixedDelimiter 1.00 +Date-Ordinal-2.9.tgz Date-Ordinal 2.9 +Proc-ParallelLoop-0.5.tgz Proc-ParallelLoop 0.5 +SYMM_0.2.tgz SYMM 0.2 +SYMM_0.3.tgz SYMM 0.3 +CGI-AppToolkit-0.05.tgz CGI-AppToolkit 0.05 +GDGraph-Map-1.03.tgz GDGraph-Map 1.03 +GDGraph-Map-1.05.tgz GDGraph-Map 1.05 +Compress-SelfExtracting-0.03.tgz Compress-SelfExtracting 0.03 +Compress-SelfExtracting-0.04.tgz Compress-SelfExtracting 0.04 +Compress-SelfExtracting-0.01.tgz Compress-SelfExtracting 0.01 +Tivoli_0.01.tar.gz Tivoli 0.01 +Bioinf_V2.0.tar.gz Bioinf V2.0 +font_ft2_0.1.0.tgz font_ft2 0.1.0 # FIXED +Tie-Scalar-RestrictUpdates-0.0.1b.tar.gz Tie-Scalar-RestrictUpdates 0.0.1b +Language-FP-0.03.tgz Language-FP 0.03 +Language-FP-0.02.tgz Language-FP 0.02 +Language-FP-0.01.tgz Language-FP 0.01 +Attribute-Curried-0.01.tgz Attribute-Curried 0.01 +perl-c++-api.0.0_3.tar.gz perl-c++-api 0.0_3 1 +Perl6-Interpolators-0.03.zip Perl6-Interpolators 0.03 +Chess-PGN-Parse-0.10.tgz Chess-PGN-Parse 0.10 +perlmenu.v4.0.tar.gz perlmenu v4.0 +Class-Tree-1.21.tgz Class-Tree 1.21 +Class-Tree-1.23.tgz Class-Tree 1.23 +MIME-tools-5.411a.tar.gz MIME-tools 5.411a +dbd_rdb-1_16.tgz dbd_rdb 1_16 +Apache-CVS-0.01.tgz Apache-CVS 0.01 +File-Remove0.20.tar.gz File-Remove 0.20 +Convert-Ethiopic-0.20-210102.tar.gz Convert-Ethiopic 0.20-210102 +GPIB_0_30.tgz GPIB 0_30 +tkmult_1.0.0.tgz tkmult 1.0.0 +tkmult_1.0.1.tgz tkmult 1.0.1 +WWW-Search-NorthernLight.-2.06.tar.gz WWW-Search-NorthernLight 2.06 +DBIx-HTML-ClientDB-1.03.tgz DBIx-HTML-ClientDB 1.03 +PDL-McIDAS-0.02.tgz PDL-McIDAS 0.02 +HTML-Widgets-Search-0.04.tgz HTML-Widgets-Search 0.04 +HTML-Widgets-Search-0.02.tgz HTML-Widgets-Search 0.02 +Algorithm-Loops-1.031.zip Algorithm-Loops 1.031 +Date_Maya-1.1.tgz Date_Maya 1.1 +Tie_Pick-1.1.tgz Tie_Pick 1.1 +IPTables-IPv4-0.97b.tar.gz IPTables-IPv4 0.97b +Pod-PerlPoint-0.03.tgz Pod-PerlPoint 0.03 +Pod-PerlPoint-0.02.tgz Pod-PerlPoint 0.02 +Lingua-EN-Infinitive-1.06.tgz Lingua-EN-Infinitive 1.06 +Lingua-EN-Infinitive-1.07.tgz Lingua-EN-Infinitive 1.07 +Ananke-Template-1.1.tgz Ananke-Template 1.1 +Ananke-Template-1.4.tgz Ananke-Template 1.4 +X500-DN-Parser-1.14.tgz X500-DN-Parser 1.14 +X500-DN-Parser-1.15.tgz X500-DN-Parser 1.15 +DBIx-Table2Hash-1.12.tgz DBIx-Table2Hash 1.12 +Tk-OS2src-1.03.zip Tk-OS2src 1.03 +Tk-OS2src-1.02.zip Tk-OS2src 1.02 +Tk-OS2src-1.04.zip Tk-OS2src 1.04 +English-Reference-0.03.tgz English-Reference 0.03 +Apache-SecSess-0.09.tgz Apache-SecSess 0.09 +Data-FixedFormat-0.01.zip Data-FixedFormat 0.01 +XML-Xerces-1.7.0-1.tar.gz XML-Xerces 1.7.0-1 +XML-Xerces-2.3.0-1.tar.gz XML-Xerces 2.3.0-1 +IO_CSVHeaderFile_0.02.tgz IO_CSVHeaderFile 0.02 +Chess-PGN-Filter-0.06.zip Chess-PGN-Filter 0.06 +Chess-PGN-Filter-0.09.zip Chess-PGN-Filter 0.09 +Chess-PGN-Filter-0.05.zip Chess-PGN-Filter 0.05 +VMS-Queue-0_54.zip VMS-Queue 0_54 +Tree.tar.gz Tree +Chess-PGN-Moves-0.02.zip Chess-PGN-Moves 0.02 +Chess-PGN-Moves-0.01.zip Chess-PGN-Moves 0.01 +Chess-PGN-Moves-0.03.zip Chess-PGN-Moves 0.03 +HTML-Widgets-Menu-0.2.tgz HTML-Widgets-Menu 0.2 +HTML-Widgets-Menu-0.03.tgz HTML-Widgets-Menu 0.03 +TXTCOD-4.7.1-eng.tar.gz TXTCOD 4.7.1-eng +Smil_0_70.tgz Smil 0_70 +qtpl_perl-0.5.tgz qtpl_perl 0.5 +DateTime-Format-Baby-0.14.tgz DateTime-Format-Baby 0.14 +DateTime-Format-Baby-0.15.2.tgz DateTime-Format-Baby 0.15.2 +XML-DB.tar.gz XML-DB +OS2-FTP-0_10.zip OS2-FTP 0_10 +RcReader-0.5.9b.tar.gz RcReader 0.5.9b +Text-Format0.52+NWrap0.11.tar.gz Text-Format 0.52+NWrap0.11 +webcam-man.1.0.tgz webcam-man 1.0 +Petal-0.4.tgz Petal 0.4 +Mail-Box-MH-Resource-0.05.tgz Mail-Box-MH-Resource 0.05 +Win32-EventLog-Message.tar.gz Win32-EventLog-Message +Math-BaseCnv-1.0.37SLNGN.tgz Math-BaseCnv 1.0.37SLNGN +Win32-Exchange_v0.036.tar.gz Win32-Exchange v0.036 +Win32-Exchange_v0.038.tar.gz Win32-Exchange v0.038 +Win32-Exchange_v0.032.tar.gz Win32-Exchange v0.032 +Zoidberg-0.3a.tar.gz Zoidberg 0.3a +import-1_01.tgz import 1_01 +smake-1.2b1.tar.gz smake 1.2b1 +Win32-GUI-0.0.490.zip Win32-GUI 0.0.490 +sol-inst-0.90a.tar.gz sol-inst 0.90a +VMS-FileUtils_0.014.tar.gz VMS-FileUtils 0.014 +Fraction-v.53b.tar.gz Fraction v.53b +Fraction-v.51b.tar.gz Fraction v.51b +Fraction-v.4a.tar.gz Fraction v.4a +WWW-Search-EuroSeek-1.2+.tar.gz WWW-Search-EuroSeek 1.2+ +Apache-PSP-0.4.tgz Apache-PSP 0.4 +Term-Gnuplot-0.90_38b_00.tar.gz Term-Gnuplot 0.90_38b_00 1 +perlbook-5.005_02-a.tar.gz perlbook 5.005_02-a 1 +Perl6-Parameters-0.02.zip Perl6-Parameters 0.02 +Apache-ePerl-0.10b.tar.gz Apache-ePerl 0.10b +OpenCA-CRL-0.7.5a.tar.gz OpenCA-CRL 0.7.5a +OpenCA-CRL-0.6.5a.tar.gz OpenCA-CRL 0.6.5a +CGI-Explorer-2.00.tgz CGI-Explorer 2.00 +Data-JavaScript-1.08.tgz Data-JavaScript 1.08 +One_Penguin-pre2.tar.gz One_Penguin pre2 +Tiger-hash-1.0b.tar.gz Tiger-hash 1.0b +AI-NeuralNet-BackProp-0.40.zip AI-NeuralNet-BackProp 0.40 +AI-NeuralNet-BackProp-0.42.zip AI-NeuralNet-BackProp 0.42 +Data-JavaScript-LiteObject-1.03.tgz Data-JavaScript-LiteObject 1.03 +Data-JavaScript-LiteObject-1.04.tgz Data-JavaScript-LiteObject 1.04 +examples.tar.gz examples +SearchSDK-0.99b.tar.gz SearchSDK 0.99b +Win32-API-Prototype.tar.gz Win32-API-Prototype +Geography_States-1.6.tgz Geography_States 1.6 +Audio-Daemon-0.99Beta.tar.gz Audio-Daemon 0.99Beta +Tcl-b1.tar.gz Tcl b1 +Tcl-b2.tar.gz Tcl b2 +Tcl-b3.tar.gz Tcl b3 +Mmap-a2.tar.gz Mmap a2 +WWW-Search-PubMed.-1.0.tar.gz WWW-Search-PubMed 1.0 +Fame-2.0d.tar.gz Fame 2.0d +Fame-2.0c.tar.gz Fame 2.0c +Net-CDDBScan-2.0b.tar.gz Net-CDDBScan 2.0b +Lingua_EN_Numbers_Easy-1.2.tgz Lingua_EN_Numbers_Easy 1.2 +apache.authznetldap.02.tar.gz apache.authznetldap 02 # FIXED +iodbc_ext_0_1.tar.gz iodbc_ext 0_1 +Cisco-CopyConfig-1.2.tgz Cisco-CopyConfig 1.2 +End-1.2.tgz End 1.2 +ExtUtils-FakeConfig-0.05.zip ExtUtils-FakeConfig 0.05 +Data-Locations-5.2-fixed.tar.gz Data-Locations 5.2-fixed +Chart-0.99b.tar.gz Chart 0.99b +Safe-b2.tar.gz Safe b2 +rms.zip rms +Solaris-0.05a.tar.gz Solaris 0.05a +curses_forms_0_1.tar.gz curses_forms 0_1 +curses_forms_0_2a.tar.gz curses_forms 0_2a +Win32-API-0.20.zip Win32-API 0.20 +Devel-TraceLoad-0.07.zip Devel-TraceLoad 0.07 +Tk800.025.tar.gz Tk 800.025 +Tk804.025_beta1.tar.gz Tk 804.025_beta1 +Tk804.024.patches-0.1.tar.gz Tk 804.024.patches-0.1 +HTML-QuickCheck-1.0b1.tar.gz HTML-QuickCheck 1.0b1 +Lingua-LinkParser1.02.tar.gz Lingua-LinkParser 1.02 +Lingua-LinkParser1.08.tar.gz Lingua-LinkParser 1.08 +HTML-BarChart-0.1.0.tgz HTML-BarChart 0.1.0 +swig1.1p4.tar.gz swig 1.1p4 +DBIx-XML-DataLoader-1.1b.tar.gz DBIx-XML-DataLoader 1.1b +Devel-TraceSubs-0.02.zip Devel-TraceSubs 0.02 +Devel-TraceSubs-0.01.zip Devel-TraceSubs 0.01 +Glib-1.00rc1.tar.gz Glib 1.00rc1 +Sample-1.3.tgz Sample 1.3 +finance-yahooquote_0.20.tar.gz finance-yahooquote 0.20 +Win32-perl-shellext_0.02.zip Win32-perl-shellext 0.02 +htmltoc1.2.1.tar.gz htmltoc 1.2.1 +XML-Parser.2.30.tar.gz XML-Parser 2.30 +Net-Divert-0.01.tgz Net-Divert 0.01 +VRML-1.04de.tar.gz VRML 1.04de +sdf-2.001beta1.tar.gz sdf 2.001beta1 +Printer-0.97d.tar.gz Printer 0.97d +BerkeleyDB_Locks_0_02.tar.gz BerkeleyDB_Locks 0_02 +Tie_FlipFlop-1.1.tgz Tie_FlipFlop 1.1 +Ar-0.2alpha.tar.gz Ar 0.2alpha +CGI-Lite-2.001-emergencyrelease.tar.gz CGI-Lite 2.001-emergencyrelease +MSDOS-Descript-1.000.zip MSDOS-Descript 1.000 +MSDOS-Descript-1.001.zip MSDOS-Descript 1.001 +Win32-Scheduler_v20000702.tar.gz Win32-Scheduler v20000702 +KeyState.zip KeyState +Finance-YahooProfile-0.11b.tar.gz Finance-YahooProfile 0.11b +cons_1.1.tar.gz cons 1.1 +cons-1.5.tgz cons 1.5 +cons-2.1.2.tgz cons 2.1.2 +Audio-SID-3.00.tgz Audio-SID 3.00 +DBIx-MSSQLReporter-1.02.tgz DBIx-MSSQLReporter 1.02 +beancounter_0.6.2.tar.gz beancounter 0.6.2 +Zope-Watchdog-Daemon-2.0.tgz Zope-Watchdog-Daemon 2.0 +OpenCA-PKCS7-0.4.21a.tar.gz OpenCA-PKCS7 0.4.21a +perlSGML.1997Sep18.tar.gz perlSGML 1997Sep18 # FIXED +PGP-0.3a.tar.gz PGP 0.3a +StatisticsRegression.tar.gz StatisticsRegression +Text-Template-0.1b.tar.gz Text-Template 0.1b +Text-Template-0.1a.tar.gz Text-Template 0.1a +PDF-107.tgz PDF 107 +PDF-111.tgz PDF 111 +Brasil-Checar-CGC-1.01a.tar.gz Brasil-Checar-CGC 1.01a +DBI_AdvancedTalk_200307.tar.gz DBI_AdvancedTalk 200307 +AXF-0.8.1.tgz AXF 0.8.1 +VMS-FlatFile-0.01.zip VMS-FlatFile 0.01 +Algorithm-Diff-1.11a.tar.gz Algorithm-Diff 1.11a +dist-3.0@70.tar.gz dist 3.0@70 +log.tar.gz log +Win32-Encode-0.5beta.zip Win32-Encode 0.5beta +Spread-3.12-1.01.tar.gz Spread 3.12-1.01 +Spread-3.14-1.02.tar.gz Spread 3.14-1.02 +Spread-3.17.1-1.05.tar.gz Spread 3.17.1-1.05 +parrot_0.0.6.tgz parrot 0.0.6 +PerlPoint-Package-0.29.tgz PerlPoint-Package 0.29 +PerlPoint-Package-0.32.tgz PerlPoint-Package 0.32 +PerlPoint-Package-0.38.tgz PerlPoint-Package 0.38 +libao-perl_0.03-1.tar.gz libao-perl 0.03-1 +Crypt-ECB-1.1-2.tar.gz Crypt-ECB 1.1-2 +Edi2SGML-0.1.tgz Edi2SGML 0.1 +Crypt-SecurID-0.04.tgz Crypt-SecurID 0.04 +EZDBI-0.13.tgz EZDBI 0.13 +EZDBI-0.120.tgz EZDBI 0.120 +DBD-QBase-0.03.tgz DBD-QBase 0.03 +PGForth1.0.tar.gz PGForth 1.0 +vms-device-0_08.zip vms-device 0_08 +sub-curry-0.02.zip sub-curry 0.02 +sub-curry-0.04.zip sub-curry 0.04 +sub-curry-0.06.zip sub-curry 0.06 +Geanfammer_V3.4.tar.gz Geanfammer V3.4 +XML-Grove-0.46alpha.tar.gz XML-Grove 0.46alpha +Net-ProxyMod-0.03.tgz Net-ProxyMod 0.03 +Net-ProxyMod-0.01.tgz Net-ProxyMod 0.01 +VMS-Process-1_05.zip VMS-Process 1_05 +File-NCopy0.32.tar.gz File-NCopy 0.32 +TFTP-1.0b3.tar.gz TFTP 1.0b3 +Lingua-FA-Number.tar.gz Lingua-FA-Number +Cmenu-1.1.tgz Cmenu 1.1 +Net-Domain-ExpireDate-0.16.tgz Net-Domain-ExpireDate 0.16 +Net-Domain-ExpireDate-0.15.tgz Net-Domain-ExpireDate 0.15 +XML-Edifact-0.32.tgz XML-Edifact 0.32 +Cyrus-Check_Quota.tgz Cyrus-Check_Quota +Readonly-0.05a.tar.gz Readonly 0.05a +Oak-1.3-r2.tar.gz Oak 1.3-r2 +Pragmatic-1.5a.tar.gz Pragmatic 1.5a +patches_not_in_5_50.zip patches_not_in 5_50 +Business-ISIN-0.12.tgz Business-ISIN 0.12 +Business-ISIN-0.20.tgz Business-ISIN 0.20 +Business-ISIN-0.11.tgz Business-ISIN 0.11 +OpenCA-Tools-0.4.3a.tar.gz OpenCA-Tools 0.4.3a +Xforms4Perl-0.8.4--2.tgz Xforms4Perl 0.8.4--2 +Xforms4Perl-0.8.4.tgz Xforms4Perl 0.8.4 +DBSchema-Normalizer-0.08.tgz DBSchema-Normalizer 0.08 +Win32-ActAcc-1.0.zip Win32-ActAcc 1.0 +Cyrus-SASL-NewPass.tgz Cyrus-SASL-NewPass +Apache-ImageMagick-2.0b5.tar.gz Apache-ImageMagick 2.0b5 +Apache-ImageMagick-2.0b4.tar.gz Apache-ImageMagick 2.0b4 +Apache-ImageMagick-2.0b7.tar.gz Apache-ImageMagick 2.0b7 +dmake-4.1pl1-win32.zip dmake 4.1pl1-win32 +Win32-Pipe_v20010208.tar.gz Win32-Pipe v20010208 +vms-librarian-1_07.zip vms-librarian 1_07 +Log-Log4perl-AutoCategorize-0.01.tgz Log-Log4perl-AutoCategorize 0.01 +MailQuoteWrap0.01.tgz MailQuoteWrap 0.01 +etext1.6.2.tar.gz etext 1.6.2 +etext.1.6.3.zip etext 1.6.3 +Chess-PGN-EPD-0.03.zip Chess-PGN-EPD 0.03 +Chess-PGN-EPD-0.08.zip Chess-PGN-EPD 0.08 +Chess-PGN-EPD-0.10.zip Chess-PGN-EPD 0.10 +Jeeves1.0.tar.gz Jeeves 1.0 +Scripts-TXTCOD-4.7.1-eng.tar.gz Scripts-TXTCOD 4.7.1-eng +Win32-Registry-File-1.09.zip Win32-Registry-File 1.09 +Win32-Registry-File-1.10.zip Win32-Registry-File 1.10 +Shuffle-1.4.tgz Shuffle 1.4 +Tk-SimpleFileSelect-0.67a.tar.gz Tk-SimpleFileSelect 0.67a +Net-IRC-0.5b.tar.gz Net-IRC 0.5b +perlrpcgen-0.71a.tar.gz perlrpcgen 0.71a +WWW-Authenticate-0.6-1.tar.gz WWW-Authenticate 0.6-1 +Data-Pivoter-0.07a.tar.gz Data-Pivoter 0.07a +Algorithm-Diff-Apply-0.2.1.zip Algorithm-Diff-Apply 0.2.1 +Algorithm-Diff-Apply-0.1.1.zip Algorithm-Diff-Apply 0.1.1 +vms-queue-0_57.zip vms-queue 0_57 +Win32API-File-0.07.zip Win32API-File 0.07 +Win32API-File-0.08.zip Win32API-File 0.08 +DBZ_File_1.1.tar.gz DBZ_File 1.1 +ais.tar.gz ais +XML-SimpleObject0.51.tar.gz XML-SimpleObject 0.51 +XML-SimpleObject0.3.tar.gz XML-SimpleObject 0.3 +Convert-Bencode-1.02-20032506.tar.gz Convert-Bencode 1.02-20032506 +XML-MetaGenerator-0.03.tgz XML-MetaGenerator 0.03 +OS2-UPM-0_10.zip OS2-UPM 0_10 +VMS_Persona-1_01.zip VMS_Persona 1_01 +Whitespace-1.02.tgz Whitespace 1.02 +Whitespace-1.00.tgz Whitespace 1.00 +Whitespace-1.01.tgz Whitespace 1.01 +Win32-mIRC-0.03a.tar.gz Win32-mIRC 0.03a +MSDOS-Attrib-1.00.zip MSDOS-Attrib 1.00 +MSDOS-Attrib-1.01.zip MSDOS-Attrib 1.01 +POE-Component-RSSAggregator-0.02.tgz POE-Component-RSSAggregator 0.02 +POE-Component-RSSAggregator-0.01.tgz POE-Component-RSSAggregator 0.01 +Protect-1.00a.tar.gz Protect 1.00a +Win32API-Registry-0.12.zip Win32API-Registry 0.12 +Win32API-Registry-0.13.zip Win32API-Registry 0.13 +Win32API-Registry-0.17.zip Win32API-Registry 0.17 +GFL-0.14a.tar.gz GFL 0.14a +FtpIndex.tar.gz FtpIndex +Image-EXIF-0.04.tgz Image-EXIF 0.04 +Image-EXIF-0.98.tgz Image-EXIF 0.98 +Image-EXIF-0.98.1.tgz Image-EXIF 0.98.1 +Math-MatrixReal-Ext1-0-04.tgz Math-MatrixReal-Ext1-0 04 +ParseTemplate-0.37.zip ParseTemplate 0.37 +Class-AccessorMaker.tar.gz Class-AccessorMaker +DFA-Command-1.97.tgz DFA-Command 1.97 +DFA-Command-1.96.tgz DFA-Command 1.96 +DBD-Unify-0.08.tgz DBD-Unify 0.08 +Win32GUI-Beta.zip Win32GUI-Beta +Audio-Daemon-MPG123-0.9Beta.tar.gz Audio-Daemon-MPG123 0.9Beta +Statistics-LSNoHistory-0.01.tgz Statistics-LSNoHistory 0.01 +new.spirit-2.1.19_beta.tar.gz new.spirit 2.1.19_beta +IPC-LDT-2.02.tgz IPC-LDT 2.02 +IPC-LDT-2.03.tgz IPC-LDT 2.03 +Befunge-Interpreter-0.01b.tar.gz Befunge-Interpreter 0.01b +Befunge-Interpreter-0.01c.tar.gz Befunge-Interpreter 0.01c +Locale-US-1.00.tgz Locale-US 1.00 +Storm-Tracker_0.01.tar.gz Storm-Tracker 0.01 +Win32-Sound-0.45.zip Win32-Sound 0.45 +Geo-GNUPlot_0.01.tar.gz Geo-GNUPlot 0.01 +Ananke-SqlLink-1.0.tgz Ananke-SqlLink 1.0 +Ananke-SqlLink-1.1.2.tgz Ananke-SqlLink 1.1.2 +Tie_Counter-1.1.tgz Tie_Counter 1.1 +karma100.zip karma 100 +OS2-PrfDB-0_01.zip OS2-PrfDB 0_01 +tpog.tar.gz tpog +AKDB_Okewo_de_1.03.tar.gz AKDB_Okewo_de 1.03 +HTML-Template-Filter-Dreamweaver.tar.gz HTML-Template-Filter-Dreamweaver +Closures-1.2.tgz Closures 1.2 +Cyrus-Dump_All_Acl.tgz Cyrus-Dump_All_Acl +DBD-Ovrimos-0.12.tgz DBD-Ovrimos 0.12 +Math-Expr-LATEST.tar.gz Math-Expr-LATEST +apache.authnetldap.016.tar.gz apache.authnetldap 016 # FIXED +apache.authnetldap.018.tar.gz apache.authnetldap 018 # FIXED +PDL-RungeKutta-0.01.tgz PDL-RungeKutta 0.01 +DBD_SQLFLEX_8.2.tar.gz DBD_SQLFLEX 8.2 +Graphics-ColorObject-0.3a2.tar.gz Graphics-ColorObject 0.3a2 +Net-NISplusTied-0.02.tgz Net-NISplusTied 0.02 +WWW-Search-AlltheWeb-1.4+.tar.gz WWW-Search-AlltheWeb 1.4+ +Lingua-Wordnet0.65.tar.gz Lingua-Wordnet 0.65 +Lingua-Wordnet0.3.tar.gz Lingua-Wordnet 0.3 +Lingua-Wordnet0.5.tar.gz Lingua-Wordnet 0.5 +Similars-1.2.tgz Similars 1.2 +Similars-1.1.tgz Similars 1.1 +HTTP-Webdav-0.1.18-0.17.1.tar.gz HTTP-Webdav 0.1.18-0.17.1 +cmmtalk-ye2000.tar.gz cmmtalk ye2000 +Number-Phone-DE-Mobile-1_1.tgz Number-Phone-DE-Mobile 1_1 +Math-MVPoly-0.8b.tar.gz Math-MVPoly 0.8b +Finance-Currency-Convert-0.1.tgz Finance-Currency-Convert 0.1 +imcc.0.0.1.tar.gz imcc 0.0.1 +router-lg-0.98a.tar.gz router-lg 0.98a +Net-RawIP-0.09c.tar.gz Net-RawIP 0.09c +TUXEDO_1_00.zip TUXEDO 1_00 +NetIcecast-1.02.zip NetIcecast 1.02 +Memo32-1.00c.zip Memo32 1.00c +Memo32-1.01.zip Memo32 1.01 +OS2-ExtAttr-0_01.zip OS2-ExtAttr 0_01 +Test-Version-0.02.zip Test-Version 0.02 +Test-Version-0.01.zip Test-Version 0.01 +Tk-TableMatrix0.3.tar.gz Tk-TableMatrix 0.3 +Tk-TableMatrix0.71.tar.gz Tk-TableMatrix 0.71 +SHA256-0.01b.tar.gz SHA256 0.01b +DBIx-Hash2Table-1.03.tgz DBIx-Hash2Table 1.03 +VMS-Priv-1_31.zip VMS-Priv 1_31 +Cyrus-Quota.tgz Cyrus-Quota +makerpm0.300.tar.gz makerpm 0.300 +HPUX-FS_0.05.tar.gz HPUX-FS 0.05 +HTML-Macro-1.21.tgz HTML-Macro 1.21 +HTML-Macro-1.20.tgz HTML-Macro 1.20 +safecgiperl-b1.tar.gz safecgiperl b1 +VMS-Mail-0_05.zip VMS-Mail 0_05 +CIPP-2.99.23_beta.tar.gz CIPP 2.99.23_beta +DBIx-HTMLView-LATEST.tar.gz DBIx-HTMLView-LATEST +Tk-OS2-1.00.zip Tk-OS2 1.00 +diagnostics-1.2-alpha.tar.gz diagnostics 1.2-alpha +Oak-Web-1.2-fix2.tar.gz Oak-Web 1.2-fix2 +Oak-Web-1.2-fix3.tar.gz Oak-Web 1.2-fix3 +Class-Member-1.2a.tar.gz Class-Member 1.2a +CGI-Formalware-1.11.tgz CGI-Formalware 1.11 +CGI-Formalware-1.10.tgz CGI-Formalware 1.10 +Nums2Words-1.12.zip Nums2Words 1.12 +Apache-SessionX-2.00b3.tar.gz Apache-SessionX 2.00b3 +Apache-SessionX-2.00b5.tar.gz Apache-SessionX 2.00b5 +frogbak.tar.gz frogbak +WWW-Search-Excite-News-2.03+.tar.gz WWW-Search-Excite-News 2.03+ +HTML-Macro.1-15.tgz HTML-Macro 1-15 # FIXED +HTML-Macro.1-13.tgz HTML-Macro 1-13 # FIXED +HTML-Macro.1-18.tgz HTML-Macro 1-18 # FIXED +Interval.0.03.tar.gz Interval 0.03 +Interval.0.02.tar.gz Interval 0.02 +Interval.0.01.tar.gz Interval 0.01 +Win32-TieRegistry-0.24.zip Win32-TieRegistry 0.24 +Win32-TieRegistry-0.22.zip Win32-TieRegistry 0.22 +Win32-TieRegistry-0.20.zip Win32-TieRegistry 0.20 +Time-SoFar-1.00.tgz Time-SoFar 1.00 +Brasil-Checar-CPF-1.01a.tar.gz Brasil-Checar-CPF 1.01a +zfilter27.tar.gz zfilter 27 +zfilter28.tar.gz zfilter 28 +smtm_1.5.4.tar.gz smtm 1.5.4 +Tie-Registry-0.12.zip Tie-Registry 0.12 +p9p0.13.tar.gz p9p 0.13 +p9p0.16.tar.gz p9p 0.16 +Agent-3.01g.tar.gz Agent 3.01g +OpenCA-Configuration-1.5.2a.tar.gz OpenCA-Configuration 1.5.2a +DateTime-Format-Strptime-1.00.tgz DateTime-Format-Strptime 1.00 +DBIx-HTML-PopupRadio-1.06.tgz DBIx-HTML-PopupRadio 1.06 +DBIx-HTML-PopupRadio-1.07.tgz DBIx-HTML-PopupRadio 1.07 +DateTime-Event-Easter-1.00.02.tgz DateTime-Event-Easter 1.00.02 +TSM_0.60.tar.gz TSM 0.60 +speech_pm_1.0.tgz speech_pm 1.0 +Net-FTPServer-XferLog-1.1.tgz Net-FTPServer-XferLog 1.1 +ExtUtils-DynaGlue-1.00a.tar.gz ExtUtils-DynaGlue 1.00a +OpenCA-REQ-0.7.31a.tar.gz OpenCA-REQ 0.7.31a +MIDI-Trans-0.15.zip MIDI-Trans 0.15 +QNA_0.5.tar.gz QNA 0.5 +makehomeidx1.1.1.tar.gz makehomeidx 1.1.1 +DBI-Simple-0.01.tgz DBI-Simple 0.01 +MHonArc2.6.0.tar.gz MHonArc 2.6.0 +Filesys-Ext2-0.20.tgz Filesys-Ext2 0.20 +Class-Tangram-1.12a.tar.gz Class-Tangram 1.12a +Gtk2-1.00rc1.tar.gz Gtk2 1.00rc1 +Gtk2-1.00rc2.tar.gz Gtk2 1.00rc2 +Win32-MSAgent-0.01.tgz Win32-MSAgent 0.01 +Win32-MSAgent-0.02.tgz Win32-MSAgent 0.02 +Win32-MSAgent-0.03.tgz Win32-MSAgent 0.03 +Lingua-ZH-HanConvert-0.12.tgz Lingua-ZH-HanConvert 0.12 +Lingua-ZH-HanConvert-0.10.tgz Lingua-ZH-HanConvert 0.10 +Lingua-ZH-HanConvert-0.01.tgz Lingua-ZH-HanConvert 0.01 +vms-icc-0_02.zip vms-icc 0_02 +Getopt-Simple-1.46.tgz Getopt-Simple 1.46 +Getopt-Simple-1.45.tgz Getopt-Simple 1.45 +Unicode-Transliterate.0.3.tgz Unicode-Transliterate 0.3 +Parallel-Pvm-1.3.0.tgz Parallel-Pvm 1.3.0 +Convert-Cyr.tar.gz Convert-Cyr +cvswebedit-v2.0b1.tar.gz cvswebedit v2.0b1 +OpenCA-X509-0.9.6a.tar.gz OpenCA-X509 0.9.6a +perl5.004_02.tar.gz perl 5.004_02 +perl-5.8.1-RC2.tar.gz perl 5.8.1-RC2 1 +man2html3.0.1.tar.gz man2html 3.0.1 +Mac-AppleEvents-Simple-1.02.tgz Mac-AppleEvents-Simple 1.02 +Text-Typoifier-0.04a.tar.gz Text-Typoifier 0.04a +Graphics-MNG-0.04.zip Graphics-MNG 0.04 +Des-perl-a1.tar.gz Des-perl a1 +Smil_pm_0_45.tgz Smil_pm 0_45 +Smil_pm_0_62.tgz Smil_pm 0_62 +Smil_pm_0_50.tgz Smil_pm 0_50 +vms-misc-1_01.zip vms-misc 1_01 +perl-vgalib-0.4.tgz perl-vgalib 0.4 +perl-info.5.004_1.tar.gz perl-info 5.004_1 1 +X11-Motif-1.1b3.tar.gz X11-Motif 1.1b3 +IO-Pager-0.03.tgz IO-Pager 0.03 +IO-Pager-0.05.tgz IO-Pager 0.05 +ARSperl-1.74.tgz ARSperl 1.74 +Include-1.02a.tar.gz Include 1.02a +SOAP-MIME-0.55-4.tar.gz SOAP-MIME 0.55-4 +SOAP-MIME-0.55-5.tar.gz SOAP-MIME 0.55-5 +DBIx-BabelKit-1.07.tgz DBIx-BabelKit 1.07 +DBIx-BabelKit-1.06.tgz DBIx-BabelKit 1.06 +CGI-Echo-1.03.tgz CGI-Echo 1.03 +WWW-Search-ZDNet-2.02+.tar.gz WWW-Search-ZDNet 2.02+ +Getopt-ArgvFile-1.02.tgz Getopt-ArgvFile 1.02 +Getopt-ArgvFile-1.06.tgz Getopt-ArgvFile 1.06 +CONFIG-V0.99.11.tar.gz CONFIG V0.99.11 +weblint++-1.14.tar.gz weblint++ 1.14 # FIXED +weblint-1.020.zip weblint 1.020 +Match-Any_0.01.tar.gz Match-Any 0.01 +Embperl-2.0b9.tar.gz Embperl 2.0b9 +Embperl-2.0b7.tar.gz Embperl 2.0b7 +XML-RSSLite-0.11.tgz XML-RSSLite 0.11 +txt2slides.tar.gz txt2slides +extensible_report_generator_1.13.zip extensible_report_generator 1.13 +Class-ObjectTemplate-0.4.tar.gz Class-ObjectTemplate 0.4 +ObjStore-1.55.tar.gz ObjStore 1.55 +HTML-PrettyPrinter-0.03.tar.gz HTML-PrettyPrinter 0.03 +Apache-MIMEMapper-0.10.tar.gz Apache-MIMEMapper 0.10 +Bio-MAGE-2002-09-02_0.tar.gz Bio-MAGE-2002-09 02_0 +Geo-IP-PurePerl-1.10.tar.gz Geo-IP-PurePerl 1.10 +Tie-SentientHash-0.53.tar.gz Tie-SentientHash 0.53 +VCS-Lite-0.04.tar.gz VCS-Lite 0.04 +PDF-1.04.tar.gz PDF 1.04 +DB_File-SV18x-kit-0.06.tar.gz DB_File-SV18x-kit 0.06 +Regexp-Any-0.7.tar.gz Regexp-Any 0.7 +Dimedis-Sql-0.30.tar.gz Dimedis-Sql 0.30 +Weaving-Tablet-0.8.2.tar.gz Weaving-Tablet 0.8.2 +Acme-Pr0n-0.03.tar.gz Acme-Pr0n 0.03 +HookPrePostCall-1.2.tar.gz HookPrePostCall 1.2 +RTSP-Lite-0.1.tar.gz RTSP-Lite 0.1 +Apache-Emulator-0.02.tar.gz Apache-Emulator 0.02 +Net-SMTP-Multipart-1.4.tar.gz Net-SMTP-Multipart 1.4 +Set-CheckList-1.00.tar.gz Set-CheckList 1.00 +PDL-Graphics-PLplotOO-Map-0.01.tar.gz PDL-Graphics-PLplotOO-Map 0.01 +Tk-DateEntry-1.36.tar.gz Tk-DateEntry 1.36 +Apache-Emulator-0.02.tar.gz Apache-Emulator 0.02 +Net-SMTP-Multipart-1.4.tar.gz Net-SMTP-Multipart 1.4 +Set-CheckList-1.00.tar.gz Set-CheckList 1.00 +Bioinf_V2.0.tar.gz Bioinf V2.0 +Geanfammer_V3.4.tar.gz Geanfammer V3.4 +CONFIG-V0.99.11.tar.gz CONFIG V0.99.11 +collate/Unicode-Collate-Standard-V3_1_1-0.1.tar.gz Unicode-Collate-Standard-V3_1_1 0.1 +P4-1.1733.tar.gz P4 1.1733 +Foo-Bar-undef.tar.gz Foo-Bar +Foo-Bar-undef-1.0.tar.gz Foo-Bar-undef 1.0 +Net-Vypress-Chat-0.72.1.tar.bz2 Net-Vypress-Chat 0.72.1 +Gopher-Server-0.1.1.tar.bz2 Gopher-Server 0.1.1 +HTML-Template-Dumper-0.1.tar.bz2 HTML-Template-Dumper 0.1 +Task-Deprecations5_14-1.00.tar.gz Task-Deprecations5_14 1.00 diff --git a/t/compat/path.t b/t/compat/path.t new file mode 100644 index 0000000..9dcb6a2 --- /dev/null +++ b/t/compat/path.t @@ -0,0 +1,299 @@ +use strict; +use warnings; +use Test::More; +use Test::Differences; +use JSON::PP; +use Parse::Distname; + +local $/ =""; + +unified_diff; +sub encode { JSON::PP->new->canonical->pretty->encode(shift) } + +while(<DATA>) { + chomp; + s/^#[^\n]+\n//s; + my($file,%exp) = split(/[ \n]+/, $_); + $exp{pathname} = $file; + my $d = Parse::Distname->new($file); + my %got = $d->properties; + while (my($k, $v) = each %got) { + is($d->$k(), $v); + } + eq_or_diff(encode(\%got), encode(\%exp)); +} + +done_testing; + +__DATA__ +CPAN/authors/id/J/JA/JAMCC/ngb-101.zip + filename ngb-101.zip + dist ngb + maturity released + distvname ngb-101 + version 101 + cpanid JAMCC + extension zip + +CPAN/authors/id/J/JS/JSHY/DateTime-Fiscal-Year-0.01.tar.gz + filename DateTime-Fiscal-Year-0.01.tar.gz + dist DateTime-Fiscal-Year + maturity released + distvname DateTime-Fiscal-Year-0.01 + version 0.01 + cpanid JSHY + extension tar.gz + +CPAN/authors/id/G/GA/GARY/Math-PRSG-1.0.tgz + filename Math-PRSG-1.0.tgz + dist Math-PRSG + maturity released + distvname Math-PRSG-1.0 + version 1.0 + cpanid GARY + extension tgz + +CPAN/authors/id/G/GA/GARY/Math-BigInteger-1.0.tar.gz + filename Math-BigInteger-1.0.tar.gz + dist Math-BigInteger + maturity released + distvname Math-BigInteger-1.0 + version 1.0 + cpanid GARY + extension tar.gz + +CPAN/authors/id/T/TE/TERRY/VoiceXML-Server-1.6.tar.gz + filename VoiceXML-Server-1.6.tar.gz + dist VoiceXML-Server + maturity released + distvname VoiceXML-Server-1.6 + version 1.6 + cpanid TERRY + extension tar.gz + +CPAN/authors/id/J/JA/JAMCC/ngb-100.tar.gz + filename ngb-100.tar.gz + dist ngb + maturity released + distvname ngb-100 + version 100 + cpanid JAMCC + extension tar.gz + +CPAN/authors/id/J/JS/JSHY/DateTime-Fiscal-Year-0.02.tar.gz + filename DateTime-Fiscal-Year-0.02.tar.gz + dist DateTime-Fiscal-Year + maturity released + distvname DateTime-Fiscal-Year-0.02 + version 0.02 + cpanid JSHY + extension tar.gz + +CPAN/authors/id/G/GA/GARY/Crypt-DES-1.0.tar.gz + filename Crypt-DES-1.0.tar.gz + dist Crypt-DES + maturity released + distvname Crypt-DES-1.0 + version 1.0 + cpanid GARY + extension tar.gz + +CPAN/authors/id/G/GA/GARY/Stream-1.00.tar.gz + filename Stream-1.00.tar.gz + dist Stream + maturity released + distvname Stream-1.00 + version 1.00 + cpanid GARY + extension tar.gz + +CPAN/authors/id/G/GS/GSPIVEY/Text-EP3-Verilog-1.00.tar.gz + filename Text-EP3-Verilog-1.00.tar.gz + dist Text-EP3-Verilog + maturity released + distvname Text-EP3-Verilog-1.00 + version 1.00 + cpanid GSPIVEY + extension tar.gz + +CPAN/authors/id/T/TM/TMAEK/DBIx-Cursor-0.14.tar.gz + filename DBIx-Cursor-0.14.tar.gz + dist DBIx-Cursor + maturity released + distvname DBIx-Cursor-0.14 + version 0.14 + cpanid TMAEK + extension tar.gz + +CPAN/authors/id/G/GA/GARY/Crypt-IDEA-1.0.tar.gz + filename Crypt-IDEA-1.0.tar.gz + dist Crypt-IDEA + maturity released + distvname Crypt-IDEA-1.0 + version 1.0 + cpanid GARY + extension tar.gz + +CPAN/authors/id/G/GA/GARY/Math-TrulyRandom-1.0.tar.gz + filename Math-TrulyRandom-1.0.tar.gz + dist Math-TrulyRandom + maturity released + distvname Math-TrulyRandom-1.0 + version 1.0 + cpanid GARY + extension tar.gz + +CPAN/authors/id/T/TE/TERRY/VoiceXML-Server-1.13.tar.gz + filename VoiceXML-Server-1.13.tar.gz + dist VoiceXML-Server + maturity released + distvname VoiceXML-Server-1.13 + version 1.13 + cpanid TERRY + extension tar.gz + +# CHANGED +JWILLIAMS/MasonX-Lexer-MSP-0.02.tar.gz + cpanid JWILLIAMS + filename MasonX-Lexer-MSP-0.02.tar.gz + dist MasonX-Lexer-MSP + maturity released + distvname MasonX-Lexer-MSP-0.02 + version 0.02 + extension tar.gz + +CPAN/authors/id/J/JA/JAMCC/Tie-CacheHash-0.50.tar.gz + filename Tie-CacheHash-0.50.tar.gz + dist Tie-CacheHash + maturity released + distvname Tie-CacheHash-0.50 + version 0.50 + cpanid JAMCC + extension tar.gz + +CPAN/authors/id/T/TM/TMAEK/DBIx-Cursor-0.13.tar.gz + filename DBIx-Cursor-0.13.tar.gz + dist DBIx-Cursor + maturity released + distvname DBIx-Cursor-0.13 + version 0.13 + cpanid TMAEK + extension tar.gz + +CPAN/authors/id/G/GS/GSPIVEY/Text-EP3-1.00.tar.gz + filename Text-EP3-1.00.tar.gz + dist Text-EP3 + maturity released + distvname Text-EP3-1.00 + version 1.00 + cpanid GSPIVEY + extension tar.gz + +CPAN/authors/id/J/JD/JDUTTON/Parse-RandGen-0.100.tar.gz + filename Parse-RandGen-0.100.tar.gz + dist Parse-RandGen + maturity released + distvname Parse-RandGen-0.100 + version 0.100 + cpanid JDUTTON + extension tar.gz + +id/N/NI/NI-S/Tk400.202.tar.gz + filename Tk400.202.tar.gz + dist Tk + maturity released + distvname Tk400.202 + version 400.202 + cpanid NI-S + extension tar.gz + +authors/id/G/GB/GBARR/perl5.005_03.tar.gz + filename perl5.005_03.tar.gz + dist perl + maturity released + distvname perl5.005_03 + version 5.005_03 + cpanid GBARR + extension tar.gz + +M/MS/MSCHWERN/Test-Simple-0.48_01.tar.gz + filename Test-Simple-0.48_01.tar.gz + dist Test-Simple + maturity developer + distvname Test-Simple-0.48_01 + version 0.48_01 + cpanid MSCHWERN + extension tar.gz + +id/J/JV/JV/PostScript-Font-1.09.tar.gz + filename PostScript-Font-1.09.tar.gz + dist PostScript-Font + maturity released + distvname PostScript-Font-1.09 + version 1.09 + cpanid JV + extension tar.gz + +id/I/IB/IBMTORDB2/DBD-DB2-0.77.tar.gz + filename DBD-DB2-0.77.tar.gz + dist DBD-DB2 + maturity released + distvname DBD-DB2-0.77 + version 0.77 + cpanid IBMTORDB2 + extension tar.gz + +id/I/IB/IBMTORDB2/DBD-DB2-0.99.tar.bz2 + filename DBD-DB2-0.99.tar.bz2 + dist DBD-DB2 + maturity released + distvname DBD-DB2-0.99 + version 0.99 + cpanid IBMTORDB2 + extension tar.bz2 + +CPAN/authors/id/L/LD/LDS/CGI.pm-2.34.tar.gz + filename CGI.pm-2.34.tar.gz + dist CGI + maturity released + distvname CGI.pm-2.34 + version 2.34 + cpanid LDS + extension tar.gz + +CPAN/authors/id/J/JE/JESSE/perl-5.12.0-RC0.tar.gz + filename perl-5.12.0-RC0.tar.gz + dist perl + maturity developer + distvname perl-5.12.0-RC0 + version 5.12.0-RC0 + cpanid JESSE + extension tar.gz + +CPAN/authors/id/G/GS/GSAR/perl-5.6.1-TRIAL3.tar.gz + filename perl-5.6.1-TRIAL3.tar.gz + dist perl + maturity developer + distvname perl-5.6.1-TRIAL3 + version 5.6.1-TRIAL3 + cpanid GSAR + extension tar.gz + +CPAN/authors/id/R/RJ/RJBS/Dist-Zilla-2.100860-TRIAL.tar.gz + filename Dist-Zilla-2.100860-TRIAL.tar.gz + dist Dist-Zilla + maturity developer + distvname Dist-Zilla-2.100860-TRIAL + version 2.100860-TRIAL + cpanid RJBS + extension tar.gz + +CPAN/authors/id/M/MI/MINGYILIU/Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz + filename Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz + dist Bio-ASN1-EntrezGene + maturity released + distvname Bio-ASN1-EntrezGene-1.10-withoutworldwriteables + version 1.10 + cpanid MINGYILIU + extension tar.gz + diff --git a/xt/walk_through.t b/xt/walk_through.t new file mode 100644 index 0000000..be0eb57 --- /dev/null +++ b/xt/walk_through.t @@ -0,0 +1,2931 @@ +use strict; +use warnings; +use Test::More; +use File::Find; +use Parse::Distname; + +my $cpan_mirror; +BEGIN { + $cpan_mirror = $ENV{TEST_CPAN_MIRROR} + or plan skip_all => "requires \$ENV{TEST_CPAN_MIRROR} to test"; + + -d "$cpan_mirror/authors/id/" + or plan skip_all => "\$ENV{TEST_CPAN_MIRROR} seems not a CPAN mirror"; + + eval "use CPAN::DistnameInfo 0.12; 1" + or plan skip_all => "requires CPAN::DistnameInfo to compare"; +} + +my %KnownDiff; +{ + local $/ = ""; + while(<DATA>) { + s/(?:\015\012|\015|\012)/\n/sg; + s/\A#[^\n]*\n//sg; + my ($file, $diff) = split "\n", $_, 2; + chomp $file; chomp $diff; + $file =~ s/\s*\(.+$//; # remove year info + $KnownDiff{$file} = $diff; + } +} + +find({ + wanted => sub { + my $file = $File::Find::name; + return unless -f $file; + return unless $file =~ /$Parse::Distname::SUFFRE/i; + my $cpan_path = $file; + $cpan_path =~ s|^.+authors/id/||; + + my %cd = CPAN::DistnameInfo->new($cpan_path)->properties; + my %pd = Parse::Distname->new($cpan_path)->properties; + + # ignore spammers + return if $pd{cpanid} =~ /^(?:DOCRIVERS|FULLHQ|ULTRAHD)$/; + + my $ok = 1; + my $diff = ''; + for my $key (sort keys %cd) { + if (defined $cd{$key}) { + if (defined $pd{$key}) { + if ($cd{$key} eq $pd{$key}) { + # OK + $diff .= <<"DIFF"; + "$key": "$cd{$key}", +DIFF + } else { + $diff .= <<"DIFF"; +- "$key": "$cd{$key}", ++ "$key": "$pd{$key}", +DIFF + $ok = 0; + } + } else { + $diff .= <<"DIFF"; +- "$key": "$cd{$key}", ++ "$key": null, +DIFF + $ok = 0; + } + } + elsif (defined $pd{$key}) { + $diff .= <<"DIFF"; +- "$key": null, ++ "$key": "$pd{$key}", +DIFF + $ok = 0; + } + else { + # both are undef; OK + $diff .= <<"DIFF"; + "$key": null, +DIFF + } + } + + $diff =~ s/(?:\015\012|\015|\012)/\n/gs; + chomp $diff; + + if ($ok) { + pass $file; + } else { + SKIP: { + skip "not portable", 1 if $^O eq 'MSWin32' and $cpan_path =~ /\.\\/; + if (!$KnownDiff{$cpan_path} or $diff ne $KnownDiff{$cpan_path}) { + my $mtime = (stat($file))[9]; + my $year = (localtime($mtime))[5] + 1900; + print STDERR "$cpan_path ($year)\n$diff\n\n"; + fail $file; + } else { + pass $file; + } + } + } + }, + no_chdir => 1, +}, "$cpan_mirror/authors/id/"); + +done_testing; + +__DATA__ +D/DP/DPCHRIST/Math-TriangularNumbers-r0_03.tar.gz (2005) + "cpanid": "DPCHRIST", +- "dist": "Math-TriangularNumbers-r", ++ "dist": "Math-TriangularNumbers", + "distvname": "Math-TriangularNumbers-r0_03", + "extension": "tar.gz", + "filename": "Math-TriangularNumbers-r0_03.tar.gz", + "maturity": "released", + "pathname": "D/DP/DPCHRIST/Math-TriangularNumbers-r0_03.tar.gz", +- "version": "0_03", ++ "version": "r0_03", + +D/DP/DPCHRIST/Math-TriangularNumbers-r0_02.tar.gz (2005) + "cpanid": "DPCHRIST", +- "dist": "Math-TriangularNumbers-r", ++ "dist": "Math-TriangularNumbers", + "distvname": "Math-TriangularNumbers-r0_02", + "extension": "tar.gz", + "filename": "Math-TriangularNumbers-r0_02.tar.gz", + "maturity": "released", + "pathname": "D/DP/DPCHRIST/Math-TriangularNumbers-r0_02.tar.gz", +- "version": "0_02", ++ "version": "r0_02", + +H/HO/HOLCAPEK/0.1.tar.gz (2017) + "cpanid": "HOLCAPEK", +- "dist": "0.1", ++ "dist": "", + "distvname": "0.1", + "extension": "tar.gz", + "filename": "0.1.tar.gz", + "maturity": "released", + "pathname": "H/HO/HOLCAPEK/0.1.tar.gz", +- "version": null, ++ "version": "0.1", + +H/HW/HWAT/0.02.tar.gz (2014) + "cpanid": "HWAT", +- "dist": "0.02", ++ "dist": "", + "distvname": "0.02", + "extension": "tar.gz", + "filename": "0.02.tar.gz", + "maturity": "released", + "pathname": "H/HW/HWAT/0.02.tar.gz", +- "version": null, ++ "version": "0.02", + +H/HA/HALLORAN/PRIMERVIEWv3.zip (2017) + "cpanid": "HALLORAN", +- "dist": "PRIMERVIEWv", ++ "dist": "PRIMERVIEW", + "distvname": "PRIMERVIEWv3", + "extension": "zip", + "filename": "PRIMERVIEWv3.zip", + "maturity": "released", + "pathname": "H/HA/HALLORAN/PRIMERVIEWv3.zip", +- "version": "3", ++ "version": "v3", + +H/HA/HALLORAN/fastQ_brewv1.0.3.zip (2017) + "cpanid": "HALLORAN", +- "dist": "fastQ_brewv", ++ "dist": "fastQ_brew", + "distvname": "fastQ_brewv1.0.3", + "extension": "zip", + "filename": "fastQ_brewv1.0.3.zip", + "maturity": "released", + "pathname": "H/HA/HALLORAN/fastQ_brewv1.0.3.zip", +- "version": "1.0.3", ++ "version": "v1.0.3", + +H/HA/HARPREET/XMS-MotifSetv1.0.tar.gz (2010) + "cpanid": "HARPREET", +- "dist": "XMS-MotifSetv", ++ "dist": "XMS-MotifSet", + "distvname": "XMS-MotifSetv1.0", + "extension": "tar.gz", + "filename": "XMS-MotifSetv1.0.tar.gz", + "maturity": "released", + "pathname": "H/HA/HARPREET/XMS-MotifSetv1.0.tar.gz", +- "version": "1.0", ++ "version": "v1.0", + +O/OP/OPSVIEW/Opsview-Performanceparsing-1-TRIAL.tar.gz (2013) + "cpanid": "OPSVIEW", +- "dist": "Opsview-Performanceparsing-1-TRIAL", ++ "dist": "Opsview-Performanceparsing", + "distvname": "Opsview-Performanceparsing-1-TRIAL", + "extension": "tar.gz", + "filename": "Opsview-Performanceparsing-1-TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "O/OP/OPSVIEW/Opsview-Performanceparsing-1-TRIAL.tar.gz", +- "version": null, ++ "version": "1-TRIAL", + +O/ON/ONEONETWO/Array-KeepGrepped-2-TRIAL.tar.gz (2013) + "cpanid": "ONEONETWO", +- "dist": "Array-KeepGrepped-2-TRIAL", ++ "dist": "Array-KeepGrepped", + "distvname": "Array-KeepGrepped-2-TRIAL", + "extension": "tar.gz", + "filename": "Array-KeepGrepped-2-TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "O/ON/ONEONETWO/Array-KeepGrepped-2-TRIAL.tar.gz", +- "version": null, ++ "version": "2-TRIAL", + +C/CA/CAFFIEND/font_ft2_0.1.0.tgz (2002) + "cpanid": "CAFFIEND", +- "dist": "font_ft", ++ "dist": "font_ft2", + "distvname": "font_ft2_0.1.0", + "extension": "tgz", + "filename": "font_ft2_0.1.0.tgz", + "maturity": "released", + "pathname": "C/CA/CAFFIEND/font_ft2_0.1.0.tgz", +- "version": "2_0.1.0", ++ "version": "0.1.0", + +C/CO/COLINO/Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.6.tar.gz + "cpanid": "COLINO", +- "dist": "Allegro-0.02_0-ppm-MSWin32-x86-multi-thread", ++ "dist": "Allegro", + "distvname": "Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.6", + "extension": "tar.gz", + "filename": "Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.6.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "C/CO/COLINO/Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.6.tar.gz", +- "version": "5.6", ++ "version": "0.02_0-ppm-MSWin32-x86-multi-thread-5.6", + +C/CO/COLINO/Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.8.tar.gz (2004) + "cpanid": "COLINO", +- "dist": "Allegro-0.02_0-ppm-MSWin32-x86-multi-thread", ++ "dist": "Allegro", + "distvname": "Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.8", + "extension": "tar.gz", + "filename": "Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.8.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "C/CO/COLINO/Allegro-0.02_0-ppm-MSWin32-x86-multi-thread-5.8.tar.gz", +- "version": "5.8", ++ "version": "0.02_0-ppm-MSWin32-x86-multi-thread-5.8", + +C/CY/CYCLES/ocharles-Test-Magpie-v0.04-2-g9a8e649.tar.gz (2010) + "cpanid": "CYCLES", +- "dist": "ocharles-Test-Magpie-v0.04", ++ "dist": "ocharles-Test-Magpie", + "distvname": "ocharles-Test-Magpie-v0.04-2-g9a8e649", + "extension": "tar.gz", + "filename": "ocharles-Test-Magpie-v0.04-2-g9a8e649.tar.gz", + "maturity": "released", + "pathname": "C/CY/CYCLES/ocharles-Test-Magpie-v0.04-2-g9a8e649.tar.gz", +- "version": "2-g9a8e649", ++ "version": "v0.04-2-g9a8e649", + +C/CD/CDONLEY/netldapapi-140-winnt.zip (1998) + "cpanid": "CDONLEY", +- "dist": "netldapapi-140-winnt", ++ "dist": "netldapapi", + "distvname": "netldapapi-140-winnt", + "extension": "zip", + "filename": "netldapapi-140-winnt.zip", + "maturity": "released", + "pathname": "C/CD/CDONLEY/netldapapi-140-winnt.zip", +- "version": null, ++ "version": "140-winnt", + +C/CD/CDONLEY/netldapapi-139a-winnt.zip (1997) + "cpanid": "CDONLEY", +- "dist": "netldapapi-139a-winnt", ++ "dist": "netldapapi", + "distvname": "netldapapi-139a-winnt", + "extension": "zip", + "filename": "netldapapi-139a-winnt.zip", + "maturity": "released", + "pathname": "C/CD/CDONLEY/netldapapi-139a-winnt.zip", +- "version": null, ++ "version": "139a-winnt", + +C/CD/CDRAKE/Crypt-MatrixSSL3.tar.gz (2012) + "cpanid": "CDRAKE", +- "dist": "Crypt", ++ "dist": "Crypt-MatrixSSL3", + "distvname": "Crypt-MatrixSSL3", + "extension": "tar.gz", + "filename": "Crypt-MatrixSSL3.tar.gz", + "maturity": "released", + "pathname": "C/CD/CDRAKE/Crypt-MatrixSSL3.tar.gz", +- "version": "MatrixSSL3", ++ "version": null, + +C/CR/CRLCU/v0.1.tar.gz (2016) + "cpanid": "CRLCU", +- "dist": "v", ++ "dist": "", + "distvname": "v0.1", + "extension": "tar.gz", + "filename": "v0.1.tar.gz", + "maturity": "released", + "pathname": "C/CR/CRLCU/v0.1.tar.gz", +- "version": "0.1", ++ "version": "v0.1", + +C/CN/CNANDOR/DProf-19990108-bin-1-Mac.tgz (1999) + "cpanid": "CNANDOR", +- "dist": "DProf-19990108-bin-1-Mac", ++ "dist": "DProf", + "distvname": "DProf-19990108-bin-1-Mac", + "extension": "tgz", + "filename": "DProf-19990108-bin-1-Mac.tgz", + "maturity": "released", + "pathname": "C/CN/CNANDOR/DProf-19990108-bin-1-Mac.tgz", +- "version": null, ++ "version": "19990108-bin-1-Mac", + +C/CN/CNANDOR/glue.19990522.tar.gz (1999) + "cpanid": "CNANDOR", + "dist": "glue", + "distvname": "glue.19990522", + "extension": "tar.gz", + "filename": "glue.19990522.tar.gz", + "maturity": "released", + "pathname": "C/CN/CNANDOR/glue.19990522.tar.gz", +- "version": ".19990522", ++ "version": "19990522", + +C/CN/CNANDOR/glue.19990622.tar.gz (1999) + "cpanid": "CNANDOR", + "dist": "glue", + "distvname": "glue.19990622", + "extension": "tar.gz", + "filename": "glue.19990622.tar.gz", + "maturity": "released", + "pathname": "C/CN/CNANDOR/glue.19990622.tar.gz", +- "version": ".19990622", ++ "version": "19990622", + +C/CS/CSANDEEP/0.1.1.tar.gz (2018) + "cpanid": "CSANDEEP", +- "dist": "0.1.1", ++ "dist": "", + "distvname": "0.1.1", + "extension": "tar.gz", + "filename": "0.1.1.tar.gz", + "maturity": "released", + "pathname": "C/CS/CSANDEEP/0.1.1.tar.gz", +- "version": null, ++ "version": "0.1.1", + +T/TQ/TQISJIM/BerkeleyDB_Locks_0_0_1.tar.gz (2003) + "cpanid": "TQISJIM", + "dist": "BerkeleyDB_Locks", + "distvname": "BerkeleyDB_Locks_0_0_1", + "extension": "tar.gz", + "filename": "BerkeleyDB_Locks_0_0_1.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "T/TQ/TQISJIM/BerkeleyDB_Locks_0_0_1.tar.gz", + "version": "0_0_1", + +T/TE/TEODESIAN/v1.25.tar.gz (2018) + "cpanid": "TEODESIAN", +- "dist": "v", ++ "dist": "", + "distvname": "v1.25", + "extension": "tar.gz", + "filename": "v1.25.tar.gz", + "maturity": "released", + "pathname": "T/TE/TEODESIAN/v1.25.tar.gz", +- "version": "1.25", ++ "version": "v1.25", + +T/TI/TIMA/0.21.zip (2003) + "cpanid": "TIMA", +- "dist": "0.21", ++ "dist": "", + "distvname": "0.21", + "extension": "zip", + "filename": "0.21.zip", + "maturity": "released", + "pathname": "T/TI/TIMA/0.21.zip", +- "version": null, ++ "version": "0.21", + +T/TI/TIMB/perl5.004_04-m2.tar.gz (1998) + "cpanid": "TIMB", + "dist": "perl", + "distvname": "perl5.004_04-m2", + "extension": "tar.gz", + "filename": "perl5.004_04-m2.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "T/TI/TIMB/perl5.004_04-m2.tar.gz", + "version": "5.004_04-m2", + +T/TI/TIMB/perl5.004_04-m4.tar.gz (1998) + "cpanid": "TIMB", + "dist": "perl", + "distvname": "perl5.004_04-m4", + "extension": "tar.gz", + "filename": "perl5.004_04-m4.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "T/TI/TIMB/perl5.004_04-m4.tar.gz", + "version": "5.004_04-m4", + +T/TI/TIMB/perl5.004_04-m3.tar.gz (1998) + "cpanid": "TIMB", + "dist": "perl", + "distvname": "perl5.004_04-m3", + "extension": "tar.gz", + "filename": "perl5.004_04-m3.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "T/TI/TIMB/perl5.004_04-m3.tar.gz", + "version": "5.004_04-m3", + +T/TU/TURNERJW/LoadHtml.5_0.tar.gz (2001) + "cpanid": "TURNERJW", + "dist": "LoadHtml", + "distvname": "LoadHtml.5_0", + "extension": "tar.gz", + "filename": "LoadHtml.5_0.tar.gz", + "maturity": "released", + "pathname": "T/TU/TURNERJW/LoadHtml.5_0.tar.gz", +- "version": ".5_0", ++ "version": "5_0", + +T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.31.09-Nov_16-09_00.tgz (2009) + "cpanid": "TURNERMM", +- "dist": "HTML-WikiConverter-DokuWikiFCK-0.31.09-Nov_16", ++ "dist": "HTML-WikiConverter-DokuWikiFCK", + "distvname": "HTML-WikiConverter-DokuWikiFCK-0.31.09-Nov_16-09_00", + "extension": "tgz", + "filename": "HTML-WikiConverter-DokuWikiFCK-0.31.09-Nov_16-09_00.tgz", + "maturity": "released", + "pathname": "T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.31.09-Nov_16-09_00.tgz", +- "version": "09_00", ++ "version": "0.31.09-Nov_16-09_00", + +T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32.10-Feb_09-12_16.tgz (2010) + "cpanid": "TURNERMM", +- "dist": "HTML-WikiConverter-DokuWikiFCK-0.32.10-Feb_09", ++ "dist": "HTML-WikiConverter-DokuWikiFCK", + "distvname": "HTML-WikiConverter-DokuWikiFCK-0.32.10-Feb_09-12_16", + "extension": "tgz", + "filename": "HTML-WikiConverter-DokuWikiFCK-0.32.10-Feb_09-12_16.tgz", + "maturity": "released", + "pathname": "T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32.10-Feb_09-12_16.tgz", +- "version": "12_16", ++ "version": "0.32.10-Feb_09-12_16", + +T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.30.09-Oct_08-07_09.tgz (2009) + "cpanid": "TURNERMM", +- "dist": "HTML-WikiConverter-DokuWikiFCK-0.30.09-Oct_08", ++ "dist": "HTML-WikiConverter-DokuWikiFCK", + "distvname": "HTML-WikiConverter-DokuWikiFCK-0.30.09-Oct_08-07_09", + "extension": "tgz", + "filename": "HTML-WikiConverter-DokuWikiFCK-0.30.09-Oct_08-07_09.tgz", + "maturity": "released", + "pathname": "T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.30.09-Oct_08-07_09.tgz", +- "version": "07_09", ++ "version": "0.30.09-Oct_08-07_09", + +T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32_Feb-26-2013.tgz (2013) + "cpanid": "TURNERMM", +- "dist": "HTML-WikiConverter-DokuWikiFCK-0.32_Feb", ++ "dist": "HTML-WikiConverter-DokuWikiFCK", + "distvname": "HTML-WikiConverter-DokuWikiFCK-0.32_Feb-26-2013", + "extension": "tgz", + "filename": "HTML-WikiConverter-DokuWikiFCK-0.32_Feb-26-2013.tgz", + "maturity": "released", + "pathname": "T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32_Feb-26-2013.tgz", +- "version": "262013", ++ "version": "0.32_Feb-26-2013", + +T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32_Feb-27-2013.tgz (2013) + "cpanid": "TURNERMM", +- "dist": "HTML-WikiConverter-DokuWikiFCK-0.32_Feb", ++ "dist": "HTML-WikiConverter-DokuWikiFCK", + "distvname": "HTML-WikiConverter-DokuWikiFCK-0.32_Feb-27-2013", + "extension": "tgz", + "filename": "HTML-WikiConverter-DokuWikiFCK-0.32_Feb-27-2013.tgz", + "maturity": "released", + "pathname": "T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32_Feb-27-2013.tgz", +- "version": "272013", ++ "version": "0.32_Feb-27-2013", + +T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32.10-Sep_09-08_10.tgz (2010) + "cpanid": "TURNERMM", +- "dist": "HTML-WikiConverter-DokuWikiFCK-0.32.10-Sep_09", ++ "dist": "HTML-WikiConverter-DokuWikiFCK", + "distvname": "HTML-WikiConverter-DokuWikiFCK-0.32.10-Sep_09-08_10", + "extension": "tgz", + "filename": "HTML-WikiConverter-DokuWikiFCK-0.32.10-Sep_09-08_10.tgz", + "maturity": "released", + "pathname": "T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32.10-Sep_09-08_10.tgz", +- "version": "08_10", ++ "version": "0.32.10-Sep_09-08_10", + +T/TZ/TZADIKV/-withoutworldwriteables.tar.gz (2010) + "cpanid": "TZADIKV", +- "dist": "-withoutworldwriteables", ++ "dist": "", + "distvname": "-withoutworldwriteables", + "extension": "tar.gz", + "filename": "-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "T/TZ/TZADIKV/-withoutworldwriteables.tar.gz", + "version": null, + +Y/YA/YAKEX/Software-License-Boost_1_0-v0.0.1.tar.gz (2013) + "cpanid": "YAKEX", +- "dist": "Software-License-Boost", ++ "dist": "Software-License-Boost_1_0", + "distvname": "Software-License-Boost_1_0-v0.0.1", + "extension": "tar.gz", + "filename": "Software-License-Boost_1_0-v0.0.1.tar.gz", + "maturity": "released", + "pathname": "Y/YA/YAKEX/Software-License-Boost_1_0-v0.0.1.tar.gz", +- "version": "1_0-v0.0.1", ++ "version": "v0.0.1", + +I/IL/ILYAZ/MathPari_a3.tar.gz (1995) + "cpanid": "ILYAZ", +- "dist": "MathPari_a", ++ "dist": "MathPari", + "distvname": "MathPari_a3", + "extension": "tar.gz", + "filename": "MathPari_a3.tar.gz", + "maturity": "released", + "pathname": "I/IL/ILYAZ/MathPari_a3.tar.gz", +- "version": "3", ++ "version": "a3", + +I/IL/ILYAZ/os2/perl5os2.patch.zip (1995) + "cpanid": "ILYAZ", +- "dist": "perl5os", ++ "dist": "perl5os2.patch", + "distvname": "perl5os2.patch", + "extension": "zip", + "filename": "os2/perl5os2.patch.zip", + "maturity": "released", + "pathname": "I/IL/ILYAZ/os2/perl5os2.patch.zip", +- "version": "2.patch", ++ "version": null, + +I/IL/ILYAZ/os2/perl5n.os2.patch.zip (1995) + "cpanid": "ILYAZ", +- "dist": "perl5n.os", ++ "dist": "perl5n.os2.patch", + "distvname": "perl5n.os2.patch", + "extension": "zip", + "filename": "os2/perl5n.os2.patch.zip", + "maturity": "released", + "pathname": "I/IL/ILYAZ/os2/perl5n.os2.patch.zip", +- "version": "2.patch", ++ "version": null, + +I/IL/ILYAZ/os2/perlos2.fix1.zip (1996) + "cpanid": "ILYAZ", +- "dist": "perlos", ++ "dist": "perlos2.fix", + "distvname": "perlos2.fix1", + "extension": "zip", + "filename": "os2/perlos2.fix1.zip", + "maturity": "released", + "pathname": "I/IL/ILYAZ/os2/perlos2.fix1.zip", +- "version": "2.fix1", ++ "version": "1", + +I/IL/ILYAZ/os2/perl5.00301.os2.zip (1996) + "cpanid": "ILYAZ", + "dist": "perl", + "distvname": "perl5.00301.os2", + "extension": "zip", + "filename": "os2/perl5.00301.os2.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "I/IL/ILYAZ/os2/perl5.00301.os2.zip", + "version": "5.00301.os2", + +I/IL/ILYAZ/os2/perl.500301.os2.bin.zip (1996) + "cpanid": "ILYAZ", + "dist": "perl", + "distvname": "perl.500301.os2.bin", + "extension": "zip", + "filename": "os2/perl.500301.os2.bin.zip", + "maturity": "released", + "pathname": "I/IL/ILYAZ/os2/perl.500301.os2.bin.zip", +- "version": ".500301.os2.bin", ++ "version": "500301.os2.bin", + +I/IL/ILYAZ/os2/perl.500201.os2.bin.zip (1996) + "cpanid": "ILYAZ", + "dist": "perl", + "distvname": "perl.500201.os2.bin", + "extension": "zip", + "filename": "os2/perl.500201.os2.bin.zip", + "maturity": "released", + "pathname": "I/IL/ILYAZ/os2/perl.500201.os2.bin.zip", +- "version": ".500201.os2.bin", ++ "version": "500201.os2.bin", + +I/IL/ILYAZ/os2/tk/perltk_os2_402_patches.zip (1997) + "cpanid": "ILYAZ", +- "dist": "perltk_os", ++ "dist": "perltk_os2_402_patches", + "distvname": "perltk_os2_402_patches", + "extension": "zip", + "filename": "os2/tk/perltk_os2_402_patches.zip", + "maturity": "released", + "pathname": "I/IL/ILYAZ/os2/tk/perltk_os2_402_patches.zip", +- "version": "2_402_patches", ++ "version": null, + +I/IL/ILYAZ/modules/MathPari_a3.tar.gz (1995) + "cpanid": "ILYAZ", +- "dist": "MathPari_a", ++ "dist": "MathPari", + "distvname": "MathPari_a3", + "extension": "tar.gz", + "filename": "modules/MathPari_a3.tar.gz", + "maturity": "released", + "pathname": "I/IL/ILYAZ/modules/MathPari_a3.tar.gz", +- "version": "3", ++ "version": "a3", + +I/IN/INFRACANI/Mail-OpenDKIM-4201-patched.tar.gz (2015) + "cpanid": "INFRACANI", +- "dist": "Mail-OpenDKIM-4201-patched", ++ "dist": "Mail-OpenDKIM", + "distvname": "Mail-OpenDKIM-4201-patched", + "extension": "tar.gz", + "filename": "Mail-OpenDKIM-4201-patched.tar.gz", + "maturity": "released", + "pathname": "I/IN/INFRACANI/Mail-OpenDKIM-4201-patched.tar.gz", +- "version": null, ++ "version": "4201-patched", + +I/IC/ICIBIN/bins-Message-Passing-Output-MongoDB-1eb79aa.tar.gz (2012) + "cpanid": "ICIBIN", +- "dist": "bins-Message-Passing-Output-MongoDB-1eb79aa", ++ "dist": "bins-Message-Passing-Output-MongoDB", + "distvname": "bins-Message-Passing-Output-MongoDB-1eb79aa", + "extension": "tar.gz", + "filename": "bins-Message-Passing-Output-MongoDB-1eb79aa.tar.gz", + "maturity": "released", + "pathname": "I/IC/ICIBIN/bins-Message-Passing-Output-MongoDB-1eb79aa.tar.gz", +- "version": null, ++ "version": "1eb79aa", + +I/II/IIS/v1.0.5.tar.gz (2015) + "cpanid": "IIS", +- "dist": "v", ++ "dist": "", + "distvname": "v1.0.5", + "extension": "tar.gz", + "filename": "v1.0.5.tar.gz", + "maturity": "released", + "pathname": "I/II/IIS/v1.0.5.tar.gz", +- "version": "1.0.5", ++ "version": "v1.0.5", + +I/IK/IKRUGLOV/v0.6.tar.gz (2014) + "cpanid": "IKRUGLOV", +- "dist": "v", ++ "dist": "", + "distvname": "v0.6", + "extension": "tar.gz", + "filename": "v0.6.tar.gz", + "maturity": "released", + "pathname": "I/IK/IKRUGLOV/v0.6.tar.gz", +- "version": "0.6", ++ "version": "v0.6", + +I/IS/ISTEEL/HTMLTMPL.130.tar.gz (2001) + "cpanid": "ISTEEL", + "dist": "HTMLTMPL", + "distvname": "HTMLTMPL.130", + "extension": "tar.gz", + "filename": "HTMLTMPL.130.tar.gz", + "maturity": "released", + "pathname": "I/IS/ISTEEL/HTMLTMPL.130.tar.gz", +- "version": ".130", ++ "version": "130", + +I/IS/ISTEEL/HTMLTMPL.131.tar.gz (2001) + "cpanid": "ISTEEL", + "dist": "HTMLTMPL", + "distvname": "HTMLTMPL.131", + "extension": "tar.gz", + "filename": "HTMLTMPL.131.tar.gz", + "maturity": "released", + "pathname": "I/IS/ISTEEL/HTMLTMPL.131.tar.gz", +- "version": ".131", ++ "version": "131", + +F/FE/FELIPE/IO-Framed-0.03_TRIAL1.tar.gz (2017) + "cpanid": "FELIPE", + "dist": "IO-Framed", + "distvname": "IO-Framed-0.03_TRIAL1", + "extension": "tar.gz", + "filename": "IO-Framed-0.03_TRIAL1.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "F/FE/FELIPE/IO-Framed-0.03_TRIAL1.tar.gz", + "version": "0.03_TRIAL1", + +F/FE/FELIPE/Crypt-Perl-0.24_TRIAL1.tar.gz (2018) + "cpanid": "FELIPE", + "dist": "Crypt-Perl", + "distvname": "Crypt-Perl-0.24_TRIAL1", + "extension": "tar.gz", + "filename": "Crypt-Perl-0.24_TRIAL1.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "F/FE/FELIPE/Crypt-Perl-0.24_TRIAL1.tar.gz", + "version": "0.24_TRIAL1", + +F/FE/FELIPE/IO-Framed-0.03_TRIAL3.tar.gz (2017) + "cpanid": "FELIPE", + "dist": "IO-Framed", + "distvname": "IO-Framed-0.03_TRIAL3", + "extension": "tar.gz", + "filename": "IO-Framed-0.03_TRIAL3.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "F/FE/FELIPE/IO-Framed-0.03_TRIAL3.tar.gz", + "version": "0.03_TRIAL3", + +F/FE/FELIPE/IO-Framed-0.03_TRIAL2.tar.gz (2017) + "cpanid": "FELIPE", + "dist": "IO-Framed", + "distvname": "IO-Framed-0.03_TRIAL2", + "extension": "tar.gz", + "filename": "IO-Framed-0.03_TRIAL2.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "F/FE/FELIPE/IO-Framed-0.03_TRIAL2.tar.gz", + "version": "0.03_TRIAL2", + +F/FE/FELIPE/Crypt-Perl-0.24_TRIAL2.tar.gz (2018) + "cpanid": "FELIPE", + "dist": "Crypt-Perl", + "distvname": "Crypt-Perl-0.24_TRIAL2", + "extension": "tar.gz", + "filename": "Crypt-Perl-0.24_TRIAL2.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "F/FE/FELIPE/Crypt-Perl-0.24_TRIAL2.tar.gz", + "version": "0.24_TRIAL2", + +F/FE/FELIPE/IO-Framed-0.02_TRIAL.tar.gz (2017) + "cpanid": "FELIPE", + "dist": "IO-Framed", + "distvname": "IO-Framed-0.02_TRIAL", + "extension": "tar.gz", + "filename": "IO-Framed-0.02_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "F/FE/FELIPE/IO-Framed-0.02_TRIAL.tar.gz", + "version": "0.02_TRIAL", + +F/FE/FERNANDES/155.zip (2007) + "cpanid": "FERNANDES", +- "dist": "155", ++ "dist": "", + "distvname": "155", + "extension": "zip", + "filename": "155.zip", + "maturity": "released", + "pathname": "F/FE/FERNANDES/155.zip", +- "version": null, ++ "version": "155", + +F/FI/FIBO/PNI_PROJECT.20091111.zip (2009) + "cpanid": "FIBO", + "dist": "PNI_PROJECT", + "distvname": "PNI_PROJECT.20091111", + "extension": "zip", + "filename": "PNI_PROJECT.20091111.zip", + "maturity": "released", + "pathname": "F/FI/FIBO/PNI_PROJECT.20091111.zip", +- "version": ".20091111", ++ "version": "20091111", + +F/FI/FIBO/PNI.20100406.zip (2010) + "cpanid": "FIBO", + "dist": "PNI", + "distvname": "PNI.20100406", + "extension": "zip", + "filename": "PNI.20100406.zip", + "maturity": "released", + "pathname": "F/FI/FIBO/PNI.20100406.zip", +- "version": ".20100406", ++ "version": "20100406", + +F/FI/FIBO/PNIProject.20091027.zip (2009) + "cpanid": "FIBO", + "dist": "PNIProject", + "distvname": "PNIProject.20091027", + "extension": "zip", + "filename": "PNIProject.20091027.zip", + "maturity": "released", + "pathname": "F/FI/FIBO/PNIProject.20091027.zip", +- "version": ".20091027", ++ "version": "20091027", + +F/FI/FIBO/PNIProject.20091027.zip (2009) + "cpanid": "FIBO", + "dist": "PNIProject", + "distvname": "PNIProject.20091027", + "extension": "zip", + "filename": "PNIProject.20091027.zip", + "maturity": "released", + "pathname": "F/FI/FIBO/PNIProject.20091027.zip", +- "version": ".20091027", ++ "version": "20091027", + +Z/ZT/ZTURK/woda-uk-3-402-pm.tar.gz (1999) + "cpanid": "ZTURK", +- "dist": "woda-uk-3-402-pm", ++ "dist": "woda-uk", + "distvname": "woda-uk-3-402-pm", + "extension": "tar.gz", + "filename": "woda-uk-3-402-pm.tar.gz", + "maturity": "released", + "pathname": "Z/ZT/ZTURK/woda-uk-3-402-pm.tar.gz", +- "version": null, ++ "version": "3-402-pm", + +P/PH/PHLUKS/v1.0.tar.gz (2016) + "cpanid": "PHLUKS", +- "dist": "v", ++ "dist": "", + "distvname": "v1.0", + "extension": "tar.gz", + "filename": "v1.0.tar.gz", + "maturity": "released", + "pathname": "P/PH/PHLUKS/v1.0.tar.gz", +- "version": "1.0", ++ "version": "v1.0", + +P/PH/PHAM/v0.06.tar.gz (2016) + "cpanid": "PHAM", +- "dist": "v", ++ "dist": "", + "distvname": "v0.06", + "extension": "tar.gz", + "filename": "v0.06.tar.gz", + "maturity": "released", + "pathname": "P/PH/PHAM/v0.06.tar.gz", +- "version": "0.06", ++ "version": "v0.06", + +P/PH/PHAM/v0.05.tar.gz (2015) + "cpanid": "PHAM", +- "dist": "v", ++ "dist": "", + "distvname": "v0.05", + "extension": "tar.gz", + "filename": "v0.05.tar.gz", + "maturity": "released", + "pathname": "P/PH/PHAM/v0.05.tar.gz", +- "version": "0.05", ++ "version": "v0.05", + +P/PT/PTILL/mod_perl-1.11_1-apache-1.3b7dev-bin-bindist1-i386-win95-vc5.zip (1998) + "cpanid": "PTILL", +- "dist": "mod_perl-1.11_1-apache", ++ "dist": "mod_perl", + "distvname": "mod_perl-1.11_1-apache-1.3b7dev-bin-bindist1-i386-win95-vc5", + "extension": "zip", + "filename": "mod_perl-1.11_1-apache-1.3b7dev-bin-bindist1-i386-win95-vc5.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PT/PTILL/mod_perl-1.11_1-apache-1.3b7dev-bin-bindist1-i386-win95-vc5.zip", +- "version": "1.3b7dev-bin-bindist1-i386-win95-vc5", ++ "version": "1.11_1-apache-1.3b7dev-bin-bindist1-i386-win95-vc5", + +P/PW/PWBENNETT/Net-IPAddress-Util-2.003_TRIAL.tar.gz (2013) + "cpanid": "PWBENNETT", + "dist": "Net-IPAddress-Util", + "distvname": "Net-IPAddress-Util-2.003_TRIAL", + "extension": "tar.gz", + "filename": "Net-IPAddress-Util-2.003_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PW/PWBENNETT/Net-IPAddress-Util-2.003_TRIAL.tar.gz", + "version": "2.003_TRIAL", + +P/PW/PWBENNETT/Net-IPAddress-Util-2.001_TRIAL.tar.gz (2013) + "cpanid": "PWBENNETT", + "dist": "Net-IPAddress-Util", + "distvname": "Net-IPAddress-Util-2.001_TRIAL", + "extension": "tar.gz", + "filename": "Net-IPAddress-Util-2.001_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PW/PWBENNETT/Net-IPAddress-Util-2.001_TRIAL.tar.gz", + "version": "2.001_TRIAL", + +P/PW/PWBENNETT/Net-IPAddress-Util-2.002_TRIAL.tar.gz (2013) + "cpanid": "PWBENNETT", + "dist": "Net-IPAddress-Util", + "distvname": "Net-IPAddress-Util-2.002_TRIAL", + "extension": "tar.gz", + "filename": "Net-IPAddress-Util-2.002_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PW/PWBENNETT/Net-IPAddress-Util-2.002_TRIAL.tar.gz", + "version": "2.002_TRIAL", + +P/PW/PWBENNETT/Net-IPAddress-Util-2.000_TRIAL.tar.gz (2013) + "cpanid": "PWBENNETT", + "dist": "Net-IPAddress-Util", + "distvname": "Net-IPAddress-Util-2.000_TRIAL", + "extension": "tar.gz", + "filename": "Net-IPAddress-Util-2.000_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PW/PWBENNETT/Net-IPAddress-Util-2.000_TRIAL.tar.gz", + "version": "2.000_TRIAL", + +P/PW/PWBENNETT/Net-IPAddress-Util-2.004_TRIAL.tar.gz (2013) + "cpanid": "PWBENNETT", + "dist": "Net-IPAddress-Util", + "distvname": "Net-IPAddress-Util-2.004_TRIAL", + "extension": "tar.gz", + "filename": "Net-IPAddress-Util-2.004_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PW/PWBENNETT/Net-IPAddress-Util-2.004_TRIAL.tar.gz", + "version": "2.004_TRIAL", + +P/PF/PFEIFFER/makepp-121020-test.tgz (2012) + "cpanid": "PFEIFFER", +- "dist": "makepp-121020-test", ++ "dist": "makepp", + "distvname": "makepp-121020-test", + "extension": "tgz", + "filename": "makepp-121020-test.tgz", + "maturity": "released", + "pathname": "P/PF/PFEIFFER/makepp-121020-test.tgz", +- "version": null, ++ "version": "121020-test", + +P/PF/PFEIFFER/makepp-121021-test.tgz (2012) + "cpanid": "PFEIFFER", +- "dist": "makepp-121021-test", ++ "dist": "makepp", + "distvname": "makepp-121021-test", + "extension": "tgz", + "filename": "makepp-121021-test.tgz", + "maturity": "released", + "pathname": "P/PF/PFEIFFER/makepp-121021-test.tgz", +- "version": null, ++ "version": "121021-test", + +P/PF/PFEIFFER/makepp-121023-test.tgz (2012) + "cpanid": "PFEIFFER", +- "dist": "makepp-121023-test", ++ "dist": "makepp", + "distvname": "makepp-121023-test", + "extension": "tgz", + "filename": "makepp-121023-test.tgz", + "maturity": "released", + "pathname": "P/PF/PFEIFFER/makepp-121023-test.tgz", +- "version": null, ++ "version": "121023-test", + +P/PF/PFEIFFER/makepp-cvs-100210test.tgz (2010) + "cpanid": "PFEIFFER", +- "dist": "makepp-cvs-100210test", ++ "dist": "makepp-cvs", + "distvname": "makepp-cvs-100210test", + "extension": "tgz", + "filename": "makepp-cvs-100210test.tgz", + "maturity": "released", + "pathname": "P/PF/PFEIFFER/makepp-cvs-100210test.tgz", +- "version": null, ++ "version": "100210test", + +P/PE/PERLISH/Abjad-withoutworldwriteables.tar.gz (2011) + "cpanid": "PERLISH", +- "dist": "Abjad-withoutworldwriteables", ++ "dist": "Abjad", + "distvname": "Abjad-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Abjad-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "P/PE/PERLISH/Abjad-withoutworldwriteables.tar.gz", + "version": null, + +P/PL/PLOCKABY/v1.0.0.tar.gz (2014) + "cpanid": "PLOCKABY", +- "dist": "v", ++ "dist": "", + "distvname": "v1.0.0", + "extension": "tar.gz", + "filename": "v1.0.0.tar.gz", + "maturity": "released", + "pathname": "P/PL/PLOCKABY/v1.0.0.tar.gz", +- "version": "1.0.0", ++ "version": "v1.0.0", + +P/PU/PUSHTAEV/DBIx-Class-Factory-0.01_TRIAL.tar.gz (2015) + "cpanid": "PUSHTAEV", + "dist": "DBIx-Class-Factory", + "distvname": "DBIx-Class-Factory-0.01_TRIAL", + "extension": "tar.gz", + "filename": "DBIx-Class-Factory-0.01_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PU/PUSHTAEV/DBIx-Class-Factory-0.01_TRIAL.tar.gz", + "version": "0.01_TRIAL", + +P/PU/PUSHTAEV/DBIx-Class-Factory-TRIAL.tar.gz (2015) + "cpanid": "PUSHTAEV", +- "dist": "DBIx-Class-Factory-TRIAL", ++ "dist": "DBIx-Class-Factory", + "distvname": "DBIx-Class-Factory-TRIAL", + "extension": "tar.gz", + "filename": "DBIx-Class-Factory-TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "P/PU/PUSHTAEV/DBIx-Class-Factory-TRIAL.tar.gz", +- "version": null, ++ "version": "TRIAL", + +U/UL/ULIZAMA/CGI-Application-Muto-withoutworldwriteables.tar.gz (2010) + "cpanid": "ULIZAMA", +- "dist": "CGI-Application-Muto-withoutworldwriteables", ++ "dist": "CGI-Application-Muto", + "distvname": "CGI-Application-Muto-withoutworldwriteables", + "extension": "tar.gz", + "filename": "CGI-Application-Muto-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "U/UL/ULIZAMA/CGI-Application-Muto-withoutworldwriteables.tar.gz", + "version": null, + +U/UG/UGEXE/Perl6/v0.1.30.tar.gz (2017) + "cpanid": "UGEXE", +- "dist": "v", ++ "dist": "", + "distvname": "v0.1.30", + "extension": "tar.gz", + "filename": "Perl6/v0.1.30.tar.gz", + "maturity": "released", + "pathname": "U/UG/UGEXE/Perl6/v0.1.30.tar.gz", +- "version": "0.1.30", ++ "version": "v0.1.30", + +M/MO/MORGOTHII/multiscriptsx.03b.zip (2005) + "cpanid": "MORGOTHII", +- "dist": "multiscriptsx.03b", ++ "dist": "multiscriptsx", + "distvname": "multiscriptsx.03b", + "extension": "zip", + "filename": "multiscriptsx.03b.zip", + "maturity": "released", + "pathname": "M/MO/MORGOTHII/multiscriptsx.03b.zip", +- "version": null, ++ "version": "03b", + +M/MP/MPERRY/Config-INI-Reader-Encrypted2.tar.gz (2015) + "cpanid": "MPERRY", +- "dist": "Config-INI-Reader", ++ "dist": "Config-INI-Reader-Encrypted", + "distvname": "Config-INI-Reader-Encrypted2", + "extension": "tar.gz", + "filename": "Config-INI-Reader-Encrypted2.tar.gz", + "maturity": "released", + "pathname": "M/MP/MPERRY/Config-INI-Reader-Encrypted2.tar.gz", +- "version": "Encrypted2", ++ "version": "2", + +M/MA/MARTINB/Xforms4Perl.3.tgz (1996) + "cpanid": "MARTINB", + "dist": "Xforms4Perl", + "distvname": "Xforms4Perl.3", + "extension": "tgz", + "filename": "Xforms4Perl.3.tgz", + "maturity": "released", + "pathname": "M/MA/MARTINB/Xforms4Perl.3.tgz", +- "version": ".3", ++ "version": "3", + +M/MA/MARTINB/Xforms4Perl.6.tgz (1997) + "cpanid": "MARTINB", + "dist": "Xforms4Perl", + "distvname": "Xforms4Perl.6", + "extension": "tgz", + "filename": "Xforms4Perl.6.tgz", + "maturity": "released", + "pathname": "M/MA/MARTINB/Xforms4Perl.6.tgz", +- "version": ".6", ++ "version": "6", + +M/MA/MARTINB/Xforms4Perl.5.tgz (1997) + "cpanid": "MARTINB", + "dist": "Xforms4Perl", + "distvname": "Xforms4Perl.5", + "extension": "tgz", + "filename": "Xforms4Perl.5.tgz", + "maturity": "released", + "pathname": "M/MA/MARTINB/Xforms4Perl.5.tgz", +- "version": ".5", ++ "version": "5", + +M/MA/MAXDB/DBD-MaxDB-7_5_00_26.tar.gz (2005) + "cpanid": "MAXDB", + "dist": "DBD-MaxDB", + "distvname": "DBD-MaxDB-7_5_00_26", + "extension": "tar.gz", + "filename": "DBD-MaxDB-7_5_00_26.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "M/MA/MAXDB/DBD-MaxDB-7_5_00_26.tar.gz", + "version": "7_5_00_26", + +M/MA/MARSAB/Bundle-FinalTest3.tar.gz (2011) + "cpanid": "MARSAB", +- "dist": "Bundle", ++ "dist": "Bundle-FinalTest", + "distvname": "Bundle-FinalTest3", + "extension": "tar.gz", + "filename": "Bundle-FinalTest3.tar.gz", + "maturity": "released", + "pathname": "M/MA/MARSAB/Bundle-FinalTest3.tar.gz", +- "version": "FinalTest3", ++ "version": "3", + +M/MA/MARSAB/Bundle-FinalTest5.tar.gz (2011) + "cpanid": "MARSAB", +- "dist": "Bundle", ++ "dist": "Bundle-FinalTest", + "distvname": "Bundle-FinalTest5", + "extension": "tar.gz", + "filename": "Bundle-FinalTest5.tar.gz", + "maturity": "released", + "pathname": "M/MA/MARSAB/Bundle-FinalTest5.tar.gz", +- "version": "FinalTest5", ++ "version": "5", + +M/MA/MARSAB/Bundle-FinalTest4.tar.gz (2011) + "cpanid": "MARSAB", +- "dist": "Bundle", ++ "dist": "Bundle-FinalTest", + "distvname": "Bundle-FinalTest4", + "extension": "tar.gz", + "filename": "Bundle-FinalTest4.tar.gz", + "maturity": "released", + "pathname": "M/MA/MARSAB/Bundle-FinalTest4.tar.gz", +- "version": "FinalTest4", ++ "version": "4", + +M/MA/MARSAB/Test123.pm.tar.gz (2011) + "cpanid": "MARSAB", +- "dist": "Test", ++ "dist": "Test123", + "distvname": "Test123.pm", + "extension": "tar.gz", + "filename": "Test123.pm.tar.gz", + "maturity": "released", + "pathname": "M/MA/MARSAB/Test123.pm.tar.gz", +- "version": "123.pm", ++ "version": null, + +M/MA/MARSAB/Bundle-FinalTest2.tar.gz (2011) + "cpanid": "MARSAB", +- "dist": "Bundle", ++ "dist": "Bundle-FinalTest", + "distvname": "Bundle-FinalTest2", + "extension": "tar.gz", + "filename": "Bundle-FinalTest2.tar.gz", + "maturity": "released", + "pathname": "M/MA/MARSAB/Bundle-FinalTest2.tar.gz", +- "version": "FinalTest2", ++ "version": "2", + +M/MA/MARCEL/-0.01.tar.gz (2008) + "cpanid": "MARCEL", +- "dist": "-0.01", ++ "dist": "", + "distvname": "-0.01", + "extension": "tar.gz", + "filename": "-0.01.tar.gz", + "maturity": "released", + "pathname": "M/MA/MARCEL/-0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +M/ML/MLARUE/0.1_02.zip (2014) + "cpanid": "MLARUE", +- "dist": "0.1_02", ++ "dist": "", + "distvname": "0.1_02", + "extension": "zip", + "filename": "0.1_02.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "M/ML/MLARUE/0.1_02.zip", +- "version": null, ++ "version": "0.1_02", + +M/MM/MMUSGROVE/v0.09.tar.gz (2014) + "cpanid": "MMUSGROVE", +- "dist": "v", ++ "dist": "", + "distvname": "v0.09", + "extension": "tar.gz", + "filename": "v0.09.tar.gz", + "maturity": "released", + "pathname": "M/MM/MMUSGROVE/v0.09.tar.gz", +- "version": "0.09", ++ "version": "v0.09", + +M/MM/MMATHEWS/HTML-Entities-Latin2.pm-0.01.tar.gz (2004) + "cpanid": "MMATHEWS", +- "dist": "HTML-Entities-Latin", ++ "dist": "HTML-Entities-Latin2", + "distvname": "HTML-Entities-Latin2.pm-0.01", + "extension": "tar.gz", + "filename": "HTML-Entities-Latin2.pm-0.01.tar.gz", + "maturity": "released", + "pathname": "M/MM/MMATHEWS/HTML-Entities-Latin2.pm-0.01.tar.gz", +- "version": "2.pm-0.01", ++ "version": "0.01", + +M/MI/MIKEH/mvend203b.tar.gz (1997) + "cpanid": "MIKEH", +- "dist": "mvend203b", ++ "dist": "mvend", + "distvname": "mvend203b", + "extension": "tar.gz", + "filename": "mvend203b.tar.gz", + "maturity": "released", + "pathname": "M/MI/MIKEH/mvend203b.tar.gz", +- "version": null, ++ "version": "203b", + +M/MI/MIKEB/Spreadsheet-XLSX-0.14_TRIAL.tar.gz (2015) + "cpanid": "MIKEB", + "dist": "Spreadsheet-XLSX", + "distvname": "Spreadsheet-XLSX-0.14_TRIAL", + "extension": "tar.gz", + "filename": "Spreadsheet-XLSX-0.14_TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "M/MI/MIKEB/Spreadsheet-XLSX-0.14_TRIAL.tar.gz", + "version": "0.14_TRIAL", + +M/ME/MEWILCOX/apache.authnetldap.018.tar.gz (2000) + "cpanid": "MEWILCOX", + "dist": "apache.authnetldap", + "distvname": "apache.authnetldap.018", + "extension": "tar.gz", + "filename": "apache.authnetldap.018.tar.gz", + "maturity": "released", + "pathname": "M/ME/MEWILCOX/apache.authnetldap.018.tar.gz", +- "version": ".018", ++ "version": "018", + +M/ME/MEWILCOX/apache.authnetldap.015.tar.gz (2000) + "cpanid": "MEWILCOX", + "dist": "apache.authnetldap", + "distvname": "apache.authnetldap.015", + "extension": "tar.gz", + "filename": "apache.authnetldap.015.tar.gz", + "maturity": "released", + "pathname": "M/ME/MEWILCOX/apache.authnetldap.015.tar.gz", +- "version": ".015", ++ "version": "015", + +M/ME/MEWILCOX/apache.authznetldap.01.tar.gz (2000) + "cpanid": "MEWILCOX", + "dist": "apache.authznetldap", + "distvname": "apache.authznetldap.01", + "extension": "tar.gz", + "filename": "apache.authznetldap.01.tar.gz", + "maturity": "released", + "pathname": "M/ME/MEWILCOX/apache.authznetldap.01.tar.gz", +- "version": ".01", ++ "version": "01", + +M/ME/MEWILCOX/apache.authnetldap.016.tar.gz (2000) + "cpanid": "MEWILCOX", + "dist": "apache.authnetldap", + "distvname": "apache.authnetldap.016", + "extension": "tar.gz", + "filename": "apache.authnetldap.016.tar.gz", + "maturity": "released", + "pathname": "M/ME/MEWILCOX/apache.authnetldap.016.tar.gz", +- "version": ".016", ++ "version": "016", + +M/ME/MEWILCOX/apache.authznetldap.02.tar.gz (2000) + "cpanid": "MEWILCOX", + "dist": "apache.authznetldap", + "distvname": "apache.authznetldap.02", + "extension": "tar.gz", + "filename": "apache.authznetldap.02.tar.gz", + "maturity": "released", + "pathname": "M/ME/MEWILCOX/apache.authznetldap.02.tar.gz", +- "version": ".02", ++ "version": "02", + +M/ME/MEWILCOX/apache.authznetldap.03.tar.gz (2000) + "cpanid": "MEWILCOX", + "dist": "apache.authznetldap", + "distvname": "apache.authznetldap.03", + "extension": "tar.gz", + "filename": "apache.authznetldap.03.tar.gz", + "maturity": "released", + "pathname": "M/ME/MEWILCOX/apache.authznetldap.03.tar.gz", +- "version": ".03", ++ "version": "03", + +M/MG/MGV/Gruntmaster-Daemon-5999-TRIAL.tar.gz (2014) + "cpanid": "MGV", +- "dist": "Gruntmaster-Daemon-5999-TRIAL", ++ "dist": "Gruntmaster-Daemon", + "distvname": "Gruntmaster-Daemon-5999-TRIAL", + "extension": "tar.gz", + "filename": "Gruntmaster-Daemon-5999-TRIAL.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "M/MG/MGV/Gruntmaster-Daemon-5999-TRIAL.tar.gz", +- "version": null, ++ "version": "5999-TRIAL", + +M/MS/MSPERL/Angle-Omega-withoutworldwriteables.tar.gz (2011) + "cpanid": "MSPERL", +- "dist": "Angle-Omega-withoutworldwriteables", ++ "dist": "Angle-Omega", + "distvname": "Angle-Omega-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Angle-Omega-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "M/MS/MSPERL/Angle-Omega-withoutworldwriteables.tar.gz", + "version": null, + +M/MS/MSCROGGIN/dbgui_216b.tar.gz (1999) + "cpanid": "MSCROGGIN", +- "dist": "dbgui_216b", ++ "dist": "dbgui", + "distvname": "dbgui_216b", + "extension": "tar.gz", + "filename": "dbgui_216b.tar.gz", + "maturity": "released", + "pathname": "M/MS/MSCROGGIN/dbgui_216b.tar.gz", +- "version": null, ++ "version": "216b", + +M/MS/MSCROGGIN/dbgui_217b.tar.gz (1999) + "cpanid": "MSCROGGIN", +- "dist": "dbgui_217b", ++ "dist": "dbgui", + "distvname": "dbgui_217b", + "extension": "tar.gz", + "filename": "dbgui_217b.tar.gz", + "maturity": "released", + "pathname": "M/MS/MSCROGGIN/dbgui_217b.tar.gz", +- "version": null, ++ "version": "217b", + +M/MH/MHCRNL/perl_create_fileV03.zip (2017) + "cpanid": "MHCRNL", +- "dist": "perl_create_fileV", ++ "dist": "perl_create_file", + "distvname": "perl_create_fileV03", + "extension": "zip", + "filename": "perl_create_fileV03.zip", + "maturity": "released", + "pathname": "M/MH/MHCRNL/perl_create_fileV03.zip", +- "version": "03", ++ "version": "V03", + +M/MH/MHCRNL/CNPclass1.pm.tar.gz (2015) + "cpanid": "MHCRNL", +- "dist": "CNPclass", ++ "dist": "CNPclass1", + "distvname": "CNPclass1.pm", + "extension": "tar.gz", + "filename": "CNPclass1.pm.tar.gz", + "maturity": "released", + "pathname": "M/MH/MHCRNL/CNPclass1.pm.tar.gz", +- "version": "1.pm", ++ "version": null, + +M/MN/MNIKHIL/0.01.tar.gz (2013) + "cpanid": "MNIKHIL", +- "dist": "0.01", ++ "dist": "", + "distvname": "0.01", + "extension": "tar.gz", + "filename": "0.01.tar.gz", + "maturity": "released", + "pathname": "M/MN/MNIKHIL/0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +S/SN/SNEEX/HTML_Month.v6a.zip (2002) + "cpanid": "SNEEX", +- "dist": "HTML_Month.v6a", ++ "dist": "HTML_Month", + "distvname": "HTML_Month.v6a", + "extension": "zip", + "filename": "HTML_Month.v6a.zip", + "maturity": "released", + "pathname": "S/SN/SNEEX/HTML_Month.v6a.zip", +- "version": null, ++ "version": "v6a", + +S/SZ/SZECK/zfilter24b.tar.gz (1997) + "cpanid": "SZECK", +- "dist": "zfilter24b", ++ "dist": "zfilter", + "distvname": "zfilter24b", + "extension": "tar.gz", + "filename": "zfilter24b.tar.gz", + "maturity": "released", + "pathname": "S/SZ/SZECK/zfilter24b.tar.gz", +- "version": null, ++ "version": "24b", + +S/ST/STEFANOS/Net-SMTP_auth-SSL-withoutworldwriteables.tar.gz (2011) + "cpanid": "STEFANOS", +- "dist": "Net-SMTP_auth-SSL-withoutworldwriteables", ++ "dist": "Net-SMTP_auth-SSL", + "distvname": "Net-SMTP_auth-SSL-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Net-SMTP_auth-SSL-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "S/ST/STEFANOS/Net-SMTP_auth-SSL-withoutworldwriteables.tar.gz", + "version": null, + +S/SH/SHERZODR/CGI-Session3.tar.gz (2002) + "cpanid": "SHERZODR", +- "dist": "CGI", ++ "dist": "CGI-Session", + "distvname": "CGI-Session3", + "extension": "tar.gz", + "filename": "CGI-Session3.tar.gz", + "maturity": "released", + "pathname": "S/SH/SHERZODR/CGI-Session3.tar.gz", +- "version": "Session3", ++ "version": "3", + +S/SC/SCHIECHEO/v0.2.4.tar.gz (2015) + "cpanid": "SCHIECHEO", +- "dist": "v", ++ "dist": "", + "distvname": "v0.2.4", + "extension": "tar.gz", + "filename": "v0.2.4.tar.gz", + "maturity": "released", + "pathname": "S/SC/SCHIECHEO/v0.2.4.tar.gz", +- "version": "0.2.4", ++ "version": "v0.2.4", + +S/SC/SCESANO/0.1.tar.gz (2016) + "cpanid": "SCESANO", +- "dist": "0.1", ++ "dist": "", + "distvname": "0.1", + "extension": "tar.gz", + "filename": "0.1.tar.gz", + "maturity": "released", + "pathname": "S/SC/SCESANO/0.1.tar.gz", +- "version": null, ++ "version": "0.1", + +S/SB/SBALA/jperl_beta_r1.tar.gz (1998) + "cpanid": "SBALA", +- "dist": "jperl_beta_r", ++ "dist": "jperl_beta", + "distvname": "jperl_beta_r1", + "extension": "tar.gz", + "filename": "jperl_beta_r1.tar.gz", + "maturity": "released", + "pathname": "S/SB/SBALA/jperl_beta_r1.tar.gz", +- "version": "1", ++ "version": "r1", + +S/SE/SEKIMURA/0.05.tar.gz (2013) + "cpanid": "SEKIMURA", +- "dist": "0.05", ++ "dist": "", + "distvname": "0.05", + "extension": "tar.gz", + "filename": "0.05.tar.gz", + "maturity": "released", + "pathname": "S/SE/SEKIMURA/0.05.tar.gz", +- "version": null, ++ "version": "0.05", + +S/SE/SETITESUK/setitesuk-Test--Data--Structures-v0.02-0-g2b1e961.tar.gz (2010) + "cpanid": "SETITESUK", +- "dist": "setitesuk-Test--Data--Structures-v0.02", ++ "dist": "setitesuk-Test--Data--Structures", + "distvname": "setitesuk-Test--Data--Structures-v0.02-0-g2b1e961", + "extension": "tar.gz", + "filename": "setitesuk-Test--Data--Structures-v0.02-0-g2b1e961.tar.gz", + "maturity": "released", + "pathname": "S/SE/SETITESUK/setitesuk-Test--Data--Structures-v0.02-0-g2b1e961.tar.gz", +- "version": "0-g2b1e961", ++ "version": "v0.02-0-g2b1e961", + +S/SI/SIMATIKA/subclustv1_0.tar.gz (2004) + "cpanid": "SIMATIKA", +- "dist": "subclustv", ++ "dist": "subclust", + "distvname": "subclustv1_0", + "extension": "tar.gz", + "filename": "subclustv1_0.tar.gz", + "maturity": "released", + "pathname": "S/SI/SIMATIKA/subclustv1_0.tar.gz", +- "version": "1_0", ++ "version": "v1_0", + +S/SU/SUMMER/Logic3.pm-1.03.tar.gz (1999) + "cpanid": "SUMMER", +- "dist": "Logic", ++ "dist": "Logic3", + "distvname": "Logic3.pm-1.03", + "extension": "tar.gz", + "filename": "Logic3.pm-1.03.tar.gz", + "maturity": "released", + "pathname": "S/SU/SUMMER/Logic3.pm-1.03.tar.gz", +- "version": "3.pm-1.03", ++ "version": "1.03", + +S/SA/SARGIE/sequin.01.zip (2000) + "cpanid": "SARGIE", + "dist": "sequin", + "distvname": "sequin.01", + "extension": "zip", + "filename": "sequin.01.zip", + "maturity": "released", + "pathname": "S/SA/SARGIE/sequin.01.zip", +- "version": ".01", ++ "version": "01", + +S/SA/SARGIE/sequin.02.zip (2000) + "cpanid": "SARGIE", + "dist": "sequin", + "distvname": "sequin.02", + "extension": "zip", + "filename": "sequin.02.zip", + "maturity": "released", + "pathname": "S/SA/SARGIE/sequin.02.zip", +- "version": ".02", ++ "version": "02", + +S/SO/SONNY/DBIx-Class-InflateColumn-S3.tar.gz (2011) + "cpanid": "SONNY", +- "dist": "DBIx-Class-InflateColumn", ++ "dist": "DBIx-Class-InflateColumn-S3", + "distvname": "DBIx-Class-InflateColumn-S3", + "extension": "tar.gz", + "filename": "DBIx-Class-InflateColumn-S3.tar.gz", + "maturity": "released", + "pathname": "S/SO/SONNY/DBIx-Class-InflateColumn-S3.tar.gz", +- "version": "S3", ++ "version": null, + +S/SO/SOKOLOV/HTML-Macro.1-20.tgz (2002) + "cpanid": "SOKOLOV", +- "dist": "HTML-Macro.1", ++ "dist": "HTML-Macro", + "distvname": "HTML-Macro.1-20", + "extension": "tgz", + "filename": "HTML-Macro.1-20.tgz", + "maturity": "released", + "pathname": "S/SO/SOKOLOV/HTML-Macro.1-20.tgz", +- "version": "20", ++ "version": "1-20", + +S/SO/SOKOLOV/HTML-Macro.1-14.tgz (2002) + "cpanid": "SOKOLOV", +- "dist": "HTML-Macro.1", ++ "dist": "HTML-Macro", + "distvname": "HTML-Macro.1-14", + "extension": "tgz", + "filename": "HTML-Macro.1-14.tgz", + "maturity": "released", + "pathname": "S/SO/SOKOLOV/HTML-Macro.1-14.tgz", +- "version": "14", ++ "version": "1-14", + +S/SO/SOKOLOV/HTML-Macro.1-19.tgz (2002) + "cpanid": "SOKOLOV", +- "dist": "HTML-Macro.1", ++ "dist": "HTML-Macro", + "distvname": "HTML-Macro.1-19", + "extension": "tgz", + "filename": "HTML-Macro.1-19.tgz", + "maturity": "released", + "pathname": "S/SO/SOKOLOV/HTML-Macro.1-19.tgz", +- "version": "19", ++ "version": "1-19", + +S/SO/SOKOLOV/HTML-Macro.1-13.tgz (2001) + "cpanid": "SOKOLOV", +- "dist": "HTML-Macro.1", ++ "dist": "HTML-Macro", + "distvname": "HTML-Macro.1-13", + "extension": "tgz", + "filename": "HTML-Macro.1-13.tgz", + "maturity": "released", + "pathname": "S/SO/SOKOLOV/HTML-Macro.1-13.tgz", +- "version": "13", ++ "version": "1-13", + +S/SO/SOKOLOV/HTML-Macro.1-18.tgz (2002) + "cpanid": "SOKOLOV", +- "dist": "HTML-Macro.1", ++ "dist": "HTML-Macro", + "distvname": "HTML-Macro.1-18", + "extension": "tgz", + "filename": "HTML-Macro.1-18.tgz", + "maturity": "released", + "pathname": "S/SO/SOKOLOV/HTML-Macro.1-18.tgz", +- "version": "18", ++ "version": "1-18", + +S/SO/SOKOLOV/HTML-Macro.1-15.tgz (2002) + "cpanid": "SOKOLOV", +- "dist": "HTML-Macro.1", ++ "dist": "HTML-Macro", + "distvname": "HTML-Macro.1-15", + "extension": "tgz", + "filename": "HTML-Macro.1-15.tgz", + "maturity": "released", + "pathname": "S/SO/SOKOLOV/HTML-Macro.1-15.tgz", +- "version": "15", ++ "version": "1-15", + +S/SO/SOKOLOV/HTML-Macro.1-17.tgz (2002) + "cpanid": "SOKOLOV", +- "dist": "HTML-Macro.1", ++ "dist": "HTML-Macro", + "distvname": "HTML-Macro.1-17", + "extension": "tgz", + "filename": "HTML-Macro.1-17.tgz", + "maturity": "released", + "pathname": "S/SO/SOKOLOV/HTML-Macro.1-17.tgz", +- "version": "17", ++ "version": "1-17", + +B/BB/BBARKER/0.01.tar.gz (2015) + "cpanid": "BBARKER", +- "dist": "0.01", ++ "dist": "", + "distvname": "0.01", + "extension": "tar.gz", + "filename": "0.01.tar.gz", + "maturity": "released", + "pathname": "B/BB/BBARKER/0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +B/BD/BDFOY/weblint++-1.15.tar.gz (2007) + "cpanid": "BDFOY", +- "dist": "weblint", ++ "dist": "weblint++", + "distvname": "weblint++-1.15", + "extension": "tar.gz", + "filename": "weblint++-1.15.tar.gz", + "maturity": "released", + "pathname": "B/BD/BDFOY/weblint++-1.15.tar.gz", +- "version": "++-1.15", ++ "version": "1.15", + +B/BD/BDFOY/weblint++-1.14.tar.gz (2002) + "cpanid": "BDFOY", +- "dist": "weblint", ++ "dist": "weblint++", + "distvname": "weblint++-1.14", + "extension": "tar.gz", + "filename": "weblint++-1.14.tar.gz", + "maturity": "released", + "pathname": "B/BD/BDFOY/weblint++-1.14.tar.gz", +- "version": "++-1.14", ++ "version": "1.14", + +B/BM/BMIDD/perl5.004_02-AlphaNTPreComp.tar.gz (1997) + "cpanid": "BMIDD", + "dist": "perl", + "distvname": "perl5.004_02-AlphaNTPreComp", + "extension": "tar.gz", + "filename": "perl5.004_02-AlphaNTPreComp.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "B/BM/BMIDD/perl5.004_02-AlphaNTPreComp.tar.gz", + "version": "5.004_02-AlphaNTPreComp", + +E/EJ/EJORDAN/v0.2.1.tar.gz (2014) + "cpanid": "EJORDAN", +- "dist": "v", ++ "dist": "", + "distvname": "v0.2.1", + "extension": "tar.gz", + "filename": "v0.2.1.tar.gz", + "maturity": "released", + "pathname": "E/EJ/EJORDAN/v0.2.1.tar.gz", +- "version": "0.2.1", ++ "version": "v0.2.1", + +E/ER/ERWANMAS/v0.10.zip (2018) + "cpanid": "ERWANMAS", +- "dist": "v", ++ "dist": "", + "distvname": "v0.10", + "extension": "zip", + "filename": "v0.10.zip", + "maturity": "released", + "pathname": "E/ER/ERWANMAS/v0.10.zip", +- "version": "0.10", ++ "version": "v0.10", + +E/EL/ELCAMLOST/0.01.tar.gz (2016) + "cpanid": "ELCAMLOST", +- "dist": "0.01", ++ "dist": "", + "distvname": "0.01", + "extension": "tar.gz", + "filename": "0.01.tar.gz", + "maturity": "released", + "pathname": "E/EL/ELCAMLOST/0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +E/ES/ESTRABD/FLAT-Legacy-FA.1.tgz (2006) + "cpanid": "ESTRABD", + "dist": "FLAT-Legacy-FA", + "distvname": "FLAT-Legacy-FA.1", + "extension": "tgz", + "filename": "FLAT-Legacy-FA.1.tgz", + "maturity": "released", + "pathname": "E/ES/ESTRABD/FLAT-Legacy-FA.1.tgz", +- "version": ".1", ++ "version": "1", + +E/ES/ESTRABD/0.01.tar.gz (2015) + "cpanid": "ESTRABD", +- "dist": "0.01", ++ "dist": "", + "distvname": "0.01", + "extension": "tar.gz", + "filename": "0.01.tar.gz", + "maturity": "released", + "pathname": "E/ES/ESTRABD/0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +E/EH/EHOOD/perlSGML.1995Dec08.tar.gz (1995) + "cpanid": "EHOOD", +- "dist": "perlSGML.1995Dec", ++ "dist": "perlSGML", + "distvname": "perlSGML.1995Dec08", + "extension": "tar.gz", + "filename": "perlSGML.1995Dec08.tar.gz", + "maturity": "released", + "pathname": "E/EH/EHOOD/perlSGML.1995Dec08.tar.gz", +- "version": "08", ++ "version": "1995Dec08", + +E/EH/EHOOD/perlSGML.1997Sep18.tar.gz (1997) + "cpanid": "EHOOD", +- "dist": "perlSGML.1997Sep", ++ "dist": "perlSGML", + "distvname": "perlSGML.1997Sep18", + "extension": "tar.gz", + "filename": "perlSGML.1997Sep18.tar.gz", + "maturity": "released", + "pathname": "E/EH/EHOOD/perlSGML.1997Sep18.tar.gz", +- "version": "18", ++ "version": "1997Sep18", + +E/EH/EHSAN/Date-Jalali2.tar.gz (2012) + "cpanid": "EHSAN", +- "dist": "Date", ++ "dist": "Date-Jalali", + "distvname": "Date-Jalali2", + "extension": "tar.gz", + "filename": "Date-Jalali2.tar.gz", + "maturity": "released", + "pathname": "E/EH/EHSAN/Date-Jalali2.tar.gz", +- "version": "Jalali2", ++ "version": "2", + +E/EG/EGOR/Catalyst-Action-SubDomain-withoutworldwriteables.tar.gz (2009) + "cpanid": "EGOR", +- "dist": "Catalyst-Action-SubDomain-withoutworldwriteables", ++ "dist": "Catalyst-Action-SubDomain", + "distvname": "Catalyst-Action-SubDomain-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Catalyst-Action-SubDomain-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "E/EG/EGOR/Catalyst-Action-SubDomain-withoutworldwriteables.tar.gz", + "version": null, + +E/EV/EVANZS/PDF-CreateSimple2.tar.gz (2005) + "cpanid": "EVANZS", +- "dist": "PDF", ++ "dist": "PDF-CreateSimple", + "distvname": "PDF-CreateSimple2", + "extension": "tar.gz", + "filename": "PDF-CreateSimple2.tar.gz", + "maturity": "released", + "pathname": "E/EV/EVANZS/PDF-CreateSimple2.tar.gz", +- "version": "CreateSimple2", ++ "version": "2", + +E/EF/EFORGEOT/HTML-WikiConverter-Txt2tags-withoutworldwriteables.tar.gz (2013) + "cpanid": "EFORGEOT", +- "dist": "HTML-WikiConverter-Txt2tags-withoutworldwriteables", ++ "dist": "HTML-WikiConverter-Txt2tags", + "distvname": "HTML-WikiConverter-Txt2tags-withoutworldwriteables", + "extension": "tar.gz", + "filename": "HTML-WikiConverter-Txt2tags-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "E/EF/EFORGEOT/HTML-WikiConverter-Txt2tags-withoutworldwriteables.tar.gz", + "version": null, + +G/GU/GUIMARD/0.16.tar.gz (2016) + "cpanid": "GUIMARD", +- "dist": "0.16", ++ "dist": "", + "distvname": "0.16", + "extension": "tar.gz", + "filename": "0.16.tar.gz", + "maturity": "released", + "pathname": "G/GU/GUIMARD/0.16.tar.gz", +- "version": null, ++ "version": "0.16", + +G/GF/GFRANKS/JSON-API-v1.0.3-1.tar.gz (2015) + "cpanid": "GFRANKS", +- "dist": "JSON-API-v1.0.3", ++ "dist": "JSON-API", + "distvname": "JSON-API-v1.0.3-1", + "extension": "tar.gz", + "filename": "JSON-API-v1.0.3-1.tar.gz", + "maturity": "released", + "pathname": "G/GF/GFRANKS/JSON-API-v1.0.3-1.tar.gz", +- "version": "1", ++ "version": "v1.0.3-1", + +G/GS/GSLONDON/parsenative.070425_1.tar.gz (2007) + "cpanid": "GSLONDON", + "dist": "parsenative", + "distvname": "parsenative.070425_1", + "extension": "tar.gz", + "filename": "parsenative.070425_1.tar.gz", + "maturity": "released", + "pathname": "G/GS/GSLONDON/parsenative.070425_1.tar.gz", +- "version": ".070425_1", ++ "version": "070425_1", + +G/GS/GSLONDON/iperl.20040205.html.tar.gz (2004) + "cpanid": "GSLONDON", + "dist": "iperl", + "distvname": "iperl.20040205.html", + "extension": "tar.gz", + "filename": "iperl.20040205.html.tar.gz", + "maturity": "released", + "pathname": "G/GS/GSLONDON/iperl.20040205.html.tar.gz", +- "version": ".20040205.html", ++ "version": "20040205.html", + +G/GS/GSLONDON/iperl.20040205.zip (2004) + "cpanid": "GSLONDON", + "dist": "iperl", + "distvname": "iperl.20040205", + "extension": "zip", + "filename": "iperl.20040205.zip", + "maturity": "released", + "pathname": "G/GS/GSLONDON/iperl.20040205.zip", +- "version": ".20040205", ++ "version": "20040205", + +G/GS/GSAR/perl5.00401-bindist-bc.tar.gz (1997) + "cpanid": "GSAR", + "dist": "perl", + "distvname": "perl5.00401-bindist-bc", + "extension": "tar.gz", + "filename": "perl5.00401-bindist-bc.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "G/GS/GSAR/perl5.00401-bindist-bc.tar.gz", + "version": "5.00401-bindist-bc", + +G/GS/GSAR/perl5.00401-bindist02-bc.tar.gz (1997) + "cpanid": "GSAR", + "dist": "perl", + "distvname": "perl5.00401-bindist02-bc", + "extension": "tar.gz", + "filename": "perl5.00401-bindist02-bc.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "G/GS/GSAR/perl5.00401-bindist02-bc.tar.gz", + "version": "5.00401-bindist02-bc", + +G/GS/GSM/SNMP-1.8.1-bin-x86-ASPerl5.005_03-515.zip (1999) + "cpanid": "GSM", +- "dist": "SNMP-1.8.1-bin-x86-ASPerl5.005_03", ++ "dist": "SNMP", + "distvname": "SNMP-1.8.1-bin-x86-ASPerl5.005_03-515", + "extension": "zip", + "filename": "SNMP-1.8.1-bin-x86-ASPerl5.005_03-515.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "G/GS/GSM/SNMP-1.8.1-bin-x86-ASPerl5.005_03-515.zip", +- "version": "515", ++ "version": "1.8.1-bin-x86-ASPerl5.005_03-515", + +G/GS/GSM/SNMP-3.1.0-bin-x86-ASPerl5.005_03-515.zip (2000) + "cpanid": "GSM", +- "dist": "SNMP-3.1.0-bin-x86-ASPerl5.005_03", ++ "dist": "SNMP", + "distvname": "SNMP-3.1.0-bin-x86-ASPerl5.005_03-515", + "extension": "zip", + "filename": "SNMP-3.1.0-bin-x86-ASPerl5.005_03-515.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "G/GS/GSM/SNMP-3.1.0-bin-x86-ASPerl5.005_03-515.zip", +- "version": "515", ++ "version": "3.1.0-bin-x86-ASPerl5.005_03-515", + +G/GL/GLITCHMR/v1.2.4.tar.gz (2012) + "cpanid": "GLITCHMR", +- "dist": "v", ++ "dist": "", + "distvname": "v1.2.4", + "extension": "tar.gz", + "filename": "v1.2.4.tar.gz", + "maturity": "released", + "pathname": "G/GL/GLITCHMR/v1.2.4.tar.gz", +- "version": "1.2.4", ++ "version": "v1.2.4", + +J/JG/JGOFF/parrot-0_0_7.tgz (2002) + "cpanid": "JGOFF", + "dist": "parrot", + "distvname": "parrot-0_0_7", + "extension": "tgz", + "filename": "parrot-0_0_7.tgz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "J/JG/JGOFF/parrot-0_0_7.tgz", + "version": "0_0_7", + +J/JG/JGNI/Locale-CLDR-v0.26.6-TRIAL-1.tar.gz (2014) + "cpanid": "JGNI", +- "dist": "Locale-CLDR-v0.26.6", ++ "dist": "Locale-CLDR", + "distvname": "Locale-CLDR-v0.26.6-TRIAL-1", + "extension": "tar.gz", + "filename": "Locale-CLDR-v0.26.6-TRIAL-1.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "J/JG/JGNI/Locale-CLDR-v0.26.6-TRIAL-1.tar.gz", +- "version": "TRIAL1", ++ "version": "v0.26.6-TRIAL-1", + +J/JG/JGNI/v0.0.1.zip (2014) + "cpanid": "JGNI", +- "dist": "v", ++ "dist": "", + "distvname": "v0.0.1", + "extension": "zip", + "filename": "v0.0.1.zip", + "maturity": "released", + "pathname": "J/JG/JGNI/v0.0.1.zip", +- "version": "0.0.1", ++ "version": "v0.0.1", + +J/JG/JGNI/Locale-CLDR-v0.26.10-1.tar.gz (2015) + "cpanid": "JGNI", +- "dist": "Locale-CLDR-v0.26.10", ++ "dist": "Locale-CLDR", + "distvname": "Locale-CLDR-v0.26.10-1", + "extension": "tar.gz", + "filename": "Locale-CLDR-v0.26.10-1.tar.gz", + "maturity": "released", + "pathname": "J/JG/JGNI/Locale-CLDR-v0.26.10-1.tar.gz", +- "version": "1", ++ "version": "v0.26.10-1", + +J/JG/JGNI/Locale-CLDR-v0.25.5-TRIAL-1.tar.gz (2014) + "cpanid": "JGNI", +- "dist": "Locale-CLDR-v0.25.5", ++ "dist": "Locale-CLDR", + "distvname": "Locale-CLDR-v0.25.5-TRIAL-1", + "extension": "tar.gz", + "filename": "Locale-CLDR-v0.25.5-TRIAL-1.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "J/JG/JGNI/Locale-CLDR-v0.25.5-TRIAL-1.tar.gz", +- "version": "TRIAL1", ++ "version": "v0.25.5-TRIAL-1", + +J/JG/JGNI/Locale-CLDR-v0.26.6-TRIAL-2.tar.gz (2014) + "cpanid": "JGNI", +- "dist": "Locale-CLDR-v0.26.6", ++ "dist": "Locale-CLDR", + "distvname": "Locale-CLDR-v0.26.6-TRIAL-2", + "extension": "tar.gz", + "filename": "Locale-CLDR-v0.26.6-TRIAL-2.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "J/JG/JGNI/Locale-CLDR-v0.26.6-TRIAL-2.tar.gz", +- "version": "TRIAL2", ++ "version": "v0.26.6-TRIAL-2", + +J/JG/JGNI/Locale-CLDR-v0.25.5-TRIAL-0.tar.gz (2014) + "cpanid": "JGNI", +- "dist": "Locale-CLDR-v0.25.5", ++ "dist": "Locale-CLDR", + "distvname": "Locale-CLDR-v0.25.5-TRIAL-0", + "extension": "tar.gz", + "filename": "Locale-CLDR-v0.25.5-TRIAL-0.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "J/JG/JGNI/Locale-CLDR-v0.25.5-TRIAL-0.tar.gz", +- "version": "TRIAL0", ++ "version": "v0.25.5-TRIAL-0", + +J/JU/JULVR/code-unifdef+-0.005.001.tar.gz (2017) + "cpanid": "JULVR", +- "dist": "code-unifdef", ++ "dist": "code-unifdef+", + "distvname": "code-unifdef+-0.005.001", + "extension": "tar.gz", + "filename": "code-unifdef+-0.005.001.tar.gz", + "maturity": "released", + "pathname": "J/JU/JULVR/code-unifdef+-0.005.001.tar.gz", +- "version": "+-0.005.001", ++ "version": "0.005.001", + +J/JU/JULVR/Parse/Preprocessor/code-unifdef+-0.005.002.tar.gz (2017) + "cpanid": "JULVR", +- "dist": "code-unifdef", ++ "dist": "code-unifdef+", + "distvname": "code-unifdef+-0.005.002", + "extension": "tar.gz", + "filename": "Parse/Preprocessor/code-unifdef+-0.005.002.tar.gz", + "maturity": "released", + "pathname": "J/JU/JULVR/Parse/Preprocessor/code-unifdef+-0.005.002.tar.gz", +- "version": "+-0.005.002", ++ "version": "0.005.002", + +J/JW/JWHITE/SlideMap_1_2_1.tar.gz (2005) + "cpanid": "JWHITE", + "dist": "SlideMap", + "distvname": "SlideMap_1_2_1", + "extension": "tar.gz", + "filename": "SlideMap_1_2_1.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "J/JW/JWHITE/SlideMap_1_2_1.tar.gz", + "version": "1_2_1", + +J/JW/JWHITE/SlideMap_1_2_2.tar.gz (2005) + "cpanid": "JWHITE", + "dist": "SlideMap", + "distvname": "SlideMap_1_2_2", + "extension": "tar.gz", + "filename": "SlideMap_1_2_2.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "J/JW/JWHITE/SlideMap_1_2_2.tar.gz", + "version": "1_2_2", + +J/JW/JWIED/HTML-EP-MSWin32.tar.gz (2001) + "cpanid": "JWIED", +- "dist": "HTML-EP", ++ "dist": "HTML-EP-MSWin32", + "distvname": "HTML-EP-MSWin32", + "extension": "tar.gz", + "filename": "HTML-EP-MSWin32.tar.gz", + "maturity": "released", + "pathname": "J/JW/JWIED/HTML-EP-MSWin32.tar.gz", +- "version": "MSWin32", ++ "version": null, + +J/JO/JONG/BioV2.0.tar.gz (1998) + "cpanid": "JONG", +- "dist": "BioV", ++ "dist": "Bio", + "distvname": "BioV2.0", + "extension": "tar.gz", + "filename": "BioV2.0.tar.gz", + "maturity": "released", + "pathname": "J/JO/JONG/BioV2.0.tar.gz", +- "version": "2.0", ++ "version": "V2.0", + +J/JO/JOCASA/futils.02Jun96.zip (1996) + "cpanid": "JOCASA", +- "dist": "futils.02Jun", ++ "dist": "futils", + "distvname": "futils.02Jun96", + "extension": "zip", + "filename": "futils.02Jun96.zip", + "maturity": "released", + "pathname": "J/JO/JOCASA/futils.02Jun96.zip", +- "version": "96", ++ "version": "02Jun96", + +J/JP/JPRIT/ExtUtils-ExCxx-0.02-5_00456.tar.gz (1998) + "cpanid": "JPRIT", + "dist": "ExtUtils-ExCxx", + "distvname": "ExtUtils-ExCxx-0.02-5_00456", + "extension": "tar.gz", + "filename": "ExtUtils-ExCxx-0.02-5_00456.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "J/JP/JPRIT/ExtUtils-ExCxx-0.02-5_00456.tar.gz", + "version": "0.02-5_00456", + +J/JP/JPRIT/ExtUtils-ExCxx-0.04-5_00457.tar.gz (1998) + "cpanid": "JPRIT", + "dist": "ExtUtils-ExCxx", + "distvname": "ExtUtils-ExCxx-0.04-5_00457", + "extension": "tar.gz", + "filename": "ExtUtils-ExCxx-0.04-5_00457.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "J/JP/JPRIT/ExtUtils-ExCxx-0.04-5_00457.tar.gz", + "version": "0.04-5_00457", + +J/JP/JPRIT/ExtUtils-ExCxx-0.03-5_00456.tar.gz (1998) + "cpanid": "JPRIT", + "dist": "ExtUtils-ExCxx", + "distvname": "ExtUtils-ExCxx-0.03-5_00456", + "extension": "tar.gz", + "filename": "ExtUtils-ExCxx-0.03-5_00456.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "J/JP/JPRIT/ExtUtils-ExCxx-0.03-5_00456.tar.gz", + "version": "0.03-5_00456", + +J/JP/JPRIT/ExtUtils-ExCxx-0.01-5_00456.tar.gz (1998) + "cpanid": "JPRIT", + "dist": "ExtUtils-ExCxx", + "distvname": "ExtUtils-ExCxx-0.01-5_00456", + "extension": "tar.gz", + "filename": "ExtUtils-ExCxx-0.01-5_00456.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "J/JP/JPRIT/ExtUtils-ExCxx-0.01-5_00456.tar.gz", + "version": "0.01-5_00456", + +J/JP/JPIERCE/0.11.tgz (2002) + "cpanid": "JPIERCE", +- "dist": "0.11", ++ "dist": "", + "distvname": "0.11", + "extension": "tgz", + "filename": "0.11.tgz", + "maturity": "released", + "pathname": "J/JP/JPIERCE/0.11.tgz", +- "version": null, ++ "version": "0.11", + +J/JB/JBAKER/perl-5.005_02+apache1.3.3+modperl-1.16-bin-bindist1-i386-win32-vc5.zip (1998) + "cpanid": "JBAKER", +- "dist": "perl-5.005_02+apache1.3.3+modperl", ++ "dist": "perl", + "distvname": "perl-5.005_02+apache1.3.3+modperl-1.16-bin-bindist1-i386-win32-vc5", + "extension": "zip", + "filename": "perl-5.005_02+apache1.3.3+modperl-1.16-bin-bindist1-i386-win32-vc5.zip", + "maturity": "released", + "pathname": "J/JB/JBAKER/perl-5.005_02+apache1.3.3+modperl-1.16-bin-bindist1-i386-win32-vc5.zip", +- "version": "1.16-bin-bindist1-i386-win32-vc5", ++ "version": "5.005_02+apache1.3.3+modperl-1.16-bin-bindist1-i386-win32-vc5", + +J/JK/JKING/thrift/Thrift-v0.11.0-1.tar.gz (2017) + "cpanid": "JKING", +- "dist": "Thrift-v0.11.0", ++ "dist": "Thrift", + "distvname": "Thrift-v0.11.0-1", + "extension": "tar.gz", + "filename": "thrift/Thrift-v0.11.0-1.tar.gz", + "maturity": "released", + "pathname": "J/JK/JKING/thrift/Thrift-v0.11.0-1.tar.gz", +- "version": "1", ++ "version": "v0.11.0-1", + +J/JC/JCROCHON/Country-Codes-withoutworldwriteables.tar.gz (2013) + "cpanid": "JCROCHON", +- "dist": "Country-Codes-withoutworldwriteables", ++ "dist": "Country-Codes", + "distvname": "Country-Codes-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Country-Codes-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "J/JC/JCROCHON/Country-Codes-withoutworldwriteables.tar.gz", + "version": null, + +J/JR/JRUBIN/FT817COMM-0.9.0_18-1.tar.gz (2014) + "cpanid": "JRUBIN", +- "dist": "FT817COMM-0.9.0_18", ++ "dist": "FT817COMM", + "distvname": "FT817COMM-0.9.0_18-1", + "extension": "tar.gz", + "filename": "FT817COMM-0.9.0_18-1.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "J/JR/JRUBIN/FT817COMM-0.9.0_18-1.tar.gz", +- "version": "1", ++ "version": "0.9.0_18-1", + +J/JR/JROCKWAY/__-0.01.tar.gz (2008) + "cpanid": "JROCKWAY", +- "dist": "__-0.01", ++ "dist": "__", + "distvname": "__-0.01", + "extension": "tar.gz", + "filename": "__-0.01.tar.gz", + "maturity": "released", + "pathname": "J/JR/JROCKWAY/__-0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +J/JA/JACOBY/v1.33.tar.gz (2016) + "cpanid": "JACOBY", +- "dist": "v", ++ "dist": "", + "distvname": "v1.33", + "extension": "tar.gz", + "filename": "v1.33.tar.gz", + "maturity": "released", + "pathname": "J/JA/JACOBY/v1.33.tar.gz", +- "version": "1.33", ++ "version": "v1.33", + +J/JA/JALOPEURA/perl_HaikuKits-0.01_20110820-135621.tar.gz (2011) + "cpanid": "JALOPEURA", +- "dist": "perl_HaikuKits-0.01_20110820", ++ "dist": "perl_HaikuKits", + "distvname": "perl_HaikuKits-0.01_20110820-135621", + "extension": "tar.gz", + "filename": "perl_HaikuKits-0.01_20110820-135621.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "J/JA/JALOPEURA/perl_HaikuKits-0.01_20110820-135621.tar.gz", +- "version": "135621", ++ "version": "0.01_20110820-135621", + +J/JA/JAMESR/Dancer-Plugin-SiteMap-withoutworldwriteables.tar.gz (2010) + "cpanid": "JAMESR", +- "dist": "Dancer-Plugin-SiteMap-withoutworldwriteables", ++ "dist": "Dancer-Plugin-SiteMap", + "distvname": "Dancer-Plugin-SiteMap-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Dancer-Plugin-SiteMap-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "J/JA/JAMESR/Dancer-Plugin-SiteMap-withoutworldwriteables.tar.gz", + "version": null, + +J/JS/JSTOWE/Perl6/v0.0.1.tar.gz (2016) + "cpanid": "JSTOWE", +- "dist": "v", ++ "dist": "", + "distvname": "v0.0.1", + "extension": "tar.gz", + "filename": "Perl6/v0.0.1.tar.gz", + "maturity": "released", + "pathname": "J/JS/JSTOWE/Perl6/v0.0.1.tar.gz", +- "version": "0.0.1", ++ "version": "v0.0.1", + +J/JS/JSTOWE/Perl6/v0.0.1.tar.gzEuclideanRhythm-0.0.1.tar.gz (2016) + "cpanid": "JSTOWE", +- "dist": "v", ++ "dist": "", + "distvname": "v0.0.1.tar.gzEuclideanRhythm-0.0.1", + "extension": "tar.gz", + "filename": "Perl6/v0.0.1.tar.gzEuclideanRhythm-0.0.1.tar.gz", + "maturity": "released", + "pathname": "J/JS/JSTOWE/Perl6/v0.0.1.tar.gzEuclideanRhythm-0.0.1.tar.gz", +- "version": "0.0.1.tar.gzEuclideanRhythm-0.0.1", ++ "version": "v0.0.1.tar.gzEuclideanRhythm-0.0.1", + +J/JI/JIMI/.\Tk-Markdown-withoutworldwriteables.tar.gz (2013) + "cpanid": "JIMI", +- "dist": ".\Tk-Markdown-withoutworldwriteables", ++ "dist": "Tk-Markdown", +- "distvname": ".\Tk-Markdown-withoutworldwriteables", ++ "distvname": "Tk-Markdown-withoutworldwriteables", + "extension": "tar.gz", +- "filename": ".\Tk-Markdown-withoutworldwriteables.tar.gz", ++ "filename": "Tk-Markdown-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "J/JI/JIMI/.\Tk-Markdown-withoutworldwriteables.tar.gz", + "version": null, + +J/JI/JIPIPAYO/0.02.tar.gz (2014) + "cpanid": "JIPIPAYO", +- "dist": "0.02", ++ "dist": "", + "distvname": "0.02", + "extension": "tar.gz", + "filename": "0.02.tar.gz", + "maturity": "released", + "pathname": "J/JI/JIPIPAYO/0.02.tar.gz", +- "version": null, ++ "version": "0.02", + +L/LO/LOVELLE/v0.01.zip (2015) + "cpanid": "LOVELLE", +- "dist": "v", ++ "dist": "", + "distvname": "v0.01", + "extension": "zip", + "filename": "v0.01.zip", + "maturity": "released", + "pathname": "L/LO/LOVELLE/v0.01.zip", +- "version": "0.01", ++ "version": "v0.01", + +L/LB/LBROCARD/perl5.005_03-MAINT22213.tar.gz (2004) + "cpanid": "LBROCARD", + "dist": "perl", + "distvname": "perl5.005_03-MAINT22213", + "extension": "tar.gz", + "filename": "perl5.005_03-MAINT22213.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "L/LB/LBROCARD/perl5.005_03-MAINT22213.tar.gz", + "version": "5.005_03-MAINT22213", + +L/LB/LBROCARD/perl5.005_03-MAINT21792.tar.gz (2003) + "cpanid": "LBROCARD", + "dist": "perl", + "distvname": "perl5.005_03-MAINT21792", + "extension": "tar.gz", + "filename": "perl5.005_03-MAINT21792.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "L/LB/LBROCARD/perl5.005_03-MAINT21792.tar.gz", + "version": "5.005_03-MAINT21792", + +L/LB/LBROCARD/perl5.005_03-MAINT22178.tar.gz (2004) + "cpanid": "LBROCARD", + "dist": "perl", + "distvname": "perl5.005_03-MAINT22178", + "extension": "tar.gz", + "filename": "perl5.005_03-MAINT22178.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "L/LB/LBROCARD/perl5.005_03-MAINT22178.tar.gz", + "version": "5.005_03-MAINT22178", + +L/LM/LMOLNAR/perl5.00503-bin-1-dos-djgpp.zip (1999) + "cpanid": "LMOLNAR", + "dist": "perl", + "distvname": "perl5.00503-bin-1-dos-djgpp", + "extension": "zip", + "filename": "perl5.00503-bin-1-dos-djgpp.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "L/LM/LMOLNAR/perl5.00503-bin-1-dos-djgpp.zip", + "version": "5.00503-bin-1-dos-djgpp", + +L/LT/LTBOOTS/test/genomics.01.tar.gz (2005) + "cpanid": "LTBOOTS", + "dist": "genomics", + "distvname": "genomics.01", + "extension": "tar.gz", + "filename": "test/genomics.01.tar.gz", + "maturity": "released", + "pathname": "L/LT/LTBOOTS/test/genomics.01.tar.gz", +- "version": ".01", ++ "version": "01", + +L/LG/LGODDARD/Tk-Wizard-2.144_win32_gzip1_3_11.tar.gz (2009) + "cpanid": "LGODDARD", + "dist": "Tk-Wizard", + "distvname": "Tk-Wizard-2.144_win32_gzip1_3_11", + "extension": "tar.gz", + "filename": "Tk-Wizard-2.144_win32_gzip1_3_11.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "L/LG/LGODDARD/Tk-Wizard-2.144_win32_gzip1_3_11.tar.gz", + "version": "2.144_win32_gzip1_3_11", + +L/LD/LDS/CGI3.pm-3.01.tar.gz (2000) + "cpanid": "LDS", +- "dist": "CGI", ++ "dist": "CGI3", + "distvname": "CGI3.pm-3.01", + "extension": "tar.gz", + "filename": "CGI3.pm-3.01.tar.gz", + "maturity": "released", + "pathname": "L/LD/LDS/CGI3.pm-3.01.tar.gz", +- "version": "3.pm-3.01", ++ "version": "3.01", + +R/RH/RHARMAN/v0.8.tar.gz (2018) + "cpanid": "RHARMAN", +- "dist": "v", ++ "dist": "", + "distvname": "v0.8", + "extension": "tar.gz", + "filename": "v0.8.tar.gz", + "maturity": "released", + "pathname": "R/RH/RHARMAN/v0.8.tar.gz", +- "version": "0.8", ++ "version": "v0.8", + +R/RE/RENEEB/-0.01.tar.gz (2008) + "cpanid": "RENEEB", +- "dist": "-0.01", ++ "dist": "", + "distvname": "-0.01", + "extension": "tar.gz", + "filename": "-0.01.tar.gz", + "maturity": "released", + "pathname": "R/RE/RENEEB/-0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +N/NA/NATHANL/Spreadsheet-WriteExcel-WebPivot2.tar.gz (2005) + "cpanid": "NATHANL", +- "dist": "Spreadsheet-WriteExcel", ++ "dist": "Spreadsheet-WriteExcel-WebPivot", + "distvname": "Spreadsheet-WriteExcel-WebPivot2", + "extension": "tar.gz", + "filename": "Spreadsheet-WriteExcel-WebPivot2.tar.gz", + "maturity": "released", + "pathname": "N/NA/NATHANL/Spreadsheet-WriteExcel-WebPivot2.tar.gz", +- "version": "WebPivot2", ++ "version": "2", + +N/NO/NOBJAS/0.0.3.tar.gz (2009) + "cpanid": "NOBJAS", +- "dist": "0.0.3", ++ "dist": "", + "distvname": "0.0.3", + "extension": "tar.gz", + "filename": "0.0.3.tar.gz", + "maturity": "released", + "pathname": "N/NO/NOBJAS/0.0.3.tar.gz", +- "version": null, ++ "version": "0.0.3", + +N/NI/NICZERO/niczero-mojar-79e7a4a.tar.gz (2013) + "cpanid": "NICZERO", +- "dist": "niczero-mojar-79e7a4a", ++ "dist": "niczero-mojar", + "distvname": "niczero-mojar-79e7a4a", + "extension": "tar.gz", + "filename": "niczero-mojar-79e7a4a.tar.gz", + "maturity": "released", + "pathname": "N/NI/NICZERO/niczero-mojar-79e7a4a.tar.gz", +- "version": null, ++ "version": "79e7a4a", + +N/NI/NI-S/perl5.003_02a.tar.gz (1996) + "cpanid": "NI-S", + "dist": "perl", + "distvname": "perl5.003_02a", + "extension": "tar.gz", + "filename": "perl5.003_02a.tar.gz", +- "maturity": "developer", ++ "maturity": "released", + "pathname": "N/NI/NI-S/perl5.003_02a.tar.gz", + "version": "5.003_02a", + +A/AR/ARJUNS/Dao-Map-Helper-withoutworldwriteables.tar.gz (2011) + "cpanid": "ARJUNS", +- "dist": "Dao-Map-Helper-withoutworldwriteables", ++ "dist": "Dao-Map-Helper", + "distvname": "Dao-Map-Helper-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Dao-Map-Helper-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "A/AR/ARJUNS/Dao-Map-Helper-withoutworldwriteables.tar.gz", + "version": null, + +A/AR/AREIBENS/PDF-APIx-Layout-0.00_001.MSWin32-5.0.ppm.zip (2005) + "cpanid": "AREIBENS", +- "dist": "PDF-APIx-Layout-0.00_001.MSWin32", ++ "dist": "PDF-APIx-Layout", + "distvname": "PDF-APIx-Layout-0.00_001.MSWin32-5.0.ppm", + "extension": "zip", + "filename": "PDF-APIx-Layout-0.00_001.MSWin32-5.0.ppm.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "A/AR/AREIBENS/PDF-APIx-Layout-0.00_001.MSWin32-5.0.ppm.zip", +- "version": "5.0.ppm", ++ "version": "0.00_001.MSWin32-5.0.ppm", + +A/AR/AREIBENS/PDF-Maki-0.00_04.MSWin32-4.0.ppm.zip (2005) + "cpanid": "AREIBENS", +- "dist": "PDF-Maki-0.00_04.MSWin32", ++ "dist": "PDF-Maki", + "distvname": "PDF-Maki-0.00_04.MSWin32-4.0.ppm", + "extension": "zip", + "filename": "PDF-Maki-0.00_04.MSWin32-4.0.ppm.zip", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "A/AR/AREIBENS/PDF-Maki-0.00_04.MSWin32-4.0.ppm.zip", +- "version": "4.0.ppm", ++ "version": "0.00_04.MSWin32-4.0.ppm", + +A/AR/ARUN/1.6.tar.gz (2016) + "cpanid": "ARUN", +- "dist": "1.6", ++ "dist": "", + "distvname": "1.6", + "extension": "tar.gz", + "filename": "1.6.tar.gz", + "maturity": "released", + "pathname": "A/AR/ARUN/1.6.tar.gz", +- "version": null, ++ "version": "1.6", + +A/AU/AUTOLIFE/Mojo-UserAgent_t2.tar.gz (2016) + "cpanid": "AUTOLIFE", +- "dist": "Mojo", ++ "dist": "Mojo-UserAgent", + "distvname": "Mojo-UserAgent_t2", + "extension": "tar.gz", + "filename": "Mojo-UserAgent_t2.tar.gz", + "maturity": "released", + "pathname": "A/AU/AUTOLIFE/Mojo-UserAgent_t2.tar.gz", +- "version": "UserAgent_t2", ++ "version": "t2", + +A/AD/ADARSHTP/-withoutworldwriteables.tar.gz (2010) + "cpanid": "ADARSHTP", +- "dist": "-withoutworldwriteables", ++ "dist": "", + "distvname": "-withoutworldwriteables", + "extension": "tar.gz", + "filename": "-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "A/AD/ADARSHTP/-withoutworldwriteables.tar.gz", + "version": null, + +A/AP/APEIRON/-0.01.tar.gz (2011) + "cpanid": "APEIRON", +- "dist": "-0.01", ++ "dist": "", + "distvname": "-0.01", + "extension": "tar.gz", + "filename": "-0.01.tar.gz", + "maturity": "released", + "pathname": "A/AP/APEIRON/-0.01.tar.gz", +- "version": null, ++ "version": "0.01", + +A/AQ/AQUMSIEH/ZooZv0.9a.zip (2004) + "cpanid": "AQUMSIEH", +- "dist": "ZooZv", ++ "dist": "ZooZ", + "distvname": "ZooZv0.9a", + "extension": "zip", + "filename": "ZooZv0.9a.zip", + "maturity": "released", + "pathname": "A/AQ/AQUMSIEH/ZooZv0.9a.zip", +- "version": "0.9a", ++ "version": "v0.9a", + +A/AQ/AQUMSIEH/ZooZv1.0-RC1.tar.gz (2004) + "cpanid": "AQUMSIEH", +- "dist": "ZooZv", ++ "dist": "ZooZ", + "distvname": "ZooZv1.0-RC1", + "extension": "tar.gz", + "filename": "ZooZv1.0-RC1.tar.gz", + "maturity": "released", + "pathname": "A/AQ/AQUMSIEH/ZooZv1.0-RC1.tar.gz", +- "version": "1.0-RC1", ++ "version": "v1.0-RC1", + +A/AH/AHERNIT/Class-Injection-withoutworldwriteables.tar.gz (2010) + "cpanid": "AHERNIT", +- "dist": "Class-Injection-withoutworldwriteables", ++ "dist": "Class-Injection", + "distvname": "Class-Injection-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Class-Injection-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "A/AH/AHERNIT/Class-Injection-withoutworldwriteables.tar.gz", + "version": null, + +A/AN/ANANTHBV/OpenXML-Properties-withoutworldwriteables.tar.gz (2012) + "cpanid": "ANANTHBV", +- "dist": "OpenXML-Properties-withoutworldwriteables", ++ "dist": "OpenXML-Properties", + "distvname": "OpenXML-Properties-withoutworldwriteables", + "extension": "tar.gz", + "filename": "OpenXML-Properties-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "A/AN/ANANTHBV/OpenXML-Properties-withoutworldwriteables.tar.gz", + "version": null, + +A/AN/ANDK/Memo-bindist-any-bin-2-archname-compiler.tar.gz (1998) + "cpanid": "ANDK", +- "dist": "Memo-bindist-any-bin-2-archname-compiler", ++ "dist": "Memo-bindist-any-bin", + "distvname": "Memo-bindist-any-bin-2-archname-compiler", + "extension": "tar.gz", + "filename": "Memo-bindist-any-bin-2-archname-compiler.tar.gz", + "maturity": "released", + "pathname": "A/AN/ANDK/Memo-bindist-any-bin-2-archname-compiler.tar.gz", +- "version": null, ++ "version": "2-archname-compiler", + +A/AN/ANDK/Memo-readme-bin-01-processor-os-compiler.tar.gz (1998) + "cpanid": "ANDK", +- "dist": "Memo-readme-bin-01-processor-os-compiler", ++ "dist": "Memo-readme-bin", + "distvname": "Memo-readme-bin-01-processor-os-compiler", + "extension": "tar.gz", + "filename": "Memo-readme-bin-01-processor-os-compiler.tar.gz", + "maturity": "released", + "pathname": "A/AN/ANDK/Memo-readme-bin-01-processor-os-compiler.tar.gz", +- "version": null, ++ "version": "01-processor-os-compiler", + +A/AN/ANDYD/mc_units-5.004_70-01.tar.gz (1998) + "cpanid": "ANDYD", +- "dist": "mc_units-5.004_70", ++ "dist": "mc_units", + "distvname": "mc_units-5.004_70-01", + "extension": "tar.gz", + "filename": "mc_units-5.004_70-01.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "A/AN/ANDYD/mc_units-5.004_70-01.tar.gz", +- "version": "01", ++ "version": "5.004_70-01", + +A/AN/ANDYD/5.003_07-2.U.tar.gz (1996) + "cpanid": "ANDYD", +- "dist": "5.003_07-2.U", ++ "dist": "", + "distvname": "5.003_07-2.U", + "extension": "tar.gz", + "filename": "5.003_07-2.U.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "A/AN/ANDYD/5.003_07-2.U.tar.gz", +- "version": null, ++ "version": "5.003_07-2.U", + +A/AN/ANDYD/mc_units-5.005_00-01.tar.gz (1998) + "cpanid": "ANDYD", +- "dist": "mc_units-5.005_00", ++ "dist": "mc_units", + "distvname": "mc_units-5.005_00-01", + "extension": "tar.gz", + "filename": "mc_units-5.005_00-01.tar.gz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "A/AN/ANDYD/mc_units-5.005_00-01.tar.gz", +- "version": "01", ++ "version": "5.005_00-01", + +A/AN/ANDYJONES/v0.50.tar.gz (2015) + "cpanid": "ANDYJONES", +- "dist": "v", ++ "dist": "", + "distvname": "v0.50", + "extension": "tar.gz", + "filename": "v0.50.tar.gz", + "maturity": "released", + "pathname": "A/AN/ANDYJONES/v0.50.tar.gz", +- "version": "0.50", ++ "version": "v0.50", + +A/AT/ATTILA/0.1.0.tar.gz (2017) + "cpanid": "ATTILA", +- "dist": "0.1.0", ++ "dist": "", + "distvname": "0.1.0", + "extension": "tar.gz", + "filename": "0.1.0.tar.gz", + "maturity": "released", + "pathname": "A/AT/ATTILA/0.1.0.tar.gz", +- "version": null, ++ "version": "0.1.0", + +A/AL/ALLEN/0.03.tar.gz (2016) + "cpanid": "ALLEN", +- "dist": "0.03", ++ "dist": "", + "distvname": "0.03", + "extension": "tar.gz", + "filename": "0.03.tar.gz", + "maturity": "released", + "pathname": "A/AL/ALLEN/0.03.tar.gz", +- "version": null, ++ "version": "0.03", + +A/AL/ALFIE/MySQL--Replication-5953e9a.tar.gz (2011) + "cpanid": "ALFIE", +- "dist": "MySQL--Replication-5953e9a", ++ "dist": "MySQL--Replication", + "distvname": "MySQL--Replication-5953e9a", + "extension": "tar.gz", + "filename": "MySQL--Replication-5953e9a.tar.gz", + "maturity": "released", + "pathname": "A/AL/ALFIE/MySQL--Replication-5953e9a.tar.gz", +- "version": null, ++ "version": "5953e9a", + +A/AB/ABERNDT/Win32-Snarl-withoutworldwriteables.tar.gz (2010) + "cpanid": "ABERNDT", +- "dist": "Win32-Snarl-withoutworldwriteables", ++ "dist": "Win32-Snarl", + "distvname": "Win32-Snarl-withoutworldwriteables", + "extension": "tar.gz", + "filename": "Win32-Snarl-withoutworldwriteables.tar.gz", + "maturity": "released", + "pathname": "A/AB/ABERNDT/Win32-Snarl-withoutworldwriteables.tar.gz", + "version": null, + +A/AC/ACCARDO/1.65.tar.gz (2015) + "cpanid": "ACCARDO", +- "dist": "1.65", ++ "dist": "", + "distvname": "1.65", + "extension": "tar.gz", + "filename": "1.65.tar.gz", + "maturity": "released", + "pathname": "A/AC/ACCARDO/1.65.tar.gz", +- "version": null, ++ "version": "1.65", + +W/WA/WANGQ/1.0.2.tar.gz (2016) + "cpanid": "WANGQ", +- "dist": "1.0.2", ++ "dist": "", + "distvname": "1.0.2", + "extension": "tar.gz", + "filename": "1.0.2.tar.gz", + "maturity": "released", + "pathname": "W/WA/WANGQ/1.0.2.tar.gz", +- "version": null, ++ "version": "1.0.2", + +K/KI/KIAVASH/0.05.tar.gz (2017) + "cpanid": "KIAVASH", +- "dist": "0.05", ++ "dist": "", + "distvname": "0.05", + "extension": "tar.gz", + "filename": "0.05.tar.gz", + "maturity": "released", + "pathname": "K/KI/KIAVASH/0.05.tar.gz", +- "version": null, ++ "version": "0.05", + +C/CB/CBAIL/perl5_003.tar-gz (1996) + "cpanid": "CBAIL", +- "dist": null, ++ "dist": "perl", + "filename": "perl5_003.tar-gz", + "maturity": "released", + "pathname": "C/CB/CBAIL/perl5_003.tar-gz", +- "version": null, ++ "version": "5_003", + +L/LM/LMOLNAR/perl542b.zip (1997) + "cpanid": "LMOLNAR", +- "dist": "perl542b", ++ "dist": "perl", + "distvname": "perl542b", + "extension": "zip", + "filename": "perl542b.zip", + "maturity": "released", + "pathname": "L/LM/LMOLNAR/perl542b.zip", +- "version": null, ++ "version": "542b", + +H/HM/HMBRAND/mc_units-20060409.tbz (2006) + "cpanid": "HMBRAND", +- "dist": null, ++ "dist": "mc_units", + "filename": "mc_units-20060409.tbz", + "maturity": "released", + "pathname": "H/HM/HMBRAND/mc_units-20060409.tbz", +- "version": null, ++ "version": "20060409", + +H/HM/HMBRAND/mc_units-20061116.tbz (2006) + "cpanid": "HMBRAND", +- "dist": null, ++ "dist": "mc_units", + "filename": "mc_units-20061116.tbz", + "maturity": "released", + "pathname": "H/HM/HMBRAND/mc_units-20061116.tbz", +- "version": null, ++ "version": "20061116", + +H/HM/HMBRAND/DBD-CSV-0.24_02.tbz (2009) + "cpanid": "HMBRAND", +- "dist": null, ++ "dist": "DBD-CSV", + "filename": "DBD-CSV-0.24_02.tbz", +- "maturity": "released", ++ "maturity": "developer", + "pathname": "H/HM/HMBRAND/DBD-CSV-0.24_02.tbz", +- "version": null, ++ "version": "0.24_02", + +H/HM/HMBRAND/mc_units-20050201.tbz (2005) + "cpanid": "HMBRAND", +- "dist": null, ++ "dist": "mc_units", + "filename": "mc_units-20050201.tbz", + "maturity": "released", + "pathname": "H/HM/HMBRAND/mc_units-20050201.tbz", +- "version": null, ++ "version": "20050201", + +C/CO/COVINGTON/Log-Reproducible-v0.12.1_a.tar_gz (2014) + "cpanid": "COVINGTON", +- "dist": null, ++ "dist": "Log-Reproducible", + "filename": "Log-Reproducible-v0.12.1_a.tar_gz", + "maturity": "released", + "pathname": "C/CO/COVINGTON/Log-Reproducible-v0.12.1_a.tar_gz", +- "version": null, ++ "version": "v0.12.1_a", + +C/CB/CBAIL/perl5_002_01.tar-gz (1996) + "cpanid": "CBAIL", +- "dist": null, ++ "dist": "perl", + "filename": "perl5_002_01.tar-gz", + "maturity": "released", + "pathname": "C/CB/CBAIL/perl5_002_01.tar-gz", +- "version": null, ++ "version": "5_002_01", + +C/CB/CBAIL/perl5_003_01.tar-gz (1996) + "cpanid": "CBAIL", +- "dist": null, ++ "dist": "perl", + "filename": "perl5_003_01.tar-gz", + "maturity": "released", + "pathname": "C/CB/CBAIL/perl5_003_01.tar-gz", +- "version": null, ++ "version": "5_003_01", + +P/PF/PFAUT/vms-logical-0_4.tar-gz (2009) + "cpanid": "PFAUT", +- "dist": null, ++ "dist": "vms-logical", + "filename": "vms-logical-0_4.tar-gz", + "maturity": "released", + "pathname": "P/PF/PFAUT/vms-logical-0_4.tar-gz", +- "version": null, ++ "version": "0_4", + +H/HY/HYTHM/Perl6/0.0.2.tar.gz (2019) + "cpanid": "HYTHM", +- "dist": "0.0.2", ++ "dist": "", + "distvname": "0.0.2", + "extension": "tar.gz", + "filename": "Perl6/0.0.2.tar.gz", + "maturity": "released", + "pathname": "H/HY/HYTHM/Perl6/0.0.2.tar.gz", +- "version": null, ++ "version": "0.0.2", + +P/PS/PSIXSTEVE/Perl6/perl6-Math-Polygonsv0.0.3.zip (2019) + "cpanid": "PSIXSTEVE", +- "dist": "perl6-Math-Polygonsv", ++ "dist": "perl6-Math-Polygons", + "distvname": "perl6-Math-Polygonsv0.0.3", + "extension": "zip", + "filename": "Perl6/perl6-Math-Polygonsv0.0.3.zip", + "maturity": "released", + "pathname": "P/PS/PSIXSTEVE/Perl6/perl6-Math-Polygonsv0.0.3.zip", +- "version": "0.0.3", ++ "version": "v0.0.3", + +A/AD/ADAMS/Watch-Creed-2-online-full-movie-free-download-hd.zip (2018) + "cpanid": "ADAMS", +- "dist": "Watch-Creed-2-online-full-movie-free-download-hd", ++ "dist": "Watch-Creed", + "distvname": "Watch-Creed-2-online-full-movie-free-download-hd", + "extension": "zip", + "filename": "Watch-Creed-2-online-full-movie-free-download-hd.zip", + "maturity": "released", + "pathname": "A/AD/ADAMS/Watch-Creed-2-online-full-movie-free-download-hd.zip", +- "version": null, ++ "version": "2-online-full-movie-free-download-hd", + +A/AD/ADAMS/Watch-Creed-2-online-full-movie-free-download-uhd.zip (2018) + "cpanid": "ADAMS", +- "dist": "Watch-Creed-2-online-full-movie-free-download-uhd", ++ "dist": "Watch-Creed", + "distvname": "Watch-Creed-2-online-full-movie-free-download-uhd", + "extension": "zip", + "filename": "Watch-Creed-2-online-full-movie-free-download-uhd.zip", + "maturity": "released", + "pathname": "A/AD/ADAMS/Watch-Creed-2-online-full-movie-free-download-uhd.zip", +- "version": null, ++ "version": "2-online-full-movie-free-download-uhd", + |