summaryrefslogtreecommitdiff
path: root/systems/texlive/tlnet/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /systems/texlive/tlnet/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
Initial commit
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/lib/Module/CoreList/Utils.pm')
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/Module/CoreList/Utils.pm1574
1 files changed, 1574 insertions, 0 deletions
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/Module/CoreList/Utils.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
new file mode 100644
index 0000000000..d2d8a4e95a
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
@@ -0,0 +1,1574 @@
+package Module::CoreList::Utils;
+
+use strict;
+use warnings;
+use Module::CoreList;
+
+our $VERSION = '5.20181129_28';
+our %utilities;
+
+sub utilities {
+ my $perl = shift;
+ $perl = shift if eval { $perl->isa(__PACKAGE__) };
+ return unless $perl or exists $utilities{$perl};
+ return sort keys %{ $utilities{$perl} };
+}
+
+sub _released_order { # Sort helper, to make '?' sort after everything else
+ (substr($Module::CoreList::released{$a}, 0, 1) eq "?")
+ ? ((substr($Module::CoreList::released{$b}, 0, 1) eq "?")
+ ? 0
+ : 1)
+ : ((substr($Module::CoreList::released{$b}, 0, 1) eq "?")
+ ? -1
+ : $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} )
+}
+
+sub first_release_raw {
+ my $util = shift;
+ $util = shift if eval { $util->isa(__PACKAGE__) };
+ #and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z#;
+ my $version = shift;
+
+ my @perls = $version
+ ? grep { exists $utilities{$_}{ $util } &&
+ $utilities{$_}{ $util } ge $version } keys %utilities
+ : grep { exists $utilities{$_}{ $util } } keys %utilities;
+
+ return grep { exists $Module::CoreList::released{$_} } @perls;
+}
+
+sub first_release_by_date {
+ my @perls = &first_release_raw;
+ return unless @perls;
+ return (sort _released_order @perls)[0];
+}
+
+sub first_release {
+ my @perls = &first_release_raw;
+ return unless @perls;
+ return (sort { $a cmp $b } @perls)[0];
+}
+
+sub removed_from {
+ my @perls = &removed_raw;
+ return shift @perls;
+}
+
+sub removed_from_by_date {
+ my @perls = sort _released_order &removed_raw;
+ return shift @perls;
+}
+
+sub removed_raw {
+ my $util = shift;
+ $util = shift if eval { $util->isa(__PACKAGE__) };
+ return unless my @perls = sort { $a cmp $b } first_release_raw($util);
+ @perls = grep { exists $Module::CoreList::released{$_} } @perls;
+ my $last = pop @perls;
+ my @removed = grep { $_ > $last } sort { $a cmp $b } keys %utilities;
+ return @removed;
+}
+
+my %delta = (
+ 5 => {
+ changed => {
+ 'a2p' => '1',
+ 'c2ph' => '1',
+ 'cppstdin' => '1',
+ 'find2perl' => '1',
+ 'pstruct' => '1',
+ 's2p' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.001 => {
+ delta_from => 5,
+ changed => {
+ 'h2xs' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.002 => {
+ delta_from => 5.001,
+ changed => {
+ 'h2ph' => '1',
+ 'perlbug' => '1',
+ 'perldoc' => '1',
+ 'pod2html' => '1',
+ 'pod2latex' => '1',
+ 'pod2man' => '1',
+ 'pod2text' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.00307 => {
+ delta_from => 5.002,
+ changed => {
+ 'pl2pm' => '1',
+ },
+ removed => {
+ 'cppstdin' => 1,
+ 'pstruct' => 1,
+ }
+ },
+
+ 5.004 => {
+ delta_from => 5.00307,
+ changed => {
+ 'splain' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.005 => {
+ delta_from => 5.00405,
+ changed => {
+ 'perlcc' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.00503 => {
+ delta_from => 5.005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.00405 => {
+ delta_from => 5.004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.006 => {
+ delta_from => 5.00504,
+ changed => {
+ 'dprofpp' => '1',
+ 'pod2usage' => '1',
+ 'podchecker' => '1',
+ 'podselect' => '1',
+ 'pstruct' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.006001 => {
+ delta_from => 5.006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.007003 => {
+ delta_from => 5.006002,
+ changed => {
+ 'libnetcfg' => '1',
+ 'perlivp' => '1',
+ 'psed' => '1',
+ 'xsubpp' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008 => {
+ delta_from => 5.007003,
+ changed => {
+ 'enc2xs' => '1',
+ 'piconv' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008001 => {
+ delta_from => 5.008,
+ changed => {
+ 'cpan' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.009 => {
+ delta_from => 5.008009,
+ changed => {
+ },
+ removed => {
+ 'corelist' => 1,
+ 'instmodsh' => 1,
+ 'prove' => 1,
+ }
+ },
+
+ 5.008002 => {
+ delta_from => 5.008001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.006002 => {
+ delta_from => 5.006001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008003 => {
+ delta_from => 5.008002,
+ changed => {
+ 'instmodsh' => '1',
+ 'prove' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.00504 => {
+ delta_from => 5.00503,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009001 => {
+ delta_from => 5.009,
+ changed => {
+ 'instmodsh' => '1',
+ 'prove' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008004 => {
+ delta_from => 5.008003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008005 => {
+ delta_from => 5.008004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008006 => {
+ delta_from => 5.008005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009002 => {
+ delta_from => 5.009001,
+ changed => {
+ 'corelist' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008007 => {
+ delta_from => 5.008006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009003 => {
+ delta_from => 5.009002,
+ changed => {
+ 'ptar' => '1',
+ 'ptardiff' => '1',
+ 'shasum' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008008 => {
+ delta_from => 5.008007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009004 => {
+ delta_from => 5.009003,
+ changed => {
+ 'config_data' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.009005 => {
+ delta_from => 5.009004,
+ changed => {
+ 'cpan2dist' => '1',
+ 'cpanp' => '1',
+ 'cpanp-run-perl' => '1',
+ },
+ removed => {
+ 'perlcc' => 1,
+ }
+ },
+
+ 5.010000 => {
+ delta_from => 5.009005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008009 => {
+ delta_from => 5.008008,
+ changed => {
+ 'corelist' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.010001 => {
+ delta_from => 5.010000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011 => {
+ delta_from => 5.010001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011001 => {
+ delta_from => 5.011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011002 => {
+ delta_from => 5.011001,
+ changed => {
+ 'perlthanks' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.011003 => {
+ delta_from => 5.011002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011004 => {
+ delta_from => 5.011003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011005 => {
+ delta_from => 5.011004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012 => {
+ delta_from => 5.011005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013 => {
+ delta_from => 5.012005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012001 => {
+ delta_from => 5.012,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013001 => {
+ delta_from => 5.013,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013002 => {
+ delta_from => 5.013001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013003 => {
+ delta_from => 5.013002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013004 => {
+ delta_from => 5.013003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012002 => {
+ delta_from => 5.012001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013005 => {
+ delta_from => 5.013004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013006 => {
+ delta_from => 5.013005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013007 => {
+ delta_from => 5.013006,
+ changed => {
+ 'ptargrep' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.013008 => {
+ delta_from => 5.013007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013009 => {
+ delta_from => 5.013008,
+ changed => {
+ 'json_pp' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.012003 => {
+ delta_from => 5.012002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013010 => {
+ delta_from => 5.013009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013011 => {
+ delta_from => 5.013010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014 => {
+ delta_from => 5.013011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014001 => {
+ delta_from => 5.014,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015 => {
+ delta_from => 5.014004,
+ changed => {
+ },
+ removed => {
+ 'dprofpp' => 1,
+ }
+ },
+
+ 5.012004 => {
+ delta_from => 5.012003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015001 => {
+ delta_from => 5.015,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015002 => {
+ delta_from => 5.015001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015003 => {
+ delta_from => 5.015002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014002 => {
+ delta_from => 5.014001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015004 => {
+ delta_from => 5.015003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015005 => {
+ delta_from => 5.015004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015006 => {
+ delta_from => 5.015005,
+ changed => {
+ 'zipdetails' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.015007 => {
+ delta_from => 5.015006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015008 => {
+ delta_from => 5.015007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015009 => {
+ delta_from => 5.015008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016 => {
+ delta_from => 5.015009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017 => {
+ delta_from => 5.016003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017001 => {
+ delta_from => 5.017,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017002 => {
+ delta_from => 5.017001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016001 => {
+ delta_from => 5.016,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017003 => {
+ delta_from => 5.017002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017004 => {
+ delta_from => 5.017003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014003 => {
+ delta_from => 5.014002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017005 => {
+ delta_from => 5.017004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016002 => {
+ delta_from => 5.016001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012005 => {
+ delta_from => 5.012004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017006 => {
+ delta_from => 5.017005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017007 => {
+ delta_from => 5.017006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017008 => {
+ delta_from => 5.017007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017009 => {
+ delta_from => 5.017008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014004 => {
+ delta_from => 5.014003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016003 => {
+ delta_from => 5.016002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017010 => {
+ delta_from => 5.017009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017011 => {
+ delta_from => 5.017010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018000 => {
+ delta_from => 5.017011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018001 => {
+ delta_from => 5.018000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018002 => {
+ delta_from => 5.018001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018003 => {
+ delta_from => 5.018000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018004 => {
+ delta_from => 5.018000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019000 => {
+ delta_from => 5.018000,
+ changed => {
+ },
+ removed => {
+ 'cpan2dist' => '1',
+ 'cpanp' => '1',
+ 'cpanp-run-perl' => '1',
+ 'pod2latex' => '1',
+ }
+ },
+ 5.019001 => {
+ delta_from => 5.019000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019002 => {
+ delta_from => 5.019001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019003 => {
+ delta_from => 5.019002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019004 => {
+ delta_from => 5.019003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019005 => {
+ delta_from => 5.019004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019006 => {
+ delta_from => 5.019005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019007 => {
+ delta_from => 5.019006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019008 => {
+ delta_from => 5.019007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019009 => {
+ delta_from => 5.019008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019010 => {
+ delta_from => 5.019009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019011 => {
+ delta_from => 5.019010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.020000 => {
+ delta_from => 5.019011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021000 => {
+ delta_from => 5.020000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021001 => {
+ delta_from => 5.021000,
+ changed => {
+ },
+ removed => {
+ 'a2p' => 1,
+ 'config_data' => 1,
+ 'find2perl' => 1,
+ 'psed' => 1,
+ 's2p' => 1,
+ }
+ },
+ 5.021002 => {
+ delta_from => 5.021001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021003 => {
+ delta_from => 5.021002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.020001 => {
+ delta_from => 5.02,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021004 => {
+ delta_from => 5.021003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021005 => {
+ delta_from => 5.021004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021006 => {
+ delta_from => 5.021005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021007 => {
+ delta_from => 5.021006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021008 => {
+ delta_from => 5.021007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.020002 => {
+ delta_from => 5.020001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021009 => {
+ delta_from => 5.021008,
+ changed => {
+ 'encguess' => '1',
+ },
+ removed => {
+ }
+ },
+ 5.021010 => {
+ delta_from => 5.021009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.021011 => {
+ delta_from => 5.02101,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.022000 => {
+ delta_from => 5.021011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023000 => {
+ delta_from => 5.022000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023001 => {
+ delta_from => 5.023,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023002 => {
+ delta_from => 5.023001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.020003 => {
+ delta_from => 5.020002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023003 => {
+ delta_from => 5.023002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023004 => {
+ delta_from => 5.023003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023005 => {
+ delta_from => 5.023004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.022001 => {
+ delta_from => 5.022,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023006 => {
+ delta_from => 5.023005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023007 => {
+ delta_from => 5.023006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023008 => {
+ delta_from => 5.023007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.023009 => {
+ delta_from => 5.023008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.022002 => {
+ delta_from => 5.022001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.024000 => {
+ delta_from => 5.023009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025000 => {
+ delta_from => 5.024000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025001 => {
+ delta_from => 5.025000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025002 => {
+ delta_from => 5.025001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025003 => {
+ delta_from => 5.025002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025004 => {
+ delta_from => 5.025003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025005 => {
+ delta_from => 5.025004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025006 => {
+ delta_from => 5.025005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025007 => {
+ delta_from => 5.025006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025008 => {
+ delta_from => 5.025007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.022003 => {
+ delta_from => 5.022002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.024001 => {
+ delta_from => 5.024000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025009 => {
+ delta_from => 5.025008,
+ changed => {
+ },
+ removed => {
+ 'c2ph' => 1,
+ 'pstruct' => 1,
+ }
+ },
+ 5.025010 => {
+ delta_from => 5.025009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025011 => {
+ delta_from => 5.025010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.025012 => {
+ delta_from => 5.025011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.026000 => {
+ delta_from => 5.025012,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027000 => {
+ delta_from => 5.026000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027001 => {
+ delta_from => 5.027000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.022004 => {
+ delta_from => 5.022003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.024002 => {
+ delta_from => 5.024001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027002 => {
+ delta_from => 5.027001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027003 => {
+ delta_from => 5.027002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027004 => {
+ delta_from => 5.027003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.024003 => {
+ delta_from => 5.024002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.026001 => {
+ delta_from => 5.026000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027005 => {
+ delta_from => 5.027004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027006 => {
+ delta_from => 5.027005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027007 => {
+ delta_from => 5.027006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027008 => {
+ delta_from => 5.027007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027009 => {
+ delta_from => 5.027008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027010 => {
+ delta_from => 5.027009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.024004 => {
+ delta_from => 5.024003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.026002 => {
+ delta_from => 5.026001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027011 => {
+ delta_from => 5.027010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.028000 => {
+ delta_from => 5.027011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.029000 => {
+ delta_from => 5.028,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.029001 => {
+ delta_from => 5.029000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.029002 => {
+ delta_from => 5.029001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.029003 => {
+ delta_from => 5.029002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.029004 => {
+ delta_from => 5.029003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.028001 => {
+ delta_from => 5.028000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+);
+
+%utilities = Module::CoreList::_undelta(\%delta);
+
+# Create aliases with trailing zeros for $] use
+
+$utilities{'5.000'} = $utilities{5};
+
+_create_aliases(\%utilities);
+
+sub _create_aliases {
+ my ($hash) = @_;
+
+ for my $version (keys %$hash) {
+ next unless $version >= 5.010;
+
+ my $padded = sprintf "%0.6f", $version;
+
+ # If the version in string form isn't the same as the numeric version,
+ # alias it.
+ if ($padded ne $version && $version == $padded) {
+ $hash->{$padded} = $hash->{$version};
+ }
+ }
+}
+
+'foo';
+
+=pod
+
+=head1 NAME
+
+Module::CoreList::Utils - what utilities shipped with versions of perl
+
+=head1 SYNOPSIS
+
+ use Module::CoreList::Utils;
+
+ print $Module::CoreList::Utils::utilities{5.009003}{ptar}; # prints 1
+
+ print Module::CoreList::Utils->first_release('corelist');
+ # prints 5.008009
+
+ print Module::CoreList::Utils->first_release_by_date('corelist');
+ # prints 5.009002
+
+=head1 DESCRIPTION
+
+Module::CoreList::Utils provides information on which core and dual-life utilities shipped
+with each version of L<perl>.
+
+It provides a number of mechanisms for querying this information.
+
+There is a functional programming API available for programmers to query
+information.
+
+Programmers may also query the contained hash structure to find relevant
+information.
+
+=head1 FUNCTIONS API
+
+These are the functions that are available, they may either be called as functions or class methods:
+
+ Module::CoreList::Utils::first_release('corelist'); # as a function
+
+ Module::CoreList::Utils->first_release('corelist'); # class method
+
+=over
+
+=item C<utilities>
+
+Requires a perl version as an argument, returns a list of utilities that shipped with
+that version of perl, or undef/empty list if that perl doesn't exist.
+
+=item C<first_release( UTILITY )>
+
+Requires a UTILITY name as an argument, returns the perl version when that utility first
+appeared in core as ordered by perl version number or undef ( in scalar context )
+or an empty list ( in list context ) if that utility is not in core.
+
+=item C<first_release_by_date( UTILITY )>
+
+Requires a UTILITY name as an argument, returns the perl version when that utility first
+appeared in core as ordered by release date or undef ( in scalar context )
+or an empty list ( in list context ) if that utility is not in core.
+
+=item C<removed_from( UTILITY )>
+
+Takes a UTILITY name as an argument, returns the first perl version where that utility
+was removed from core. Returns undef if the given utility was never in core or remains
+in core.
+
+=item C<removed_from_by_date( UTILITY )>
+
+Takes a UTILITY name as an argument, returns the first perl version by release date where that
+utility was removed from core. Returns undef if the given utility was never in core or remains
+in core.
+
+=back
+
+=head1 DATA STRUCTURES
+
+These are the hash data structures that are available:
+
+=over
+
+=item C<%Module::CoreList::Utils::utilities>
+
+A hash of hashes that is keyed on perl version as indicated
+in $]. The second level hash is utility / defined pairs.
+
+=back
+
+=head1 AUTHOR
+
+Chris C<BinGOs> Williams <chris@bingosnet.co.uk>
+
+Currently maintained by the perl 5 porters E<lt>perl5-porters@perl.orgE<gt>.
+
+This module is the result of archaeology undertaken during QA Hackathon
+in Lancaster, April 2013.
+
+=head1 LICENSE
+
+Copyright (C) 2013 Chris Williams. All Rights Reserved.
+
+This module is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<corelist>, L<Module::CoreList>, L<perl>, L<http://perlpunks.de/corelist>
+
+=cut