Current File : /home/mmdealscpanel/yummmdeals.com/Module.tar
Loaded.pm000064400000006424150344162420006301 0ustar00package Module::Loaded;

use strict;
use Carp qw[carp];

BEGIN { use base 'Exporter';
        use vars qw[@EXPORT $VERSION];

        $VERSION = '0.08';
        @EXPORT  = qw[mark_as_loaded mark_as_unloaded is_loaded];
}

=head1 NAME

Module::Loaded - mark modules as loaded or unloaded

=head1 SYNOPSIS

    use Module::Loaded;

    $bool = mark_as_loaded('Foo');   # Foo.pm is now marked as loaded
    $loc  = is_loaded('Foo');        # location of Foo.pm set to the
                                     # loaders location
    eval "require 'Foo'";            # is now a no-op

    $bool = mark_as_unloaded('Foo'); # Foo.pm no longer marked as loaded
    eval "require 'Foo'";            # Will try to find Foo.pm in @INC

=head1 DESCRIPTION

When testing applications, often you find yourself needing to provide
functionality in your test environment that would usually be provided
by external modules. Rather than munging the C<%INC> by hand to mark
these external modules as loaded, so they are not attempted to be loaded
by perl, this module offers you a very simple way to mark modules as
loaded and/or unloaded.

=head1 FUNCTIONS

=head2 $bool = mark_as_loaded( PACKAGE );

Marks the package as loaded to perl. C<PACKAGE> can be a bareword or
string.

If the module is already loaded, C<mark_as_loaded> will carp about
this and tell you from where the C<PACKAGE> has been loaded already.

=cut

sub mark_as_loaded (*) {
    my $pm      = shift;
    my $file    = __PACKAGE__->_pm_to_file( $pm ) or return;
    my $who     = [caller]->[1];

    my $where   = is_loaded( $pm );
    if ( defined $where ) {
        carp "'$pm' already marked as loaded ('$where')";

    } else {
        $INC{$file} = $who;
    }

    return 1;
}

=head2 $bool = mark_as_unloaded( PACKAGE );

Marks the package as unloaded to perl, which is the exact opposite
of C<mark_as_loaded>. C<PACKAGE> can be a bareword or string.

If the module is already unloaded, C<mark_as_unloaded> will carp about
this and tell you the C<PACKAGE> has been unloaded already.

=cut

sub mark_as_unloaded (*) {
    my $pm      = shift;
    my $file    = __PACKAGE__->_pm_to_file( $pm ) or return;

    unless( defined is_loaded( $pm ) ) {
        carp "'$pm' already marked as unloaded";

    } else {
        delete $INC{ $file };
    }

    return 1;
}

=head2 $loc = is_loaded( PACKAGE );

C<is_loaded> tells you if C<PACKAGE> has been marked as loaded yet.
C<PACKAGE> can be a bareword or string.

It returns falls if C<PACKAGE> has not been loaded yet and the location
from where it is said to be loaded on success.

=cut

sub is_loaded (*) {
    my $pm      = shift;
    my $file    = __PACKAGE__->_pm_to_file( $pm ) or return;

    return $INC{$file} if exists $INC{$file};

    return;
}


sub _pm_to_file {
    my $pkg = shift;
    my $pm  = shift or return;

    my $file = join '/', split '::', $pm;
    $file .= '.pm';

    return $file;
}

=head1 BUG REPORTS

Please report bugs or other issues to E<lt>bug-module-loaded@rt.cpan.org<gt>.

=head1 AUTHOR

This module by Jos Boumans E<lt>kane@cpan.orgE<gt>.

=head1 COPYRIGHT

This library is free software; you may redistribute and/or modify it
under the same terms as Perl itself.

=cut

# Local variables:
# c-indentation-style: bsd
# c-basic-offset: 4
# indent-tabs-mode: nil
# End:
# vim: expandtab shiftwidth=4:

1;
CoreList/Utils.pm000064400000071467150517530300007744 0ustar00package Module::CoreList::Utils;

use strict;
use warnings;
use Module::CoreList;

our $VERSION = '5.20181130';
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.029005 => {
        delta_from => 5.029004,
        changed => {
        },
        removed => {
        }
    },
    5.026003 => {
        delta_from => 5.026002,
        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
Metadata.pm000064400000101515150517530310006625 0ustar00# -*- mode: cperl; tab-width: 8; indent-tabs-mode: nil; basic-offset: 2 -*-
# vim:ts=8:sw=2:et:sta:sts=2:tw=78
package Module::Metadata; # git description: v1.000032-7-gb4e8a3f
# ABSTRACT: Gather package and POD information from perl module files

# Adapted from Perl-licensed code originally distributed with
# Module-Build by Ken Williams

# This module provides routines to gather information about
# perl modules (assuming this may be expanded in the distant
# parrot future to look at other types of modules).

sub __clean_eval { eval $_[0] }
use strict;
use warnings;

our $VERSION = '1.000033';

use Carp qw/croak/;
use File::Spec;
BEGIN {
       # Try really hard to not depend ony any DynaLoaded module, such as IO::File or Fcntl
       eval {
               require Fcntl; Fcntl->import('SEEK_SET'); 1;
       } or *SEEK_SET = sub { 0 }
}
use version 0.87;
BEGIN {
  if ($INC{'Log/Contextual.pm'}) {
    require "Log/Contextual/WarnLogger.pm"; # Hide from AutoPrereqs
    Log::Contextual->import('log_info',
      '-default_logger' => Log::Contextual::WarnLogger->new({ env_prefix => 'MODULE_METADATA', }),
    );
  }
  else {
    *log_info = sub (&) { warn $_[0]->() };
  }
}
use File::Find qw(find);

my $V_NUM_REGEXP = qr{v?[0-9._]+};  # crudely, a v-string or decimal

my $PKG_FIRST_WORD_REGEXP = qr{ # the FIRST word in a package name
  [a-zA-Z_]                     # the first word CANNOT start with a digit
    (?:
      [\w']?                    # can contain letters, digits, _, or ticks
      \w                        # But, NO multi-ticks or trailing ticks
    )*
}x;

my $PKG_ADDL_WORD_REGEXP = qr{ # the 2nd+ word in a package name
  \w                           # the 2nd+ word CAN start with digits
    (?:
      [\w']?                   # and can contain letters or ticks
      \w                       # But, NO multi-ticks or trailing ticks
    )*
}x;

my $PKG_NAME_REGEXP = qr{ # match a package name
  (?: :: )?               # a pkg name can start with arisdottle
  $PKG_FIRST_WORD_REGEXP  # a package word
  (?:
    (?: :: )+             ### arisdottle (allow one or many times)
    $PKG_ADDL_WORD_REGEXP ### a package word
  )*                      # ^ zero, one or many times
  (?:
    ::                    # allow trailing arisdottle
  )?
}x;

my $PKG_REGEXP  = qr{   # match a package declaration
  ^[\s\{;]*             # intro chars on a line
  package               # the word 'package'
  \s+                   # whitespace
  ($PKG_NAME_REGEXP)    # a package name
  \s*                   # optional whitespace
  ($V_NUM_REGEXP)?        # optional version number
  \s*                   # optional whitesapce
  [;\{]                 # semicolon line terminator or block start (since 5.16)
}x;

my $VARNAME_REGEXP = qr{ # match fully-qualified VERSION name
  ([\$*])         # sigil - $ or *
  (
    (             # optional leading package name
      (?:::|\')?  # possibly starting like just :: (a la $::VERSION)
      (?:\w+(?:::|\'))*  # Foo::Bar:: ...
    )?
    VERSION
  )\b
}x;

my $VERS_REGEXP = qr{ # match a VERSION definition
  (?:
    \(\s*$VARNAME_REGEXP\s*\) # with parens
  |
    $VARNAME_REGEXP           # without parens
  )
  \s*
  =[^=~>]  # = but not ==, nor =~, nor =>
}x;

sub new_from_file {
  my $class    = shift;
  my $filename = File::Spec->rel2abs( shift );

  return undef unless defined( $filename ) && -f $filename;
  return $class->_init(undef, $filename, @_);
}

sub new_from_handle {
  my $class    = shift;
  my $handle   = shift;
  my $filename = shift;
  return undef unless defined($handle) && defined($filename);
  $filename = File::Spec->rel2abs( $filename );

  return $class->_init(undef, $filename, @_, handle => $handle);

}


sub new_from_module {
  my $class   = shift;
  my $module  = shift;
  my %props   = @_;

  $props{inc} ||= \@INC;
  my $filename = $class->find_module_by_name( $module, $props{inc} );
  return undef unless defined( $filename ) && -f $filename;
  return $class->_init($module, $filename, %props);
}

{

  my $compare_versions = sub {
    my ($v1, $op, $v2) = @_;
    $v1 = version->new($v1)
      unless UNIVERSAL::isa($v1,'version');

    my $eval_str = "\$v1 $op \$v2";
    my $result   = eval $eval_str;
    log_info { "error comparing versions: '$eval_str' $@" } if $@;

    return $result;
  };

  my $normalize_version = sub {
    my ($version) = @_;
    if ( $version =~ /[=<>!,]/ ) { # logic, not just version
      # take as is without modification
    }
    elsif ( ref $version eq 'version' ) { # version objects
      $version = $version->is_qv ? $version->normal : $version->stringify;
    }
    elsif ( $version =~ /^[^v][^.]*\.[^.]+\./ ) { # no leading v, multiple dots
      # normalize string tuples without "v": "1.2.3" -> "v1.2.3"
      $version = "v$version";
    }
    else {
      # leave alone
    }
    return $version;
  };

  # separate out some of the conflict resolution logic

  my $resolve_module_versions = sub {
    my $packages = shift;

    my( $file, $version );
    my $err = '';
      foreach my $p ( @$packages ) {
        if ( defined( $p->{version} ) ) {
          if ( defined( $version ) ) {
            if ( $compare_versions->( $version, '!=', $p->{version} ) ) {
              $err .= "  $p->{file} ($p->{version})\n";
            }
            else {
              # same version declared multiple times, ignore
            }
          }
          else {
            $file    = $p->{file};
            $version = $p->{version};
          }
        }
      $file ||= $p->{file} if defined( $p->{file} );
    }

    if ( $err ) {
      $err = "  $file ($version)\n" . $err;
    }

    my %result = (
      file    => $file,
      version => $version,
      err     => $err
    );

    return \%result;
  };

  sub provides {
    my $class = shift;

    croak "provides() requires key/value pairs \n" if @_ % 2;
    my %args = @_;

    croak "provides() takes only one of 'dir' or 'files'\n"
      if $args{dir} && $args{files};

    croak "provides() requires a 'version' argument"
      unless defined $args{version};

    croak "provides() does not support version '$args{version}' metadata"
        unless grep { $args{version} eq $_ } qw/1.4 2/;

    $args{prefix} = 'lib' unless defined $args{prefix};

    my $p;
    if ( $args{dir} ) {
      $p = $class->package_versions_from_directory($args{dir});
    }
    else {
      croak "provides() requires 'files' to be an array reference\n"
        unless ref $args{files} eq 'ARRAY';
      $p = $class->package_versions_from_directory($args{files});
    }

    # Now, fix up files with prefix
    if ( length $args{prefix} ) { # check in case disabled with q{}
      $args{prefix} =~ s{/$}{};
      for my $v ( values %$p ) {
        $v->{file} = "$args{prefix}/$v->{file}";
      }
    }

    return $p
  }

  sub package_versions_from_directory {
    my ( $class, $dir, $files ) = @_;

    my @files;

    if ( $files ) {
      @files = @$files;
    }
    else {
      find( {
        wanted => sub {
          push @files, $_ if -f $_ && /\.pm$/;
        },
        no_chdir => 1,
      }, $dir );
    }

    # First, we enumerate all packages & versions,
    # separating into primary & alternative candidates
    my( %prime, %alt );
    foreach my $file (@files) {
      my $mapped_filename = File::Spec::Unix->abs2rel( $file, $dir );
      my @path = split( /\//, $mapped_filename );
      (my $prime_package = join( '::', @path )) =~ s/\.pm$//;

      my $pm_info = $class->new_from_file( $file );

      foreach my $package ( $pm_info->packages_inside ) {
        next if $package eq 'main';  # main can appear numerous times, ignore
        next if $package eq 'DB';    # special debugging package, ignore
        next if grep /^_/, split( /::/, $package ); # private package, ignore

        my $version = $pm_info->version( $package );

        $prime_package = $package if lc($prime_package) eq lc($package);
        if ( $package eq $prime_package ) {
          if ( exists( $prime{$package} ) ) {
            croak "Unexpected conflict in '$package'; multiple versions found.\n";
          }
          else {
            $mapped_filename = "$package.pm" if lc("$package.pm") eq lc($mapped_filename);
            $prime{$package}{file} = $mapped_filename;
            $prime{$package}{version} = $version if defined( $version );
          }
        }
        else {
          push( @{$alt{$package}}, {
                                    file    => $mapped_filename,
                                    version => $version,
                                   } );
        }
      }
    }

    # Then we iterate over all the packages found above, identifying conflicts
    # and selecting the "best" candidate for recording the file & version
    # for each package.
    foreach my $package ( keys( %alt ) ) {
      my $result = $resolve_module_versions->( $alt{$package} );

      if ( exists( $prime{$package} ) ) { # primary package selected

        if ( $result->{err} ) {
        # Use the selected primary package, but there are conflicting
        # errors among multiple alternative packages that need to be
        # reported
          log_info {
            "Found conflicting versions for package '$package'\n" .
            "  $prime{$package}{file} ($prime{$package}{version})\n" .
            $result->{err}
          };

        }
        elsif ( defined( $result->{version} ) ) {
        # There is a primary package selected, and exactly one
        # alternative package

        if ( exists( $prime{$package}{version} ) &&
             defined( $prime{$package}{version} ) ) {
          # Unless the version of the primary package agrees with the
          # version of the alternative package, report a conflict
        if ( $compare_versions->(
                 $prime{$package}{version}, '!=', $result->{version}
               )
             ) {

            log_info {
              "Found conflicting versions for package '$package'\n" .
              "  $prime{$package}{file} ($prime{$package}{version})\n" .
              "  $result->{file} ($result->{version})\n"
            };
          }

        }
        else {
          # The prime package selected has no version so, we choose to
          # use any alternative package that does have a version
          $prime{$package}{file}    = $result->{file};
          $prime{$package}{version} = $result->{version};
        }

        }
        else {
        # no alt package found with a version, but we have a prime
        # package so we use it whether it has a version or not
        }

      }
      else { # No primary package was selected, use the best alternative

        if ( $result->{err} ) {
          log_info {
            "Found conflicting versions for package '$package'\n" .
            $result->{err}
          };
        }

        # Despite possible conflicting versions, we choose to record
        # something rather than nothing
        $prime{$package}{file}    = $result->{file};
        $prime{$package}{version} = $result->{version}
          if defined( $result->{version} );
      }
    }

    # Normalize versions.  Can't use exists() here because of bug in YAML::Node.
    # XXX "bug in YAML::Node" comment seems irrelevant -- dagolden, 2009-05-18
    for (grep defined $_->{version}, values %prime) {
      $_->{version} = $normalize_version->( $_->{version} );
    }

    return \%prime;
  }
}


sub _init {
  my $class    = shift;
  my $module   = shift;
  my $filename = shift;
  my %props = @_;

  my $handle = delete $props{handle};
  my( %valid_props, @valid_props );
  @valid_props = qw( collect_pod inc );
  @valid_props{@valid_props} = delete( @props{@valid_props} );
  warn "Unknown properties: @{[keys %props]}\n" if scalar( %props );

  my %data = (
    module       => $module,
    filename     => $filename,
    version      => undef,
    packages     => [],
    versions     => {},
    pod          => {},
    pod_headings => [],
    collect_pod  => 0,

    %valid_props,
  );

  my $self = bless(\%data, $class);

  if ( not $handle ) {
    my $filename = $self->{filename};
    open $handle, '<', $filename
      or croak( "Can't open '$filename': $!" );

    $self->_handle_bom($handle, $filename);
  }
  $self->_parse_fh($handle);

  @{$self->{packages}} = __uniq(@{$self->{packages}});

  unless($self->{module} and length($self->{module})) {
    # CAVEAT (possible TODO): .pmc files not treated the same as .pm
    if ($self->{filename} =~ /\.pm$/) {
      my ($v, $d, $f) = File::Spec->splitpath($self->{filename});
      $f =~ s/\..+$//;
      my @candidates = grep /(^|::)$f$/, @{$self->{packages}};
      $self->{module} = shift(@candidates); # this may be undef
    }
    else {
      # this seems like an atrocious heuristic, albeit marginally better than
      # what was here before. It should be rewritten entirely to be more like
      # "if it's not a .pm file, it's not require()able as a name, therefore
      # name() should be undef."
      if ((grep /main/, @{$self->{packages}})
          or (grep /main/, keys %{$self->{versions}})) {
        $self->{module} = 'main';
      }
      else {
        # TODO: this should maybe default to undef instead
        $self->{module} = $self->{packages}[0] || '';
      }
    }
  }

  $self->{version} = $self->{versions}{$self->{module}}
    if defined( $self->{module} );

  return $self;
}

# class method
sub _do_find_module {
  my $class   = shift;
  my $module  = shift || croak 'find_module_by_name() requires a package name';
  my $dirs    = shift || \@INC;

  my $file = File::Spec->catfile(split( /::/, $module));
  foreach my $dir ( @$dirs ) {
    my $testfile = File::Spec->catfile($dir, $file);
    return [ File::Spec->rel2abs( $testfile ), $dir ]
      if -e $testfile and !-d _;  # For stuff like ExtUtils::xsubpp
    # CAVEAT (possible TODO): .pmc files are not discoverable here
    $testfile .= '.pm';
    return [ File::Spec->rel2abs( $testfile ), $dir ]
      if -e $testfile;
  }
  return;
}

# class method
sub find_module_by_name {
  my $found = shift()->_do_find_module(@_) or return;
  return $found->[0];
}

# class method
sub find_module_dir_by_name {
  my $found = shift()->_do_find_module(@_) or return;
  return $found->[1];
}


# given a line of perl code, attempt to parse it if it looks like a
# $VERSION assignment, returning sigil, full name, & package name
sub _parse_version_expression {
  my $self = shift;
  my $line = shift;

  my( $sigil, $variable_name, $package);
  if ( $line =~ /$VERS_REGEXP/o ) {
    ( $sigil, $variable_name, $package) = $2 ? ( $1, $2, $3 ) : ( $4, $5, $6 );
    if ( $package ) {
      $package = ($package eq '::') ? 'main' : $package;
      $package =~ s/::$//;
    }
  }

  return ( $sigil, $variable_name, $package );
}

# Look for a UTF-8/UTF-16BE/UTF-16LE BOM at the beginning of the stream.
# If there's one, then skip it and set the :encoding layer appropriately.
sub _handle_bom {
  my ($self, $fh, $filename) = @_;

  my $pos = tell $fh;
  return unless defined $pos;

  my $buf = ' ' x 2;
  my $count = read $fh, $buf, length $buf;
  return unless defined $count and $count >= 2;

  my $encoding;
  if ( $buf eq "\x{FE}\x{FF}" ) {
    $encoding = 'UTF-16BE';
  }
  elsif ( $buf eq "\x{FF}\x{FE}" ) {
    $encoding = 'UTF-16LE';
  }
  elsif ( $buf eq "\x{EF}\x{BB}" ) {
    $buf = ' ';
    $count = read $fh, $buf, length $buf;
    if ( defined $count and $count >= 1 and $buf eq "\x{BF}" ) {
      $encoding = 'UTF-8';
    }
  }

  if ( defined $encoding ) {
    if ( "$]" >= 5.008 ) {
      binmode( $fh, ":encoding($encoding)" );
    }
  }
  else {
    seek $fh, $pos, SEEK_SET
      or croak( sprintf "Can't reset position to the top of '$filename'" );
  }

  return $encoding;
}

sub _parse_fh {
  my ($self, $fh) = @_;

  my( $in_pod, $seen_end, $need_vers ) = ( 0, 0, 0 );
  my( @packages, %vers, %pod, @pod );
  my $package = 'main';
  my $pod_sect = '';
  my $pod_data = '';
  my $in_end = 0;

  while (defined( my $line = <$fh> )) {
    my $line_num = $.;

    chomp( $line );

    # From toke.c : any line that begins by "=X", where X is an alphabetic
    # character, introduces a POD segment.
    my $is_cut;
    if ( $line =~ /^=([a-zA-Z].*)/ ) {
      my $cmd = $1;
      # Then it goes back to Perl code for "=cutX" where X is a non-alphabetic
      # character (which includes the newline, but here we chomped it away).
      $is_cut = $cmd =~ /^cut(?:[^a-zA-Z]|$)/;
      $in_pod = !$is_cut;
    }

    if ( $in_pod ) {

      if ( $line =~ /^=head[1-4]\s+(.+)\s*$/ ) {
        push( @pod, $1 );
        if ( $self->{collect_pod} && length( $pod_data ) ) {
          $pod{$pod_sect} = $pod_data;
          $pod_data = '';
        }
        $pod_sect = $1;
      }
      elsif ( $self->{collect_pod} ) {
        $pod_data .= "$line\n";
      }
      next;
    }
    elsif ( $is_cut ) {
      if ( $self->{collect_pod} && length( $pod_data ) ) {
        $pod{$pod_sect} = $pod_data;
        $pod_data = '';
      }
      $pod_sect = '';
      next;
    }

    # Skip after __END__
    next if $in_end;

    # Skip comments in code
    next if $line =~ /^\s*#/;

    # Would be nice if we could also check $in_string or something too
    if ($line eq '__END__') {
      $in_end++;
      next;
    }

    last if $line eq '__DATA__';

    # parse $line to see if it's a $VERSION declaration
    my( $version_sigil, $version_fullname, $version_package ) =
      index($line, 'VERSION') >= 1
        ? $self->_parse_version_expression( $line )
        : ();

    if ( $line =~ /$PKG_REGEXP/o ) {
      $package = $1;
      my $version = $2;
      push( @packages, $package ) unless grep( $package eq $_, @packages );
      $need_vers = defined $version ? 0 : 1;

      if ( not exists $vers{$package} and defined $version ){
        # Upgrade to a version object.
        my $dwim_version = eval { _dwim_version($version) };
        croak "Version '$version' from $self->{filename} does not appear to be valid:\n$line\n\nThe fatal error was: $@\n"
          unless defined $dwim_version;  # "0" is OK!
        $vers{$package} = $dwim_version;
      }
    }

    # VERSION defined with full package spec, i.e. $Module::VERSION
    elsif ( $version_fullname && $version_package ) {
      # we do NOT save this package in found @packages
      $need_vers = 0 if $version_package eq $package;

      unless ( defined $vers{$version_package} && length $vers{$version_package} ) {
        $vers{$version_package} = $self->_evaluate_version_line( $version_sigil, $version_fullname, $line );
      }
    }

    # first non-comment line in undeclared package main is VERSION
    elsif ( $package eq 'main' && $version_fullname && !exists($vers{main}) ) {
      $need_vers = 0;
      my $v = $self->_evaluate_version_line( $version_sigil, $version_fullname, $line );
      $vers{$package} = $v;
      push( @packages, 'main' );
    }

    # first non-comment line in undeclared package defines package main
    elsif ( $package eq 'main' && !exists($vers{main}) && $line =~ /\w/ ) {
      $need_vers = 1;
      $vers{main} = '';
      push( @packages, 'main' );
    }

    # only keep if this is the first $VERSION seen
    elsif ( $version_fullname && $need_vers ) {
      $need_vers = 0;
      my $v = $self->_evaluate_version_line( $version_sigil, $version_fullname, $line );

      unless ( defined $vers{$package} && length $vers{$package} ) {
        $vers{$package} = $v;
      }
    }
  } # end loop over each line

  if ( $self->{collect_pod} && length($pod_data) ) {
    $pod{$pod_sect} = $pod_data;
  }

  $self->{versions} = \%vers;
  $self->{packages} = \@packages;
  $self->{pod} = \%pod;
  $self->{pod_headings} = \@pod;
}

sub __uniq (@)
{
    my (%seen, $key);
    grep { not $seen{ $key = $_ }++ } @_;
}

{
my $pn = 0;
sub _evaluate_version_line {
  my $self = shift;
  my( $sigil, $variable_name, $line ) = @_;

  # We compile into a local sub because 'use version' would cause
  # compiletime/runtime issues with local()
  $pn++; # everybody gets their own package
  my $eval = qq{ my \$dummy = q#  Hide from _packages_inside()
    #; package Module::Metadata::_version::p${pn};
    use version;
    sub {
      local $sigil$variable_name;
      $line;
      return \$$variable_name if defined \$$variable_name;
      return \$Module::Metadata::_version::p${pn}::$variable_name;
    };
  };

  $eval = $1 if $eval =~ m{^(.+)}s;

  local $^W;
  # Try to get the $VERSION
  my $vsub = __clean_eval($eval);
  # some modules say $VERSION <equal sign> $Foo::Bar::VERSION, but Foo::Bar isn't
  # installed, so we need to hunt in ./lib for it
  if ( $@ =~ /Can't locate/ && -d 'lib' ) {
    local @INC = ('lib',@INC);
    $vsub = __clean_eval($eval);
  }
  warn "Error evaling version line '$eval' in $self->{filename}: $@\n"
    if $@;

  (ref($vsub) eq 'CODE') or
    croak "failed to build version sub for $self->{filename}";

  my $result = eval { $vsub->() };
  # FIXME: $eval is not the right thing to print here
  croak "Could not get version from $self->{filename} by executing:\n$eval\n\nThe fatal error was: $@\n"
    if $@;

  # Upgrade it into a version object
  my $version = eval { _dwim_version($result) };

  # FIXME: $eval is not the right thing to print here
  croak "Version '$result' from $self->{filename} does not appear to be valid:\n$eval\n\nThe fatal error was: $@\n"
    unless defined $version; # "0" is OK!

  return $version;
}
}

# Try to DWIM when things fail the lax version test in obvious ways
{
  my @version_prep = (
    # Best case, it just works
    sub { return shift },

    # If we still don't have a version, try stripping any
    # trailing junk that is prohibited by lax rules
    sub {
      my $v = shift;
      $v =~ s{([0-9])[a-z-].*$}{$1}i; # 1.23-alpha or 1.23b
      return $v;
    },

    # Activestate apparently creates custom versions like '1.23_45_01', which
    # cause version.pm to think it's an invalid alpha.  So check for that
    # and strip them
    sub {
      my $v = shift;
      my $num_dots = () = $v =~ m{(\.)}g;
      my $num_unders = () = $v =~ m{(_)}g;
      my $leading_v = substr($v,0,1) eq 'v';
      if ( ! $leading_v && $num_dots < 2 && $num_unders > 1 ) {
        $v =~ s{_}{}g;
        $num_unders = () = $v =~ m{(_)}g;
      }
      return $v;
    },

    # Worst case, try numifying it like we would have before version objects
    sub {
      my $v = shift;
      no warnings 'numeric';
      return 0 + $v;
    },

  );

  sub _dwim_version {
    my ($result) = shift;

    return $result if ref($result) eq 'version';

    my ($version, $error);
    for my $f (@version_prep) {
      $result = $f->($result);
      $version = eval { version->new($result) };
      $error ||= $@ if $@; # capture first failure
      last if defined $version;
    }

    croak $error unless defined $version;

    return $version;
  }
}

############################################################

# accessors
sub name            { $_[0]->{module}            }

sub filename        { $_[0]->{filename}          }
sub packages_inside { @{$_[0]->{packages}}       }
sub pod_inside      { @{$_[0]->{pod_headings}}   }
sub contains_pod    { 0+@{$_[0]->{pod_headings}} }

sub version {
    my $self = shift;
    my $mod  = shift || $self->{module};
    my $vers;
    if ( defined( $mod ) && length( $mod ) &&
         exists( $self->{versions}{$mod} ) ) {
        return $self->{versions}{$mod};
    }
    else {
        return undef;
    }
}

sub pod {
    my $self = shift;
    my $sect = shift;
    if ( defined( $sect ) && length( $sect ) &&
         exists( $self->{pod}{$sect} ) ) {
        return $self->{pod}{$sect};
    }
    else {
        return undef;
    }
}

sub is_indexable {
  my ($self, $package) = @_;

  my @indexable_packages = grep { $_ ne 'main' } $self->packages_inside;

  # check for specific package, if provided
  return !! grep { $_ eq $package } @indexable_packages if $package;

  # otherwise, check for any indexable packages at all
  return !! @indexable_packages;
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Module::Metadata - Gather package and POD information from perl module files

=head1 VERSION

version 1.000033

=head1 SYNOPSIS

  use Module::Metadata;

  # information about a .pm file
  my $info = Module::Metadata->new_from_file( $file );
  my $version = $info->version;

  # CPAN META 'provides' field for .pm files in a directory
  my $provides = Module::Metadata->provides(
    dir => 'lib', version => 2
  );

=head1 DESCRIPTION

This module provides a standard way to gather metadata about a .pm file through
(mostly) static analysis and (some) code execution.  When determining the
version of a module, the C<$VERSION> assignment is C<eval>ed, as is traditional
in the CPAN toolchain.

=head1 CLASS METHODS

=head2 C<< new_from_file($filename, collect_pod => 1) >>

Constructs a C<Module::Metadata> object given the path to a file.  Returns
undef if the filename does not exist.

C<collect_pod> is a optional boolean argument that determines whether POD
data is collected and stored for reference.  POD data is not collected by
default.  POD headings are always collected.

If the file begins by an UTF-8, UTF-16BE or UTF-16LE byte-order mark, then
it is skipped before processing, and the content of the file is also decoded
appropriately starting from perl 5.8.

=head2 C<< new_from_handle($handle, $filename, collect_pod => 1) >>

This works just like C<new_from_file>, except that a handle can be provided
as the first argument.

Note that there is no validation to confirm that the handle is a handle or
something that can act like one.  Passing something that isn't a handle will
cause a exception when trying to read from it.  The C<filename> argument is
mandatory or undef will be returned.

You are responsible for setting the decoding layers on C<$handle> if
required.

=head2 C<< new_from_module($module, collect_pod => 1, inc => \@dirs) >>

Constructs a C<Module::Metadata> object given a module or package name.
Returns undef if the module cannot be found.

In addition to accepting the C<collect_pod> argument as described above,
this method accepts a C<inc> argument which is a reference to an array of
directories to search for the module.  If none are given, the default is
@INC.

If the file that contains the module begins by an UTF-8, UTF-16BE or
UTF-16LE byte-order mark, then it is skipped before processing, and the
content of the file is also decoded appropriately starting from perl 5.8.

=head2 C<< find_module_by_name($module, \@dirs) >>

Returns the path to a module given the module or package name. A list
of directories can be passed in as an optional parameter, otherwise
@INC is searched.

Can be called as either an object or a class method.

=head2 C<< find_module_dir_by_name($module, \@dirs) >>

Returns the entry in C<@dirs> (or C<@INC> by default) that contains
the module C<$module>. A list of directories can be passed in as an
optional parameter, otherwise @INC is searched.

Can be called as either an object or a class method.

=head2 C<< provides( %options ) >>

This is a convenience wrapper around C<package_versions_from_directory>
to generate a CPAN META C<provides> data structure.  It takes key/value
pairs.  Valid option keys include:

=over

=item version B<(required)>

Specifies which version of the L<CPAN::Meta::Spec> should be used as
the format of the C<provides> output.  Currently only '1.4' and '2'
are supported (and their format is identical).  This may change in
the future as the definition of C<provides> changes.

The C<version> option is required.  If it is omitted or if
an unsupported version is given, then C<provides> will throw an error.

=item dir

Directory to search recursively for F<.pm> files.  May not be specified with
C<files>.

=item files

Array reference of files to examine.  May not be specified with C<dir>.

=item prefix

String to prepend to the C<file> field of the resulting output. This defaults
to F<lib>, which is the common case for most CPAN distributions with their
F<.pm> files in F<lib>.  This option ensures the META information has the
correct relative path even when the C<dir> or C<files> arguments are
absolute or have relative paths from a location other than the distribution
root.

=back

For example, given C<dir> of 'lib' and C<prefix> of 'lib', the return value
is a hashref of the form:

  {
    'Package::Name' => {
      version => '0.123',
      file => 'lib/Package/Name.pm'
    },
    'OtherPackage::Name' => ...
  }

=head2 C<< package_versions_from_directory($dir, \@files?) >>

Scans C<$dir> for .pm files (unless C<@files> is given, in which case looks
for those files in C<$dir> - and reads each file for packages and versions,
returning a hashref of the form:

  {
    'Package::Name' => {
      version => '0.123',
      file => 'Package/Name.pm'
    },
    'OtherPackage::Name' => ...
  }

The C<DB> and C<main> packages are always omitted, as are any "private"
packages that have leading underscores in the namespace (e.g.
C<Foo::_private>)

Note that the file path is relative to C<$dir> if that is specified.
This B<must not> be used directly for CPAN META C<provides>.  See
the C<provides> method instead.

=head2 C<< log_info (internal) >>

Used internally to perform logging; imported from Log::Contextual if
Log::Contextual has already been loaded, otherwise simply calls warn.

=head1 OBJECT METHODS

=head2 C<< name() >>

Returns the name of the package represented by this module. If there
is more than one package, it makes a best guess based on the
filename. If it's a script (i.e. not a *.pm) the package name is
'main'.

=head2 C<< version($package) >>

Returns the version as defined by the $VERSION variable for the
package as returned by the C<name> method if no arguments are
given. If given the name of a package it will attempt to return the
version of that package if it is specified in the file.

=head2 C<< filename() >>

Returns the absolute path to the file.
Note that this file may not actually exist on disk yet, e.g. if the module was read from an in-memory filehandle.

=head2 C<< packages_inside() >>

Returns a list of packages. Note: this is a raw list of packages
discovered (or assumed, in the case of C<main>).  It is not
filtered for C<DB>, C<main> or private packages the way the
C<provides> method does.  Invalid package names are not returned,
for example "Foo:Bar".  Strange but valid package names are
returned, for example "Foo::Bar::", and are left up to the caller
on how to handle.

=head2 C<< pod_inside() >>

Returns a list of POD sections.

=head2 C<< contains_pod() >>

Returns true if there is any POD in the file.

=head2 C<< pod($section) >>

Returns the POD data in the given section.

=head2 C<< is_indexable($package) >> or C<< is_indexable() >>

Available since version 1.000020.

Returns a boolean indicating whether the package (if provided) or any package
(otherwise) is eligible for indexing by PAUSE, the Perl Authors Upload Server.
Note This only checks for valid C<package> declarations, and does not take any
ownership information into account.

=head1 SUPPORT

Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Module-Metadata>
(or L<bug-Module-Metadata@rt.cpan.org|mailto:bug-Module-Metadata@rt.cpan.org>).

There is also a mailing list available for users of this distribution, at
L<http://lists.perl.org/list/cpan-workers.html>.

There is also an irc channel available for users of this distribution, at
L<C<#toolchain> on C<irc.perl.org>|irc://irc.perl.org/#toolchain>.

=head1 AUTHOR

Original code from Module::Build::ModuleInfo by Ken Williams
<kwilliams@cpan.org>, Randy W. Sims <RandyS@ThePierianSpring.org>

Released as Module::Metadata by Matt S Trout (mst) <mst@shadowcat.co.uk> with
assistance from David Golden (xdg) <dagolden@cpan.org>.

=head1 CONTRIBUTORS

=for stopwords Karen Etheridge David Golden Vincent Pit Matt S Trout Chris Nehren Graham Knop Olivier Mengué Tomas Doran Tatsuhiko Miyagawa tokuhirom Kent Fredric Peter Rabbitson Steve Hay Jerry D. Hedden Craig A. Berry Mitchell Steinbrunner Edward Zborowski Gareth Harper James Raspass 'BinGOs' Williams Josh Jore

=over 4

=item *

Karen Etheridge <ether@cpan.org>

=item *

David Golden <dagolden@cpan.org>

=item *

Vincent Pit <perl@profvince.com>

=item *

Matt S Trout <mst@shadowcat.co.uk>

=item *

Chris Nehren <apeiron@cpan.org>

=item *

Graham Knop <haarg@haarg.org>

=item *

Olivier Mengué <dolmen@cpan.org>

=item *

Tomas Doran <bobtfish@bobtfish.net>

=item *

Tatsuhiko Miyagawa <miyagawa@bulknews.net>

=item *

tokuhirom <tokuhirom@gmail.com>

=item *

Kent Fredric <kentnl@cpan.org>

=item *

Peter Rabbitson <ribasushi@cpan.org>

=item *

Steve Hay <steve.m.hay@googlemail.com>

=item *

Jerry D. Hedden <jdhedden@cpan.org>

=item *

Craig A. Berry <cberry@cpan.org>

=item *

Craig A. Berry <craigberry@mac.com>

=item *

David Mitchell <davem@iabyn.com>

=item *

David Steinbrunner <dsteinbrunner@pobox.com>

=item *

Edward Zborowski <ed@rubensteintech.com>

=item *

Gareth Harper <gareth@broadbean.com>

=item *

James Raspass <jraspass@gmail.com>

=item *

Chris 'BinGOs' Williams <chris@bingosnet.co.uk>

=item *

Josh Jore <jjore@cpan.org>

=back

=head1 COPYRIGHT & LICENSE

Original code Copyright (c) 2001-2011 Ken Williams.
Additional code Copyright (c) 2010-2011 Matt Trout and David Golden.
All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=cut
Build/PodParser.pm000064400000002431150517530310010040 0ustar00package Module::Build::PodParser;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;

sub new {
  # Perl is so fun.
  my $package = shift;

  my $self;
  $self = bless {have_pod_parser => 0, @_}, $package;

  unless ($self->{fh}) {
    die "No 'file' or 'fh' parameter given" unless $self->{file};
    open($self->{fh}, '<', $self->{file}) or die "Couldn't open $self->{file}: $!";
  }

  return $self;
}

sub parse_from_filehandle {
  my ($self, $fh) = @_;

  local $_;
  while (<$fh>) {
    next unless /^=(?!cut)/ .. /^=cut/;  # in POD
    # Accept Name - abstract or C<Name> - abstract
    last if ($self->{abstract}) = /^ (?: [a-z_0-9:]+ | [BCIF] < [a-z_0-9:]+ > ) \s+ - \s+ (.*\S) /ix;
  }

  my @author;
  while (<$fh>) {
    next unless /^=head1\s+AUTHORS?/i ... /^=/;
    next if /^=/;
    push @author, $_ if /\@/;
  }
  return unless @author;
  s/^\s+|\s+$//g foreach @author;

  $self->{author} = \@author;

  return;
}

sub get_abstract {
  my $self = shift;
  return $self->{abstract} if defined $self->{abstract};

  $self->parse_from_filehandle($self->{fh});

  return $self->{abstract};
}

sub get_author {
  my $self = shift;
  return $self->{author} if defined $self->{author};

  $self->parse_from_filehandle($self->{fh});

  return $self->{author} || [];
}
Build/Base.pm000064400000502524150517530310007023 0ustar00# -*- mode: cperl; tab-width: 8; indent-tabs-mode: nil; basic-offset: 2 -*-
# vim:ts=8:sw=2:et:sta:sts=2
package Module::Build::Base;

use 5.006;
use strict;
use warnings;

our $VERSION = '0.4224';
$VERSION = eval $VERSION;

use Carp;
use Cwd ();
use File::Copy ();
use File::Find ();
use File::Path ();
use File::Basename ();
use File::Spec 0.82 ();
use File::Compare ();
use Module::Build::Dumper ();
use Text::ParseWords ();

use Module::Metadata;
use Module::Build::Notes;
use Module::Build::Config;
use version;


#################### Constructors ###########################
sub new {
  my $self = shift()->_construct(@_);

  $self->{invoked_action} = $self->{action} ||= 'Build_PL';
  $self->cull_args(@ARGV);

  die "Too early to specify a build action '$self->{action}'.  Do 'Build $self->{action}' instead.\n"
    if $self->{action} && $self->{action} ne 'Build_PL';

  $self->check_manifest;
  $self->auto_require;

  # All checks must run regardless if one fails, so no short circuiting!
  if( grep { !$_ } $self->check_prereq, $self->check_autofeatures ) {
    $self->log_warn(<<EOF);

ERRORS/WARNINGS FOUND IN PREREQUISITES.  You may wish to install the versions
of the modules indicated above before proceeding with this installation

EOF
    unless (
      $self->dist_name eq 'Module-Build' ||
      $ENV{PERL5_CPANPLUS_IS_RUNNING} || $ENV{PERL5_CPAN_IS_RUNNING}
    ) {
      $self->log_warn(
        "Run 'Build installdeps' to install missing prerequisites.\n\n"
      );
    }
  }

  # record for later use in resume;
  $self->{properties}{_added_to_INC} = [ $self->_added_to_INC ];

  $self->set_bundle_inc;

  $self->dist_name;
  $self->dist_version;
  $self->release_status;
  $self->_guess_module_name unless $self->module_name;

  $self->_find_nested_builds;

  return $self;
}

sub resume {
  my $package = shift;
  my $self = $package->_construct(@_);
  $self->read_config;

  my @added_earlier = @{ $self->{properties}{_added_to_INC} || [] };

  @INC = ($self->_added_to_INC, @added_earlier, $self->_default_INC);

  # If someone called Module::Build->current() or
  # Module::Build->new_from_context() and the correct class to use is
  # actually a *subclass* of Module::Build, we may need to load that
  # subclass here and re-delegate the resume() method to it.
  unless ( $package->isa($self->build_class) ) {
    my $build_class = $self->build_class;
    my $config_dir = $self->config_dir || '_build';
    my $build_lib = File::Spec->catdir( $config_dir, 'lib' );
    unshift( @INC, $build_lib );
    unless ( $build_class->can('new') ) {
      eval "require $build_class; 1" or die "Failed to re-load '$build_class': $@";
    }
    return $build_class->resume(@_);
  }

  unless ($self->_perl_is_same($self->{properties}{perl})) {
    my $perl = $self->find_perl_interpreter;
    die(<<"DIEFATAL");
* FATAL ERROR: Perl interpreter mismatch. Configuration was initially
  created with '$self->{properties}{perl}'
  but we are now using '$perl'.  You must
  run 'Build realclean' or 'make realclean' and re-configure.
DIEFATAL
  }

  $self->cull_args(@ARGV);

  unless ($self->allow_mb_mismatch) {
    my $mb_version = $Module::Build::VERSION;
    if ( $mb_version ne $self->{properties}{mb_version} ) {
      $self->log_warn(<<"MISMATCH");
* WARNING: Configuration was initially created with Module::Build
  version '$self->{properties}{mb_version}' but we are now using version '$mb_version'.
  If errors occur, you must re-run the Build.PL or Makefile.PL script.
MISMATCH
    }
  }

  $self->{invoked_action} = $self->{action} ||= 'build';

  return $self;
}

sub new_from_context {
  my ($package, %args) = @_;

  $package->run_perl_script('Build.PL',[],[$package->unparse_args(\%args)]);
  return $package->resume;
}

sub current {
  # hmm, wonder what the right thing to do here is
  local @ARGV;
  return shift()->resume;
}

sub _construct {
  my ($package, %input) = @_;

  my $args   = delete $input{args}   || {};
  my $config = delete $input{config} || {};

  my $self = bless {
      args => {%$args},
      config => Module::Build::Config->new(values => $config),
      properties => {
          base_dir        => $package->cwd,
          mb_version      => $Module::Build::VERSION,
          %input,
      },
      phash => {},
      stash => {}, # temporary caching, not stored in _build
  }, $package;

  $self->_set_defaults;
  my ($p, $ph) = ($self->{properties}, $self->{phash});

  foreach (qw(notes config_data features runtime_params cleanup auto_features)) {
    my $file = File::Spec->catfile($self->config_dir, $_);
    $ph->{$_} = Module::Build::Notes->new(file => $file);
    $ph->{$_}->restore if -e $file;
    if (exists $p->{$_}) {
      my $vals = delete $p->{$_};
      foreach my $k (sort keys %$vals) {
        $self->$_($k, $vals->{$k});
      }
    }
  }

  # The following warning could be unnecessary if the user is running
  # an embedded perl, but there aren't too many of those around, and
  # embedded perls aren't usually used to install modules, and the
  # installation process sometimes needs to run external scripts
  # (e.g. to run tests).
  $p->{perl} = $self->find_perl_interpreter
    or $self->log_warn("Warning: Can't locate your perl binary");

  my $blibdir = sub { File::Spec->catdir($p->{blib}, @_) };
  $p->{bindoc_dirs} ||= [ $blibdir->("script") ];
  $p->{libdoc_dirs} ||= [ $blibdir->("lib"), $blibdir->("arch") ];

  $p->{dist_author} = [ $p->{dist_author} ] if defined $p->{dist_author} and not ref $p->{dist_author};

  # Synonyms
  $p->{requires} = delete $p->{prereq} if defined $p->{prereq};
  $p->{script_files} = delete $p->{scripts} if defined $p->{scripts};

  # Convert to from shell strings to arrays
  for ('extra_compiler_flags', 'extra_linker_flags') {
    $p->{$_} = [ $self->split_like_shell($p->{$_}) ] if exists $p->{$_};
  }

  # Convert to arrays
  for ('include_dirs') {
    $p->{$_} = [ $p->{$_} ] if exists $p->{$_} && !ref $p->{$_}
  }

  $self->add_to_cleanup( @{delete $p->{add_to_cleanup}} )
    if $p->{add_to_cleanup};

  return $self;
}

################## End constructors #########################

sub log_info {
  my $self = shift;
  print @_ if ref($self) && ( $self->verbose || ! $self->quiet );
}
sub log_verbose {
  my $self = shift;
  print @_ if ref($self) && $self->verbose;
}
sub log_debug {
  my $self = shift;
  print @_ if ref($self) && $self->debug;
}

sub log_warn {
  # Try to make our call stack invisible
  shift;
  if (@_ and $_[-1] !~ /\n$/) {
    my (undef, $file, $line) = caller();
    warn @_, " at $file line $line.\n";
  } else {
    warn @_;
  }
}


# install paths must be generated when requested to be sure all changes
# to config (from various sources) are included
sub _default_install_paths {
  my $self = shift;
  my $c = $self->{config};
  my $p = {};

  my @libstyle = $c->get('installstyle') ?
      File::Spec->splitdir($c->get('installstyle')) : qw(lib perl5);
  my $arch     = $c->get('archname');
  my $version  = $c->get('version');

  my $bindoc  = $c->get('installman1dir') || undef;
  my $libdoc  = $c->get('installman3dir') || undef;

  my $binhtml = $c->get('installhtml1dir') || $c->get('installhtmldir') || undef;
  my $libhtml = $c->get('installhtml3dir') || $c->get('installhtmldir') || undef;

  $p->{install_sets} =
    {
     core   => {
       lib     => $c->get('installprivlib'),
       arch    => $c->get('installarchlib'),
       bin     => $c->get('installbin'),
       script  => $c->get('installscript'),
       bindoc  => $bindoc,
       libdoc  => $libdoc,
       binhtml => $binhtml,
       libhtml => $libhtml,
     },
     site   => {
       lib     => $c->get('installsitelib'),
       arch    => $c->get('installsitearch'),
       bin     => $c->get('installsitebin')      || $c->get('installbin'),
       script  => $c->get('installsitescript')   ||
         $c->get('installsitebin') || $c->get('installscript'),
       bindoc  => $c->get('installsiteman1dir')  || $bindoc,
       libdoc  => $c->get('installsiteman3dir')  || $libdoc,
       binhtml => $c->get('installsitehtml1dir') || $binhtml,
       libhtml => $c->get('installsitehtml3dir') || $libhtml,
     },
     vendor => {
       lib     => $c->get('installvendorlib'),
       arch    => $c->get('installvendorarch'),
       bin     => $c->get('installvendorbin')      || $c->get('installbin'),
       script  => $c->get('installvendorscript')   ||
         $c->get('installvendorbin') || $c->get('installscript'),
       bindoc  => $c->get('installvendorman1dir')  || $bindoc,
       libdoc  => $c->get('installvendorman3dir')  || $libdoc,
       binhtml => $c->get('installvendorhtml1dir') || $binhtml,
       libhtml => $c->get('installvendorhtml3dir') || $libhtml,
     },
    };

  $p->{original_prefix} =
    {
     core   => $c->get('installprefixexp') || $c->get('installprefix') ||
               $c->get('prefixexp')        || $c->get('prefix') || '',
     site   => $c->get('siteprefixexp'),
     vendor => $c->get('usevendorprefix') ? $c->get('vendorprefixexp') : '',
    };
  $p->{original_prefix}{site} ||= $p->{original_prefix}{core};

  # Note: you might be tempted to use $Config{installstyle} here
  # instead of hard-coding lib/perl5, but that's been considered and
  # (at least for now) rejected.  `perldoc Config` has some wisdom
  # about it.
  $p->{install_base_relpaths} =
    {
     lib     => ['lib', 'perl5'],
     arch    => ['lib', 'perl5', $arch],
     bin     => ['bin'],
     script  => ['bin'],
     bindoc  => ['man', 'man1'],
     libdoc  => ['man', 'man3'],
     binhtml => ['html'],
     libhtml => ['html'],
    };

  $p->{prefix_relpaths} =
    {
     core => {
       lib        => [@libstyle],
       arch       => [@libstyle, $version, $arch],
       bin        => ['bin'],
       script     => ['bin'],
       bindoc     => ['man', 'man1'],
       libdoc     => ['man', 'man3'],
       binhtml    => ['html'],
       libhtml    => ['html'],
     },
     vendor => {
       lib        => [@libstyle],
       arch       => [@libstyle, $version, $arch],
       bin        => ['bin'],
       script     => ['bin'],
       bindoc     => ['man', 'man1'],
       libdoc     => ['man', 'man3'],
       binhtml    => ['html'],
       libhtml    => ['html'],
     },
     site => {
       lib        => [@libstyle, 'site_perl'],
       arch       => [@libstyle, 'site_perl', $version, $arch],
       bin        => ['bin'],
       script     => ['bin'],
       bindoc     => ['man', 'man1'],
       libdoc     => ['man', 'man3'],
       binhtml    => ['html'],
       libhtml    => ['html'],
     },
    };
    return $p
}

sub _find_nested_builds {
  my $self = shift;
  my $r = $self->recurse_into or return;

  my ($file, @r);
  if (!ref($r) && $r eq 'auto') {
    local *DH;
    opendir DH, $self->base_dir
      or die "Can't scan directory " . $self->base_dir . " for nested builds: $!";
    while (defined($file = readdir DH)) {
      my $subdir = File::Spec->catdir( $self->base_dir, $file );
      next unless -d $subdir;
      push @r, $subdir if -e File::Spec->catfile( $subdir, 'Build.PL' );
    }
  }

  $self->recurse_into(\@r);
}

sub cwd {
  return Cwd::cwd();
}

sub _quote_args {
  # Returns a string that can become [part of] a command line with
  # proper quoting so that the subprocess sees this same list of args.
  my ($self, @args) = @_;

  my @quoted;

  for (@args) {
    if ( /^[^\s*?!\$<>;\\|'"\[\]\{\}]+$/ ) {
      # Looks pretty safe
      push @quoted, $_;
    } else {
      # XXX this will obviously have to improve - is there already a
      # core module lying around that does proper quoting?
      s/('+)/'"$1"'/g;
      push @quoted, qq('$_');
    }
  }

  return join " ", @quoted;
}

sub _backticks {
  my ($self, @cmd) = @_;
  if ($self->have_forkpipe) {
    local *FH;
    my $pid = open *FH, "-|";
    if ($pid) {
      return wantarray ? <FH> : join '', <FH>;
    } else {
      die "Can't execute @cmd: $!\n" unless defined $pid;
      exec { $cmd[0] } @cmd;
    }
  } else {
    my $cmd = $self->_quote_args(@cmd);
    return `$cmd`;
  }
}

# Tells us whether the construct open($fh, '-|', @command) is
# supported.  It would probably be better to dynamically sense this.
sub have_forkpipe { 1 }

# Determine whether a given binary is the same as the perl
# (configuration) that started this process.
sub _perl_is_same {
  my ($self, $perl) = @_;

  my @cmd = ($perl);

  # When run from the perl core, @INC will include the directories
  # where perl is yet to be installed. We need to reference the
  # absolute path within the source distribution where it can find
  # it's Config.pm This also prevents us from picking up a Config.pm
  # from a different configuration that happens to be already
  # installed in @INC.
  if ($ENV{PERL_CORE}) {
    push @cmd, '-I' . File::Spec->catdir(File::Basename::dirname($perl), 'lib');
  }

  push @cmd, qw(-MConfig=myconfig -e print -e myconfig);
  return $self->_backticks(@cmd) eq Config->myconfig;
}

# cache _discover_perl_interpreter() results
{
  my $known_perl;
  sub find_perl_interpreter {
    my $self = shift;

    return $known_perl if defined($known_perl);
    return $known_perl = $self->_discover_perl_interpreter;
  }
}

# Returns the absolute path of the perl interpreter used to invoke
# this process. The path is derived from $^X or $Config{perlpath}. On
# some platforms $^X contains the complete absolute path of the
# interpreter, on other it may contain a relative path, or simply
# 'perl'. This can also vary depending on whether a path was supplied
# when perl was invoked. Additionally, the value in $^X may omit the
# executable extension on platforms that use one. It's a fatal error
# if the interpreter can't be found because it can result in undefined
# behavior by routines that depend on it (generating errors or
# invoking the wrong perl.)
sub _discover_perl_interpreter {
  my $proto = shift;
  my $c     = ref($proto) ? $proto->{config} : 'Module::Build::Config';

  my $perl  = $^X;
  my $perl_basename = File::Basename::basename($perl);

  my @potential_perls;

  # Try 1, Check $^X for absolute path
  push( @potential_perls, $perl )
      if File::Spec->file_name_is_absolute($perl);

  # Try 2, Check $^X for a valid relative path
  my $abs_perl = File::Spec->rel2abs($perl);
  push( @potential_perls, $abs_perl );

  # Try 3, Last ditch effort: These two option use hackery to try to locate
  # a suitable perl. The hack varies depending on whether we are running
  # from an installed perl or an uninstalled perl in the perl source dist.
  if ($ENV{PERL_CORE}) {

    # Try 3.A, If we are in a perl source tree, running an uninstalled
    # perl, we can keep moving up the directory tree until we find our
    # binary. We wouldn't do this under any other circumstances.

    # CBuilder is also in the core, so it should be available here
    require ExtUtils::CBuilder;
    my $perl_src = Cwd::realpath( ExtUtils::CBuilder->perl_src );
    if ( defined($perl_src) && length($perl_src) ) {
      my $uninstperl =
        File::Spec->rel2abs(File::Spec->catfile( $perl_src, $perl_basename ));
      push( @potential_perls, $uninstperl );
    }

  } else {

    # Try 3.B, First look in $Config{perlpath}, then search the user's
    # PATH. We do not want to do either if we are running from an
    # uninstalled perl in a perl source tree.

    push( @potential_perls, $c->get('perlpath') );

    push( @potential_perls,
          map File::Spec->catfile($_, $perl_basename), File::Spec->path() );
  }

  # Now that we've enumerated the potential perls, it's time to test
  # them to see if any of them match our configuration, returning the
  # absolute path of the first successful match.
  my $exe = $c->get('exe_ext');
  foreach my $thisperl ( @potential_perls ) {

    if (defined $exe) {
      $thisperl .= $exe unless $thisperl =~ m/$exe$/i;
    }

    if ( -f $thisperl && $proto->_perl_is_same($thisperl) ) {
      return $thisperl;
    }
  }

  # We've tried all alternatives, and didn't find a perl that matches
  # our configuration. Throw an exception, and list alternatives we tried.
  my @paths = map File::Basename::dirname($_), @potential_perls;
  die "Can't locate the perl binary used to run this script " .
      "in (@paths)\n";
}

# Adapted from IPC::Cmd::can_run()
sub find_command {
  my ($self, $command) = @_;

  if( File::Spec->file_name_is_absolute($command) ) {
    return $self->_maybe_command($command);

  } else {
    for my $dir ( File::Spec->path ) {
      my $abs = File::Spec->catfile($dir, $command);
      return $abs if $abs = $self->_maybe_command($abs);
    }
  }
}

# Copied from ExtUtils::MM_Unix::maybe_command
sub _maybe_command {
  my($self,$file) = @_;
  return $file if -x $file && ! -d $file;
  return;
}

sub _is_interactive {
  return -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)) ;   # Pipe?
}

# NOTE this is a blocking operation if(-t STDIN)
sub _is_unattended {
  my $self = shift;
  return $ENV{PERL_MM_USE_DEFAULT} ||
    ( !$self->_is_interactive && eof STDIN );
}

sub _readline {
  my $self = shift;
  return undef if $self->_is_unattended;

  my $answer = <STDIN>;
  chomp $answer if defined $answer;
  return $answer;
}

sub prompt {
  my $self = shift;
  my $mess = shift
    or die "prompt() called without a prompt message";

  # use a list to distinguish a default of undef() from no default
  my @def;
  @def = (shift) if @_;
  # use dispdef for output
  my @dispdef = scalar(@def) ?
    ('[', (defined($def[0]) ? $def[0] . ' ' : ''), ']') :
    (' ', '');

  local $|=1;
  print "$mess ", @dispdef;

  if ( $self->_is_unattended && !@def ) {
    die <<EOF;
ERROR: This build seems to be unattended, but there is no default value
for this question.  Aborting.
EOF
  }

  my $ans = $self->_readline();

  if ( !defined($ans)        # Ctrl-D or unattended
       or !length($ans) ) {  # User hit return
    print "$dispdef[1]\n";
    $ans = scalar(@def) ? $def[0] : '';
  }

  return $ans;
}

sub y_n {
  my $self = shift;
  my ($mess, $def)  = @_;

  die "y_n() called without a prompt message" unless $mess;
  die "Invalid default value: y_n() default must be 'y' or 'n'"
    if $def && $def !~ /^[yn]/i;

  my $answer;
  while (1) { # XXX Infinite or a large number followed by an exception ?
    $answer = $self->prompt(@_);
    return 1 if $answer =~ /^y/i;
    return 0 if $answer =~ /^n/i;
    local $|=1;
    print "Please answer 'y' or 'n'.\n";
  }
}

sub current_action { shift->{action} }
sub invoked_action { shift->{invoked_action} }

sub notes        { shift()->{phash}{notes}->access(@_) }
sub config_data  { shift()->{phash}{config_data}->access(@_) }
sub runtime_params { shift->{phash}{runtime_params}->read( @_ ? shift : () ) }  # Read-only
sub auto_features  { shift()->{phash}{auto_features}->access(@_) }

sub features     {
  my $self = shift;
  my $ph = $self->{phash};

  if (@_) {
    my $key = shift;
    if ($ph->{features}->exists($key)) {
      return $ph->{features}->access($key, @_);
    }

    if (my $info = $ph->{auto_features}->access($key)) {
      my $disabled;
      for my $type ( @{$self->prereq_action_types} ) {
        next if $type eq 'description' || $type eq 'recommends' || ! exists $info->{$type};
        my $prereqs = $info->{$type};
        for my $modname ( sort keys %$prereqs ) {
          my $spec = $prereqs->{$modname};
          my $status = $self->check_installed_status($modname, $spec);
          if ((!$status->{ok}) xor ($type =~ /conflicts$/)) { return 0; }
          if ( ! eval "require $modname; 1" ) { return 0; }
        }
      }
      return 1;
    }

    return $ph->{features}->access($key, @_);
  }

  # No args - get the auto_features & overlay the regular features
  my %features;
  my %auto_features = $ph->{auto_features}->access();
  while (my ($name, $info) = each %auto_features) {
    my $failures = $self->prereq_failures($info);
    my $disabled = grep( /^(?:\w+_)?(?:requires|conflicts)$/,
                        keys %$failures ) ? 1 : 0;
    $features{$name} = $disabled ? 0 : 1;
  }
  %features = (%features, $ph->{features}->access());

  return wantarray ? %features : \%features;
}
BEGIN { *feature = \&features } # Alias

sub _mb_feature {
  my $self = shift;

  if (($self->module_name || '') eq 'Module::Build') {
    # We're building Module::Build itself, so ...::ConfigData isn't
    # valid, but $self->features() should be.
    return $self->feature(@_);
  } else {
    require Module::Build::ConfigData;
    return Module::Build::ConfigData->feature(@_);
  }
}

sub _warn_mb_feature_deps {
  my $self = shift;
  my $name = shift;
  $self->log_warn(
    "The '$name' feature is not available.  Please install missing\n" .
    "feature dependencies and try again.\n".
    $self->_feature_deps_msg($name) . "\n"
  );
}

sub add_build_element {
    my ($self, $elem) = @_;
    my $elems = $self->build_elements;
    push @$elems, $elem unless grep { $_ eq $elem } @$elems;
}

sub ACTION_config_data {
  my $self = shift;
  return unless $self->has_config_data;

  my $module_name = $self->module_name
    or die "The config_data feature requires that 'module_name' be set";
  my $notes_name = $module_name . '::ConfigData'; # TODO: Customize name ???
  my $notes_pm = File::Spec->catfile($self->blib, 'lib', split /::/, "$notes_name.pm");

  return if $self->up_to_date(['Build.PL',
                               $self->config_file('config_data'),
                               $self->config_file('features')
                              ], $notes_pm);

  $self->log_verbose("Writing config notes to $notes_pm\n");
  File::Path::mkpath(File::Basename::dirname($notes_pm));

  Module::Build::Notes->write_config_data
    (
     file => $notes_pm,
     module => $module_name,
     config_module => $notes_name,
     config_data => scalar $self->config_data,
     feature => scalar $self->{phash}{features}->access(),
     auto_features => scalar $self->auto_features,
    );
}

########################################################################
{ # enclosing these lexicals -- TODO
  my %valid_properties = ( __PACKAGE__,  {} );
  my %additive_properties;

  sub _mb_classes {
    my $class = ref($_[0]) || $_[0];
    return ($class, $class->mb_parents);
  }

  sub valid_property {
    my ($class, $prop) = @_;
    return grep exists( $valid_properties{$_}{$prop} ), $class->_mb_classes;
  }

  sub valid_properties {
    return keys %{ shift->valid_properties_defaults() };
  }

  sub valid_properties_defaults {
    my %out;
    for my $class (reverse shift->_mb_classes) {
      @out{ keys %{ $valid_properties{$class} } } = map {
        $_->()
      } values %{ $valid_properties{$class} };
    }
    return \%out;
  }

  sub array_properties {
    map { exists $additive_properties{$_}->{ARRAY} ? @{$additive_properties{$_}->{ARRAY}} : () } shift->_mb_classes;
  }

  sub hash_properties {
    map { exists $additive_properties{$_}->{HASH} ? @{$additive_properties{$_}->{HASH}} : () } shift->_mb_classes;
  }

  sub add_property {
    my ($class, $property) = (shift, shift);
    die "Property '$property' already exists"
      if $class->valid_property($property);
    my %p = @_ == 1 ? ( default => shift ) : @_;

    my $type = ref $p{default};
    $valid_properties{$class}{$property} =
      $type eq 'CODE' ? $p{default}                           :
      $type eq 'HASH' ? sub { return { %{ $p{default} } }   } :
      $type eq 'ARRAY'? sub { return [ @{ $p{default} } ]   } :
                        sub { return $p{default}            } ;

    push @{$additive_properties{$class}->{$type}}, $property
      if $type;

    unless ($class->can($property)) {
      # TODO probably should put these in a util package
      my $sub = $type eq 'HASH'
        ? _make_hash_accessor($property, \%p)
        : _make_accessor($property, \%p);
      no strict 'refs';
      *{"$class\::$property"} = $sub;
    }

    return $class;
  }

  sub property_error {
    my $self = shift;
    die 'ERROR: ', @_;
  }

  sub _set_defaults {
    my $self = shift;

    # Set the build class.
    $self->{properties}{build_class} ||= ref $self;

    # If there was no orig_dir, set to the same as base_dir
    $self->{properties}{orig_dir} ||= $self->{properties}{base_dir};

    my $defaults = $self->valid_properties_defaults;

    foreach my $prop (keys %$defaults) {
      $self->{properties}{$prop} = $defaults->{$prop}
        unless exists $self->{properties}{$prop};
    }

    # Copy defaults for arrays any arrays.
    for my $prop ($self->array_properties) {
      $self->{properties}{$prop} = [@{$defaults->{$prop}}]
        unless exists $self->{properties}{$prop};
    }
    # Copy defaults for arrays any hashes.
    for my $prop ($self->hash_properties) {
      $self->{properties}{$prop} = {%{$defaults->{$prop}}}
        unless exists $self->{properties}{$prop};
    }
  }

} # end enclosure
########################################################################
sub _make_hash_accessor {
  my ($property, $p) = @_;
  my $check = $p->{check} || sub { 1 };

  return sub {
    my $self = shift;

    # This is only here to deprecate the historic accident of calling
    # properties as class methods - I suspect it only happens in our
    # test suite.
    unless(ref($self)) {
      carp("\n$property not a class method (@_)");
      return;
    }

    my $x = $self->{properties};
    return $x->{$property} unless @_;

    my $prop = $x->{$property};
    if ( defined $_[0] && !ref $_[0] ) {
      if ( @_ == 1 ) {
        return exists $prop->{$_[0]} ? $prop->{$_[0]} : undef;
      } elsif ( @_ % 2 == 0 ) {
        my %new = (%{ $prop }, @_);
        local $_ = \%new;
        $x->{$property} = \%new if $check->($self);
        return $x->{$property};
      } else {
        die "Unexpected arguments for property '$property'\n";
      }
    } else {
      die "Unexpected arguments for property '$property'\n"
          if defined $_[0] && ref $_[0] ne 'HASH';
      local $_ = $_[0];
      $x->{$property} = shift if $check->($self);
    }
  };
}
########################################################################
sub _make_accessor {
  my ($property, $p) = @_;
  my $check = $p->{check} || sub { 1 };

  return sub {
    my $self = shift;

    # This is only here to deprecate the historic accident of calling
    # properties as class methods - I suspect it only happens in our
    # test suite.
    unless(ref($self)) {
      carp("\n$property not a class method (@_)");
      return;
    }

    my $x = $self->{properties};
    return $x->{$property} unless @_;
    local $_ = $_[0];
    $x->{$property} = shift if $check->($self);
    return $x->{$property};
  };
}
########################################################################

# Add the default properties.
__PACKAGE__->add_property(auto_configure_requires => 1);
__PACKAGE__->add_property(blib => 'blib');
__PACKAGE__->add_property(build_class => 'Module::Build');
__PACKAGE__->add_property(build_elements => [qw(PL support pm xs share_dir pod script)]);
__PACKAGE__->add_property(build_script => 'Build');
__PACKAGE__->add_property(build_bat => 0);
__PACKAGE__->add_property(bundle_inc => []);
__PACKAGE__->add_property(bundle_inc_preload => []);
__PACKAGE__->add_property(config_dir => '_build');
__PACKAGE__->add_property(dynamic_config => 1);
__PACKAGE__->add_property(include_dirs => []);
__PACKAGE__->add_property(license => 'unknown');
__PACKAGE__->add_property(metafile => 'META.yml');
__PACKAGE__->add_property(mymetafile => 'MYMETA.yml');
__PACKAGE__->add_property(metafile2 => 'META.json');
__PACKAGE__->add_property(mymetafile2 => 'MYMETA.json');
__PACKAGE__->add_property(recurse_into => []);
__PACKAGE__->add_property(use_rcfile => 1);
__PACKAGE__->add_property(create_packlist => 1);
__PACKAGE__->add_property(allow_mb_mismatch => 0);
__PACKAGE__->add_property(config => undef);
__PACKAGE__->add_property(test_file_exts => ['.t']);
__PACKAGE__->add_property(use_tap_harness => 0);
__PACKAGE__->add_property(cpan_client => 'cpan');
__PACKAGE__->add_property(tap_harness_args => {});
__PACKAGE__->add_property(pureperl_only => 0);
__PACKAGE__->add_property(allow_pureperl => 0);
__PACKAGE__->add_property(
  'installdirs',
  default => 'site',
  check   => sub {
    return 1 if /^(core|site|vendor)$/;
    return shift->property_error(
      $_ eq 'perl'
      ? 'Perhaps you meant installdirs to be "core" rather than "perl"?'
      : 'installdirs must be one of "core", "site", or "vendor"'
    );
    return shift->property_error("Perhaps you meant 'core'?") if $_ eq 'perl';
    return 0;
  },
);

{
  __PACKAGE__->add_property(html_css => '');
}

{
  my @prereq_action_types = qw(requires build_requires test_requires conflicts recommends);
  foreach my $type (@prereq_action_types) {
    __PACKAGE__->add_property($type => {});
  }
  __PACKAGE__->add_property(prereq_action_types => \@prereq_action_types);
}

__PACKAGE__->add_property($_ => {}) for qw(
  get_options
  install_base_relpaths
  install_path
  install_sets
  meta_add
  meta_merge
  original_prefix
  prefix_relpaths
  configure_requires
);

__PACKAGE__->add_property($_) for qw(
  PL_files
  autosplit
  base_dir
  bindoc_dirs
  c_source
  cover
  create_license
  create_makefile_pl
  create_readme
  debugger
  destdir
  dist_abstract
  dist_author
  dist_name
  dist_suffix
  dist_version
  dist_version_from
  extra_compiler_flags
  extra_linker_flags
  has_config_data
  install_base
  libdoc_dirs
  magic_number
  mb_version
  module_name
  needs_compiler
  orig_dir
  perl
  pm_files
  pod_files
  pollute
  prefix
  program_name
  quiet
  recursive_test_files
  release_status
  script_files
  scripts
  share_dir
  sign
  test_files
  verbose
  debug
  xs_files
  extra_manify_args
);

sub config {
  my $self = shift;
  my $c = ref($self) ? $self->{config} : 'Module::Build::Config';
  return $c->all_config unless @_;

  my $key = shift;
  return $c->get($key) unless @_;

  my $val = shift;
  return $c->set($key => $val);
}

sub mb_parents {
    # Code borrowed from Class::ISA.
    my @in_stack = (shift);
    my %seen = ($in_stack[0] => 1);

    my ($current, @out);
    while (@in_stack) {
        next unless defined($current = shift @in_stack)
          && $current->isa('Module::Build::Base');
        push @out, $current;
        next if $current eq 'Module::Build::Base';
        no strict 'refs';
        unshift @in_stack,
          map {
              my $c = $_; # copy, to avoid being destructive
              substr($c,0,2) = "main::" if substr($c,0,2) eq '::';
              # Canonize the :: -> main::, ::foo -> main::foo thing.
              # Should I ever canonize the Foo'Bar = Foo::Bar thing?
              $seen{$c}++ ? () : $c;
          } @{"$current\::ISA"};

        # I.e., if this class has any parents (at least, ones I've never seen
        # before), push them, in order, onto the stack of classes I need to
        # explore.
    }
    shift @out;
    return @out;
}

sub extra_linker_flags   { shift->_list_accessor('extra_linker_flags',   @_) }
sub extra_compiler_flags { shift->_list_accessor('extra_compiler_flags', @_) }

sub _list_accessor {
  (my $self, local $_) = (shift, shift);
  my $p = $self->{properties};
  $p->{$_} = [@_] if @_;
  $p->{$_} = [] unless exists $p->{$_};
  return ref($p->{$_}) ? $p->{$_} : [$p->{$_}];
}

# XXX Problem - if Module::Build is loaded from a different directory,
# it'll look for (and perhaps destroy/create) a _build directory.
sub subclass {
  my ($pack, %opts) = @_;

  my $build_dir = '_build'; # XXX The _build directory is ostensibly settable by the user.  Shouldn't hard-code here.
  $pack->delete_filetree($build_dir) if -e $build_dir;

  die "Must provide 'code' or 'class' option to subclass()\n"
    unless $opts{code} or $opts{class};

  $opts{code}  ||= '';
  $opts{class} ||= 'MyModuleBuilder';

  my $filename = File::Spec->catfile($build_dir, 'lib', split '::', $opts{class}) . '.pm';
  my $filedir  = File::Basename::dirname($filename);
  $pack->log_verbose("Creating custom builder $filename in $filedir\n");

  File::Path::mkpath($filedir);
  die "Can't create directory $filedir: $!" unless -d $filedir;

  open(my $fh, '>', $filename) or die "Can't create $filename: $!";
  print $fh <<EOF;
package $opts{class};
use $pack;
\@ISA = qw($pack);
$opts{code}
1;
EOF
  close $fh;

  unshift @INC, File::Spec->catdir(File::Spec->rel2abs($build_dir), 'lib');
  eval "use $opts{class}";
  die $@ if $@;

  return $opts{class};
}

sub _guess_module_name {
  my $self = shift;
  my $p = $self->{properties};
  return if $p->{module_name};
  if ( $p->{dist_version_from} && -e $p->{dist_version_from} ) {
    my $mi = Module::Metadata->new_from_file($self->dist_version_from);
    $p->{module_name} = $mi->name;
  }
  else {
    my $mod_path = my $mod_name = $p->{dist_name};
    $mod_name =~ s{-}{::}g;
    $mod_path =~ s{-}{/}g;
    $mod_path .= ".pm";
    if ( -e $mod_path || -e "lib/$mod_path" ) {
      $p->{module_name} = $mod_name;
    }
    else {
      $self->log_warn( << 'END_WARN' );
No 'module_name' was provided and it could not be inferred
from other properties.  This will prevent a packlist from
being written for this file.  Please set either 'module_name'
or 'dist_version_from' in Build.PL.
END_WARN
    }
  }
}

sub dist_name {
  my $self = shift;
  my $p = $self->{properties};
  my $me = 'dist_name';
  return $p->{$me} if defined $p->{$me};

  die "Can't determine distribution name, must supply either 'dist_name' or 'module_name' parameter"
    unless $self->module_name;

  ($p->{$me} = $self->module_name) =~ s/::/-/g;

  return $p->{$me};
}

sub release_status {
  my ($self) = @_;
  my $me = 'release_status';
  my $p = $self->{properties};

  if ( ! defined $p->{$me} ) {
    $p->{$me} = $self->_is_dev_version ? 'testing' : 'stable';
  }

  unless ( $p->{$me} =~ qr/\A(?:stable|testing|unstable)\z/ ) {
    die "Illegal value '$p->{$me}' for $me\n";
  }

  if ( $p->{$me} eq 'stable' && $self->_is_dev_version ) {
    my $version = $self->dist_version;
    die "Illegal value '$p->{$me}' with version '$version'\n";
  }
  return $p->{$me};
}

sub dist_suffix {
  my ($self) = @_;
  my $p = $self->{properties};
  my $me = 'dist_suffix';

  return $p->{$me} if defined $p->{$me};

  if ( $self->release_status eq 'stable' ) {
    $p->{$me} = "";
  }
  else {
    # non-stable release but non-dev version number needs '-TRIAL' appended
    $p->{$me} = $self->_is_dev_version ? "" : "TRIAL" ;
  }

  return $p->{$me};
}

sub dist_version_from {
  my ($self) = @_;
  my $p = $self->{properties};
  my $me = 'dist_version_from';

  if ($self->module_name) {
    $p->{$me} ||=
      join( '/', 'lib', split(/::/, $self->module_name) ) . '.pm';
  }
  return $p->{$me} || undef;
}

sub dist_version {
  my ($self) = @_;
  my $p = $self->{properties};
  my $me = 'dist_version';

  return $p->{$me} if defined $p->{$me};

  if ( my $dist_version_from = $self->dist_version_from ) {
    my $version_from = File::Spec->catfile( split( qr{/}, $dist_version_from ) );
    my $pm_info = Module::Metadata->new_from_file( $version_from )
      or die "Can't find file $version_from to determine version";
    #$p->{$me} is undef here
    $p->{$me} = $self->normalize_version( $pm_info->version() );
    unless (defined $p->{$me}) {
      die "Can't determine distribution version from $version_from";
    }
  }

  die ("Can't determine distribution version, must supply either 'dist_version',\n".
       "'dist_version_from', or 'module_name' parameter")
    unless defined $p->{$me};

  return $p->{$me};
}

sub _is_dev_version {
  my ($self) = @_;
  my $dist_version = $self->dist_version;
  my $version_obj = eval { version->new( $dist_version ) };
  # assume it's normal if the version string is fatal -- in this case
  # the author might be doing something weird so should play along and
  # assume they'll specify all necessary behavior
  return $@ ? 0 : $version_obj->is_alpha;
}

sub dist_author   { shift->_pod_parse('author')   }
sub dist_abstract { shift->_pod_parse('abstract') }

sub _pod_parse {
  my ($self, $part) = @_;
  my $p = $self->{properties};
  my $member = "dist_$part";
  return $p->{$member} if defined $p->{$member};

  my $docfile = $self->_main_docfile
    or return;
  open(my $fh, '<', $docfile)
    or return;

  require Module::Build::PodParser;
  my $parser = Module::Build::PodParser->new(fh => $fh);
  my $method = "get_$part";
  return $p->{$member} = $parser->$method();
}

sub version_from_file { # Method provided for backwards compatibility
  return Module::Metadata->new_from_file($_[1])->version();
}

sub find_module_by_name { # Method provided for backwards compatibility
  return Module::Metadata->find_module_by_name(@_[1,2]);
}

{
  # $unlink_list_for_pid{$$} = [ ... ]
  my %unlink_list_for_pid;

  sub _unlink_on_exit {
    my $self = shift;
    for my $f ( @_ ) {
      push @{$unlink_list_for_pid{$$}}, $f if -f $f;
    }
    return 1;
  }

  END {
    for my $f ( map glob($_), @{ $unlink_list_for_pid{$$} || [] } ) {
      next unless -e $f;
      File::Path::rmtree($f, 0, 0);
    }
  }
}

sub add_to_cleanup {
  my $self = shift;
  my %files = map {$self->localize_file_path($_), 1} @_;
  $self->{phash}{cleanup}->write(\%files);
}

sub cleanup {
  my $self = shift;
  my $all = $self->{phash}{cleanup}->read;
  return wantarray ? sort keys %$all : keys %$all;
}

sub config_file {
  my $self = shift;
  return unless -d $self->config_dir;
  return File::Spec->catfile($self->config_dir, @_);
}

sub read_config {
  my ($self) = @_;

  my $file = $self->config_file('build_params')
    or die "Can't find 'build_params' in " . $self->config_dir;
  open(my $fh, '<', $file) or die "Can't read '$file': $!";
  my $ref = eval do {local $/; <$fh>};
  die if $@;
  close $fh;
  my $c;
  ($self->{args}, $c, $self->{properties}) = @$ref;
  $self->{config} = Module::Build::Config->new(values => $c);
}

sub has_config_data {
  my $self = shift;
  return scalar grep $self->{phash}{$_}->has_data(), qw(config_data features auto_features);
}

sub _write_data {
  my ($self, $filename, $data) = @_;

  my $file = $self->config_file($filename);
  open(my $fh, '>', $file) or die "Can't create '$file': $!";
  unless (ref($data)) {  # e.g. magicnum
    print $fh $data;
    return;
  }

  print {$fh} Module::Build::Dumper->_data_dump($data);
  close $fh;
}

sub write_config {
  my ($self) = @_;

  File::Path::mkpath($self->{properties}{config_dir});
  -d $self->{properties}{config_dir} or die "Can't mkdir $self->{properties}{config_dir}: $!";

  my @items = @{ $self->prereq_action_types };
  $self->_write_data('prereqs', { map { $_, $self->$_() } @items });
  $self->_write_data('build_params', [$self->{args}, $self->{config}->values_set, $self->{properties}]);

  # Set a new magic number and write it to a file
  $self->_write_data('magicnum', $self->magic_number(int rand 1_000_000));

  $self->{phash}{$_}->write() foreach qw(notes cleanup features auto_features config_data runtime_params);
}

{
  # packfile map -- keys are guts of regular expressions;  If they match,
  # values are module names corresponding to the packlist
  my %packlist_map = (
    '^File::Spec'         => 'Cwd',
    '^Devel::AssertOS'    => 'Devel::CheckOS',
  );

  sub _find_packlist {
    my ($self, $inst, $mod) = @_;
    my $lookup = $mod;
    my $packlist = eval { $inst->packlist($lookup) };
    if ( ! $packlist ) {
      # try from packlist_map
      while ( my ($re, $new_mod) = each %packlist_map ) {
        if ( $mod =~ qr/$re/ ) {
          $lookup = $new_mod;
          $packlist = eval { $inst->packlist($lookup) };
          last;
        }
      }
    }
    return $packlist ? $lookup : undef;
  }

  sub set_bundle_inc {
    my $self = shift;

    my $bundle_inc = $self->{properties}{bundle_inc};
    my $bundle_inc_preload = $self->{properties}{bundle_inc_preload};
    # We're in author mode if inc::latest is loaded, but not from cwd
    return unless inc::latest->can('loaded_modules');
    require ExtUtils::Installed;
    # ExtUtils::Installed is buggy about finding additions to default @INC
    my $inst = eval { ExtUtils::Installed->new(extra_libs => [@INC]) };
    if ($@) {
      $self->log_warn( << "EUI_ERROR" );
Bundling in inc/ is disabled because ExtUtils::Installed could not
create a list of your installed modules.  Here is the error:
$@
EUI_ERROR
      return;
    }
    my @bundle_list = map { [ $_, 0 ] } inc::latest->loaded_modules;

    # XXX TODO: Need to get ordering of prerequisites correct so they are
    # are loaded in the right order. Use an actual tree?!

    while( @bundle_list ) {
      my ($mod, $prereq) = @{ shift @bundle_list };

      # XXX TODO: Append prereqs to list
      # skip if core or already in bundle or preload lists
      # push @bundle_list, [$_, 1] for prereqs()

      # Locate packlist for bundling
      my $lookup = $self->_find_packlist($inst,$mod);
      if ( ! $lookup ) {
        # XXX Really needs a more helpful error message here
        die << "NO_PACKLIST";
Could not find a packlist for '$mod'.  If it's a core module, try
force installing it from CPAN.
NO_PACKLIST
      }
      else {
        push @{ $prereq ? $bundle_inc_preload : $bundle_inc }, $lookup;
      }
    }
  } # sub check_bundling
}

sub check_autofeatures {
  my ($self) = @_;
  my $features = $self->auto_features;

  return 1 unless %$features;

  # TODO refactor into ::Util
  my $longest = sub {
    my @str = @_ or croak("no strings given");

    my @len = map({length($_)} @str);
    my $max = 0;
    my $longest;
    for my $i (0..$#len) {
      ($max, $longest) = ($len[$i], $str[$i]) if($len[$i] > $max);
    }
    return($longest);
  };
  my $max_name_len = length($longest->(keys %$features));

  my ($num_disabled, $log_text) = (0, "\nChecking optional features...\n");
  for my $name ( sort keys %$features ) {
    $log_text .= $self->_feature_deps_msg($name, $max_name_len);
  }

  $num_disabled = () = $log_text =~ /disabled/g;

  # warn user if features disabled
  if ( $num_disabled ) {
    $self->log_warn( $log_text );
    return 0;
  }
  else {
    $self->log_verbose( $log_text );
    return 1;
  }
}

sub _feature_deps_msg {
  my ($self, $name, $max_name_len) = @_;
    $max_name_len ||= length $name;
    my $features = $self->auto_features;
    my $info = $features->{$name};
    my $feature_text = "$name" . '.' x ($max_name_len - length($name) + 4);

    my ($log_text, $disabled) = ('','');
    if ( my $failures = $self->prereq_failures($info) ) {
      $disabled = grep( /^(?:\w+_)?(?:requires|conflicts)$/,
                  keys %$failures ) ? 1 : 0;
      $feature_text .= $disabled ? "disabled\n" : "enabled\n";

      for my $type ( @{ $self->prereq_action_types } ) {
        next unless exists $failures->{$type};
        $feature_text .= "  $type:\n";
        my $prereqs = $failures->{$type};
        for my $module ( sort keys %$prereqs ) {
          my $status = $prereqs->{$module};
          my $required =
            ($type =~ /^(?:\w+_)?(?:requires|conflicts)$/) ? 1 : 0;
          my $prefix = ($required) ? '!' : '*';
          $feature_text .= "    $prefix $status->{message}\n";
        }
      }
    } else {
      $feature_text .= "enabled\n";
    }
    $log_text .= $feature_text if $disabled || $self->verbose;
    return $log_text;
}

# Automatically detect configure_requires prereqs
sub auto_config_requires {
  my ($self) = @_;
  my $p = $self->{properties};

  # add current Module::Build to configure_requires if there
  # isn't one already specified (but not ourself, so we're not circular)
  if ( $self->dist_name ne 'Module-Build'
    && $self->auto_configure_requires
    && ! exists $p->{configure_requires}{'Module::Build'}
  ) {
    (my $ver = $VERSION) =~ s/^(\d+\.\d\d).*$/$1/; # last major release only
    $self->log_warn(<<EOM);
Module::Build was not found in configure_requires! Adding it now
automatically as: configure_requires => { 'Module::Build' => $ver }
EOM
    $self->_add_prereq('configure_requires', 'Module::Build', $ver);
  }

  # if we're in author mode, add inc::latest modules to
  # configure_requires if not already set.  If we're not in author mode
  # then configure_requires will have been satisfied, or we'll just
  # live with what we've bundled
  if ( inc::latest->can('loaded_module') ) {
    for my $mod ( inc::latest->loaded_modules ) {
      next if exists $p->{configure_requires}{$mod};
      $self->_add_prereq('configure_requires', $mod, $mod->VERSION);
    }
  }

  return;
}

# Automatically detect and add prerequisites based on configuration
sub auto_require {
  my ($self) = @_;
  my $p = $self->{properties};

  # If needs_compiler is not explicitly set, automatically set it
  # If set, we need ExtUtils::CBuilder (and a compiler)
  my $xs_files = $self->find_xs_files;
  if ( ! defined $p->{needs_compiler} ) {
    $self->needs_compiler( keys %$xs_files || defined $self->c_source );
  }
  if ($self->needs_compiler) {
    $self->_add_prereq('build_requires', 'ExtUtils::CBuilder', 0);
    if ( ! $self->have_c_compiler ) {
      $self->log_warn(<<'EOM');
Warning: ExtUtils::CBuilder not installed or no compiler detected
Proceeding with configuration, but compilation may fail during Build

EOM
    }
  }

  # If using share_dir, require File::ShareDir
  if ( $self->share_dir ) {
    $self->_add_prereq( 'requires', 'File::ShareDir', '1.00' );
  }

  return;
}

sub _add_prereq {
  my ($self, $type, $module, $version) = @_;
  my $p = $self->{properties};
  $version = 0 unless defined $version;
  if ( exists $p->{$type}{$module} ) {
    return if $self->compare_versions( $version, '<=', $p->{$type}{$module} );
  }
  $self->log_verbose("Adding to $type\: $module => $version\n");
  $p->{$type}{$module} = $version;
  return 1;
}

sub prereq_failures {
  my ($self, $info) = @_;

  my @types = @{ $self->prereq_action_types };
  $info ||= {map {$_, $self->$_()} @types};

  my $out;

  foreach my $type (@types) {
    my $prereqs = $info->{$type};
    for my $modname ( keys %$prereqs ) {
      my $spec = $prereqs->{$modname};
      my $status = $self->check_installed_status($modname, $spec);

      if ($type =~ /^(?:\w+_)?conflicts$/) {
        next if !$status->{ok};
        $status->{conflicts} = delete $status->{need};
        $status->{message} = "$modname ($status->{have}) conflicts with this distribution";

      } elsif ($type =~ /^(?:\w+_)?recommends$/) {
        next if $status->{ok};
        $status->{message} = (!ref($status->{have}) && $status->{have} eq '<none>'
                              ? "$modname is not installed"
                              : "$modname ($status->{have}) is installed, but we prefer to have $spec");
      } else {
        next if $status->{ok};
      }

      $out->{$type}{$modname} = $status;
    }
  }

  return $out;
}

# returns a hash of defined prerequisites; i.e. only prereq types with values
sub _enum_prereqs {
  my $self = shift;
  my %prereqs;
  foreach my $type ( @{ $self->prereq_action_types } ) {
    if ( $self->can( $type ) ) {
      my $prereq = $self->$type() || {};
      $prereqs{$type} = $prereq if %$prereq;
    }
  }
  return \%prereqs;
}

sub check_prereq {
  my $self = shift;

  # Check to see if there are any prereqs to check
  my $info = $self->_enum_prereqs;
  return 1 unless $info;

  my $log_text = "Checking prerequisites...\n";

  my $failures = $self->prereq_failures($info);

  if ( $failures ) {
    $self->log_warn($log_text);
    for my $type ( @{ $self->prereq_action_types } ) {
      my $prereqs = $failures->{$type};
      $self->log_warn("  ${type}:\n") if keys %$prereqs;
      for my $module ( sort keys %$prereqs ) {
        my $status = $prereqs->{$module};
        my $prefix = ($type =~ /^(?:\w+_)?recommends$/) ? "* " : "! ";
        $self->log_warn("    $prefix $status->{message}\n");
      }
    }
    return 0;
  } else {
    $self->log_verbose($log_text . "Looks good\n\n");
    return 1;
  }
}

sub perl_version {
  my ($self) = @_;
  # Check the current perl interpreter
  # It's much more convenient to use $] here than $^V, but 'man
  # perlvar' says I'm not supposed to.  Bloody tyrant.
  return $^V ? $self->perl_version_to_float(sprintf "%vd", $^V) : $];
}

sub perl_version_to_float {
  my ($self, $version) = @_;
  return $version if grep( /\./, $version ) < 2;
  $version =~ s/\./../;
  $version =~ s/\.(\d+)/sprintf '%03d', $1/eg;
  return $version;
}

sub _parse_conditions {
  my ($self, $spec) = @_;

  return ">= 0" if not defined $spec;
  if ($spec =~ /^\s*([\w.]+)\s*$/) { # A plain number, maybe with dots, letters, and underscores
    return (">= $spec");
  } else {
    return split /\s*,\s*/, $spec;
  }
}

sub try_require {
  my ($self, $modname, $spec) = @_;
  my $status = $self->check_installed_status($modname, defined($spec) ? $spec : 0);
  return unless $status->{ok};
  my $path = $modname;
  $path =~ s{::}{/}g;
  $path .= ".pm";
  if ( defined $INC{$path} ) {
    return 1;
  }
  elsif ( exists $INC{$path} ) { # failed before, don't try again
    return;
  }
  else {
    return eval "require $modname";
  }
}

sub check_installed_status {
  my ($self, $modname, $spec) = @_;
  my %status = (need => $spec);

  if ($modname eq 'perl') {
    $status{have} = $self->perl_version;

  } elsif (eval { no strict; $status{have} = ${"${modname}::VERSION"} }) {
    # Don't try to load if it's already loaded

  } else {
    my $pm_info = Module::Metadata->new_from_module( $modname );
    unless (defined( $pm_info )) {
      @status{ qw(have message) } = ('<none>', "$modname is not installed");
      return \%status;
    }

    $status{have} = eval { $pm_info->version() };
    if ($spec and !defined($status{have})) {
      @status{ qw(have message) } = (undef, "Couldn't find a \$VERSION in prerequisite $modname");
      return \%status;
    }
  }

  my @conditions = $self->_parse_conditions($spec);

  foreach (@conditions) {
    my ($op, $version) = /^\s*  (<=?|>=?|==|!=)  \s*  ([\w.]+)  \s*$/x
      or die "Invalid prerequisite condition '$_' for $modname";

    $version = $self->perl_version_to_float($version)
      if $modname eq 'perl';

    next if $op eq '>=' and !$version;  # Module doesn't have to actually define a $VERSION

    unless ($self->compare_versions( $status{have}, $op, $version )) {
      $status{message} = "$modname ($status{have}) is installed, but we need version $op $version";
      return \%status;
    }
  }

  $status{ok} = 1;
  return \%status;
}

sub compare_versions {
  my $self = shift;
  my ($v1, $op, $v2) = @_;
  $v1 = version->new($v1)
    unless eval { $v1->isa('version') };

  my $eval_str = "\$v1 $op \$v2";
  my $result   = eval $eval_str;
  $self->log_warn("error comparing versions: '$eval_str' $@") if $@;

  return $result;
}

# I wish I could set $! to a string, but I can't, so I use $@
sub check_installed_version {
  my ($self, $modname, $spec) = @_;

  my $status = $self->check_installed_status($modname, $spec);

  if ($status->{ok}) {
    return $status->{have} if $status->{have} and "$status->{have}" ne '<none>';
    return '0 but true';
  }

  $@ = $status->{message};
  return 0;
}

sub make_executable {
  # Perl's chmod() is mapped to useful things on various non-Unix
  # platforms, so we use it in the base class even though it looks
  # Unixish.

  my $self = shift;
  foreach (@_) {
    my $current_mode = (stat $_)[2];
    chmod $current_mode | oct(111), $_;
  }
}

sub is_executable {
  # We assume this does the right thing on generic platforms, though
  # we do some other more specific stuff on Unixish platforms.
  my ($self, $file) = @_;
  return -x $file;
}

sub _startperl { shift()->config('startperl') }

# Return any directories in @INC which are not in the default @INC for
# this perl.  For example, stuff passed in with -I or loaded with "use lib".
sub _added_to_INC {
  my $self = shift;

  my %seen;
  $seen{$_}++ foreach $self->_default_INC;
  return grep !$seen{$_}++, @INC;
}

# Determine the default @INC for this Perl
{
  my @default_inc; # Memoize
  sub _default_INC {
    my $self = shift;
    return @default_inc if @default_inc;

    local $ENV{PERL5LIB};  # this is not considered part of the default.

    my $perl = ref($self) ? $self->perl : $self->find_perl_interpreter;

    my @inc = $self->_backticks($perl, '-le', 'print for @INC');
    chomp @inc;

    return @default_inc = @inc;
  }
}

sub print_build_script {
  my ($self, $fh) = @_;

  my $build_package = $self->build_class;

  my $closedata="";

  my $config_requires;
  if ( -f $self->metafile ) {
    my $meta = eval { $self->read_metafile( $self->metafile ) };
    $config_requires = $meta && $meta->{prereqs}{configure}{requires}{'Module::Build'};
  }
  $config_requires ||= 0;

  my %q = map {$_, $self->$_()} qw(config_dir base_dir);

  $q{base_dir} = Win32::GetShortPathName($q{base_dir}) if $self->is_windowsish;

  $q{magic_numfile} = $self->config_file('magicnum');

  my @myINC = $self->_added_to_INC;
  for (@myINC, values %q) {
    $_ = File::Spec->canonpath( $_ ) unless $self->is_vmsish;
    s/([\\\'])/\\$1/g;
  }

  my $quoted_INC = join ",\n", map "     '$_'", @myINC;
  my $shebang = $self->_startperl;
  my $magic_number = $self->magic_number;

my $dot_in_inc_code = $INC[-1] eq '.' ? <<'END' : '';
    if ($INC[-1] ne '.') {
        push @INC, '.';
    }
END
  print $fh <<EOF;
$shebang

use strict;
use Cwd;
use File::Basename;
use File::Spec;

sub magic_number_matches {
  return 0 unless -e '$q{magic_numfile}';
  my \$FH;
  open \$FH, '<','$q{magic_numfile}' or return 0;
  my \$filenum = <\$FH>;
  close \$FH;
  return \$filenum == $magic_number;
}

my \$progname;
my \$orig_dir;
BEGIN {
  \$^W = 1;  # Use warnings
  \$progname = basename(\$0);
  \$orig_dir = Cwd::cwd();
  my \$base_dir = '$q{base_dir}';
  if (!magic_number_matches()) {
    unless (chdir(\$base_dir)) {
      die ("Couldn't chdir(\$base_dir), aborting\\n");
    }
    unless (magic_number_matches()) {
      die ("Configuration seems to be out of date, please re-run 'perl Build.PL' again.\\n");
    }
  }
  unshift \@INC,
    (
$quoted_INC
    );
$dot_in_inc_code
}

close(*DATA) unless eof(*DATA); # ensure no open handles to this script

use $build_package;
Module::Build->VERSION(q{$config_requires});

# Some platforms have problems setting \$^X in shebang contexts, fix it up here
\$^X = Module::Build->find_perl_interpreter;

if (-e 'Build.PL' and not $build_package->up_to_date('Build.PL', \$progname)) {
   warn "Warning: Build.PL has been altered.  You may need to run 'perl Build.PL' again.\\n";
}

# This should have just enough arguments to be able to bootstrap the rest.
my \$build = $build_package->resume (
  properties => {
    config_dir => '$q{config_dir}',
    orig_dir => \$orig_dir,
  },
);

\$build->dispatch;
EOF
}

sub create_mymeta {
  my ($self) = @_;

  my ($meta_obj, $mymeta);
  my @metafiles = ( $self->metafile2, $self->metafile,  );
  my @mymetafiles = ( $self->mymetafile2, $self->mymetafile, );

  # cleanup old MYMETA
  for my $f ( @mymetafiles ) {
    if ( $self->delete_filetree($f) ) {
      $self->log_verbose("Removed previous '$f'\n");
    }
  }

  # Try loading META.json or META.yml
  if ( $self->try_require("CPAN::Meta", "2.142060") ) {
    for my $file ( @metafiles ) {
      next unless -f $file;
      $meta_obj = eval { CPAN::Meta->load_file($file, { lazy_validation => 0 }) };
      last if $meta_obj;
    }
  }

  # maybe get a copy in spec v2 format (regardless of original source)

  my $mymeta_obj;
  if ($meta_obj) {
    # if we have metadata, just update it
    my %updated = (
      %{ $meta_obj->as_struct({ version => 2.0 }) },
      prereqs => $self->_normalize_prereqs,
      dynamic_config => 0,
      generated_by => "Module::Build version $Module::Build::VERSION",
    );
    $mymeta_obj = CPAN::Meta->new( \%updated, { lazy_validation => 0 } );
  }
  else {
    $mymeta_obj = $self->_get_meta_object(quiet => 0, dynamic => 0, fatal => 1, auto => 0);
  }

  my @created = $self->_write_meta_files( $mymeta_obj, 'MYMETA' );

  $self->log_warn("Could not create MYMETA files\n")
    unless @created;

  return 1;
}

sub create_build_script {
  my ($self) = @_;

  $self->write_config;
  $self->create_mymeta;

  # Create Build
  my ($build_script, $dist_name, $dist_version)
    = map $self->$_(), qw(build_script dist_name dist_version);

  if ( $self->delete_filetree($build_script) ) {
    $self->log_verbose("Removed previous script '$build_script'\n");
  }

  $self->log_info("Creating new '$build_script' script for ",
                  "'$dist_name' version '$dist_version'\n");
  open(my $fh, '>', $build_script) or die "Can't create '$build_script': $!";
  $self->print_build_script($fh);
  close $fh;

  $self->make_executable($build_script);

  return 1;
}

sub check_manifest {
  my $self = shift;
  return unless -e 'MANIFEST';

  # Stolen nearly verbatim from MakeMaker.  But ExtUtils::Manifest
  # could easily be re-written into a modern Perl dialect.

  require ExtUtils::Manifest;  # ExtUtils::Manifest is not warnings clean.
  local ($^W, $ExtUtils::Manifest::Quiet) = (0,1);

  $self->log_verbose("Checking whether your kit is complete...\n");
  if (my @missed = ExtUtils::Manifest::manicheck()) {
    $self->log_warn("WARNING: the following files are missing in your kit:\n",
                    "\t", join("\n\t", @missed), "\n",
                    "Please inform the author.\n\n");
  } else {
    $self->log_verbose("Looks good\n\n");
  }
}

sub dispatch {
  my $self = shift;
  local $self->{_completed_actions} = {};

  if (@_) {
    my ($action, %p) = @_;
    my $args = $p{args} ? delete($p{args}) : {};

    local $self->{invoked_action} = $action;
    local $self->{args} = {%{$self->{args}}, %$args};
    local $self->{properties} = {%{$self->{properties}}, %p};
    return $self->_call_action($action);
  }

  die "No build action specified" unless $self->{action};
  local $self->{invoked_action} = $self->{action};
  $self->_call_action($self->{action});
}

sub _call_action {
  my ($self, $action) = @_;

  return if $self->{_completed_actions}{$action}++;

  local $self->{action} = $action;
  my $method = $self->can_action( $action );
  die "No action '$action' defined, try running the 'help' action.\n" unless $method;
  $self->log_debug("Starting ACTION_$action\n");
  my $rc = $self->$method();
  $self->log_debug("Finished ACTION_$action\n");
  return $rc;
}

sub can_action {
  my ($self, $action) = @_;
  return $self->can( "ACTION_$action" );
}

# cuts the user-specified options out of the command-line args
sub cull_options {
    my $self = shift;
    my (@argv) = @_;

    # XXX is it even valid to call this as a class method?
    return({}, @argv) unless(ref($self)); # no object

    my $specs = $self->get_options;
    return({}, @argv) unless($specs and %$specs); # no user options

    require Getopt::Long;
    # XXX Should we let Getopt::Long handle M::B's options? That would
    # be easy-ish to add to @specs right here, but wouldn't handle options
    # passed without "--" as M::B currently allows. We might be able to
    # get around this by setting the "prefix_pattern" Configure option.
    my @specs;
    my $args = {};
    # Construct the specifications for GetOptions.
    foreach my $k (sort keys %$specs) {
        my $v = $specs->{$k};
        # Throw an error if specs conflict with our own.
        die "Option specification '$k' conflicts with a " . ref $self
          . " option of the same name"
          if $self->valid_property($k);
        push @specs, $k . (defined $v->{type} ? $v->{type} : '');
        push @specs, $v->{store} if exists $v->{store};
        $args->{$k} = $v->{default} if exists $v->{default};
    }

    local @ARGV = @argv; # No other way to dupe Getopt::Long

    # Get the options values and return them.
    # XXX Add option to allow users to set options?
    if ( @specs ) {
      Getopt::Long::Configure('pass_through');
      Getopt::Long::GetOptions($args, @specs);
    }

    return $args, @ARGV;
}

sub unparse_args {
  my ($self, $args) = @_;
  my @out;
  foreach my $k (sort keys %$args) {
    my $v = $args->{$k};
    push @out, (ref $v eq 'HASH'  ? map {+"--$k", "$_=$v->{$_}"} sort keys %$v :
                ref $v eq 'ARRAY' ? map {+"--$k", $_} @$v :
                ("--$k", $v));
  }
  return @out;
}

sub args {
    my $self = shift;
    return wantarray ? %{ $self->{args} } : $self->{args} unless @_;
    my $key = shift;
    $self->{args}{$key} = shift if @_;
    return $self->{args}{$key};
}

# allows select parameters (with underscores) to be spoken with dashes
# when used as command-line options
sub _translate_option {
  my $self = shift;
  my $opt  = shift;

  (my $tr_opt = $opt) =~ tr/-/_/;

  return $tr_opt if grep $tr_opt =~ /^(?:no_?)?$_$/, qw(
    create_license
    create_makefile_pl
    create_readme
    extra_compiler_flags
    extra_linker_flags
    install_base
    install_path
    meta_add
    meta_merge
    test_files
    use_rcfile
    use_tap_harness
    tap_harness_args
    cpan_client
    pureperl_only
    allow_pureperl
  ); # normalize only selected option names

  return $opt;
}

my %singular_argument = map { ($_ => 1) } qw/install_base prefix destdir installdirs verbose quiet uninst debug sign/;

sub _read_arg {
  my ($self, $args, $key, $val) = @_;

  $key = $self->_translate_option($key);

  if ( exists $args->{$key} and not $singular_argument{$key} ) {
    $args->{$key} = [ $args->{$key} ] unless ref $args->{$key};
    push @{$args->{$key}}, $val;
  } else {
    $args->{$key} = $val;
  }
}

# decide whether or not an option requires/has an operand
sub _optional_arg {
  my $self = shift;
  my $opt  = shift;
  my $argv = shift;

  $opt = $self->_translate_option($opt);

  my @bool_opts = qw(
    build_bat
    create_license
    create_readme
    pollute
    quiet
    uninst
    use_rcfile
    verbose
    debug
    sign
    use_tap_harness
    pureperl_only
    allow_pureperl
  );

  # inverted boolean options; eg --noverbose or --no-verbose
  # converted to proper name & returned with false value (verbose, 0)
  if ( grep $opt =~ /^no[-_]?$_$/, @bool_opts ) {
    $opt =~ s/^no-?//;
    return ($opt, 0);
  }

  # non-boolean option; return option unchanged along with its argument
  return ($opt, shift(@$argv)) unless grep $_ eq $opt, @bool_opts;

  # we're punting a bit here, if an option appears followed by a digit
  # we take the digit as the argument for the option. If there is
  # nothing that looks like a digit, we pretend the option is a flag
  # that is being set and has no argument.
  my $arg = 1;
  $arg = shift(@$argv) if @$argv && $argv->[0] =~ /^\d+$/;

  return ($opt, $arg);
}

sub read_args {
  my $self = shift;

  (my $args, @_) = $self->cull_options(@_);
  my %args = %$args;

  my $opt_re = qr/[\w\-]+/;

  my ($action, @argv);
  while (@_) {
    local $_ = shift;
    if ( /^(?:--)?($opt_re)=(.*)$/ ) {
      $self->_read_arg(\%args, $1, $2);
    } elsif ( /^--($opt_re)$/ ) {
      my($opt, $arg) = $self->_optional_arg($1, \@_);
      $self->_read_arg(\%args, $opt, $arg);
    } elsif ( /^($opt_re)$/ and !defined($action)) {
      $action = $1;
    } else {
      push @argv, $_;
    }
  }
  $args{ARGV} = \@argv;

  for ('extra_compiler_flags', 'extra_linker_flags') {
    $args{$_} = [ $self->split_like_shell($args{$_}) ] if exists $args{$_};
  }

  # Convert to arrays
  for ('include_dirs') {
    $args{$_} = [ $args{$_} ] if exists $args{$_} && !ref $args{$_}
  }

  # Hashify these parameters
  for ($self->hash_properties, 'config') {
    next unless exists $args{$_};
    my %hash;
    $args{$_} ||= [];
    $args{$_} = [ $args{$_} ] unless ref $args{$_};
    foreach my $arg ( @{$args{$_}} ) {
      $arg =~ /($opt_re)=(.*)/
        or die "Malformed '$_' argument: '$arg' should be something like 'foo=bar'";
      $hash{$1} = $2;
    }
    $args{$_} = \%hash;
  }

  # De-tilde-ify any path parameters
  for my $key (qw(prefix install_base destdir)) {
    next if !defined $args{$key};
    $args{$key} = $self->_detildefy($args{$key});
  }

  for my $key (qw(install_path)) {
    next if !defined $args{$key};

    for my $subkey (keys %{$args{$key}}) {
      next if !defined $args{$key}{$subkey};
      my $subkey_ext = $self->_detildefy($args{$key}{$subkey});
      if ( $subkey eq 'html' ) { # translate for compatibility
        $args{$key}{binhtml} = $subkey_ext;
        $args{$key}{libhtml} = $subkey_ext;
      } else {
        $args{$key}{$subkey} = $subkey_ext;
      }
    }
  }

  if ($args{makefile_env_macros}) {
    require Module::Build::Compat;
    %args = (%args, Module::Build::Compat->makefile_to_build_macros);
  }

  return \%args, $action;
}

# Default: do nothing.  Overridden for Unix & Windows.
sub _detildefy {}


# merge Module::Build argument lists that have already been parsed
# by read_args(). Takes two references to option hashes and merges
# the contents, giving priority to the first.
sub _merge_arglist {
  my( $self, $opts1, $opts2 ) = @_;

  $opts1 ||= {};
  $opts2 ||= {};
  my %new_opts = %$opts1;
  while (my ($key, $val) = each %$opts2) {
    if ( exists( $opts1->{$key} ) ) {
      if ( ref( $val ) eq 'HASH' ) {
        while (my ($k, $v) = each %$val) {
          $new_opts{$key}{$k} = $v unless exists( $opts1->{$key}{$k} );
        }
      }
    } else {
      $new_opts{$key} = $val
    }
  }

  return %new_opts;
}

# Look for a home directory on various systems.
sub _home_dir {
  my @home_dirs;
  push( @home_dirs, $ENV{HOME} ) if $ENV{HOME};

  push( @home_dirs, File::Spec->catpath($ENV{HOMEDRIVE}, $ENV{HOMEPATH}, '') )
      if $ENV{HOMEDRIVE} && $ENV{HOMEPATH};

  my @other_home_envs = qw( USERPROFILE APPDATA WINDIR SYS$LOGIN );
  push( @home_dirs, map $ENV{$_}, grep $ENV{$_}, @other_home_envs );

  my @real_home_dirs = grep -d, @home_dirs;

  return wantarray ? @real_home_dirs : shift( @real_home_dirs );
}

sub _find_user_config {
  my $self = shift;
  my $file = shift;
  foreach my $dir ( $self->_home_dir ) {
    my $path = File::Spec->catfile( $dir, $file );
    return $path if -e $path;
  }
  return undef;
}

# read ~/.modulebuildrc returning global options '*' and
# options specific to the currently executing $action.
sub read_modulebuildrc {
  my( $self, $action ) = @_;

  return () unless $self->use_rcfile;

  my $modulebuildrc;
  if ( exists($ENV{MODULEBUILDRC}) && $ENV{MODULEBUILDRC} eq 'NONE' ) {
    return ();
  } elsif ( exists($ENV{MODULEBUILDRC}) && -e $ENV{MODULEBUILDRC} ) {
    $modulebuildrc = $ENV{MODULEBUILDRC};
  } elsif ( exists($ENV{MODULEBUILDRC}) ) {
    $self->log_warn("WARNING: Can't find resource file " .
                    "'$ENV{MODULEBUILDRC}' defined in environment.\n" .
                    "No options loaded\n");
    return ();
  } else {
    $modulebuildrc = $self->_find_user_config( '.modulebuildrc' );
    return () unless $modulebuildrc;
  }

  open(my $fh, '<', $modulebuildrc )
      or die "Can't open $modulebuildrc: $!";

  my %options; my $buffer = '';
  while (defined( my $line = <$fh> )) {
    chomp( $line );
    $line =~ s/#.*$//;
    next unless length( $line );

    if ( $line =~ /^\S/ ) {
      if ( $buffer ) {
        my( $action, $options ) = split( /\s+/, $buffer, 2 );
        $options{$action} .= $options . ' ';
        $buffer = '';
      }
      $buffer = $line;
    } else {
      $buffer .= $line;
    }
  }

  if ( $buffer ) { # anything left in $buffer ?
    my( $action, $options ) = split( /\s+/, $buffer, 2 );
    $options{$action} .= $options . ' '; # merge if more than one line
  }

  my ($global_opts) =
    $self->read_args( $self->split_like_shell( $options{'*'} || '' ) );

  # let fakeinstall act like install if not provided
  if ( $action eq 'fakeinstall' && ! exists $options{fakeinstall} ) {
    $action = 'install';
  }
  my ($action_opts) =
    $self->read_args( $self->split_like_shell( $options{$action} || '' ) );

  # specific $action options take priority over global options '*'
  return $self->_merge_arglist( $action_opts, $global_opts );
}

# merge the relevant options in ~/.modulebuildrc into Module::Build's
# option list where they do not conflict with commandline options.
sub merge_modulebuildrc {
  my( $self, $action, %cmdline_opts ) = @_;
  my %rc_opts = $self->read_modulebuildrc( $action || $self->{action} || 'build' );
  my %new_opts = $self->_merge_arglist( \%cmdline_opts, \%rc_opts );
  $self->merge_args( $action, %new_opts );
}

sub merge_args {
  my ($self, $action, %args) = @_;
  $self->{action} = $action if defined $action;

  my %additive = map { $_ => 1 } $self->hash_properties;

  # Extract our 'properties' from $cmd_args, the rest are put in 'args'.
  while (my ($key, $val) = each %args) {
    $self->{phash}{runtime_params}->access( $key => $val )
      if $self->valid_property($key);

    if ($key eq 'config') {
      $self->config($_ => $val->{$_}) foreach keys %$val;
    } else {
      my $add_to = $additive{$key}             ? $self->{properties}{$key} :
                   $self->valid_property($key) ? $self->{properties}       :
                   $self->{args}               ;

      if ($additive{$key}) {
        $add_to->{$_} = $val->{$_} foreach keys %$val;
      } else {
        $add_to->{$key} = $val;
      }
    }
  }
}

sub cull_args {
  my $self = shift;
  my @arg_list = @_;
  unshift @arg_list, $self->split_like_shell($ENV{PERL_MB_OPT})
    if $ENV{PERL_MB_OPT};
  my ($args, $action) = $self->read_args(@arg_list);
  $self->merge_args($action, %$args);
  $self->merge_modulebuildrc( $action, %$args );
}

sub super_classes {
  my ($self, $class, $seen) = @_;
  $class ||= ref($self) || $self;
  $seen  ||= {};

  no strict 'refs';
  my @super = grep {not $seen->{$_}++} $class, @{ $class . '::ISA' };
  return @super, map {$self->super_classes($_,$seen)} @super;
}

sub known_actions {
  my ($self) = @_;

  my %actions;
  no strict 'refs';

  foreach my $class ($self->super_classes) {
    foreach ( keys %{ $class . '::' } ) {
      $actions{$1}++ if /^ACTION_(\w+)/;
    }
  }

  return wantarray ? sort keys %actions : \%actions;
}

sub get_action_docs {
  my ($self, $action) = @_;
  my $actions = $self->known_actions;
  die "No known action '$action'" unless $actions->{$action};

  my ($files_found, @docs) = (0);
  foreach my $class ($self->super_classes) {
    (my $file = $class) =~ s{::}{/}g;
    # NOTE: silently skipping relative paths if any chdir() happened
    $file = $INC{$file . '.pm'} or next;
    open(my $fh, '<', $file) or next;
    $files_found++;

    # Code below modified from /usr/bin/perldoc

    # Skip to ACTIONS section
    local $_;
    while (<$fh>) {
      last if /^=head1 ACTIONS\s/;
    }

    # Look for our action and determine the style
    my $style;
    while (<$fh>) {
      last if /^=head1 /;

      # only item and head2 are allowed (3&4 are not in 5.005)
      if(/^=(item|head2)\s+\Q$action\E\b/) {
        $style = $1;
        push @docs, $_;
        last;
      }
    }
    $style or next; # not here

    # and the content
    if($style eq 'item') {
      my ($found, $inlist) = (0, 0);
      while (<$fh>) {
        if (/^=(item|back)/) {
          last unless $inlist;
        }
        push @docs, $_;
        ++$inlist if /^=over/;
        --$inlist if /^=back/;
      }
    }
    else { # head2 style
      # stop at anything equal or greater than the found level
      while (<$fh>) {
        last if(/^=(?:head[12]|cut)/);
        push @docs, $_;
      }
    }
    # TODO maybe disallow overriding just pod for an action
    # TODO and possibly: @docs and last;
  }

  unless ($files_found) {
    $@ = "Couldn't find any documentation to search";
    return;
  }
  unless (@docs) {
    $@ = "Couldn't find any docs for action '$action'";
    return;
  }

  return join '', @docs;
}

sub ACTION_prereq_report {
  my $self = shift;
  $self->log_info( $self->prereq_report );
}

sub ACTION_prereq_data {
  my $self = shift;
  $self->log_info( Module::Build::Dumper->_data_dump( $self->prereq_data ) );
}

sub prereq_data {
  my $self = shift;
  my @types = ('configure_requires', @{ $self->prereq_action_types } );
  my $info = { map { $_ => $self->$_() } grep { %{$self->$_()} } @types };
  return $info;
}

sub prereq_report {
  my $self = shift;
  my $info = $self->prereq_data;

  my $output = '';
  foreach my $type (sort keys %$info) {
    my $prereqs = $info->{$type};
    $output .= "\n$type:\n";
    my $mod_len = 2;
    my $ver_len = 4;
    my %mods;
    foreach my $modname (sort keys %$prereqs) {
      my $spec = $prereqs->{$modname};
      my $len  = length $modname;
      $mod_len = $len if $len > $mod_len;
      $spec    ||= '0';
      $len     = length $spec;
      $ver_len = $len if $len > $ver_len;

      my $mod = $self->check_installed_status($modname, $spec);
      $mod->{name} = $modname;
      $mod->{ok} ||= 0;
      $mod->{ok} = ! $mod->{ok} if $type =~ /^(\w+_)?conflicts$/;

      $mods{lc $modname} = $mod;
    }

    my $space  = q{ } x ($mod_len - 3);
    my $vspace = q{ } x ($ver_len - 3);
    my $sline  = q{-} x ($mod_len - 3);
    my $vline  = q{-} x ($ver_len - 3);
    my $disposition = ($type =~ /^(\w+_)?conflicts$/) ?
                        'Clash' : 'Need';
    $output .=
      "    Module $space  $disposition $vspace  Have\n".
      "    ------$sline+------$vline-+----------\n";


    for my $k (sort keys %mods) {
      my $mod = $mods{$k};
      my $space  = q{ } x ($mod_len - length $k);
      my $vspace = q{ } x ($ver_len - length $mod->{need});
      my $f = $mod->{ok} ? ' ' : '!';
      $output .=
        "  $f $mod->{name} $space     $mod->{need}  $vspace   ".
        (defined($mod->{have}) ? $mod->{have} : "")."\n";
    }
  }
  return $output;
}

sub ACTION_help {
  my ($self) = @_;
  my $actions = $self->known_actions;

  if (@{$self->{args}{ARGV}}) {
    my $msg = eval {$self->get_action_docs($self->{args}{ARGV}[0], $actions)};
    print $@ ? "$@\n" : $msg;
    return;
  }

  print <<EOF;

 Usage: $0 <action> --arg1=value --arg2=value ...
 Example: $0 test --verbose=1

 Actions defined:
EOF

  print $self->_action_listing($actions);

  print "\nRun `Build help <action>` for details on an individual action.\n";
  print "See `perldoc Module::Build` for complete documentation.\n";
}

sub _action_listing {
  my ($self, $actions) = @_;

  # Flow down columns, not across rows
  my @actions = sort keys %$actions;
  @actions = map $actions[($_ + ($_ % 2) * @actions) / 2],  0..$#actions;

  my $out = '';
  while (my ($one, $two) = splice @actions, 0, 2) {
    $out .= sprintf("  %-12s                   %-12s\n", $one, $two||'');
  }
  $out =~ s{\s*$}{}mg; # remove trailing spaces
  return $out;
}

sub ACTION_retest {
  my ($self) = @_;

  # Protect others against our @INC changes
  local @INC = @INC;

  # Filter out nonsensical @INC entries - some versions of
  # Test::Harness will really explode the number of entries here
  @INC = grep {ref() || -d} @INC if @INC > 100;

  $self->do_tests;
}

sub ACTION_testall {
  my ($self) = @_;

  my @types;
  for my $action (grep { $_ ne 'all' } $self->get_test_types) {
    # XXX We can't just dispatch because we get multiple summaries but
    # we'll need to dispatch to support custom setup/teardown in the
    # action.  To support that, we'll need to call something besides
    # Harness::runtests() because we'll need to collect the results in
    # parts, then run the summary.
    push(@types, $action);
    #$self->_call_action( "test$action" );
  }
  $self->generic_test(types => ['default', @types]);
}

sub get_test_types {
  my ($self) = @_;

  my $t = $self->{properties}->{test_types};
  return ( defined $t ? ( wantarray ? sort keys %$t : keys %$t ) : () );
}


sub ACTION_test {
  my ($self) = @_;
  $self->generic_test(type => 'default');
}

sub generic_test {
  my $self = shift;
  (@_ % 2) and croak('Odd number of elements in argument hash');
  my %args = @_;

  my $p = $self->{properties};

  my @types = (
    (exists($args{type})  ? $args{type} : ()),
    (exists($args{types}) ? @{$args{types}} : ()),
  );
  @types or croak "need some types of tests to check";

  my %test_types = (
    default => $p->{test_file_exts},
    (defined($p->{test_types}) ? %{$p->{test_types}} : ()),
  );

  for my $type (@types) {
    croak "$type not defined in test_types!"
      unless defined $test_types{ $type };
  }

  # we use local here because it ends up two method calls deep
  local $p->{test_file_exts} = [ map { ref $_ ? @$_ : $_ } @test_types{@types} ];
  $self->depends_on('code');

  # Protect others against our @INC changes
  local @INC = @INC;

  # Make sure we test the module in blib/
  unshift @INC, (File::Spec->catdir($p->{base_dir}, $self->blib, 'lib'),
                 File::Spec->catdir($p->{base_dir}, $self->blib, 'arch'));

  # Filter out nonsensical @INC entries - some versions of
  # Test::Harness will really explode the number of entries here
  @INC = grep {ref() || -d} @INC if @INC > 100;

  $self->do_tests;
}

# Test::Harness dies on failure but TAP::Harness does not, so we must
# die if running under TAP::Harness
sub do_tests {
  my $self = shift;

  my $tests = $self->find_test_files;

  local $ENV{PERL_DL_NONLAZY} = 1;

  if(@$tests) {
    my $args = $self->tap_harness_args;
    if($self->use_tap_harness or ($args and %$args)) {
      my $aggregate = $self->run_tap_harness($tests);
      if ( $aggregate->has_errors ) {
        die "Errors in testing.  Cannot continue.\n";
      }
    }
    else {
      $self->run_test_harness($tests);
    }
  }
  else {
    $self->log_info("No tests defined.\n");
  }

  $self->run_visual_script;
}

sub run_tap_harness {
  my ($self, $tests) = @_;

  require TAP::Harness::Env;

  # TODO allow the test @INC to be set via our API?

  my $aggregate = TAP::Harness::Env->create({
    lib => [@INC],
    verbosity => $self->{properties}{verbose},
    switches  => [ $self->harness_switches ],
    %{ $self->tap_harness_args },
  })->runtests(@$tests);

  return $aggregate;
}

sub run_test_harness {
    my ($self, $tests) = @_;
    require Test::Harness;

    local $Test::Harness::verbose = $self->verbose || 0;
    local $Test::Harness::switches = join ' ', $self->harness_switches;

    Test::Harness::runtests(@$tests);
}

sub run_visual_script {
    my $self = shift;
    # This will get run and the user will see the output.  It doesn't
    # emit Test::Harness-style output.
    $self->run_perl_script('visual.pl', '-Mblib='.$self->blib)
        if -e 'visual.pl';
}

sub harness_switches {
    my $self = shift;
    my @res;
    push @res, qw(-w -d) if $self->{properties}{debugger};
    push @res, '-MDevel::Cover' if $self->{properties}{cover};
    return @res;
}

sub test_files {
  my $self = shift;
  my $p = $self->{properties};
  if (@_) {
    return $p->{test_files} = (@_ == 1 ? shift : [@_]);
  }
  return $self->find_test_files;
}

sub expand_test_dir {
  my ($self, $dir) = @_;
  my $exts = $self->{properties}{test_file_exts};

  return sort map { @{$self->rscan_dir($dir, qr{^[^.].*\Q$_\E$})} } @$exts
    if $self->recursive_test_files;

  return sort map { glob File::Spec->catfile($dir, "*$_") } @$exts;
}

sub ACTION_testdb {
  my ($self) = @_;
  local $self->{properties}{debugger} = 1;
  $self->depends_on('test');
}

sub ACTION_testcover {
  my ($self) = @_;

  unless (Module::Metadata->find_module_by_name('Devel::Cover')) {
    warn("Cannot run testcover action unless Devel::Cover is installed.\n");
    return;
  }

  $self->add_to_cleanup('coverage', 'cover_db');
  $self->depends_on('code');

  # See whether any of the *.pm files have changed since last time
  # testcover was run.  If so, start over.
  if (-e 'cover_db') {
    my $pm_files = $self->rscan_dir
        (File::Spec->catdir($self->blib, 'lib'), $self->file_qr('\.pm$') );
    my $cover_files = $self->rscan_dir('cover_db', sub {-f $_ and not /\.html$/});

    $self->do_system(qw(cover -delete))
      unless $self->up_to_date($pm_files,         $cover_files)
          && $self->up_to_date($self->test_files, $cover_files);
  }

  local $self->{properties}{cover} = 1;
  $self->depends_on('test');
  $self->do_system('cover');
}

sub ACTION_code {
  my ($self) = @_;

  # All installable stuff gets created in blib/ .
  # Create blib/arch to keep blib.pm happy
  my $blib = $self->blib;
  $self->add_to_cleanup($blib);
  File::Path::mkpath( File::Spec->catdir($blib, 'arch') );

  if (my $split = $self->autosplit) {
    $self->autosplit_file($_, $blib) for ref($split) ? @$split : ($split);
  }

  foreach my $element (@{$self->build_elements}) {
    my $method = "process_${element}_files";
    $method = "process_files_by_extension" unless $self->can($method);
    $self->$method($element);
  }

  $self->depends_on('config_data');
}

sub ACTION_build {
  my $self = shift;
  $self->log_info("Building " . $self->dist_name . "\n");
  $self->depends_on('code');
  $self->depends_on('docs');
}

sub process_files_by_extension {
  my ($self, $ext) = @_;

  my $method = "find_${ext}_files";
  my $files = $self->can($method) ? $self->$method() : $self->_find_file_by_type($ext,  'lib');

  foreach my $file (sort keys %$files) {
    $self->copy_if_modified(from => $file, to => File::Spec->catfile($self->blib, $files->{$file}) );
  }
}

sub process_support_files {
  my $self = shift;
  my $p = $self->{properties};
  return unless $p->{c_source};

  my $files;
  if (ref($p->{c_source}) eq "ARRAY") {
      push @{$p->{include_dirs}}, @{$p->{c_source}};
      for my $path (@{$p->{c_source}}) {
          push @$files, @{ $self->rscan_dir($path, $self->file_qr('\.c(c|p|pp|xx|\+\+)?$')) };
      }
  } else {
      push @{$p->{include_dirs}}, $p->{c_source};
      $files = $self->rscan_dir($p->{c_source}, $self->file_qr('\.c(c|p|pp|xx|\+\+)?$'));
  }

  foreach my $file (@$files) {
      push @{$p->{objects}}, $self->compile_c($file);
  }
}

sub process_share_dir_files {
  my $self = shift;
  my $files = $self->_find_share_dir_files;
  return unless $files;

  # root for all File::ShareDir paths
  my $share_prefix = File::Spec->catdir($self->blib, qw/lib auto share/);

  # copy all share files to blib
  foreach my $file (sort keys %$files) {
    $self->copy_if_modified(
      from => $file, to => File::Spec->catfile( $share_prefix, $files->{$file} )
    );
  }
}

sub _find_share_dir_files {
  my $self = shift;
  my $share_dir = $self->share_dir;
  return unless $share_dir;

  my @file_map;
  if ( $share_dir->{dist} ) {
    my $prefix = "dist/".$self->dist_name;
    push @file_map, $self->_share_dir_map( $prefix, $share_dir->{dist} );
  }

  if ( $share_dir->{module} ) {
    for my $mod ( sort keys %{ $share_dir->{module} } ) {
      (my $altmod = $mod) =~ s{::}{-}g;
      my $prefix = "module/$altmod";
      push @file_map, $self->_share_dir_map($prefix, $share_dir->{module}{$mod});
    }
  }

  return { @file_map };
}

sub _share_dir_map {
  my ($self, $prefix, $list) = @_;
  my %files;
  for my $dir ( @$list ) {
    for my $f ( @{ $self->rscan_dir( $dir, sub {-f} )} ) {
      $f =~ s{\A.*?\Q$dir\E/}{};
      $files{"$dir/$f"} = "$prefix/$f";
    }
  }
  return %files;
}

sub process_PL_files {
  my ($self) = @_;
  my $files = $self->find_PL_files;

  foreach my $file (sort keys %$files) {
    my $to = $files->{$file};
    unless ($self->up_to_date( $file, $to )) {
      $self->run_perl_script($file, [], [@$to]) or die "$file failed";
      $self->add_to_cleanup(@$to);
    }
  }
}

sub process_xs_files {
  my $self = shift;
  return if $self->pureperl_only && $self->allow_pureperl;
  my $files = $self->find_xs_files;
  croak 'Can\'t build xs files under --pureperl-only' if %$files && $self->pureperl_only;
  foreach my $from (sort keys %$files) {
    my $to = $files->{$from};
    unless ($from eq $to) {
      $self->add_to_cleanup($to);
      $self->copy_if_modified( from => $from, to => $to );
    }
    $self->process_xs($to);
  }
}

sub process_pod_files { shift()->process_files_by_extension(shift()) }
sub process_pm_files  { shift()->process_files_by_extension(shift()) }

sub process_script_files {
  my $self = shift;
  my $files = $self->find_script_files;
  return unless keys %$files;

  my $script_dir = File::Spec->catdir($self->blib, 'script');
  File::Path::mkpath( $script_dir );

  foreach my $file (sort keys %$files) {
    my $result = $self->copy_if_modified($file, $script_dir, 'flatten') or next;
    $self->fix_shebang_line($result) unless $self->is_vmsish;
    $self->make_executable($result);
  }
}

sub find_PL_files {
  my $self = shift;
  if (my $files = $self->{properties}{PL_files}) {
    # 'PL_files' is given as a Unix file spec, so we localize_file_path().

    if (ref $files eq 'ARRAY') {
      return { map {$_, [/^(.*)\.PL$/]}
               map $self->localize_file_path($_),
               @$files };

    } elsif (ref $files eq 'HASH') {
      my %out;
      while (my ($file, $to) = each %$files) {
        $out{ $self->localize_file_path($file) } = [ map $self->localize_file_path($_),
                                                     ref $to ? @$to : ($to) ];
      }
      return \%out;

    } else {
      die "'PL_files' must be a hash reference or array reference";
    }
  }

  return unless -d 'lib';
  return {
    map {$_, [/^(.*)\.PL$/i ]}
    @{ $self->rscan_dir('lib', $self->file_qr('\.PL$')) }
  };
}

sub find_pm_files  { shift->_find_file_by_type('pm',  'lib') }
sub find_pod_files { shift->_find_file_by_type('pod', 'lib') }
sub find_xs_files  { shift->_find_file_by_type('xs',  'lib') }

sub find_script_files {
  my $self = shift;
  if (my $files = $self->script_files) {
    # Always given as a Unix file spec.  Values in the hash are
    # meaningless, but we preserve if present.
    return { map {$self->localize_file_path($_), $files->{$_}} keys %$files };
  }

  # No default location for script files
  return {};
}

sub find_test_files {
  my $self = shift;
  my $p = $self->{properties};

  if (my $files = $p->{test_files}) {
    $files = [sort keys %$files] if ref $files eq 'HASH';
    $files = [map { -d $_ ? $self->expand_test_dir($_) : $_ }
              map glob,
              $self->split_like_shell($files)];

    # Always given as a Unix file spec.
    return [ map $self->localize_file_path($_), @$files ];

  } else {
    # Find all possible tests in t/ or test.pl
    my @tests;
    push @tests, 'test.pl'                          if -e 'test.pl';
    push @tests, $self->expand_test_dir('t')        if -e 't' and -d _;
    return \@tests;
  }
}

sub _find_file_by_type {
  my ($self, $type, $dir) = @_;

  if (my $files = $self->{properties}{"${type}_files"}) {
    # Always given as a Unix file spec
    return { map $self->localize_file_path($_), %$files };
  }

  return {} unless -d $dir;
  return { map {$_, $_}
           map $self->localize_file_path($_),
           grep !/\.\#/,
           @{ $self->rscan_dir($dir, $self->file_qr("\\.$type\$")) } };
}

sub localize_file_path {
  my ($self, $path) = @_;
  return File::Spec->catfile( split m{/}, $path );
}

sub localize_dir_path {
  my ($self, $path) = @_;
  return File::Spec->catdir( split m{/}, $path );
}

sub fix_shebang_line { # Adapted from fixin() in ExtUtils::MM_Unix 1.35
  my ($self, @files) = @_;
  my $c = ref($self) ? $self->{config} : 'Module::Build::Config';

  my ($does_shbang) = $c->get('sharpbang') =~ /^\s*\#\!/;
  for my $file (@files) {
    open(my $FIXIN, '<', $file) or die "Can't process '$file': $!";
    local $/ = "\n";
    chomp(my $line = <$FIXIN>);
    next unless $line =~ s/^\s*\#!\s*//;     # Not a shebang file.

    my ($cmd, $arg) = (split(' ', $line, 2), '');
    next unless $cmd =~ /perl/i;
    my $interpreter = $self->{properties}{perl};

    $self->log_verbose("Changing sharpbang in $file to $interpreter\n");
    my $shb = '';
    $shb .= $c->get('sharpbang')."$interpreter $arg\n" if $does_shbang;

    open(my $FIXOUT, '>', "$file.new")
      or die "Can't create new $file: $!\n";

    # Print out the new #! line (or equivalent).
    local $\;
    undef $/; # Was localized above
    print $FIXOUT $shb, <$FIXIN>;
    close $FIXIN;
    close $FIXOUT;

    rename($file, "$file.bak")
      or die "Can't rename $file to $file.bak: $!";

    rename("$file.new", $file)
      or die "Can't rename $file.new to $file: $!";

    $self->delete_filetree("$file.bak")
      or $self->log_warn("Couldn't clean up $file.bak, leaving it there");

    $self->do_system($c->get('eunicefix'), $file) if $c->get('eunicefix') ne ':';
  }
}


sub ACTION_testpod {
  my $self = shift;
  $self->depends_on('docs');

  eval q{use Test::Pod 0.95; 1}
    or die "The 'testpod' action requires Test::Pod version 0.95";

  my @files = sort keys %{$self->_find_pods($self->libdoc_dirs)},
                   keys %{$self->_find_pods
                             ($self->bindoc_dirs,
                              exclude => [ $self->file_qr('\.bat$') ])}
    or die "Couldn't find any POD files to test\n";

  { package # hide from PAUSE
      Module::Build::PodTester;  # Don't want to pollute the main namespace
    Test::Pod->import( tests => scalar @files );
    pod_file_ok($_) foreach @files;
  }
}

sub ACTION_testpodcoverage {
  my $self = shift;

  $self->depends_on('docs');

  eval q{use Test::Pod::Coverage 1.00; 1}
    or die "The 'testpodcoverage' action requires ",
           "Test::Pod::Coverage version 1.00";

  # TODO this needs test coverage!

  # XXX work-around a bug in Test::Pod::Coverage previous to v1.09
  # Make sure we test the module in blib/
  local @INC = @INC;
  my $p = $self->{properties};
  unshift(@INC,
    # XXX any reason to include arch?
    File::Spec->catdir($p->{base_dir}, $self->blib, 'lib'),
    #File::Spec->catdir($p->{base_dir}, $self->blib, 'arch')
  );

  all_pod_coverage_ok();
}

sub ACTION_docs {
  my $self = shift;

  $self->depends_on('code');
  $self->depends_on('manpages', 'html');
}

# Given a file type, will return true if the file type would normally
# be installed when neither install-base nor prefix has been set.
# I.e. it will be true only if the path is set from Config.pm or
# set explicitly by the user via install-path.
sub _is_default_installable {
  my $self = shift;
  my $type = shift;
  return ( $self->install_destination($type) &&
           ( $self->install_path($type) ||
             $self->install_sets($self->installdirs)->{$type} )
         ) ? 1 : 0;
}

sub _is_ActivePerl {
#  return 0;
  my $self = shift;
  unless (exists($self->{_is_ActivePerl})) {
    $self->{_is_ActivePerl} = (eval { require ActivePerl::DocTools; } || 0);
  }
  return $self->{_is_ActivePerl};
}

sub _is_ActivePPM {
#  return 0;
  my $self = shift;
  unless (exists($self->{_is_ActivePPM})) {
    $self->{_is_ActivePPM} = (eval { require ActivePerl::PPM; } || 0);
  }
  return $self->{_is_ActivePPM};
}

sub ACTION_manpages {
  my $self = shift;

  return unless $self->_mb_feature('manpage_support');

  $self->depends_on('code');

  my %extra_manify_args = $self->{properties}{'extra_manify_args'} ? %{ $self->{properties}{'extra_manify_args'} } : ();

  foreach my $type ( qw(bin lib) ) {
    next unless ( $self->invoked_action eq 'manpages' || $self->_is_default_installable("${type}doc"));
    my $files = $self->_find_pods( $self->{properties}{"${type}doc_dirs"},
                                   exclude => [ $self->file_qr('\.bat$') ] );
    next unless %$files;

    my $sub = $self->can("manify_${type}_pods");
    $self->$sub( %extra_manify_args ) if defined( $sub );
  }
}

sub manify_bin_pods {
  my $self    = shift;
  my %podman_args = (section =>  1, @_); # binaries go in section 1

  my $files   = $self->_find_pods( $self->{properties}{bindoc_dirs},
                                   exclude => [ $self->file_qr('\.bat$') ] );
  return unless keys %$files;

  my $mandir = File::Spec->catdir( $self->blib, 'bindoc' );
  File::Path::mkpath( $mandir, 0, oct(777) );

  require Pod::Man;
  foreach my $file (sort keys %$files) {
    # Pod::Simple based parsers only support one document per instance.
    # This is expected to change in a future version (Pod::Simple > 3.03).
    my $parser  = Pod::Man->new( %podman_args );
    my $manpage = $self->man1page_name( $file ) . '.' .
                  $self->config( 'man1ext' );
    my $outfile = File::Spec->catfile($mandir, $manpage);
    next if $self->up_to_date( $file, $outfile );
    $self->log_verbose("Manifying $file -> $outfile\n");
    eval { $parser->parse_from_file( $file, $outfile ); 1 }
      or $self->log_warn("Error creating '$outfile': $@\n");
    $files->{$file} = $outfile;
  }
}

sub manify_lib_pods {
  my $self    = shift;
  my %podman_args = (section => 3, @_); # libraries go in section 3

  my $files   = $self->_find_pods($self->{properties}{libdoc_dirs});
  return unless keys %$files;

  my $mandir = File::Spec->catdir( $self->blib, 'libdoc' );
  File::Path::mkpath( $mandir, 0, oct(777) );

  require Pod::Man;
  foreach my $file (sort keys %$files) {
    # Pod::Simple based parsers only support one document per instance.
    # This is expected to change in a future version (Pod::Simple > 3.03).
    my $parser  = Pod::Man->new( %podman_args );
    my $manpage = $self->man3page_name( $files->{$file} ) . '.' .
                  $self->config( 'man3ext' );
    my $outfile = File::Spec->catfile( $mandir, $manpage);
    next if $self->up_to_date( $file, $outfile );
    $self->log_verbose("Manifying $file -> $outfile\n");
    eval { $parser->parse_from_file( $file, $outfile ); 1 }
      or $self->log_warn("Error creating '$outfile': $@\n");
    $files->{$file} = $outfile;
  }
}

sub _find_pods {
  my ($self, $dirs, %args) = @_;
  my %files;
  foreach my $spec (@$dirs) {
    my $dir = $self->localize_dir_path($spec);
    next unless -e $dir;

    FILE: foreach my $file ( @{ $self->rscan_dir( $dir ) } ) {
      foreach my $regexp ( @{ $args{exclude} } ) {
        next FILE if $file =~ $regexp;
      }
      $file = $self->localize_file_path($file);
      $files{$file} = File::Spec->abs2rel($file, $dir) if $self->contains_pod( $file )
    }
  }
  return \%files;
}

sub contains_pod {
  my ($self, $file) = @_;
  return '' unless -T $file;  # Only look at text files

  open(my $fh, '<', $file ) or die "Can't open $file: $!";
  while (my $line = <$fh>) {
    return 1 if $line =~ /^\=(?:head|pod|item)/;
  }

  return '';
}

sub ACTION_html {
  my $self = shift;

  return unless $self->_mb_feature('HTML_support');

  $self->depends_on('code');

  foreach my $type ( qw(bin lib) ) {
    next unless ( $self->invoked_action eq 'html' || $self->_is_default_installable("${type}html"));
    $self->htmlify_pods( $type );
  }
}

# 1) If it's an ActiveState perl install, we need to run
#    ActivePerl::DocTools->UpdateTOC;
# 2) Links to other modules are not being generated
sub htmlify_pods {
  my $self = shift;
  my $type = shift;
  my $htmldir = shift || File::Spec->catdir($self->blib, "${type}html");

  $self->add_to_cleanup('pod2htm*');

  my $pods = $self->_find_pods( $self->{properties}{"${type}doc_dirs"},
                                exclude => [ $self->file_qr('\.(?:bat|com|html)$') ] );
  return unless %$pods;  # nothing to do

  unless ( -d $htmldir ) {
    File::Path::mkpath($htmldir, 0, oct(755))
      or die "Couldn't mkdir $htmldir: $!";
  }

  my @rootdirs = ($type eq 'bin') ? qw(bin) :
      $self->installdirs eq 'core' ? qw(lib) : qw(site lib);
  my $podroot = $ENV{PERL_CORE}
              ? File::Basename::dirname($ENV{PERL_CORE})
              : $self->original_prefix('core');

  my $htmlroot = $self->install_sets('core')->{libhtml};
  my $podpath;
  unless (defined $self->args('html_links') and !$self->args('html_links')) {
    my @podpath = ( (map { File::Spec->abs2rel($_ ,$podroot) } grep { -d  }
                     ( $self->install_sets('core', 'lib'), # lib
                       $self->install_sets('core', 'bin'), # bin
                       $self->install_sets('site', 'lib'), # site/lib
                     ) ), File::Spec->rel2abs($self->blib) );

    $podpath = $ENV{PERL_CORE}
      ? File::Spec->catdir($podroot, 'lib')
        : join(":", map { tr,:\\,|/,; $_ } @podpath);
  }

  my $blibdir = join('/', File::Spec->splitdir(
    (File::Spec->splitpath(File::Spec->rel2abs($htmldir),1))[1]),''
  );

  my ($with_ActiveState, $htmltool);

  if ( $with_ActiveState = $self->_is_ActivePerl
    && eval { require ActivePerl::DocTools::Pod; 1 }
  ) {
    my $tool_v = ActiveState::DocTools::Pod->VERSION;
    $htmltool = "ActiveState::DocTools::Pod";
    $htmltool .= " $tool_v" if $tool_v && length $tool_v;
  }
  else {
      require Module::Build::PodParser;
      require Pod::Html;
    $htmltool = "Pod::Html " .  Pod::Html->VERSION;
  }
  $self->log_verbose("Converting Pod to HTML with $htmltool\n");

  my $errors = 0;

  POD:
  foreach my $pod ( sort keys %$pods ) {

    my ($name, $path) = File::Basename::fileparse($pods->{$pod},
      $self->file_qr('\.(?:pm|plx?|pod)$')
    );
    my @dirs = File::Spec->splitdir( File::Spec->canonpath( $path ) );
    pop( @dirs ) if scalar(@dirs) && $dirs[-1] eq File::Spec->curdir;

    my $fulldir = File::Spec->catdir($htmldir, @rootdirs, @dirs);
    my $tmpfile = File::Spec->catfile($fulldir, "${name}.tmp");
    my $outfile = File::Spec->catfile($fulldir, "${name}.html");
    my $infile  = File::Spec->abs2rel($pod);

    next if $self->up_to_date($infile, $outfile);

    unless ( -d $fulldir ){
      File::Path::mkpath($fulldir, 0, oct(755))
        or die "Couldn't mkdir $fulldir: $!";
    }

    $self->log_verbose("HTMLifying $infile -> $outfile\n");
    if ( $with_ActiveState ) {
      my $depth = @rootdirs + @dirs;
      my %opts = ( infile => $infile,
        outfile => $tmpfile,
        ( defined($podpath) ? (podpath => $podpath) : ()),
        podroot => $podroot,
        index => 1,
        depth => $depth,
      );
      eval {
        ActivePerl::DocTools::Pod::pod2html(map { ($_, $opts{$_}) } sort keys %opts);
        1;
      } or $self->log_warn("[$htmltool] pod2html (" .
        join(", ", map { "q{$_} => q{$opts{$_}}" } (sort keys %opts)) . ") failed: $@");
    } else {
      my $path2root = File::Spec->catdir((File::Spec->updir) x @dirs);
      open(my $fh, '<', $infile) or die "Can't read $infile: $!";
      my $abstract = Module::Build::PodParser->new(fh => $fh)->get_abstract();

      my $title = join( '::', (@dirs, $name) );
      $title .= " - $abstract" if $abstract;

      my @opts = (
        "--title=$title",
        ( defined($podpath) ? "--podpath=$podpath" : ()),
        "--infile=$infile",
        "--outfile=$tmpfile",
        "--podroot=$podroot",
        ($path2root ? "--htmlroot=$path2root" : ()),
      );

      unless ( eval{Pod::Html->VERSION(1.12)} ) {
        push( @opts, ('--flush') ); # caching removed in 1.12
      }

      if ( eval{Pod::Html->VERSION(1.12)} ) {
        push( @opts, ('--header', '--backlink') );
      } elsif ( eval{Pod::Html->VERSION(1.03)} ) {
        push( @opts, ('--header', '--backlink=Back to Top') );
      }

      $self->log_verbose("P::H::pod2html @opts\n");
      {
        my $orig = Cwd::getcwd();
        eval { Pod::Html::pod2html(@opts); 1 }
          or $self->log_warn("[$htmltool] pod2html( " .
          join(", ", map { "q{$_}" } @opts) . ") failed: $@");
        chdir($orig);
      }
    }
    # We now have to cleanup the resulting html file
    if ( ! -r $tmpfile ) {
      $errors++;
      next POD;
    }
    open(my $fh, '<', $tmpfile) or die "Can't read $tmpfile: $!";
    my $html = join('',<$fh>);
    close $fh;
    if (!$self->_is_ActivePerl) {
      # These fixups are already done by AP::DT:P:pod2html
      # The output from pod2html is NOT XHTML!
      # IE6+ will display content that is not valid for DOCTYPE
      $html =~ s#^<!DOCTYPE .*?>#<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">#im;
      $html =~ s#<html xmlns="http://www.w3.org/1999/xhtml">#<html>#i;

      # IE6+ will not display local HTML files with strict
      # security without this comment
      $html =~ s#<head>#<head>\n<!-- saved from url=(0017)http://localhost/ -->#i;
    }
    # Fixup links that point to our temp blib
    $html =~ s/\Q$blibdir\E//g;

    open($fh, '>', $outfile) or die "Can't write $outfile: $!";
    print $fh $html;
    close $fh;
    unlink($tmpfile);
  }

  return ! $errors;

}

# Adapted from ExtUtils::MM_Unix
sub man1page_name {
  my $self = shift;
  return File::Basename::basename( shift );
}

# Adapted from ExtUtils::MM_Unix and Pod::Man
# Depending on M::B's dependency policy, it might make more sense to refactor
# Pod::Man::begin_pod() to extract a name() methods, and use them...
#    -spurkis
sub man3page_name {
  my $self = shift;
  my ($vol, $dirs, $file) = File::Spec->splitpath( shift );
  my @dirs = File::Spec->splitdir( File::Spec->canonpath($dirs) );

  # Remove known exts from the base name
  $file =~ s/\.p(?:od|m|l)\z//i;

  return join( $self->manpage_separator, @dirs, $file );
}

sub manpage_separator {
  return '::';
}

# For systems that don't have 'diff' executable, should use Algorithm::Diff
sub ACTION_diff {
  my $self = shift;
  $self->depends_on('build');
  my $local_lib = File::Spec->rel2abs('lib');
  my @myINC = grep {$_ ne $local_lib} @INC;

  # The actual install destination might not be in @INC, so check there too.
  push @myINC, map $self->install_destination($_), qw(lib arch);

  my @flags = @{$self->{args}{ARGV}};
  @flags = $self->split_like_shell($self->{args}{flags} || '') unless @flags;

  my $installmap = $self->install_map;
  delete $installmap->{read};
  delete $installmap->{write};

  my $text_suffix = $self->file_qr('\.(pm|pod)$');

  foreach my $localdir (sort keys %$installmap) {
    my @localparts = File::Spec->splitdir($localdir);
    my $files = $self->rscan_dir($localdir, sub {-f});

    foreach my $file (@$files) {
      my @parts = File::Spec->splitdir($file);
      @parts = @parts[@localparts .. $#parts]; # Get rid of blib/lib or similar

      my $installed = Module::Metadata->find_module_by_name(
                        join('::', @parts), \@myINC );
      if (not $installed) {
        print "Only in lib: $file\n";
        next;
      }

      my $status = File::Compare::compare($installed, $file);
      next if $status == 0;  # Files are the same
      die "Can't compare $installed and $file: $!" if $status == -1;

      if ($file =~ $text_suffix) {
        $self->do_system('diff', @flags, $installed, $file);
      } else {
        print "Binary files $file and $installed differ\n";
      }
    }
  }
}

sub ACTION_pure_install {
  shift()->depends_on('install');
}

sub ACTION_install {
  my ($self) = @_;
  require ExtUtils::Install;
  $self->depends_on('build');
  # RT#63003 suggest that odd circumstances that we might wind up
  # in a different directory than we started, so wrap with _do_in_dir to
  # ensure we get back to where we started; hope this fixes it!
  $self->_do_in_dir( ".", sub {
    ExtUtils::Install::install(
      $self->install_map, $self->verbose, 0, $self->{args}{uninst}||0
    );
  });
  if ($self->_is_ActivePerl && $self->{_completed_actions}{html}) {
    $self->log_info("Building ActivePerl Table of Contents\n");
    eval { ActivePerl::DocTools::WriteTOC(verbose => $self->verbose ? 1 : 0); 1; }
      or $self->log_warn("AP::DT:: WriteTOC() failed: $@");
  }
  if ($self->_is_ActivePPM) {
    # We touch 'lib/perllocal.pod'. There is an existing logic in subroutine _init_db()
    # of 'ActivePerl/PPM/InstallArea.pm' that says that if 'lib/perllocal.pod' has a 'date-last-touched'
    # greater than that of the PPM SQLite databases ('etc/ppm-perl-area.db' and/or
    # 'site/etc/ppm-site-area.db') then the PPM SQLite databases are rebuilt from scratch.

    # in the following line, 'perllocal.pod' this is *always* 'lib/perllocal.pod', never 'site/lib/perllocal.pod'
    my $F_perllocal = File::Spec->catfile($self->install_sets('core', 'lib'), 'perllocal.pod');
    my $dt_stamp = time;

    $self->log_info("For ActivePerl's PPM: touch '$F_perllocal'\n");

    open my $perllocal, ">>", $F_perllocal;
    close $perllocal;
    utime($dt_stamp, $dt_stamp, $F_perllocal);
  }
}

sub ACTION_fakeinstall {
  my ($self) = @_;
  require ExtUtils::Install;
  my $eui_version = ExtUtils::Install->VERSION;
  if ( $eui_version < 1.32 ) {
    $self->log_warn(
      "The 'fakeinstall' action requires Extutils::Install 1.32 or later.\n"
      . "(You only have version $eui_version)."
    );
    return;
  }
  $self->depends_on('build');
  ExtUtils::Install::install($self->install_map, !$self->quiet, 1, $self->{args}{uninst}||0);
}

sub ACTION_versioninstall {
  my ($self) = @_;

  die "You must have only.pm 0.25 or greater installed for this operation: $@\n"
    unless eval { require only; 'only'->VERSION(0.25); 1 };

  $self->depends_on('build');

  my %onlyargs = map {exists($self->{args}{$_}) ? ($_ => $self->{args}{$_}) : ()}
    qw(version versionlib);
  only::install::install(%onlyargs);
}

sub ACTION_installdeps {
  my ($self) = @_;

  # XXX include feature prerequisites as optional prereqs?

  my $info = $self->_enum_prereqs;
  if (! $info ) {
    $self->log_info( "No prerequisites detected\n" );
    return;
  }

  my $failures = $self->prereq_failures($info);
  if ( ! $failures ) {
    $self->log_info( "All prerequisites satisfied\n" );
    return;
  }

  my @install;
  foreach my $type (sort keys %$failures) {
    my $prereqs = $failures->{$type};
    if($type =~ m/^(?:\w+_)?requires$/) {
      push(@install, sort keys %$prereqs);
      next;
    }
    $self->log_info("Checking optional dependencies:\n");
    foreach my $module (sort keys %$prereqs) {
      push(@install, $module) if($self->y_n("Install $module?", 'y'));
    }
  }

  return unless @install;

  my ($command, @opts) = $self->split_like_shell($self->cpan_client);

  # relative command should be relative to our active Perl
  # so we need to locate that command
  if ( ! File::Spec->file_name_is_absolute( $command ) ) {
    # prefer site to vendor to core
    my @loc = ( 'site', 'vendor', '' );
    my @bindirs = File::Basename::dirname($self->perl);
    push @bindirs,
      map {
        ($self->config->{"install${_}bin"}, $self->config->{"install${_}script"})
      } @loc;
    for my $d ( @bindirs ) {
      my $abs_cmd = $self->find_command(File::Spec->catfile( $d, $command ));
      if ( defined $abs_cmd ) {
        $command = $abs_cmd;
        last;
      }
    }
  }

  $self->do_system($command, @opts, @install);
}

sub ACTION_clean {
  my ($self) = @_;
  $self->log_info("Cleaning up build files\n");
  foreach my $item (map glob($_), $self->cleanup) {
    $self->delete_filetree($item);
  }
}

sub ACTION_realclean {
  my ($self) = @_;
  $self->depends_on('clean');
  $self->log_info("Cleaning up configuration files\n");
  $self->delete_filetree(
    $self->config_dir, $self->mymetafile, $self->mymetafile2, $self->build_script
  );
}

sub ACTION_ppd {
  my ($self) = @_;

  require Module::Build::PPMMaker;
  my $ppd = Module::Build::PPMMaker->new();
  my $file = $ppd->make_ppd(%{$self->{args}}, build => $self);
  $self->add_to_cleanup($file);
}

sub ACTION_ppmdist {
  my ($self) = @_;

  $self->depends_on( 'build' );

  my $ppm = $self->ppm_name;
  $self->delete_filetree( $ppm );
  $self->log_info( "Creating $ppm\n" );
  $self->add_to_cleanup( $ppm, "$ppm.tar.gz" );

  my %types = ( # translate types/dirs to those expected by ppm
    lib     => 'lib',
    arch    => 'arch',
    bin     => 'bin',
    script  => 'script',
    bindoc  => 'man1',
    libdoc  => 'man3',
    binhtml => undef,
    libhtml => undef,
  );

  foreach my $type ($self->install_types) {
    next if exists( $types{$type} ) && !defined( $types{$type} );

    my $dir = File::Spec->catdir( $self->blib, $type );
    next unless -e $dir;

    my $files = $self->rscan_dir( $dir );
    foreach my $file ( @$files ) {
      next unless -f $file;
      my $rel_file =
        File::Spec->abs2rel( File::Spec->rel2abs( $file ),
                             File::Spec->rel2abs( $dir  ) );
      my $to_file  =
        File::Spec->catfile( $ppm, 'blib',
                            exists( $types{$type} ) ? $types{$type} : $type,
                            $rel_file );
      $self->copy_if_modified( from => $file, to => $to_file );
    }
  }

  foreach my $type ( qw(bin lib) ) {
    $self->htmlify_pods( $type, File::Spec->catdir($ppm, 'blib', 'html') );
  }

  # create a tarball;
  # the directory tar'ed must be blib so we need to do a chdir first
  my $target = File::Spec->catfile( File::Spec->updir, $ppm );
  $self->_do_in_dir( $ppm, sub { $self->make_tarball( 'blib', $target ) } );

  $self->depends_on( 'ppd' );

  $self->delete_filetree( $ppm );
}

sub ACTION_pardist {
  my ($self) = @_;

  # Need PAR::Dist
  if ( not eval { require PAR::Dist; PAR::Dist->VERSION(0.17) } ) {
    $self->log_warn(
      "In order to create .par distributions, you need to\n"
      . "install PAR::Dist first."
    );
    return();
  }

  $self->depends_on( 'build' );

  return PAR::Dist::blib_to_par(
    name => $self->dist_name,
    version => $self->dist_version,
  );
}

sub ACTION_dist {
  my ($self) = @_;

  # MUST dispatch() and not depends_ok() so we generate a clean distdir
  $self->dispatch('distdir');

  my $dist_dir = $self->dist_dir;

  $self->make_tarball($dist_dir);
  $self->delete_filetree($dist_dir);
}

sub ACTION_distcheck {
  my ($self) = @_;

  $self->_check_manifest_skip unless $self->invoked_action eq 'distclean';

  require ExtUtils::Manifest;
  local $^W; # ExtUtils::Manifest is not warnings clean.
  my ($missing, $extra) = ExtUtils::Manifest::fullcheck();

  return unless @$missing || @$extra;

  my $msg = "MANIFEST appears to be out of sync with the distribution\n";
  if ( $self->invoked_action eq 'distcheck' ) {
    die $msg;
  } else {
    warn $msg;
  }
}

sub _check_mymeta_skip {
  my $self = shift;
  my $maniskip = shift || 'MANIFEST.SKIP';

  require ExtUtils::Manifest;
  local $^W; # ExtUtils::Manifest is not warnings clean.

  # older ExtUtils::Manifest had a private _maniskip
  my $skip_factory = ExtUtils::Manifest->can('maniskip')
                  || ExtUtils::Manifest->can('_maniskip');

  my $mymetafile = $self->mymetafile;
  # we can't check it, just add it anyway to be safe
  for my $file ( $self->mymetafile, $self->mymetafile2 ) {
    unless ( $skip_factory && $skip_factory->($maniskip)->($file) ) {
      $self->log_warn("File '$maniskip' does not include '$file'. Adding it now.\n");
      my $safe = quotemeta($file);
      $self->_append_maniskip("^$safe\$", $maniskip);
    }
  }
}

sub _add_to_manifest {
  my ($self, $manifest, $lines) = @_;
  $lines = [$lines] unless ref $lines;

  my $existing_files = $self->_read_manifest($manifest);
  return unless defined( $existing_files );

  @$lines = grep {!exists $existing_files->{$_}} @$lines
    or return;

  my $mode = (stat $manifest)[2];
  chmod($mode | oct(222), $manifest) or die "Can't make $manifest writable: $!";

  open(my $fh, '<', $manifest) or die "Can't read $manifest: $!";
  my $last_line = (<$fh>)[-1] || "\n";
  my $has_newline = $last_line =~ /\n$/;
  close $fh;

  open($fh, '>>', $manifest) or die "Can't write to $manifest: $!";
  print $fh "\n" unless $has_newline;
  print $fh map "$_\n", @$lines;
  close $fh;
  chmod($mode, $manifest);

  $self->log_verbose(map "Added to $manifest: $_\n", @$lines);
}

sub _sign_dir {
  my ($self, $dir) = @_;

  unless (eval { require Module::Signature; 1 }) {
    $self->log_warn("Couldn't load Module::Signature for 'distsign' action:\n $@\n");
    return;
  }

  # Add SIGNATURE to the MANIFEST
  {
    my $manifest = File::Spec->catfile($dir, 'MANIFEST');
    die "Signing a distribution requires a MANIFEST file" unless -e $manifest;
    $self->_add_to_manifest($manifest, "SIGNATURE    Added here by Module::Build");
  }

  # Would be nice if Module::Signature took a directory argument.

  $self->_do_in_dir($dir, sub {local $Module::Signature::Quiet = 1; Module::Signature::sign()});
}

sub _do_in_dir {
  my ($self, $dir, $do) = @_;

  my $start_dir = File::Spec->rel2abs($self->cwd);
  chdir $dir or die "Can't chdir() to $dir: $!";
  eval {$do->()};
  my @err = $@ ? ($@) : ();
  chdir $start_dir or push @err, "Can't chdir() back to $start_dir: $!";
  die join "\n", @err if @err;
}

sub ACTION_distsign {
  my ($self) = @_;
  {
    local $self->{properties}{sign} = 0;  # We'll sign it ourselves
    $self->depends_on('distdir') unless -d $self->dist_dir;
  }
  $self->_sign_dir($self->dist_dir);
}

sub ACTION_skipcheck {
  my ($self) = @_;

  require ExtUtils::Manifest;
  local $^W; # ExtUtils::Manifest is not warnings clean.
  ExtUtils::Manifest::skipcheck();
}

sub ACTION_distclean {
  my ($self) = @_;

  $self->depends_on('realclean');
  $self->depends_on('distcheck');
}

sub do_create_makefile_pl {
  my $self = shift;
  require Module::Build::Compat;
  $self->log_info("Creating Makefile.PL\n");
  eval { Module::Build::Compat->create_makefile_pl($self->create_makefile_pl, $self, @_) };
  if ( $@ ) {
    1 while unlink 'Makefile.PL';
    die "$@\n";
  }
  $self->_add_to_manifest('MANIFEST', 'Makefile.PL');
}

sub do_create_license {
  my $self = shift;
  $self->log_info("Creating LICENSE file\n");

  if (  ! $self->_mb_feature('license_creation') ) {
    $self->_warn_mb_feature_deps('license_creation');
    die "Aborting.\n";
  }

  my $l = $self->license
    or die "Can't create LICENSE file: No license specified\n";

  my $license = $self->_software_license_object
    or die << "HERE";
Can't create LICENSE file: '$l' is not a valid license key
or Software::License subclass;
HERE

  $self->delete_filetree('LICENSE');

  open(my $fh, '>', 'LICENSE')
    or die "Can't write LICENSE file: $!";
  print $fh $license->fulltext;
  close $fh;

  $self->_add_to_manifest('MANIFEST', 'LICENSE');
}

sub do_create_readme {
  my $self = shift;
  $self->delete_filetree('README');

  my $docfile = $self->_main_docfile;
  unless ( $docfile ) {
    $self->log_warn(<<EOF);
Cannot create README: can't determine which file contains documentation;
Must supply either 'dist_version_from', or 'module_name' parameter.
EOF
    return;
  }

  # work around some odd Pod::Readme->new() failures in test reports by
  # confirming that new() is available
  if ( eval {require Pod::Readme; Pod::Readme->can('new') } ) {
    $self->log_info("Creating README using Pod::Readme\n");

    my $parser = Pod::Readme->new;
    $parser->parse_from_file($docfile, 'README', @_);

  } elsif ( eval {require Pod::Text; 1} ) {
    $self->log_info("Creating README using Pod::Text\n");

    if ( open(my $fh, '>', 'README') ) {
      local $^W = 0;
      no strict "refs";

      # work around bug in Pod::Text 3.01, which expects
      # Pod::Simple::parse_file to take input and output filehandles
      # when it actually only takes an input filehandle

      my $old_parse_file;
      $old_parse_file = \&{"Pod::Simple::parse_file"}
        and
      local *{"Pod::Simple::parse_file"} = sub {
        my $self = shift;
        $self->output_fh($_[1]) if $_[1];
        $self->$old_parse_file($_[0]);
      }
        if $Pod::Text::VERSION
          == 3.01; # Split line to avoid evil version-finder

      Pod::Text::pod2text( $docfile, $fh );

      close $fh;
    } else {
      $self->log_warn(
        "Cannot create 'README' file: Can't open file for writing\n" );
      return;
    }

  } else {
    $self->log_warn("Can't load Pod::Readme or Pod::Text to create README\n");
    return;
  }

  $self->_add_to_manifest('MANIFEST', 'README');
}

sub _main_docfile {
  my $self = shift;
  if ( my $pm_file = $self->dist_version_from ) {
    (my $pod_file = $pm_file) =~ s/.pm$/.pod/;
    return (-e $pod_file ? $pod_file : $pm_file);
  } else {
    return undef;
  }
}

sub do_create_bundle_inc {
  my $self = shift;
  my $dist_inc = File::Spec->catdir( $self->dist_dir, 'inc' );
  require inc::latest;
  inc::latest->write($dist_inc, @{$self->bundle_inc_preload});
  inc::latest->bundle_module($_, $dist_inc) for @{$self->bundle_inc};
  return 1;
}

sub ACTION_distdir {
  my ($self) = @_;

  if ( @{$self->bundle_inc} && ! $self->_mb_feature('inc_bundling_support') ) {
    $self->_warn_mb_feature_deps('inc_bundling_support');
    die "Aborting.\n";
  }

  $self->depends_on('distmeta');

  my $dist_files = $self->_read_manifest('MANIFEST')
    or die "Can't create distdir without a MANIFEST file - run 'manifest' action first.\n";
  delete $dist_files->{SIGNATURE};  # Don't copy, create a fresh one
  die "No files found in MANIFEST - try running 'manifest' action?\n"
    unless ($dist_files and keys %$dist_files);
  my $metafile = $self->metafile;
  $self->log_warn("*** Did you forget to add $metafile to the MANIFEST?\n")
    unless exists $dist_files->{$metafile};

  my $dist_dir = $self->dist_dir;
  $self->delete_filetree($dist_dir);
  $self->log_info("Creating $dist_dir\n");
  $self->add_to_cleanup($dist_dir);

  foreach my $file (sort keys %$dist_files) {
    next if $file =~ m{^MYMETA\.}; # Double check that we skip MYMETA.*
    my $new = $self->copy_if_modified(from => $file, to_dir => $dist_dir, verbose => 0);
  }

  $self->do_create_bundle_inc if @{$self->bundle_inc};

  $self->_sign_dir($dist_dir) if $self->{properties}{sign};
}

sub ACTION_disttest {
  my ($self) = @_;

  $self->depends_on('distdir');

  $self->_do_in_dir
    ( $self->dist_dir,
      sub {
        local $ENV{AUTHOR_TESTING}  = 1;
        local $ENV{RELEASE_TESTING} = 1;

        # XXX could be different names for scripts

        $self->run_perl_script('Build.PL') # XXX Should this be run w/ --nouse-rcfile
          or die "Error executing 'Build.PL' in dist directory: $!";
        $self->run_perl_script($self->build_script)
          or die "Error executing $self->build_script in dist directory: $!";
        $self->run_perl_script($self->build_script, [], ['test'])
          or die "Error executing 'Build test' in dist directory";
      });
}

sub ACTION_distinstall {
  my ($self, @args) = @_;

  $self->depends_on('distdir');

  $self->_do_in_dir ( $self->dist_dir,
    sub {
      $self->run_perl_script('Build.PL')
        or die "Error executing 'Build.PL' in dist directory: $!";
      $self->run_perl_script($self->build_script)
        or die "Error executing $self->build_script in dist directory: $!";
      $self->run_perl_script($self->build_script, [], ['install'])
        or die "Error executing 'Build install' in dist directory";
    }
  );
}

=begin private

  my $has_include = $build->_eumanifest_has_include;

Returns true if the installed version of ExtUtils::Manifest supports
#include and #include_default directives.  False otherwise.

=end private

=cut

# #!include and #!include_default were added in 1.50
sub _eumanifest_has_include {
    my $self = shift;

    require ExtUtils::Manifest;
    return eval { ExtUtils::Manifest->VERSION(1.50); 1 };
}


=begin private

  my $maniskip_file = $build->_default_maniskip;

Returns the location of the installed MANIFEST.SKIP file used by
default.

=end private

=cut

sub _default_maniskip {
    my $self = shift;

    my $default_maniskip;
    for my $dir (@INC) {
        $default_maniskip = File::Spec->catfile($dir, "ExtUtils", "MANIFEST.SKIP");
        last if -r $default_maniskip;
    }

    return $default_maniskip;
}


=begin private

  my $content = $build->_slurp($file);

Reads $file and returns the $content.

=end private

=cut

sub _slurp {
    my $self = shift;
    my $file = shift;
    my $mode = shift || "";
    open my $fh, "<$mode", $file or croak "Can't open $file for reading: $!";
    local $/;
    return <$fh>;
}

sub _spew {
    my $self = shift;
    my $file = shift;
    my $content = shift || "";
    my $mode = shift || "";
    open my $fh, ">$mode", $file or croak "Can't open $file for writing: $!";
    print {$fh} $content;
    close $fh;
}

sub _case_tolerant {
  my $self = shift;
  if ( ref $self ) {
    $self->{_case_tolerant} = File::Spec->case_tolerant
      unless defined($self->{_case_tolerant});
    return $self->{_case_tolerant};
  }
  else {
    return File::Spec->case_tolerant;
  }
}

sub _append_maniskip {
  my $self = shift;
  my $skip = shift;
  my $file = shift || 'MANIFEST.SKIP';
  return unless defined $skip && length $skip;
  open(my $fh, '>>', $file)
    or die "Can't open $file: $!";

  print $fh "$skip\n";
  close $fh;
}

sub _write_default_maniskip {
  my $self = shift;
  my $file = shift || 'MANIFEST.SKIP';
  open(my $fh, '>', $file)
    or die "Can't open $file: $!";

  my $content = $self->_eumanifest_has_include ? "#!include_default\n"
                                               : $self->_slurp( $self->_default_maniskip );

  $content .= <<'EOF';
# Avoid configuration metadata file
^MYMETA\.

# Avoid Module::Build generated and utility files.
\bBuild$
\bBuild.bat$
\b_build
\bBuild.COM$
\bBUILD.COM$
\bbuild.com$
^MANIFEST\.SKIP

# Avoid archives of this distribution
EOF

  # Skip, for example, 'Module-Build-0.27.tar.gz'
  $content .= '\b'.$self->dist_name.'-[\d\.\_]+'."\n";

  print $fh $content;
  
  close $fh;

  return;
}

sub _check_manifest_skip {
  my ($self) = @_;

  my $maniskip = 'MANIFEST.SKIP';

  if ( ! -e $maniskip ) {
    $self->log_warn("File '$maniskip' does not exist: Creating a temporary '$maniskip'\n");
    $self->_write_default_maniskip($maniskip);
    $self->_unlink_on_exit($maniskip);
  }
  else {
    # MYMETA must not be added to MANIFEST, so always confirm the skip
    $self->_check_mymeta_skip( $maniskip );
  }

  return;
}

sub ACTION_manifest {
  my ($self) = @_;

  $self->_check_manifest_skip;

  require ExtUtils::Manifest;  # ExtUtils::Manifest is not warnings clean.
  local ($^W, $ExtUtils::Manifest::Quiet) = (0,1);
  ExtUtils::Manifest::mkmanifest();
}

sub ACTION_manifest_skip {
  my ($self) = @_;

  if ( -e 'MANIFEST.SKIP' ) {
    $self->log_warn("MANIFEST.SKIP already exists.\n");
    return 0;
  }
  $self->log_info("Creating a new MANIFEST.SKIP file\n");
  return $self->_write_default_maniskip;
  return -e 'MANIFEST.SKIP'
}

# Case insensitive regex for files
sub file_qr {
    return shift->{_case_tolerant} ? qr($_[0])i : qr($_[0]);
}

sub dist_dir {
  my ($self) = @_;
  my $dir = join "-", $self->dist_name, $self->dist_version;
  $dir .= "-" . $self->dist_suffix if $self->dist_suffix;
  return $dir;
}

sub ppm_name {
  my $self = shift;
  return 'PPM-' . $self->dist_dir;
}

sub _files_in {
  my ($self, $dir) = @_;
  return unless -d $dir;

  local *DH;
  opendir DH, $dir or die "Can't read directory $dir: $!";

  my @files;
  while (defined (my $file = readdir DH)) {
    my $full_path = File::Spec->catfile($dir, $file);
    next if -d $full_path;
    push @files, $full_path;
  }
  return @files;
}

sub share_dir {
  my $self = shift;
  my $p = $self->{properties};

  $p->{share_dir} = shift if @_;

  # Always coerce to proper hash form
  if    ( ! defined $p->{share_dir} ) {
    return;
  }
  elsif ( ! ref $p->{share_dir}  ) {
    # scalar -- treat as a single 'dist' directory
    $p->{share_dir} = { dist => [ $p->{share_dir} ] };
  }
  elsif ( ref $p->{share_dir} eq 'ARRAY' ) {
    # array -- treat as a list of 'dist' directories
    $p->{share_dir} = { dist => $p->{share_dir} };
  }
  elsif ( ref $p->{share_dir} eq 'HASH' ) {
    # hash -- check structure
    my $share_dir = $p->{share_dir};
    # check dist key
    if ( defined $share_dir->{dist} ) {
      if ( ! ref $share_dir->{dist} ) {
        # scalar, so upgrade to arrayref
        $share_dir->{dist} = [ $share_dir->{dist} ];
      }
      elsif ( ref $share_dir->{dist} ne 'ARRAY' ) {
        die "'dist' key in 'share_dir' must be scalar or arrayref";
      }
    }
    # check module key
    if ( defined $share_dir->{module} ) {
      my $mod_hash = $share_dir->{module};
      if ( ref $mod_hash eq 'HASH' ) {
        for my $k ( sort keys %$mod_hash ) {
          if ( ! ref $mod_hash->{$k} ) {
            $mod_hash->{$k} = [ $mod_hash->{$k} ];
          }
          elsif( ref $mod_hash->{$k} ne 'ARRAY' ) {
            die "modules in 'module' key of 'share_dir' must be scalar or arrayref";
          }
        }
      }
      else {
          die "'module' key in 'share_dir' must be hashref";
      }
    }
  }
  else {
    die "'share_dir' must be hashref, arrayref or string";
  }

  return $p->{share_dir};
}

sub script_files {
  my $self = shift;

  for ($self->{properties}{script_files}) {
    $_ = shift if @_;
    next unless $_;

    # Always coerce into a hash
    return $_ if ref $_ eq 'HASH';
    return $_ = { map {$_,1} @$_ } if ref $_ eq 'ARRAY';

    die "'script_files' must be a hashref, arrayref, or string" if ref();

    return $_ = { map {$_,1} $self->_files_in( $_ ) } if -d $_;
    return $_ = {$_ => 1};
  }

  my %pl_files = map {
    File::Spec->canonpath( $_ ) => 1
  } keys %{ $self->PL_files || {} };

  my @bin_files = $self->_files_in('bin');

  my %bin_map = map {
    $_ => File::Spec->canonpath( $_ )
  } @bin_files;

  return $_ = { map {$_ => 1} grep !$pl_files{$bin_map{$_}}, @bin_files };
}
BEGIN { *scripts = \&script_files; }

{
  my %licenses = (
    perl         => 'Perl_5',
    apache       => 'Apache_2_0',
    apache_1_1   => 'Apache_1_1',
    artistic     => 'Artistic_1',
    artistic_2   => 'Artistic_2',
    lgpl         => 'LGPL_2_1',
    lgpl2        => 'LGPL_2_1',
    lgpl3        => 'LGPL_3_0',
    bsd          => 'BSD',
    gpl          => 'GPL_1',
    gpl2         => 'GPL_2',
    gpl3         => 'GPL_3',
    mit          => 'MIT',
    mozilla      => 'Mozilla_1_1',
    restrictive  => 'Restricted',
    open_source  => undef,
    unrestricted => undef,
    unknown      => undef,
  );

  # TODO - would be nice to not have these here, since they're more
  # properly stored only in Software::License
  my %license_urls = (
    perl         => 'http://dev.perl.org/licenses/',
    apache       => 'http://apache.org/licenses/LICENSE-2.0',
    apache_1_1   => 'http://apache.org/licenses/LICENSE-1.1',
    artistic     => 'http://opensource.org/licenses/artistic-license.php',
    artistic_2   => 'http://opensource.org/licenses/artistic-license-2.0.php',
    lgpl         => 'http://opensource.org/licenses/lgpl-license.php',
    lgpl2        => 'http://opensource.org/licenses/lgpl-2.1.php',
    lgpl3        => 'http://opensource.org/licenses/lgpl-3.0.html',
    bsd          => 'http://opensource.org/licenses/bsd-license.php',
    gpl          => 'http://opensource.org/licenses/gpl-license.php',
    gpl2         => 'http://opensource.org/licenses/gpl-2.0.php',
    gpl3         => 'http://opensource.org/licenses/gpl-3.0.html',
    mit          => 'http://opensource.org/licenses/mit-license.php',
    mozilla      => 'http://opensource.org/licenses/mozilla1.1.php',
    restrictive  => undef,
    open_source  => undef,
    unrestricted => undef,
    unknown      => undef,
  );
  sub valid_licenses {
    return \%licenses;
  }
  sub _license_url {
    return $license_urls{$_[1]};
  }
}

sub _software_license_class {
  my ($self, $license) = @_;
  if ($self->valid_licenses->{$license} && eval { require Software::LicenseUtils; Software::LicenseUtils->VERSION(0.103009) }) {
    my @classes = Software::LicenseUtils->guess_license_from_meta_key($license, 1);
    if (@classes == 1) {
      eval "require $classes[0]";
      return $classes[0];
    }
  }
  LICENSE: for my $l ( $self->valid_licenses->{ $license }, $license ) {
    next unless defined $l;
    my $trial = "Software::License::" . $l;
    if ( eval "require Software::License; Software::License->VERSION(0.014); require $trial; 1" ) {
      return $trial;
    }
  }
  return;
}

# use mapping or license name directly
sub _software_license_object {
  my ($self) = @_;
  return unless defined( my $license = $self->license );

  my $class = $self->_software_license_class($license) or return;

  # Software::License requires a 'holder' argument
  my $author = join( " & ", @{ $self->dist_author }) || 'unknown';
  my $sl = eval { $class->new({holder=>$author}) };
  if ( $@ ) {
    $self->log_warn( "Error getting '$class' object: $@" );
  }

  return $sl;
}

sub _hash_merge {
  my ($self, $h, $k, $v) = @_;
  if (ref $h->{$k} eq 'ARRAY') {
    push @{$h->{$k}}, ref $v ? @$v : $v;
  } elsif (ref $h->{$k} eq 'HASH') {
    $h->{$k}{$_} = $v->{$_} foreach keys %$v;
  } else {
    $h->{$k} = $v;
  }
}

sub ACTION_distmeta {
  my ($self) = @_;
  $self->do_create_makefile_pl if $self->create_makefile_pl;
  $self->do_create_readme if $self->create_readme;
  $self->do_create_license if $self->create_license;
  $self->do_create_metafile;
}

sub do_create_metafile {
  my $self = shift;
  return if $self->{wrote_metadata};

  my $p = $self->{properties};

  unless ($p->{license}) {
    $self->log_warn("No license specified, setting license = 'unknown'\n");
    $p->{license} = 'unknown';
  }

  my @metafiles = ( $self->metafile, $self->metafile2 );
  # If we're in the distdir, the metafile may exist and be non-writable.
  $self->delete_filetree($_) for @metafiles;

  # Since we're building ourself, we have to do some special stuff
  # here: the ConfigData module is found in blib/lib.
  local @INC = @INC;
  if (($self->module_name || '') eq 'Module::Build') {
    $self->depends_on('config_data');
    push @INC, File::Spec->catdir($self->blib, 'lib');
  }

  my $meta_obj = $self->_get_meta_object(
    quiet => 1, fatal => 1, auto => 1
  );
  my @created = $self->_write_meta_files( $meta_obj, 'META' );
  if ( @created ) {
    $self->{wrote_metadata} = 1;
    $self->_add_to_manifest('MANIFEST', $_) for @created;
  }
  return 1;
}

sub _write_meta_files {
  my $self = shift;
  my ($meta, $file) = @_;
  $file =~ s{\.(?:yml|json)$}{};

  my @created;
  push @created, "$file\.yml"
    if $meta && $meta->save( "$file\.yml", {version => "1.4"} );
  push @created, "$file\.json"
    if $meta && $meta->save( "$file\.json" );

  if ( @created ) {
    $self->log_info("Created " . join(" and ", @created) . "\n");
  }
  return @created;
}

sub _get_meta_object {
  my $self = shift;
  my %args = @_;
  return unless $self->try_require("CPAN::Meta", "2.142060");

  my $meta;
  eval {
    my $data = $self->get_metadata(
      fatal => $args{fatal},
      auto => $args{auto},
    );
    $data->{dynamic_config} = $args{dynamic} if defined $args{dynamic};
    $meta = CPAN::Meta->create($data);
  };
  if ($@ && ! $args{quiet}) {
    $self->log_warn(
      "Could not get valid metadata. Error is: $@\n"
    );
  }

  return $meta;
}

sub read_metafile {
  my $self = shift;
  my ($metafile) = @_;

  return unless $self->try_require("CPAN::Meta", "2.110420");
  my $meta = CPAN::Meta->load_file($metafile);
  return $meta->as_struct( {version => "2.0"} );
}

sub normalize_version {
  my ($self, $version) = @_;
  $version = 0 unless defined $version and length $version;

  if ( $version =~ /[=<>!,]/ ) { # logic, not just version
    # take as is without modification
  }
  elsif ( ref $version eq 'version') { # version objects
    $version = $version->is_qv ? $version->normal : $version->stringify;
  }
  elsif ( $version =~ /^[^v][^.]*\.[^.]+\./ ) { # no leading v, multiple dots
    # normalize string tuples without "v": "1.2.3" -> "v1.2.3"
    $version = "v$version";
  }
  else {
    # leave alone
  }
  return $version;
}

my %prereq_map = (
  requires => [ qw/runtime requires/],
  configure_requires => [qw/configure requires/],
  build_requires => [ qw/build requires/ ],
  test_requires => [ qw/test requires/ ],
  test_recommends => [ qw/test recommends/ ],
  recommends => [ qw/runtime recommends/ ],
  conflicts => [ qw/runtime conflicts/ ],
);

sub _normalize_prereqs {
  my ($self) = @_;
  my $p = $self->{properties};

  # copy prereq data structures so we can modify them before writing to META
  my %prereq_types;
  for my $type ( 'configure_requires', @{$self->prereq_action_types} ) {
    if (exists $p->{$type} and keys %{ $p->{$type} }) {
      my ($phase, $relation) = @{ $prereq_map{$type} };
      for my $mod ( keys %{ $p->{$type} } ) {
        $prereq_types{$phase}{$relation}{$mod} = $self->normalize_version($p->{$type}{$mod});
      }
    }
  }
  return \%prereq_types;
}

sub _get_license {
  my $self = shift;

  my $license = $self->license;
  my ($meta_license, $meta_license_url);

  my $valid_licenses = $self->valid_licenses();
  if ( my $sl = $self->_software_license_object ) {
    $meta_license = $sl->meta2_name;
    $meta_license_url = $sl->url;
  }
  elsif ( exists $valid_licenses->{$license} ) {
    $meta_license = $valid_licenses->{$license} ? lc $valid_licenses->{$license} : $license;
    $meta_license_url = $self->_license_url( $license );
  }
  else {
    $self->log_warn( "Can not determine license type for '" . $self->license
      . "'\nSetting META license field to 'unknown'.\n");
    $meta_license = 'unknown';
  }
  return ($meta_license, $meta_license_url);
}

sub get_metadata {
  my ($self, %args) = @_;

  my $fatal = $args{fatal} || 0;
  my $p = $self->{properties};

  $self->auto_config_requires if $args{auto};

  # validate required fields
  foreach my $f (qw(dist_name dist_version dist_author dist_abstract license)) {
    my $field = $self->$f();
    unless ( defined $field and length $field ) {
      my $err = "ERROR: Missing required field '$f' for metafile\n";
      if ( $fatal ) {
        die $err;
      }
      else {
        $self->log_warn($err);
      }
    }
  }

  my %metadata = (
    name => $self->dist_name,
    version => $self->normalize_version($self->dist_version),
    author => $self->dist_author,
    abstract => $self->dist_abstract,
    generated_by => "Module::Build version $Module::Build::VERSION",
    'meta-spec' => {
      version => '2',
      url     => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec',
    },
    dynamic_config => exists $p->{dynamic_config} ? $p->{dynamic_config} : 1,
    release_status => $self->release_status,
  );

  my ($meta_license, $meta_license_url) = $self->_get_license;
  $metadata{license} = [ $meta_license ];
  $metadata{resources}{license} = [ $meta_license_url ] if defined $meta_license_url;

  $metadata{prereqs} = $self->_normalize_prereqs;

  if (exists $p->{no_index}) {
    $metadata{no_index} = $p->{no_index};
  } elsif (my $pkgs = eval { $self->find_dist_packages }) {
    $metadata{provides} = $pkgs if %$pkgs;
  } else {
    $self->log_warn("$@\nWARNING: Possible missing or corrupt 'MANIFEST' file.\n" .
                    "Nothing to enter for 'provides' field in metafile.\n");
  }

  if (my $add = $self->meta_add) {
    if (not exists $add->{'meta-spec'} or $add->{'meta-spec'}{version} != 2) {
      require CPAN::Meta::Converter;
      if (CPAN::Meta::Converter->VERSION('2.141170')) {
        $add = CPAN::Meta::Converter->new($add)->upgrade_fragment;
        delete $add->{prereqs}; # XXX this would now overwrite all prereqs
      }
      else {
        $self->log_warn("Can't meta_add without CPAN::Meta 2.141170");
      }
    }

    while (my($k, $v) = each %{$add}) {
      $metadata{$k} = $v;
    }
  }

  if (my $merge = $self->meta_merge) {
    if (eval { require CPAN::Meta::Merge }) {
      %metadata = %{ CPAN::Meta::Merge->new(default_version => '1.4')->merge(\%metadata, $merge) };
    }
    else {
      $self->log_warn("Can't merge without CPAN::Meta::Merge");
    }
  }

  return \%metadata;
}

# To preserve compatibility with old API, $node *must* be a hashref
# passed in to prepare_metadata.  $keys is an arrayref holding a
# list of keys -- it's use is optional and generally no longer needed
# but kept for back compatibility.  $args is an optional parameter to
# support the new 'fatal' toggle

sub prepare_metadata {
  my ($self, $node, $keys, $args) = @_;
  unless ( ref $node eq 'HASH' ) {
    croak "prepare_metadata() requires a hashref argument to hold output\n";
  }
  croak 'Keys argument to prepare_metadata is no longer supported' if $keys;
  %{$node} = %{ $self->get_meta(%{$args}) };
  return $node;
}

sub _read_manifest {
  my ($self, $file) = @_;
  return undef unless -e $file;

  require ExtUtils::Manifest;  # ExtUtils::Manifest is not warnings clean.
  local ($^W, $ExtUtils::Manifest::Quiet) = (0,1);
  return scalar ExtUtils::Manifest::maniread($file);
}

sub find_dist_packages {
  my $self = shift;

  # Only packages in .pm files are candidates for inclusion here.
  # Only include things in the MANIFEST, not things in developer's
  # private stock.

  my $manifest = $self->_read_manifest('MANIFEST')
    or die "Can't find dist packages without a MANIFEST file\nRun 'Build manifest' to generate one\n";

  # Localize
  my %dist_files = map { $self->localize_file_path($_) => $_ }
                       keys %$manifest;

  my @pm_files = sort grep { $_ !~ m{^t} } # skip things in t/
                   grep {exists $dist_files{$_}}
                     keys %{ $self->find_pm_files };

  return $self->find_packages_in_files(\@pm_files, \%dist_files);
}

# XXX Do not document this function; mst wrote it and now says the API is
# stupid and needs to be fixed and it shouldn't become a public API until then
sub find_packages_in_files {
  my ($self, $file_list, $filename_map) = @_;

  # First, we enumerate all packages & versions,
  # separating into primary & alternative candidates
  my( %prime, %alt );
  foreach my $file (@{$file_list}) {
    my $mapped_filename = $filename_map->{$file};
    my @path = split( /\//, $mapped_filename );
    (my $prime_package = join( '::', @path[1..$#path] )) =~ s/\.pm$//;

    my $pm_info = Module::Metadata->new_from_file( $file );

    foreach my $package ( $pm_info->packages_inside ) {
      next if $package eq 'main';  # main can appear numerous times, ignore
      next if $package eq 'DB';    # special debugging package, ignore
      next if grep /^_/, split( /::/, $package ); # private package, ignore

      my $version = $pm_info->version( $package );

      if ( $package eq $prime_package ) {
        if ( exists( $prime{$package} ) ) {
          # Module::Metadata will handle this conflict
          die "Unexpected conflict in '$package'; multiple versions found.\n";
        } else {
          $prime{$package}{file} = $mapped_filename;
          $prime{$package}{version} = $version if defined( $version );
        }
      } else {
        push( @{$alt{$package}}, {
                                  file    => $mapped_filename,
                                  version => $version,
                                 } );
      }
    }
  }

  # Then we iterate over all the packages found above, identifying conflicts
  # and selecting the "best" candidate for recording the file & version
  # for each package.
  foreach my $package ( sort keys( %alt ) ) {
    my $result = $self->_resolve_module_versions( $alt{$package} );

    if ( exists( $prime{$package} ) ) { # primary package selected

      if ( $result->{err} ) {
        # Use the selected primary package, but there are conflicting
        # errors among multiple alternative packages that need to be
        # reported
        $self->log_warn(
          "Found conflicting versions for package '$package'\n" .
          "  $prime{$package}{file} ($prime{$package}{version})\n" .
          $result->{err}
        );

      } elsif ( defined( $result->{version} ) ) {
        # There is a primary package selected, and exactly one
        # alternative package

        if ( exists( $prime{$package}{version} ) &&
             defined( $prime{$package}{version} ) ) {
          # Unless the version of the primary package agrees with the
          # version of the alternative package, report a conflict
          if ( $self->compare_versions( $prime{$package}{version}, '!=',
                                        $result->{version} ) ) {
            $self->log_warn(
              "Found conflicting versions for package '$package'\n" .
              "  $prime{$package}{file} ($prime{$package}{version})\n" .
              "  $result->{file} ($result->{version})\n"
            );
          }

        } else {
          # The prime package selected has no version so, we choose to
          # use any alternative package that does have a version
          $prime{$package}{file}    = $result->{file};
          $prime{$package}{version} = $result->{version};
        }

      } else {
        # no alt package found with a version, but we have a prime
        # package so we use it whether it has a version or not
      }

    } else { # No primary package was selected, use the best alternative

      if ( $result->{err} ) {
        $self->log_warn(
          "Found conflicting versions for package '$package'\n" .
          $result->{err}
        );
      }

      # Despite possible conflicting versions, we choose to record
      # something rather than nothing
      $prime{$package}{file}    = $result->{file};
      $prime{$package}{version} = $result->{version}
          if defined( $result->{version} );
    }
  }

  # Normalize versions or delete them if undef/0
  for my $provides ( values %prime ) {
    if ( $provides->{version} ) {
      $provides->{version} = $self->normalize_version( $provides->{version} )
    }
    else {
      delete $provides->{version};
    }
  }

  return \%prime;
}

# separate out some of the conflict resolution logic from
# $self->find_dist_packages(), above, into a helper function.
#
sub _resolve_module_versions {
  my $self = shift;

  my $packages = shift;

  my( $file, $version );
  my $err = '';
    foreach my $p ( @$packages ) {
      if ( defined( $p->{version} ) ) {
        if ( defined( $version ) ) {
          if ( $self->compare_versions( $version, '!=', $p->{version} ) ) {
            $err .= "  $p->{file} ($p->{version})\n";
          } else {
            # same version declared multiple times, ignore
          }
        } else {
          $file    = $p->{file};
          $version = $p->{version};
        }
      }
      $file ||= $p->{file} if defined( $p->{file} );
    }

  if ( $err ) {
    $err = "  $file ($version)\n" . $err;
  }

  my %result = (
    file    => $file,
    version => $version,
    err     => $err
  );

  return \%result;
}

sub make_tarball {
  my ($self, $dir, $file) = @_;
  $file ||= $dir;

  $self->log_info("Creating $file.tar.gz\n");

  if ($self->{args}{tar}) {
    my $tar_flags = $self->verbose ? 'cvf' : 'cf';
    $self->do_system($self->split_like_shell($self->{args}{tar}), $tar_flags, "$file.tar", $dir);
    $self->do_system($self->split_like_shell($self->{args}{gzip}), "$file.tar") if $self->{args}{gzip};
  } else {
    eval { require Archive::Tar && Archive::Tar->VERSION(1.09); 1 }
      or die "You must install Archive::Tar 1.09+ to make a distribution tarball\n".
             "or specify a binary tar program with the '--tar' option.\n".
             "See the documentation for the 'dist' action.\n";

    my $files = $self->rscan_dir($dir);

    # Archive::Tar versions >= 1.09 use the following to enable a compatibility
    # hack so that the resulting archive is compatible with older clients.
    # If no file path is 100 chars or longer, we disable the prefix field
    # for maximum compatibility.  If there are any long file paths then we
    # need the prefix field after all.
    $Archive::Tar::DO_NOT_USE_PREFIX =
      (grep { length($_) >= 100 } @$files) ? 0 : 1;

    my $tar   = Archive::Tar->new;
    $tar->add_files(@$files);
    for my $f ($tar->get_files) {
      $f->mode($f->mode & ~022); # chmod go-w
    }
    $tar->write("$file.tar.gz", 1);
  }
}

sub install_path {
  my $self = shift;
  my( $type, $value ) = ( @_, '<empty>' );

  Carp::croak( 'Type argument missing' )
    unless defined( $type );

  my $map = $self->{properties}{install_path};
  return $map unless @_;

  # delete existing value if $value is literal undef()
  unless ( defined( $value ) ) {
    delete( $map->{$type} );
    return undef;
  }

  # return existing value if no new $value is given
  if ( $value eq '<empty>' ) {
    return undef unless exists $map->{$type};
    return $map->{$type};
  }

  # set value if $value is a valid relative path
  return $map->{$type} = $value;
}

sub install_sets {
  # Usage: install_sets('site'), install_sets('site', 'lib'),
  #   or install_sets('site', 'lib' => $value);
  my ($self, $dirs, $key, $value) = @_;
  $dirs = $self->installdirs unless defined $dirs;
  # update property before merging with defaults
  if ( @_ == 4 && defined $dirs && defined $key) {
    # $value can be undef; will mask default
    $self->{properties}{install_sets}{$dirs}{$key} = $value;
  }
  my $map = { $self->_merge_arglist(
    $self->{properties}{install_sets},
    $self->_default_install_paths->{install_sets}
  )};
  if ( defined $dirs && defined $key ) {
    return $map->{$dirs}{$key};
  }
  elsif ( defined $dirs ) {
    return $map->{$dirs};
  }
  else {
    croak "Can't determine installdirs for install_sets()";
  }
}

sub original_prefix {
  # Usage: original_prefix(), original_prefix('lib'),
  #   or original_prefix('lib' => $value);
  my ($self, $key, $value) = @_;
  # update property before merging with defaults
  if ( @_ == 3 && defined $key) {
    # $value can be undef; will mask default
    $self->{properties}{original_prefix}{$key} = $value;
  }
  my $map = { $self->_merge_arglist(
    $self->{properties}{original_prefix},
    $self->_default_install_paths->{original_prefix}
  )};
  return $map unless defined $key;
  return $map->{$key}
}

sub install_base_relpaths {
  # Usage: install_base_relpaths(), install_base_relpaths('lib'),
  #   or install_base_relpaths('lib' => $value);
  my $self = shift;
  if ( @_ > 1 ) { # change values before merge
    $self->_set_relpaths($self->{properties}{install_base_relpaths}, @_);
  }
  my $map = { $self->_merge_arglist(
    $self->{properties}{install_base_relpaths},
    $self->_default_install_paths->{install_base_relpaths}
  )};
  return $map unless @_;
  my $relpath = $map->{$_[0]};
  return defined $relpath ? File::Spec->catdir( @$relpath ) : undef;
}

# Defaults to use in case the config install paths cannot be prefixified.
sub prefix_relpaths {
  # Usage: prefix_relpaths('site'), prefix_relpaths('site', 'lib'),
  #   or prefix_relpaths('site', 'lib' => $value);
  my $self = shift;
  my $installdirs = shift || $self->installdirs
    or croak "Can't determine installdirs for prefix_relpaths()";
  if ( @_ > 1 ) { # change values before merge
    $self->{properties}{prefix_relpaths}{$installdirs} ||= {};
    $self->_set_relpaths($self->{properties}{prefix_relpaths}{$installdirs}, @_);
  }
  my $map = {$self->_merge_arglist(
    $self->{properties}{prefix_relpaths}{$installdirs},
    $self->_default_install_paths->{prefix_relpaths}{$installdirs}
  )};
  return $map unless @_;
  my $relpath = $map->{$_[0]};
  return defined $relpath ? File::Spec->catdir( @$relpath ) : undef;
}

sub _set_relpaths {
  my $self = shift;
  my( $map, $type, $value ) = @_;

  Carp::croak( 'Type argument missing' )
    unless defined( $type );

  # set undef if $value is literal undef()
  if ( ! defined( $value ) ) {
    $map->{$type} = undef;
    return;
  }
  # set value if $value is a valid relative path
  else {
    Carp::croak( "Value must be a relative path" )
      if File::Spec::Unix->file_name_is_absolute($value);

    my @value = split( /\//, $value );
    $map->{$type} = \@value;
  }
}

# Translated from ExtUtils::MM_Any::init_INSTALL_from_PREFIX
sub prefix_relative {
  my ($self, $type) = @_;
  my $installdirs = $self->installdirs;

  my $relpath = $self->install_sets($installdirs)->{$type};

  return $self->_prefixify($relpath,
                           $self->original_prefix($installdirs),
                           $type,
                          );
}

# Translated from ExtUtils::MM_Unix::prefixify()
sub _prefixify {
  my($self, $path, $sprefix, $type) = @_;

  my $rprefix = $self->prefix;
  $rprefix .= '/' if $sprefix =~ m|/$|;

  $self->log_verbose("  prefixify $path from $sprefix to $rprefix\n")
    if defined( $path ) && length( $path );

  if( !defined( $path ) || ( length( $path ) == 0 ) ) {
    $self->log_verbose("  no path to prefixify, falling back to default.\n");
    return $self->_prefixify_default( $type, $rprefix );
  } elsif( !File::Spec->file_name_is_absolute($path) ) {
    $self->log_verbose("    path is relative, not prefixifying.\n");
  } elsif( $path !~ s{^\Q$sprefix\E\b}{}s ) {
    $self->log_verbose("    cannot prefixify, falling back to default.\n");
    return $self->_prefixify_default( $type, $rprefix );
  }

  $self->log_verbose("    now $path in $rprefix\n");

  return $path;
}

sub _prefixify_default {
  my $self = shift;
  my $type = shift;
  my $rprefix = shift;

  my $default = $self->prefix_relpaths($self->installdirs, $type);
  if( !$default ) {
    $self->log_verbose("    no default install location for type '$type', using prefix '$rprefix'.\n");
    return $rprefix;
  } else {
    return $default;
  }
}

sub install_destination {
  my ($self, $type) = @_;

  return $self->install_path($type) if $self->install_path($type);

  if ( $self->install_base ) {
    my $relpath = $self->install_base_relpaths($type);
    return $relpath ? File::Spec->catdir($self->install_base, $relpath) : undef;
  }

  if ( $self->prefix ) {
    my $relpath = $self->prefix_relative($type);
    return $relpath ? File::Spec->catdir($self->prefix, $relpath) : undef;
  }

  return $self->install_sets($self->installdirs)->{$type};
}

sub install_types {
  my $self = shift;

  my %types;
  if ( $self->install_base ) {
    %types = %{$self->install_base_relpaths};
  } elsif ( $self->prefix ) {
    %types = %{$self->prefix_relpaths};
  } else {
    %types = %{$self->install_sets($self->installdirs)};
  }

  %types = (%types, %{$self->install_path});

  return sort keys %types;
}

sub install_map {
  my ($self, $blib) = @_;
  $blib ||= $self->blib;

  my( %map, @skipping );
  foreach my $type ($self->install_types) {
    my $localdir = File::Spec->catdir( $blib, $type );
    next unless -e $localdir;

    # the line "...next if (($type eq 'bindoc'..." was one of many changes introduced for
    # improving HTML generation on ActivePerl, see https://rt.cpan.org/Public/Bug/Display.html?id=53478
    # Most changes were ok, but this particular line caused test failures in t/manifypods.t on windows,
    # therefore it is commented out.

    # ********* next if (($type eq 'bindoc' || $type eq 'libdoc') && not $self->is_unixish);

    if (my $dest = $self->install_destination($type)) {
      $map{$localdir} = $dest;
    } else {
      push( @skipping, $type );
    }
  }

  $self->log_warn(
    "WARNING: Can't figure out install path for types: @skipping\n" .
    "Files will not be installed.\n"
  ) if @skipping;

  # Write the packlist into the same place as ExtUtils::MakeMaker.
  if ($self->create_packlist and my $module_name = $self->module_name) {
    my $archdir = $self->install_destination('arch');
    my @ext = split /::/, $module_name;
    $map{write} = File::Spec->catfile($archdir, 'auto', @ext, '.packlist');
  }

  # Handle destdir
  if (length(my $destdir = $self->destdir || '')) {
    foreach (keys %map) {
      # Need to remove volume from $map{$_} using splitpath, or else
      # we'll create something crazy like C:\Foo\Bar\E:\Baz\Quux
      # VMS will always have the file separate than the path.
      my ($volume, $path, $file) = File::Spec->splitpath( $map{$_}, 0 );

      # catdir needs a list of directories, or it will create something
      # crazy like volume:[Foo.Bar.volume.Baz.Quux]
      my @dirs = File::Spec->splitdir($path);

      # First merge the directories
      $path = File::Spec->catdir($destdir, @dirs);

      # Then put the file back on if there is one.
      if ($file ne '') {
          $map{$_} = File::Spec->catfile($path, $file)
      } else {
          $map{$_} = $path;
      }
    }
  }

  $map{read} = '';  # To keep ExtUtils::Install quiet

  return \%map;
}

sub depends_on {
  my $self = shift;
  foreach my $action (@_) {
    $self->_call_action($action);
  }
}

sub rscan_dir {
  my ($self, $dir, $pattern) = @_;
  my @result;
  local $_; # find() can overwrite $_, so protect ourselves
  my $subr = !$pattern ? sub {push @result, $File::Find::name} :
             !ref($pattern) || (ref $pattern eq 'Regexp') ? sub {push @result, $File::Find::name if /$pattern/} :
             ref($pattern) eq 'CODE' ? sub {push @result, $File::Find::name if $pattern->()} :
             die "Unknown pattern type";

  File::Find::find({wanted => $subr, no_chdir => 1, preprocess => sub { sort @_ } }, $dir);
  return \@result;
}

sub delete_filetree {
  my $self = shift;
  my $deleted = 0;
  foreach (@_) {
    next unless -e $_;
    $self->log_verbose("Deleting $_\n");
    File::Path::rmtree($_, 0, 0);
    die "Couldn't remove '$_': $!\n" if -e $_;
    $deleted++;
  }
  return $deleted;
}

sub autosplit_file {
  my ($self, $file, $to) = @_;
  require AutoSplit;
  my $dir = File::Spec->catdir($to, 'lib', 'auto');
  AutoSplit::autosplit($file, $dir);
}

sub cbuilder {
  # Returns a CBuilder object

  my $self = shift;
  my $s = $self->{stash};
  return $s->{_cbuilder} if $s->{_cbuilder};

  require ExtUtils::CBuilder;
  return $s->{_cbuilder} = ExtUtils::CBuilder->new(
    config => $self->config,
    ($self->quiet ? (quiet => 1 ) : ()),
  );
}

sub have_c_compiler {
  my ($self) = @_;

  my $p = $self->{properties};
  return $p->{_have_c_compiler} if defined $p->{_have_c_compiler};

  $self->log_verbose("Checking if compiler tools configured... ");
  my $b = $self->cbuilder;
  my $have = $b && eval { $b->have_compiler };
  $self->log_verbose($have ? "ok.\n" : "failed.\n");
  return $p->{_have_c_compiler} = $have;
}

sub compile_c {
  my ($self, $file, %args) = @_;

  if ( ! $self->have_c_compiler ) {
    die "Error: no compiler detected to compile '$file'.  Aborting\n";
  }

  my $b = $self->cbuilder;
  my $obj_file = $b->object_file($file);
  $self->add_to_cleanup($obj_file);
  return $obj_file if $self->up_to_date($file, $obj_file);

  $b->compile(source => $file,
              defines => $args{defines},
              object_file => $obj_file,
              include_dirs => $self->include_dirs,
              extra_compiler_flags => $self->extra_compiler_flags,
             );

  return $obj_file;
}

sub link_c {
  my ($self, $spec) = @_;
  my $p = $self->{properties}; # For convenience

  $self->add_to_cleanup($spec->{lib_file});

  my $objects = $p->{objects} || [];

  return $spec->{lib_file}
    if $self->up_to_date([$spec->{obj_file}, @$objects],
                         $spec->{lib_file});

  my $module_name = $spec->{module_name} || $self->module_name;

  $self->cbuilder->link(
    module_name => $module_name,
    objects     => [$spec->{obj_file}, @$objects],
    lib_file    => $spec->{lib_file},
    extra_linker_flags => $self->extra_linker_flags );

  return $spec->{lib_file};
}

sub compile_xs {
  my ($self, $file, %args) = @_;

  $self->log_verbose("$file -> $args{outfile}\n");

  if (eval {require ExtUtils::ParseXS; 1}) {

    ExtUtils::ParseXS::process_file(
                                    filename => $file,
                                    prototypes => 0,
                                    output => $args{outfile},
                                   );
  } else {
    # Ok, I give up.  Just use backticks.

    my $xsubpp = Module::Metadata->find_module_by_name('ExtUtils::xsubpp')
      or die "Can't find ExtUtils::xsubpp in INC (@INC)";

    my @typemaps;
    push @typemaps, Module::Metadata->find_module_by_name(
        'ExtUtils::typemap', \@INC
    );
    my $lib_typemap = Module::Metadata->find_module_by_name(
        'typemap', [File::Basename::dirname($file), File::Spec->rel2abs('.')]
    );
    push @typemaps, $lib_typemap if $lib_typemap;
    @typemaps = map {+'-typemap', $_} @typemaps;

    my $cf = $self->{config};
    my $perl = $self->{properties}{perl};

    my @command = ($perl, "-I".$cf->get('installarchlib'), "-I".$cf->get('installprivlib'), $xsubpp, '-noprototypes',
                   @typemaps, $file);

    $self->log_info("@command\n");
    open(my $fh, '>', $args{outfile}) or die "Couldn't write $args{outfile}: $!";
    print {$fh} $self->_backticks(@command);
    close $fh;
  }
}

sub split_like_shell {
  my ($self, $string) = @_;

  return () unless defined($string);
  return @$string if ref $string eq 'ARRAY';
  $string =~ s/^\s+|\s+$//g;
  return () unless length($string);

  return Text::ParseWords::shellwords($string);
}

sub oneliner {
  # Returns a string that the shell can evaluate as a perl command.
  # This should be avoided whenever possible, since "the shell" really
  # means zillions of shells on zillions of platforms and it's really
  # hard to get it right all the time.

  # Some of this code is stolen with permission from ExtUtils::MakeMaker.

  my($self, $cmd, $switches, $args) = @_;
  $switches = [] unless defined $switches;
  $args = [] unless defined $args;

  # Strip leading and trailing newlines
  $cmd =~ s{^\n+}{};
  $cmd =~ s{\n+$}{};

  my $perl = ref($self) ? $self->perl : $self->find_perl_interpreter;
  return $self->_quote_args($perl, @$switches, '-e', $cmd, @$args);
}

sub run_perl_script {
  my ($self, $script, $preargs, $postargs) = @_;
  foreach ($preargs, $postargs) {
    $_ = [ $self->split_like_shell($_) ] unless ref();
  }
  return $self->run_perl_command([@$preargs, $script, @$postargs]);
}

sub run_perl_command {
  # XXX Maybe we should accept @args instead of $args?  Must resolve
  # this before documenting.
  my ($self, $args) = @_;
  $args = [ $self->split_like_shell($args) ] unless ref($args);
  my $perl = ref($self) ? $self->perl : $self->find_perl_interpreter;

  # Make sure our local additions to @INC are propagated to the subprocess
  local $ENV{PERL5LIB} = join $self->config('path_sep'), $self->_added_to_INC;

  return $self->do_system($perl, @$args);
}

# Infer various data from the path of the input filename
# that is needed to create output files.
# The input filename is expected to be of the form:
#   lib/Module/Name.ext or Module/Name.ext
sub _infer_xs_spec {
  my $self = shift;
  my $file = shift;

  my $cf = $self->{config};

  my %spec;

  my( $v, $d, $f ) = File::Spec->splitpath( $file );
  my @d = File::Spec->splitdir( $d );
  (my $file_base = $f) =~ s/\.[^.]+$//i;

  $spec{base_name} = $file_base;

  $spec{src_dir} = File::Spec->catpath( $v, $d, '' );

  # the module name
  shift( @d ) while @d && ($d[0] eq 'lib' || $d[0] eq '');
  pop( @d ) while @d && $d[-1] eq '';
  $spec{module_name} = join( '::', (@d, $file_base) );

  $spec{archdir} = File::Spec->catdir($self->blib, 'arch', 'auto',
                                      @d, $file_base);

  $spec{c_file} = File::Spec->catfile( $spec{src_dir},
                                       "${file_base}.c" );

  $spec{obj_file} = File::Spec->catfile( $spec{src_dir},
                                         "${file_base}".$cf->get('obj_ext') );

  require DynaLoader;
  my $modfname = defined &DynaLoader::mod2fname ? DynaLoader::mod2fname([@d, $file_base]) : $file_base;

  $spec{bs_file} = File::Spec->catfile($spec{archdir}, "$modfname.bs");

  $spec{lib_file} = File::Spec->catfile($spec{archdir}, "$modfname.".$cf->get('dlext'));

  return \%spec;
}

sub process_xs {
  my ($self, $file) = @_;

  my $spec = $self->_infer_xs_spec($file);

  # File name, minus the suffix
  (my $file_base = $file) =~ s/\.[^.]+$//;

  # .xs -> .c
  $self->add_to_cleanup($spec->{c_file});

  unless ($self->up_to_date($file, $spec->{c_file})) {
    $self->compile_xs($file, outfile => $spec->{c_file});
  }

  # .c -> .o
  my $v = $self->dist_version;
  $self->compile_c($spec->{c_file},
                   defines => {VERSION => qq{"$v"}, XS_VERSION => qq{"$v"}});

  # archdir
  File::Path::mkpath($spec->{archdir}, 0, oct(777)) unless -d $spec->{archdir};

  # .xs -> .bs
  $self->add_to_cleanup($spec->{bs_file});
  unless ($self->up_to_date($file, $spec->{bs_file})) {
    require ExtUtils::Mkbootstrap;
    $self->log_info("ExtUtils::Mkbootstrap::Mkbootstrap('$spec->{bs_file}')\n");
    ExtUtils::Mkbootstrap::Mkbootstrap($spec->{bs_file});  # Original had $BSLOADLIBS - what's that?
    open(my $fh, '>>', $spec->{bs_file});  # create
    utime((time)x2, $spec->{bs_file});  # touch
  }

  # .o -> .(a|bundle)
  $self->link_c($spec);
}

sub do_system {
  my ($self, @cmd) = @_;
  $self->log_verbose("@cmd\n");

  # Some systems proliferate huge PERL5LIBs, try to ameliorate:
  my %seen;
  my $sep = $self->config('path_sep');
  local $ENV{PERL5LIB} =
    ( !exists($ENV{PERL5LIB}) ? '' :
      length($ENV{PERL5LIB}) < 500
      ? $ENV{PERL5LIB}
      : join $sep, grep { ! $seen{$_}++ and -d $_ } split($sep, $ENV{PERL5LIB})
    );

  my $status = system(@cmd);
  if ($status and $! =~ /Argument list too long/i) {
    my $env_entries = '';
    foreach (sort keys %ENV) { $env_entries .= "$_=>".length($ENV{$_})."; " }
    warn "'Argument list' was 'too long', env lengths are $env_entries";
  }
  return !$status;
}

sub copy_if_modified {
  my $self = shift;
  my %args = (@_ > 3
              ? ( @_ )
              : ( from => shift, to_dir => shift, flatten => shift )
             );
  $args{verbose} = !$self->quiet
    unless exists $args{verbose};

  my $file = $args{from};
  unless (defined $file and length $file) {
    die "No 'from' parameter given to copy_if_modified";
  }

  # makes no sense to replicate an absolute path, so assume flatten
  $args{flatten} = 1 if File::Spec->file_name_is_absolute( $file );

  my $to_path;
  if (defined $args{to} and length $args{to}) {
    $to_path = $args{to};
  } elsif (defined $args{to_dir} and length $args{to_dir}) {
    $to_path = File::Spec->catfile( $args{to_dir}, $args{flatten}
                                    ? File::Basename::basename($file)
                                    : $file );
  } else {
    die "No 'to' or 'to_dir' parameter given to copy_if_modified";
  }

  return if $self->up_to_date($file, $to_path); # Already fresh

  {
    local $self->{properties}{quiet} = 1;
    $self->delete_filetree($to_path); # delete destination if exists
  }

  # Create parent directories
  File::Path::mkpath(File::Basename::dirname($to_path), 0, oct(777));

  $self->log_verbose("Copying $file -> $to_path\n");

  if ($^O eq 'os2') {# copy will not overwrite; 0x1 = overwrite
    chmod 0666, $to_path;
    File::Copy::syscopy($file, $to_path, 0x1) or die "Can't copy('$file', '$to_path'): $!";
  } else {
    File::Copy::copy($file, $to_path) or die "Can't copy('$file', '$to_path'): $!";
  }

  # mode is read-only + (executable if source is executable)
  my $mode = oct(444) | ( $self->is_executable($file) ? oct(111) : 0 );
  chmod( $mode, $to_path );

  return $to_path;
}

sub up_to_date {
  my ($self, $source, $derived) = @_;
  $source  = [$source]  unless ref $source;
  $derived = [$derived] unless ref $derived;

  # empty $derived means $source should always run
  return 0 if @$source && !@$derived || grep {not -e} @$derived;

  my $most_recent_source = time / (24*60*60);
  foreach my $file (@$source) {
    unless (-e $file) {
      $self->log_warn("Can't find source file $file for up-to-date check");
      next;
    }
    $most_recent_source = -M _ if -M _ < $most_recent_source;
  }

  foreach my $derived (@$derived) {
    return 0 if -M $derived > $most_recent_source;
  }
  return 1;
}

sub dir_contains {
  my ($self, $first, $second) = @_;
  # File::Spec doesn't have an easy way to check whether one directory
  # is inside another, unfortunately.

  ($first, $second) = map File::Spec->canonpath($_), ($first, $second);
  my @first_dirs = File::Spec->splitdir($first);
  my @second_dirs = File::Spec->splitdir($second);

  return 0 if @second_dirs < @first_dirs;

  my $is_same = ( $self->_case_tolerant
                  ? sub {lc(shift()) eq lc(shift())}
                  : sub {shift() eq shift()} );

  while (@first_dirs) {
    return 0 unless $is_same->(shift @first_dirs, shift @second_dirs);
  }

  return 1;
}

1;
__END__


=head1 NAME

Module::Build::Base - Default methods for Module::Build

=head1 SYNOPSIS

  Please see the Module::Build documentation.

=head1 DESCRIPTION

The C<Module::Build::Base> module defines the core functionality of
C<Module::Build>.  Its methods may be overridden by any of the
platform-dependent modules in the C<Module::Build::Platform::>
namespace, but the intention here is to make this base module as
platform-neutral as possible.  Nicely enough, Perl has several core
tools available in the C<File::> namespace for doing this, so the task
isn't very difficult.

Please see the C<Module::Build> documentation for more details.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 COPYRIGHT

Copyright (c) 2001-2006 Ken Williams.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=head1 SEE ALSO

perl(1), Module::Build(3)

=cut
Build/ConfigData.pm000064400000015272150517530310010147 0ustar00package Module::Build::ConfigData;
use strict;
my $arrayref = eval do {local $/; <DATA>}
  or die "Couldn't load ConfigData data: $@";
close DATA;
my ($config, $features, $auto_features) = @$arrayref;

sub config { $config->{$_[1]} }

sub set_config { $config->{$_[1]} = $_[2] }
sub set_feature { $features->{$_[1]} = 0+!!$_[2] }  # Constrain to 1 or 0

sub auto_feature_names { sort grep !exists $features->{$_}, keys %$auto_features }

sub feature_names {
  my @features = (sort keys %$features, auto_feature_names());
  @features;
}

sub config_names  { sort keys %$config }

sub write {
  my $me = __FILE__;

  # Can't use Module::Build::Dumper here because M::B is only a
  # build-time prereq of this module
  require Data::Dumper;

  my $mode_orig = (stat $me)[2] & 07777;
  chmod($mode_orig | 0222, $me); # Make it writeable
  open(my $fh, '+<', $me) or die "Can't rewrite $me: $!";
  seek($fh, 0, 0);
  while (<$fh>) {
    last if /^__DATA__$/;
  }
  die "Couldn't find __DATA__ token in $me" if eof($fh);

  seek($fh, tell($fh), 0);
  my $data = [$config, $features, $auto_features];
  print($fh 'do{ my '
	      . Data::Dumper->new([$data],['x'])->Purity(1)->Dump()
	      . '$x; }' );
  truncate($fh, tell($fh));
  close $fh;

  chmod($mode_orig, $me)
    or warn "Couldn't restore permissions on $me: $!";
}

sub feature {
  my ($package, $key) = @_;
  return $features->{$key} if exists $features->{$key};

  my $info = $auto_features->{$key} or return 0;

  require Module::Build;  # XXX should get rid of this
  foreach my $type (sort keys %$info) {
    my $prereqs = $info->{$type};
    next if $type eq 'description' || $type eq 'recommends';

    foreach my $modname (sort keys %$prereqs) {
      my $status = Module::Build->check_installed_status($modname, $prereqs->{$modname});
      if ((!$status->{ok}) xor ($type =~ /conflicts$/)) { return 0; }
      if ( ! eval "require $modname; 1" ) { return 0; }
    }
  }
  return 1;
}


=head1 NAME

Module::Build::ConfigData - Configuration for Module::Build

=head1 SYNOPSIS

  use Module::Build::ConfigData;
  $value = Module::Build::ConfigData->config('foo');
  $value = Module::Build::ConfigData->feature('bar');

  @names = Module::Build::ConfigData->config_names;
  @names = Module::Build::ConfigData->feature_names;

  Module::Build::ConfigData->set_config(foo => $new_value);
  Module::Build::ConfigData->set_feature(bar => $new_value);
  Module::Build::ConfigData->write;  # Save changes


=head1 DESCRIPTION

This module holds the configuration data for the C<Module::Build>
module.  It also provides a programmatic interface for getting or
setting that configuration data.  Note that in order to actually make
changes, you'll have to have write access to the C<Module::Build::ConfigData>
module, and you should attempt to understand the repercussions of your
actions.


=head1 METHODS

=over 4

=item config($name)

Given a string argument, returns the value of the configuration item
by that name, or C<undef> if no such item exists.

=item feature($name)

Given a string argument, returns the value of the feature by that
name, or C<undef> if no such feature exists.

=item set_config($name, $value)

Sets the configuration item with the given name to the given value.
The value may be any Perl scalar that will serialize correctly using
C<Data::Dumper>.  This includes references, objects (usually), and
complex data structures.  It probably does not include transient
things like filehandles or sockets.

=item set_feature($name, $value)

Sets the feature with the given name to the given boolean value.  The
value will be converted to 0 or 1 automatically.

=item config_names()

Returns a list of all the names of config items currently defined in
C<Module::Build::ConfigData>, or in scalar context the number of items.

=item feature_names()

Returns a list of all the names of features currently defined in
C<Module::Build::ConfigData>, or in scalar context the number of features.

=item auto_feature_names()

Returns a list of all the names of features whose availability is
dynamically determined, or in scalar context the number of such
features.  Does not include such features that have later been set to
a fixed value.

=item write()

Commits any changes from C<set_config()> and C<set_feature()> to disk.
Requires write access to the C<Module::Build::ConfigData> module.

=back


=head1 AUTHOR

C<Module::Build::ConfigData> was automatically created using C<Module::Build>.
C<Module::Build> was written by Ken Williams, but he holds no
authorship claim or copyright claim to the contents of C<Module::Build::ConfigData>.

=cut


__DATA__
do{ my $x = [
       {},
       {},
       {
         'HTML_support' => {
                             'description' => 'Create HTML documentation',
                             'requires' => {
                                             'Pod::Html' => 0
                                           }
                           },
         'PPM_support' => {
                            'description' => 'Generate PPM files for distributions'
                          },
         'dist_authoring' => {
                               'description' => 'Create new distributions',
                               'recommends' => {
                                                 'Module::Signature' => '0.21',
                                                 'Pod::Readme' => '0.04'
                                               },
                               'requires' => {
                                               'Archive::Tar' => '1.09'
                                             }
                             },
         'inc_bundling_support' => {
                                     'description' => 'Bundle Module::Build in inc/',
                                     'requires' => {
                                                     'ExtUtils::Install' => '1.54',
                                                     'ExtUtils::Installed' => '1.999',
                                                     'inc::latest' => '0.5'
                                                   }
                                   },
         'license_creation' => {
                                 'description' => 'Create licenses automatically in distributions',
                                 'requires' => {
                                                 'Software::License' => '0.103009'
                                               }
                               },
         'manpage_support' => {
                                'description' => 'Create Unix man pages',
                                'requires' => {
                                                'Pod::Man' => 0
                                              }
                              }
       }
     ];
$x; }Build/Config.pm000064400000002116150517530310007346 0ustar00package Module::Build::Config;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Config;

sub new {
  my ($pack, %args) = @_;
  return bless {
		stack => {},
		values => $args{values} || {},
	       }, $pack;
}

sub get {
  my ($self, $key) = @_;
  return $self->{values}{$key} if ref($self) && exists $self->{values}{$key};
  return $Config{$key};
}

sub set {
  my ($self, $key, $val) = @_;
  $self->{values}{$key} = $val;
}

sub push {
  my ($self, $key, $val) = @_;
  push @{$self->{stack}{$key}}, $self->{values}{$key}
    if exists $self->{values}{$key};
  $self->{values}{$key} = $val;
}

sub pop {
  my ($self, $key) = @_;

  my $val = delete $self->{values}{$key};
  if ( exists $self->{stack}{$key} ) {
    $self->{values}{$key} = pop @{$self->{stack}{$key}};
    delete $self->{stack}{$key} unless @{$self->{stack}{$key}};
  }

  return $val;
}

sub values_set {
  my $self = shift;
  return undef unless ref($self);
  return $self->{values};
}

sub all_config {
  my $self = shift;
  my $v = ref($self) ? $self->{values} : {};
  return {%Config, %$v};
}

1;
Build/Dumper.pm000064400000000706150517530310007400 0ustar00package Module::Build::Dumper;
use strict;
use warnings;
our $VERSION = '0.4224';

# This is just a split-out of a wrapper function to do Data::Dumper
# stuff "the right way".  See:
# http://groups.google.com/group/perl.module.build/browse_thread/thread/c8065052b2e0d741

use Data::Dumper;

sub _data_dump {
  my ($self, $data) = @_;
  return ("do{ my "
	  . Data::Dumper->new([$data],['x'])->Purity(1)->Terse(0)->Sortkeys(1)->Dump()
	  . '$x; }')
}

1;
Build/Bundling.pod000064400000011764150517530310010062 0ustar00=head1 NAME

Module::Build::Bundling - How to bundle Module::Build with a distribution

=head1 SYNOPSIS

  # Build.PL
  use inc::latest 'Module::Build';

  Module::Build->new(
    module_name => 'Foo::Bar',
    license => 'perl',
  )->create_build_script;

=head1 DESCRIPTION

B<WARNING -- THIS IS AN EXPERIMENTAL FEATURE>

In order to install a distribution using Module::Build, users must
have Module::Build available on their systems.  There are two ways
to do this.  The first way is to include Module::Build in the
C<configure_requires> metadata field.  This field is supported by
recent versions L<CPAN> and L<CPANPLUS> and is a standard feature
in the Perl core as of Perl 5.10.1.  Module::Build now adds itself
to C<configure_requires> by default.

The second way supports older Perls that have not upgraded CPAN or
CPANPLUS and involves bundling an entire copy of Module::Build
into the distribution's C<inc/> directory.  This is the same approach
used by L<Module::Install>, a modern wrapper around ExtUtils::MakeMaker
for Makefile.PL based distributions.

The "trick" to making this work for Module::Build is making sure the
highest version Module::Build is used, whether this is in C<inc/> or
already installed on the user's system.  This ensures that all necessary
features are available as well as any new bug fixes.  This is done using
the experimental L<inc::latest> module, available on CPAN.

A "normal" Build.PL looks like this (with only the minimum required
fields):

  use Module::Build;

  Module::Build->new(
    module_name => 'Foo::Bar',
    license     => 'perl',
  )->create_build_script;

A "bundling" Build.PL replaces the initial "use" line with a nearly
transparent replacement:

  use inc::latest 'Module::Build';

  Module::Build->new(
    module_name => 'Foo::Bar',
    license => 'perl',
  )->create_build_script;

For I<authors>, when "Build dist" is run, Module::Build will be
automatically bundled into C<inc> according to the rules for
L<inc::latest>.

For I<users>, inc::latest will load the latest Module::Build, whether
installed or bundled in C<inc/>.

=head1 BUNDLING OTHER CONFIGURATION DEPENDENCIES

The same approach works for other configuration dependencies -- modules
that I<must> be available for Build.PL to run.  All other dependencies can
be specified as usual in the Build.PL and CPAN or CPANPLUS will install
them after Build.PL finishes.

For example, to bundle the L<Devel::AssertOS::Unix> module (which ensures a
"Unix-like" operating system), one could do this:

  use inc::latest 'Devel::AssertOS::Unix';
  use inc::latest 'Module::Build';

  Module::Build->new(
    module_name => 'Foo::Bar',
    license => 'perl',
  )->create_build_script;

The C<inc::latest> module creates bundled directories based on the packlist
file of an installed distribution.  Even though C<inc::latest> takes module
name arguments, it is better to think of it as bundling and making
available entire I<distributions>.  When a module is loaded through
C<inc::latest>, it looks in all bundled distributions in C<inc/> for a
newer module than can be found in the existing C<@INC> array.

Thus, the module-name provided should usually be the "top-level" module
name of a distribution, though this is not strictly required.  For example,
L<Module::Build> has a number of heuristics to map module names to
packlists, allowing users to do things like this:

  use inc::latest 'Devel::AssertOS::Unix';

even though Devel::AssertOS::Unix is contained within the Devel-CheckOS
distribution.

At the current time, packlists are required.  Thus, bundling dual-core
modules, I<including Module::Build>, may require a 'forced install' over
versions in the latest version of perl in order to create the necessary
packlist for bundling.  This limitation will hopefully be addressed in a
future version of Module::Build.

=head2 WARNING -- How to Manage Dependency Chains

Before bundling a distribution you must ensure that all prerequisites are
also bundled and load in the correct order.  For Module::Build itself, this
should not be necessary, but it is necessary for any other distribution.
(A future release of Module::Build will hopefully address this deficiency.)

For example, if you need C<Wibble>, but C<Wibble> depends on C<Wobble>,
your Build.PL might look like this:

  use inc::latest 'Wobble';
  use inc::latest 'Wibble';
  use inc::latest 'Module::Build';

  Module::Build->new(
    module_name => 'Foo::Bar',
    license => 'perl',
  )->create_build_script;

Authors are strongly suggested to limit the bundling of additional
dependencies if at all possible and to carefully test their distribution
tarballs on older versions of Perl before uploading to CPAN.

=head1 AUTHOR

David Golden <dagolden@cpan.org>

Development questions, bug reports, and patches should be sent to the
Module-Build mailing list at <module-build@perl.org>.

Bug reports are also welcome at
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Module-Build>.

=head1 SEE ALSO

perl(1), L<inc::latest>, L<Module::Build>(3), L<Module::Build::API>(3),
L<Module::Build::Cookbook>(3),

=cut

# vim: tw=75
Build/Platform/MacOS.pm000064400000006751150517530310010700 0ustar00package Module::Build::Platform::MacOS;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Base;
our @ISA = qw(Module::Build::Base);

use ExtUtils::Install;

sub have_forkpipe { 0 }

sub new {
  my $class = shift;
  my $self = $class->SUPER::new(@_);

  # $Config{sitelib} and $Config{sitearch} are, unfortunately, missing.
  foreach ('sitelib', 'sitearch') {
    $self->config($_ => $self->config("install$_"))
      unless $self->config($_);
  }

  # For some reason $Config{startperl} is filled with a bunch of crap.
  (my $sp = $self->config('startperl')) =~ s/.*Exit \{Status\}\s//;
  $self->config(startperl => $sp);

  return $self;
}

sub make_executable {
  my $self = shift;
  require MacPerl;
  foreach (@_) {
    MacPerl::SetFileInfo('McPL', 'TEXT', $_);
  }
}

sub dispatch {
  my $self = shift;

  if( !@_ and !@ARGV ) {
    require MacPerl;

    # What comes first in the action list.
    my @action_list = qw(build test install);
    my %actions = map {+($_, 1)} $self->known_actions;
    delete @actions{@action_list};
    push @action_list, sort { $a cmp $b } keys %actions;

    my %toolserver = map {+$_ => 1} qw(test disttest diff testdb);
    foreach (@action_list) {
      $_ .= ' *' if $toolserver{$_};
    }

    my $cmd = MacPerl::Pick("What build command? ('*' requires ToolServer)", @action_list);
    return unless defined $cmd;
    $cmd =~ s/ \*$//;
    $ARGV[0] = ($cmd);

    my $args = MacPerl::Ask('Any extra arguments?  (ie. verbose=1)', '');
    return unless defined $args;
    push @ARGV, $self->split_like_shell($args);
  }

  $self->SUPER::dispatch(@_);
}

sub ACTION_realclean {
  my $self = shift;
  chmod 0666, $self->{properties}{build_script};
  $self->SUPER::ACTION_realclean;
}

# ExtUtils::Install has a hard-coded '.' directory in versions less
# than 1.30.  We use a sneaky trick to turn that into ':'.
#
# Note that we do it here in a cross-platform way, so this code could
# actually go in Module::Build::Base.  But we put it here to be less
# intrusive for other platforms.

sub ACTION_install {
  my $self = shift;

  return $self->SUPER::ACTION_install(@_)
    if eval {ExtUtils::Install->VERSION('1.30'); 1};

  local $^W = 0; # Avoid a 'redefine' warning
  local *ExtUtils::Install::find = sub {
    my ($code, @dirs) = @_;

    @dirs = map { $_ eq '.' ? File::Spec->curdir : $_ } @dirs;

    return File::Find::find($code, @dirs);
  };

  return $self->SUPER::ACTION_install(@_);
}

1;
__END__

=head1 NAME

Module::Build::Platform::MacOS - Builder class for MacOS platforms

=head1 DESCRIPTION

The sole purpose of this module is to inherit from
C<Module::Build::Base> and override a few methods.  Please see
L<Module::Build> for the docs.

=head2 Overridden Methods

=over 4

=item new()

MacPerl doesn't define $Config{sitelib} or $Config{sitearch} for some
reason, but $Config{installsitelib} and $Config{installsitearch} are
there.  So we copy the install variables to the other location

=item make_executable()

On MacOS we set the file type and creator to MacPerl so it will run
with a double-click.

=item dispatch()

Because there's no easy way to say "./Build test" on MacOS, if
dispatch is called with no arguments and no @ARGV a dialog box will
pop up asking what action to take and any extra arguments.

Default action is "test".

=item ACTION_realclean()

Need to unlock the Build program before deleting.

=back

=head1 AUTHOR

Michael G Schwern <schwern@pobox.com>


=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Platform/Unix.pm000064400000003361150517530310010653 0ustar00package Module::Build::Platform::Unix;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Base;

our @ISA = qw(Module::Build::Base);

sub is_executable {
  # We consider the owner bit to be authoritative on a file, because
  # -x will always return true if the user is root and *any*
  # executable bit is set.  The -x test seems to try to answer the
  # question "can I execute this file", but I think we want "is this
  # file executable".

  my ($self, $file) = @_;
  return +(stat $file)[2] & 0100;
}

sub _startperl { "#! " . shift()->perl }

sub _construct {
  my $self = shift()->SUPER::_construct(@_);

  # perl 5.8.1-RC[1-3] had some broken %Config entries, and
  # unfortunately Red Hat 9 shipped it like that.  Fix 'em up here.
  my $c = $self->{config};
  for (qw(siteman1 siteman3 vendorman1 vendorman3)) {
    $c->{"install${_}dir"} ||= $c->{"install${_}"};
  }

  return $self;
}

# Open group says username should be portable filename characters,
# but some Unix OS working with ActiveDirectory wind up with user-names
# with back-slashes in the name.  The new code below is very liberal
# in what it accepts.
sub _detildefy {
  my ($self, $value) = @_;
  $value =~ s[^~([^/]+)?(?=/|$)]   # tilde with optional username
    [$1 ?
     (eval{(getpwnam $1)[7]} || "~$1") :
     ($ENV{HOME} || eval{(getpwuid $>)[7]} || glob("~"))
    ]ex;
  return $value;
}

1;
__END__


=head1 NAME

Module::Build::Platform::Unix - Builder class for Unix platforms

=head1 DESCRIPTION

The sole purpose of this module is to inherit from
C<Module::Build::Base>.  Please see the L<Module::Build> for the docs.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Platform/Default.pm000064400000001040150517530310011304 0ustar00package Module::Build::Platform::Default;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Base;

our @ISA = qw(Module::Build::Base);

1;
__END__


=head1 NAME

Module::Build::Platform::Default - Stub class for unknown platforms

=head1 DESCRIPTION

The sole purpose of this module is to inherit from
C<Module::Build::Base>.  Please see the L<Module::Build> for the docs.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Platform/cygwin.pm000064400000002132150517530310011223 0ustar00package Module::Build::Platform::cygwin;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;

our @ISA = qw(Module::Build::Platform::Unix);

sub manpage_separator {
   '.'
}

# Copied from ExtUtils::MM_Cygwin::maybe_command()
# If our path begins with F</cygdrive/> then we use the Windows version
# to determine if it may be a command.  Otherwise we use the tests
# from C<ExtUtils::MM_Unix>.

sub _maybe_command {
    my ($self, $file) = @_;

    if ($file =~ m{^/cygdrive/}i) {
        require Module::Build::Platform::Windows;
        return Module::Build::Platform::Windows->_maybe_command($file);
    }

    return $self->SUPER::_maybe_command($file);
}

1;
__END__


=head1 NAME

Module::Build::Platform::cygwin - Builder class for Cygwin platform

=head1 DESCRIPTION

This module provides some routines very specific to the cygwin
platform.

Please see the L<Module::Build> for the general docs.

=head1 AUTHOR

Initial stub by Yitzchak Scott-Thoennes <sthoenna@efn.org>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Platform/Windows.pm000064400000017376150517530310011375 0ustar00package Module::Build::Platform::Windows;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;

use Config;
use File::Basename;
use File::Spec;

use Module::Build::Base;

our @ISA = qw(Module::Build::Base);


sub manpage_separator {
    return '.';
}

sub have_forkpipe { 0 }

sub _detildefy {
  my ($self, $value) = @_;
  $value =~ s,^~(?= [/\\] | $ ),$ENV{HOME},x
    if $ENV{HOME};
  return $value;
}

sub ACTION_realclean {
  my ($self) = @_;

  $self->SUPER::ACTION_realclean();

  my $basename = basename($0);
  $basename =~ s/(?:\.bat)?$//i;

  if ( lc $basename eq lc $self->build_script ) {
    if ( $self->build_bat ) {
      $self->log_verbose("Deleting $basename.bat\n");
      my $full_progname = $0;
      $full_progname =~ s/(?:\.bat)?$/.bat/i;

      # Voodoo required to have a batch file delete itself without error;
      # Syntax differs between 9x & NT: the later requires a null arg (???)
      require Win32;
      my $null_arg = (Win32::IsWinNT()) ? '""' : '';
      my $cmd = qq(start $null_arg /min "\%comspec\%" /c del "$full_progname");

      open(my $fh, '>>', "$basename.bat")
        or die "Can't create $basename.bat: $!";
      print $fh $cmd;
      close $fh ;
    } else {
      $self->delete_filetree($self->build_script . '.bat');
    }
  }
}

sub make_executable {
  my $self = shift;

  $self->SUPER::make_executable(@_);

  foreach my $script (@_) {

    # Native batch script
    if ( $script =~ /\.(bat|cmd)$/ ) {
      $self->SUPER::make_executable($script);
      next;

    # Perl script that needs to be wrapped in a batch script
    } else {
      my %opts = ();
      if ( $script eq $self->build_script ) {
        $opts{ntargs}    = q(-x -S %0 --build_bat %*);
        $opts{otherargs} = q(-x -S "%0" --build_bat %1 %2 %3 %4 %5 %6 %7 %8 %9);
      }

      my $out = eval {$self->pl2bat(in => $script, update => 1, %opts)};
      if ( $@ ) {
        $self->log_warn("WARNING: Unable to convert file '$script' to an executable script:\n$@");
      } else {
        $self->SUPER::make_executable($out);
      }
    }
  }
}

# This routine was copied almost verbatim from the 'pl2bat' utility
# distributed with perl. It requires too much voodoo with shell quoting
# differences and shortcomings between the various flavors of Windows
# to reliably shell out
sub pl2bat {
  my $self = shift;
  my %opts = @_;

  # NOTE: %0 is already enclosed in doublequotes by cmd.exe, as appropriate
  $opts{ntargs}    = '-x -S %0 %*' unless exists $opts{ntargs};
  $opts{otherargs} = '-x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9' unless exists $opts{otherargs};

  $opts{stripsuffix} = '/\\.plx?/' unless exists $opts{stripsuffix};
  $opts{stripsuffix} = ($opts{stripsuffix} =~ m{^/([^/]*[^/\$]|)\$?/?$} ? $1 : "\Q$opts{stripsuffix}\E");

  unless (exists $opts{out}) {
    $opts{out} = $opts{in};
    $opts{out} =~ s/$opts{stripsuffix}$//oi;
    $opts{out} .= '.bat' unless $opts{in} =~ /\.bat$/i or $opts{in} =~ /^-$/;
  }

  my $head = <<EOT;
    \@rem = '--*-Perl-*--
    \@echo off
    if "%OS%" == "Windows_NT" goto WinNT
    perl $opts{otherargs}
    goto endofperl
    :WinNT
    perl $opts{ntargs}
    if NOT "%COMSPEC%" == "%SystemRoot%\\system32\\cmd.exe" goto endofperl
    if %errorlevel% == 9009 echo You do not have Perl in your PATH.
    if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
    goto endofperl
    \@rem ';
EOT

  $head =~ s/^\s+//gm;
  my $headlines = 2 + ($head =~ tr/\n/\n/);
  my $tail = "\n__END__\n:endofperl\n";

  my $linedone  = 0;
  my $taildone  = 0;
  my $linenum   = 0;
  my $skiplines = 0;

  my $start = $Config{startperl};
  $start = "#!perl" unless $start =~ /^#!.*perl/;

  open(my $in, '<', "$opts{in}") or die "Can't open $opts{in}: $!";
  my @file = <$in>;
  close($in);

  foreach my $line ( @file ) {
    $linenum++;
    if ( $line =~ /^:endofperl\b/ ) {
      if (!exists $opts{update}) {
        warn "$opts{in} has already been converted to a batch file!\n";
        return;
      }
      $taildone++;
    }
    if ( not $linedone and $line =~ /^#!.*perl/ ) {
      if (exists $opts{update}) {
        $skiplines = $linenum - 1;
        $line .= "#line ".(1+$headlines)."\n";
      } else {
	$line .= "#line ".($linenum+$headlines)."\n";
      }
	$linedone++;
    }
    if ( $line =~ /^#\s*line\b/ and $linenum == 2 + $skiplines ) {
      $line = "";
    }
  }

  open(my $out, '>', "$opts{out}") or die "Can't open $opts{out}: $!";
  print $out $head;
  print $out $start, ( $opts{usewarnings} ? " -w" : "" ),
             "\n#line ", ($headlines+1), "\n" unless $linedone;
  print $out @file[$skiplines..$#file];
  print $out $tail unless $taildone;
  close($out);

  return $opts{out};
}


sub _quote_args {
  # Returns a string that can become [part of] a command line with
  # proper quoting so that the subprocess sees this same list of args.
  my ($self, @args) = @_;

  my @quoted;

  for (@args) {
    if ( /^[^\s*?!\$<>;|'"\[\]\{\}]+$/ ) {
      # Looks pretty safe
      push @quoted, $_;
    } else {
      # XXX this will obviously have to improve - is there already a
      # core module lying around that does proper quoting?
      s/"/\\"/g;
      push @quoted, qq("$_");
    }
  }

  return join " ", @quoted;
}


sub split_like_shell {
  # As it turns out, Windows command-parsing is very different from
  # Unix command-parsing.  Double-quotes mean different things,
  # backslashes don't necessarily mean escapes, and so on.  So we
  # can't use Text::ParseWords::shellwords() to break a command string
  # into words.  The algorithm below was bashed out by Randy and Ken
  # (mostly Randy), and there are a lot of regression tests, so we
  # should feel free to adjust if desired.

  (my $self, local $_) = @_;

  return @$_ if defined() && ref() eq 'ARRAY';

  my @argv;
  return @argv unless defined() && length();

  my $length = length;
  m/\G\s*/gc;

  ARGS: until ( pos == $length ) {
    my $quote_mode;
    my $arg = '';
    CHARS: until ( pos == $length ) {
      if ( m/\G((?:\\\\)+)(?=\\?(")?)/gc ) {
          if (defined $2) {
              $arg .= '\\' x (length($1) / 2);
          }
          else {
              $arg .= $1;
          }
      }
      elsif ( m/\G\\"/gc ) {
        $arg .= '"';
      }
      elsif ( m/\G"/gc ) {
        if ( $quote_mode && m/\G"/gc ) {
            $arg .= '"';
        }
        $quote_mode = !$quote_mode;
      }
      elsif ( !$quote_mode && m/\G\s+/gc ) {
        last;
      }
      elsif ( m/\G(.)/sgc ) {
        $arg .= $1;
      }
    }
    push @argv, $arg;
  }

  return @argv;
}


# system(@cmd) does not like having double-quotes in it on Windows.
# So we quote them and run it as a single command.
sub do_system {
  my ($self, @cmd) = @_;

  my $cmd = $self->_quote_args(@cmd);
  my $status = system($cmd);
  if ($status and $! =~ /Argument list too long/i) {
    my $env_entries = '';
    foreach (sort keys %ENV) { $env_entries .= "$_=>".length($ENV{$_})."; " }
    warn "'Argument list' was 'too long', env lengths are $env_entries";
  }
  return !$status;
}

# Copied from ExtUtils::MM_Win32
sub _maybe_command {
    my($self,$file) = @_;
    my @e = exists($ENV{'PATHEXT'})
          ? split(/;/, $ENV{PATHEXT})
	  : qw(.com .exe .bat .cmd);
    my $e = '';
    for (@e) { $e .= "\Q$_\E|" }
    chop $e;
    # see if file ends in one of the known extensions
    if ($file =~ /($e)$/i) {
	return $file if -e $file;
    }
    else {
	for (@e) {
	    return "$file$_" if -e "$file$_";
	}
    }
    return;
}


1;

__END__

=head1 NAME

Module::Build::Platform::Windows - Builder class for Windows platforms

=head1 DESCRIPTION

The sole purpose of this module is to inherit from
C<Module::Build::Base> and override a few methods.  Please see
L<Module::Build> for the docs.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>, Randy W. Sims <RandyS@ThePierianSpring.org>

=head1 SEE ALSO

perl(1), Module::Build(3)

=cut
Build/Platform/VMS.pm000064400000027724150517530320010407 0ustar00package Module::Build::Platform::VMS;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Base;
use Config;

our @ISA = qw(Module::Build::Base);



=head1 NAME

Module::Build::Platform::VMS - Builder class for VMS platforms

=head1 DESCRIPTION

This module inherits from C<Module::Build::Base> and alters a few
minor details of its functionality.  Please see L<Module::Build> for
the general docs.

=head2 Overridden Methods

=over 4

=item _set_defaults

Change $self->{build_script} to 'Build.com' so @Build works.

=cut

sub _set_defaults {
    my $self = shift;
    $self->SUPER::_set_defaults(@_);

    $self->{properties}{build_script} = 'Build.com';
}


=item cull_args

'@Build foo' on VMS will not preserve the case of 'foo'.  Rather than forcing
people to write '@Build "foo"' we'll dispatch case-insensitively.

=cut

sub cull_args {
    my $self = shift;
    my($action, $args) = $self->SUPER::cull_args(@_);
    my @possible_actions = grep { lc $_ eq lc $action } $self->known_actions;

    die "Ambiguous action '$action'.  Could be one of @possible_actions"
        if @possible_actions > 1;

    return ($possible_actions[0], $args);
}


=item manpage_separator

Use '__' instead of '::'.

=cut

sub manpage_separator {
    return '__';
}


=item prefixify

Prefixify taking into account VMS' filepath syntax.

=cut

# Translated from ExtUtils::MM_VMS::prefixify()

sub _catprefix {
    my($self, $rprefix, $default) = @_;

    my($rvol, $rdirs) = File::Spec->splitpath($rprefix);
    if( $rvol ) {
        return File::Spec->catpath($rvol,
                                   File::Spec->catdir($rdirs, $default),
                                   ''
                                  )
    }
    else {
        return File::Spec->catdir($rdirs, $default);
    }
}


sub _prefixify {
    my($self, $path, $sprefix, $type) = @_;
    my $rprefix = $self->prefix;

    return '' unless defined $path;

    $self->log_verbose("  prefixify $path from $sprefix to $rprefix\n");

    # Translate $(PERLPREFIX) to a real path.
    $rprefix = VMS::Filespec::vmspath($rprefix) if $rprefix;
    $sprefix = VMS::Filespec::vmspath($sprefix) if $sprefix;

    $self->log_verbose("  rprefix translated to $rprefix\n".
                       "  sprefix translated to $sprefix\n");

    if( length($path) == 0 ) {
        $self->log_verbose("  no path to prefixify.\n")
    }
    elsif( !File::Spec->file_name_is_absolute($path) ) {
        $self->log_verbose("    path is relative, not prefixifying.\n");
    }
    elsif( $sprefix eq $rprefix ) {
        $self->log_verbose("  no new prefix.\n");
    }
    else {
        my($path_vol, $path_dirs) = File::Spec->splitpath( $path );
	my $vms_prefix = $self->config('vms_prefix');
        if( $path_vol eq $vms_prefix.':' ) {
            $self->log_verbose("  $vms_prefix: seen\n");

            $path_dirs =~ s{^\[}{\[.} unless $path_dirs =~ m{^\[\.};
            $path = $self->_catprefix($rprefix, $path_dirs);
        }
        else {
            $self->log_verbose("    cannot prefixify.\n");
	    return $self->prefix_relpaths($self->installdirs, $type);
        }
    }

    $self->log_verbose("    now $path\n");

    return $path;
}

=item _quote_args

Command-line arguments (but not the command itself) must be quoted
to ensure case preservation.

=cut

sub _quote_args {
  # Returns a string that can become [part of] a command line with
  # proper quoting so that the subprocess sees this same list of args,
  # or if we get a single arg that is an array reference, quote the
  # elements of it and return the reference.
  my ($self, @args) = @_;
  my $got_arrayref = (scalar(@args) == 1
                      && ref $args[0] eq 'ARRAY')
                   ? 1
                   : 0;

  # Do not quote qualifiers that begin with '/'.
  map { if (!/^\//) {
          $_ =~ s/\"/""/g;     # escape C<"> by doubling
          $_ = q(").$_.q(");
        }
  }
    ($got_arrayref ? @{$args[0]}
                   : @args
    );

  return $got_arrayref ? $args[0]
                       : join(' ', @args);
}

=item have_forkpipe

There is no native fork(), so some constructs depending on it are not
available.

=cut

sub have_forkpipe { 0 }

=item _backticks

Override to ensure that we quote the arguments but not the command.

=cut

sub _backticks {
  # The command must not be quoted but the arguments to it must be.
  my ($self, @cmd) = @_;
  my $cmd = shift @cmd;
  my $args = $self->_quote_args(@cmd);
  return `$cmd $args`;
}

=item find_command

Local an executable program

=cut

sub find_command {
    my ($self, $command) = @_;

    # a lot of VMS executables have a symbol defined
    # check those first
    if ( $^O eq 'VMS' ) {
        require VMS::DCLsym;
        my $syms = VMS::DCLsym->new;
        return $command if scalar $syms->getsym( uc $command );
    }

    $self->SUPER::find_command($command);
}

# _maybe_command copied from ExtUtils::MM_VMS::maybe_command

=item _maybe_command (override)

Follows VMS naming conventions for executable files.
If the name passed in doesn't exactly match an executable file,
appends F<.Exe> (or equivalent) to check for executable image, and F<.Com>
to check for DCL procedure.  If this fails, checks directories in DCL$PATH
and finally F<Sys$System:> for an executable file having the name specified,
with or without the F<.Exe>-equivalent suffix.

=cut

sub _maybe_command {
    my($self,$file) = @_;
    return $file if -x $file && ! -d _;
    my(@dirs) = ('');
    my(@exts) = ('',$Config{'exe_ext'},'.exe','.com');

    if ($file !~ m![/:>\]]!) {
        for (my $i = 0; defined $ENV{"DCL\$PATH;$i"}; $i++) {
            my $dir = $ENV{"DCL\$PATH;$i"};
            $dir .= ':' unless $dir =~ m%[\]:]$%;
            push(@dirs,$dir);
        }
        push(@dirs,'Sys$System:');
        foreach my $dir (@dirs) {
            my $sysfile = "$dir$file";
            foreach my $ext (@exts) {
                return $file if -x "$sysfile$ext" && ! -d _;
            }
        }
    }
    return;
}

=item do_system

Override to ensure that we quote the arguments but not the command.

=cut

sub do_system {
  # The command must not be quoted but the arguments to it must be.
  my ($self, @cmd) = @_;
  $self->log_verbose("@cmd\n");
  my $cmd = shift @cmd;
  my $args = $self->_quote_args(@cmd);
  return !system("$cmd $args");
}

=item oneliner

Override to ensure that we do not quote the command.

=cut

sub oneliner {
    my $self = shift;
    my $oneliner = $self->SUPER::oneliner(@_);

    $oneliner =~ s/^\"\S+\"//;

    return "MCR $^X $oneliner";
}

=item rscan_dir

Inherit the standard version but remove dots at end of name.
If the extended character set is in effect, do not remove dots from filenames
with Unix path delimiters.

=cut

sub rscan_dir {
  my ($self, $dir, $pattern) = @_;

  my $result = $self->SUPER::rscan_dir( $dir, $pattern );

  for my $file (@$result) {
      if (!_efs() && ($file =~ m#/#)) {
          $file =~ s/\.$//;
      }
  }
  return $result;
}

=item dist_dir

Inherit the standard version but replace embedded dots with underscores because
a dot is the directory delimiter on VMS.

=cut

sub dist_dir {
  my $self = shift;

  my $dist_dir = $self->SUPER::dist_dir;
  $dist_dir =~ s/\./_/g unless _efs();
  return $dist_dir;
}

=item man3page_name

Inherit the standard version but chop the extra manpage delimiter off the front if
there is one.  The VMS version of splitdir('[.foo]') returns '', 'foo'.

=cut

sub man3page_name {
  my $self = shift;

  my $mpname = $self->SUPER::man3page_name( shift );
  my $sep = $self->manpage_separator;
  $mpname =~ s/^$sep//;
  return $mpname;
}

=item expand_test_dir

Inherit the standard version but relativize the paths as the native glob() doesn't
do that for us.

=cut

sub expand_test_dir {
  my ($self, $dir) = @_;

  my @reldirs = $self->SUPER::expand_test_dir( $dir );

  for my $eachdir (@reldirs) {
    my ($v,$d,$f) = File::Spec->splitpath( $eachdir );
    my $reldir = File::Spec->abs2rel( File::Spec->catpath( $v, $d, '' ) );
    $eachdir = File::Spec->catfile( $reldir, $f );
  }
  return @reldirs;
}

=item _detildefy

The home-grown glob() does not currently handle tildes, so provide limited support
here.  Expect only UNIX format file specifications for now.

=cut

sub _detildefy {
    my ($self, $arg) = @_;

    # Apparently double ~ are not translated.
    return $arg if ($arg =~ /^~~/);

    # Apparently ~ followed by whitespace are not translated.
    return $arg if ($arg =~ /^~ /);

    if ($arg =~ /^~/) {
        my $spec = $arg;

        # Remove the tilde
        $spec =~ s/^~//;

        # Remove any slash following the tilde if present.
        $spec =~ s#^/##;

        # break up the paths for the merge
        my $home = VMS::Filespec::unixify($ENV{HOME});

        # In the default VMS mode, the trailing slash is present.
        # In Unix report mode it is not.  The parsing logic assumes that
        # it is present.
        $home .= '/' unless $home =~ m#/$#;

        # Trivial case of just ~ by it self
        if ($spec eq '') {
            $home =~ s#/$##;
            return $home;
        }

        my ($hvol, $hdir, $hfile) = File::Spec::Unix->splitpath($home);
        if ($hdir eq '') {
             # Someone has tampered with $ENV{HOME}
             # So hfile is probably the directory since this should be
             # a path.
             $hdir = $hfile;
        }

        my ($vol, $dir, $file) = File::Spec::Unix->splitpath($spec);

        my @hdirs = File::Spec::Unix->splitdir($hdir);
        my @dirs = File::Spec::Unix->splitdir($dir);

        unless ($arg =~ m#^~/#) {
            # There is a home directory after the tilde, but it will already
            # be present in in @hdirs so we need to remove it by from @dirs.

            shift @dirs;
        }
        my $newdirs = File::Spec::Unix->catdir(@hdirs, @dirs);

        $arg = File::Spec::Unix->catpath($hvol, $newdirs, $file);
    }
    return $arg;

}

=item find_perl_interpreter

On VMS, $^X returns the fully qualified absolute path including version
number.  It's logically impossible to improve on it for getting the perl
we're currently running, and attempting to manipulate it is usually
lossy.

=cut

sub find_perl_interpreter {
    return VMS::Filespec::vmsify($^X);
}

=item localize_file_path

Convert the file path to the local syntax

=cut

sub localize_file_path {
  my ($self, $path) = @_;
  $path = VMS::Filespec::vmsify($path);
  $path =~ s/\.\z//;
  return $path;
}

=item localize_dir_path

Convert the directory path to the local syntax

=cut

sub localize_dir_path {
  my ($self, $path) = @_;
  return VMS::Filespec::vmspath($path);
}

=item ACTION_clean

The home-grown glob() expands a bit too aggressively when given a bare name,
so default in a zero-length extension.

=cut

sub ACTION_clean {
  my ($self) = @_;
  foreach my $item (map glob(VMS::Filespec::rmsexpand($_, '.;0')), $self->cleanup) {
    $self->delete_filetree($item);
  }
}


# Need to look up the feature settings.  The preferred way is to use the
# VMS::Feature module, but that may not be available to dual life modules.

my $use_feature;
BEGIN {
    if (eval { local $SIG{__DIE__}; require VMS::Feature; }) {
        $use_feature = 1;
    }
}

# Need to look up the UNIX report mode.  This may become a dynamic mode
# in the future.
sub _unix_rpt {
    my $unix_rpt;
    if ($use_feature) {
        $unix_rpt = VMS::Feature::current("filename_unix_report");
    } else {
        my $env_unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || '';
        $unix_rpt = $env_unix_rpt =~ /^[ET1]/i;
    }
    return $unix_rpt;
}

# Need to look up the EFS character set mode.  This may become a dynamic
# mode in the future.
sub _efs {
    my $efs;
    if ($use_feature) {
        $efs = VMS::Feature::current("efs_charset");
    } else {
        my $env_efs = $ENV{'DECC$EFS_CHARSET'} || '';
        $efs = $env_efs =~ /^[ET1]/i;
    }
    return $efs;
}

=back

=head1 AUTHOR

Michael G Schwern <schwern@pobox.com>
Ken Williams <kwilliams@cpan.org>
Craig A. Berry <craigberry@mac.com>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut

1;
__END__
Build/Platform/VOS.pm000064400000001030150517530320010367 0ustar00package Module::Build::Platform::VOS;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Base;

our @ISA = qw(Module::Build::Base);


1;
__END__


=head1 NAME

Module::Build::Platform::VOS - Builder class for VOS platforms

=head1 DESCRIPTION

The sole purpose of this module is to inherit from
C<Module::Build::Base>.  Please see the L<Module::Build> for the docs.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Platform/darwin.pm000064400000001472150517530320011216 0ustar00package Module::Build::Platform::darwin;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;

our @ISA = qw(Module::Build::Platform::Unix);

# This class isn't necessary anymore, but we can't delete it, because
# some people might still have the old copy in their @INC, containing
# code we don't want to execute, so we have to make sure an upgrade
# will replace it with this empty subclass.

1;
__END__


=head1 NAME

Module::Build::Platform::darwin - Builder class for Mac OS X platform

=head1 DESCRIPTION

This module provides some routines very specific to the Mac OS X
platform.

Please see the L<Module::Build> for the general docs.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Platform/aix.pm000064400000001452150517530320010511 0ustar00package Module::Build::Platform::aix;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;

our @ISA = qw(Module::Build::Platform::Unix);

# This class isn't necessary anymore, but we can't delete it, because
# some people might still have the old copy in their @INC, containing
# code we don't want to execute, so we have to make sure an upgrade
# will replace it with this empty subclass.

1;
__END__


=head1 NAME

Module::Build::Platform::aix - Builder class for AIX platform

=head1 DESCRIPTION

This module provides some routines very specific to the AIX
platform.

Please see the L<Module::Build> for the general docs.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Platform/os2.pm000064400000001576150517530330010443 0ustar00package Module::Build::Platform::os2;

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;

our @ISA = qw(Module::Build::Platform::Unix);

sub manpage_separator { '.' }

sub have_forkpipe { 0 }

# Copied from ExtUtils::MM_OS2::maybe_command
sub _maybe_command {
    my($self,$file) = @_;
    $file =~ s,[/\\]+,/,g;
    return $file if -x $file && ! -d _;
    return "$file.exe" if -x "$file.exe" && ! -d _;
    return "$file.cmd" if -x "$file.cmd" && ! -d _;
    return;
}

1;
__END__


=head1 NAME

Module::Build::Platform::os2 - Builder class for OS/2 platform

=head1 DESCRIPTION

This module provides some routines very specific to the OS/2
platform.

Please see the L<Module::Build> for the general docs.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 SEE ALSO

perl(1), Module::Build(3), ExtUtils::MakeMaker(3)

=cut
Build/Authoring.pod000064400000025374150517530330010264 0ustar00=head1 NAME

Module::Build::Authoring - Authoring Module::Build modules

=head1 DESCRIPTION

When creating a C<Build.PL> script for a module, something like the
following code will typically be used:

  use Module::Build;
  my $build = Module::Build->new
    (
     module_name => 'Foo::Bar',
     license  => 'perl',
     requires => {
                  'perl'          => '5.6.1',
                  'Some::Module'  => '1.23',
                  'Other::Module' => '>= 1.2, != 1.5, < 2.0',
                 },
    );
  $build->create_build_script;

A simple module could get away with something as short as this for its
C<Build.PL> script:

  use Module::Build;
  Module::Build->new(
    module_name => 'Foo::Bar',
    license     => 'perl',
  )->create_build_script;

The model used by C<Module::Build> is a lot like the C<MakeMaker>
metaphor, with the following correspondences:

   In Module::Build                 In ExtUtils::MakeMaker
  ---------------------------      ------------------------
   Build.PL (initial script)        Makefile.PL (initial script)
   Build (a short perl script)      Makefile (a long Makefile)
   _build/ (saved state info)       various config text in the Makefile

Any customization can be done simply by subclassing C<Module::Build>
and adding a method called (for example) C<ACTION_test>, overriding
the default 'test' action.  You could also add a method called
C<ACTION_whatever>, and then you could perform the action C<Build
whatever>.

For information on providing compatibility with
C<ExtUtils::MakeMaker>, see L<Module::Build::Compat> and
L<http://www.makemaker.org/wiki/index.cgi?ModuleBuildConversionGuide>.


=head1 STRUCTURE

Module::Build creates a class hierarchy conducive to customization.
Here is the parent-child class hierarchy in classy ASCII art:

   /--------------------\
   |   Your::Parent     |  (If you subclass Module::Build)
   \--------------------/
            |
            |
   /--------------------\  (Doesn't define any functionality
   |   Module::Build    |   of its own - just figures out what
   \--------------------/   other modules to load.)
            |
            |
   /-----------------------------------\  (Some values of $^O may
   |   Module::Build::Platform::$^O    |   define specialized functionality.
   \-----------------------------------/   Otherwise it's ...::Default, a
            |                              pass-through class.)
            |
   /--------------------------\
   |   Module::Build::Base    |  (Most of the functionality of 
   \--------------------------/   Module::Build is defined here.)


=head1 SUBCLASSING

Right now, there are two ways to subclass Module::Build.  The first
way is to create a regular module (in a C<.pm> file) that inherits
from Module::Build, and use that module's class instead of using
Module::Build directly:

  ------ in Build.PL: ----------
  #!/usr/bin/perl

  use lib q(/nonstandard/library/path);
  use My::Builder;  # Or whatever you want to call it

  my $build = My::Builder->new
    (
     module_name => 'Foo::Bar',  # All the regular args...
     license     => 'perl',
     dist_author => 'A N Other <me@here.net.au>',
     requires    => { Carp => 0 }
    );
  $build->create_build_script;

This is relatively straightforward, and is the best way to do things
if your My::Builder class contains lots of code.  The
C<create_build_script()> method will ensure that the current value of
C<@INC> (including the C</nonstandard/library/path>) is propagated to
the Build script, so that My::Builder can be found when running build
actions.  If you find that you need to C<chdir> into a different directories
in your subclass methods or actions, be sure to always return to the original
directory (available via the C<base_dir()> method) before returning control
to the parent class.  This is important to avoid data serialization problems.

For very small additions, Module::Build provides a C<subclass()>
method that lets you subclass Module::Build more conveniently, without
creating a separate file for your module:

  ------ in Build.PL: ----------
  #!/usr/bin/perl

  use Module::Build;
  my $class = Module::Build->subclass
    (
     class => 'My::Builder',
     code => q{
       sub ACTION_foo {
         print "I'm fooing to death!\n";
       }
     },
    );

  my $build = $class->new
    (
     module_name => 'Foo::Bar',  # All the regular args...
     license     => 'perl',
     dist_author => 'A N Other <me@here.net.au>',
     requires    => { Carp => 0 }
    );
  $build->create_build_script;

Behind the scenes, this actually does create a C<.pm> file, since the
code you provide must persist after Build.PL is run if it is to be
very useful.

See also the documentation for the L<Module::Build::API/"subclass()">
method.


=head1 PREREQUISITES

=head2 Types of prerequisites

To specify what versions of other modules are used by this
distribution, several types of prerequisites can be defined with the
following parameters:

=over 3

=item configure_requires

Items that must be installed I<before> configuring this distribution
(i.e. before running the F<Build.PL> script).  This might be a
specific minimum version of C<Module::Build> or any other module the
F<Build.PL> needs in order to do its stuff.  Clients like C<CPAN.pm>
or C<CPANPLUS> will be expected to pick C<configure_requires> out of the
F<META.yml> file and install these items before running the
C<Build.PL>.

If no configure_requires is specified, the current version of Module::Build
is automatically added to configure_requires.

=item build_requires

Items that are necessary for building and testing this distribution,
but aren't necessary after installation.  This can help users who only
want to install these items temporarily.  It also helps reduce the
size of the CPAN dependency graph if everything isn't smooshed into
C<requires>.

=item requires

Items that are necessary for basic functioning.

=item recommends

Items that are recommended for enhanced functionality, but there are
ways to use this distribution without having them installed.  You
might also think of this as "can use" or "is aware of" or "changes
behavior in the presence of".

=item test_requires

Items that are necessary for testing.

=item conflicts

Items that can cause problems with this distribution when installed.
This is pretty rare.

=back

=head2 Format of prerequisites

The prerequisites are given in a hash reference, where the keys are
the module names and the values are version specifiers:

  requires => {
               Foo::Module => '2.4',
               Bar::Module => 0,
               Ken::Module => '>= 1.2, != 1.5, < 2.0',
               perl => '5.6.0'
              },

The above four version specifiers have different effects.  The value
C<'2.4'> means that B<at least> version 2.4 of C<Foo::Module> must be
installed.  The value C<0> means that B<any> version of C<Bar::Module>
is acceptable, even if C<Bar::Module> doesn't define a version.  The
more verbose value C<'E<gt>= 1.2, != 1.5, E<lt> 2.0'> means that
C<Ken::Module>'s version must be B<at least> 1.2, B<less than> 2.0,
and B<not equal to> 1.5.  The list of criteria is separated by commas,
and all criteria must be satisfied.

A special C<perl> entry lets you specify the versions of the Perl
interpreter that are supported by your module.  The same version
dependency-checking semantics are available, except that we also
understand perl's new double-dotted version numbers.

=head2 XS Extensions

Modules which need to compile XS code should list C<ExtUtils::CBuilder>
as a C<build_requires> element.


=head1 SAVING CONFIGURATION INFORMATION

Module::Build provides a very convenient way to save configuration
information that your installed modules (or your regression tests) can
access.  If your Build process calls the C<feature()> or
C<config_data()> methods, then a C<Foo::Bar::ConfigData> module will
automatically be created for you, where C<Foo::Bar> is the
C<module_name> parameter as passed to C<new()>.  This module provides
access to the data saved by these methods, and a way to update the
values.  There is also a utility script called C<config_data>
distributed with Module::Build that provides a command line interface
to this same functionality.  See also the generated
C<Foo::Bar::ConfigData> documentation, and the C<config_data>
script's documentation, for more information.


=head1 STARTING MODULE DEVELOPMENT

When starting development on a new module, it's rarely worth your time
to create a tree of all the files by hand.  Some automatic
module-creators are available: the oldest is C<h2xs>, which has
shipped with perl itself for a long time.  Its name reflects the fact
that modules were originally conceived of as a way to wrap up a C
library (thus the C<h> part) into perl extensions (thus the C<xs>
part).

These days, C<h2xs> has largely been superseded by modules like
C<ExtUtils::ModuleMaker>, and C<Module::Starter>.  They have varying
degrees of support for C<Module::Build>.


=head1 AUTOMATION

One advantage of Module::Build is that since it's implemented as Perl
methods, you can invoke these methods directly if you want to install
a module non-interactively.  For instance, the following Perl script
will invoke the entire build/install procedure:

  my $build = Module::Build->new(module_name => 'MyModule');
  $build->dispatch('build');
  $build->dispatch('test');
  $build->dispatch('install');

If any of these steps encounters an error, it will throw a fatal
exception.

You can also pass arguments as part of the build process:

  my $build = Module::Build->new(module_name => 'MyModule');
  $build->dispatch('build');
  $build->dispatch('test', verbose => 1);
  $build->dispatch('install', sitelib => '/my/secret/place/');

Building and installing modules in this way skips creating the
C<Build> script.


=head1 MIGRATION

Note that if you want to provide both a F<Makefile.PL> and a
F<Build.PL> for your distribution, you probably want to add the
following to C<WriteMakefile> in your F<Makefile.PL> so that C<MakeMaker>
doesn't try to run your F<Build.PL> as a normal F<.PL> file:

  PL_FILES => {},

You may also be interested in looking at the C<Module::Build::Compat>
module, which can automatically create various kinds of F<Makefile.PL>
compatibility layers.


=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

Development questions, bug reports, and patches should be sent to the
Module-Build mailing list at <module-build@perl.org>.

Bug reports are also welcome at
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Module-Build>.

The latest development version is available from the Git
repository at <https://github.com/Perl-Toolchain-Gang/Module-Build>


=head1 SEE ALSO

perl(1), L<Module::Build>(3), L<Module::Build::API>(3),
L<Module::Build::Cookbook>(3), L<ExtUtils::MakeMaker>(3), L<YAML>(3)

F<META.yml> Specification:
L<CPAN::Meta::Spec>

L<http://www.dsmit.com/cons/>

L<http://search.cpan.org/dist/PerlBuildSystem/>

=cut
Build/Cookbook.pm000064400000041671150517530330007722 0ustar00package Module::Build::Cookbook;
use strict;
use warnings;
our $VERSION = '0.4224';


=head1 NAME

Module::Build::Cookbook - Examples of Module::Build Usage

=head1 DESCRIPTION

C<Module::Build> isn't conceptually very complicated, but examples are
always helpful.  The following recipes should help developers and/or
installers put together the pieces from the other parts of the
documentation.


=head1 BASIC RECIPES


=head2 Installing modules that use Module::Build

In most cases, you can just issue the following commands:

  perl Build.PL
  ./Build
  ./Build test
  ./Build install

There's nothing complicated here - first you're running a script
called F<Build.PL>, then you're running a (newly-generated) script
called F<Build> and passing it various arguments.

The exact commands may vary a bit depending on how you invoke perl
scripts on your system.  For instance, if you have multiple versions
of perl installed, you can install to one particular perl's library
directories like so:

  /usr/bin/perl5.8.1 Build.PL
  ./Build
  ./Build test
  ./Build install

If you're on Windows where the current directory is always searched
first for scripts, you'll probably do something like this:

  perl Build.PL
  Build
  Build test
  Build install

On the old Mac OS (version 9 or lower) using MacPerl, you can
double-click on the F<Build.PL> script to create the F<Build> script,
then double-click on the F<Build> script to run its C<build>, C<test>,
and C<install> actions.

The F<Build> script knows what perl was used to run F<Build.PL>, so
you don't need to re-invoke the F<Build> script with the complete perl
path each time.  If you invoke it with the I<wrong> perl path, you'll
get a warning or a fatal error.

=head2 Modifying Config.pm values

C<Module::Build> relies heavily on various values from perl's
C<Config.pm> to do its work.  For example, default installation paths
are given by C<installsitelib> and C<installvendorman3dir> and
friends, C linker & compiler settings are given by C<ld>,
C<lddlflags>, C<cc>, C<ccflags>, and so on.  I<If you're pretty sure
you know what you're doing>, you can tell C<Module::Build> to pretend
there are different values in F<Config.pm> than what's really there,
by passing arguments for the C<--config> parameter on the command
line:

  perl Build.PL --config cc=gcc --config ld=gcc

Inside the C<Build.PL> script the same thing can be accomplished by
passing values for the C<config> parameter to C<new()>:

 my $build = Module::Build->new
   (
    ...
    config => { cc => 'gcc', ld => 'gcc' },
    ...
   );

In custom build code, the same thing can be accomplished by calling
the L<Module::Build/config> method:

 $build->config( cc => 'gcc' );     # Set
 $build->config( ld => 'gcc' );     # Set
 ...
 my $linker = $build->config('ld'); # Get


=head2 Installing modules using the programmatic interface

If you need to build, test, and/or install modules from within some
other perl code (as opposed to having the user type installation
commands at the shell), you can use the programmatic interface.
Create a Module::Build object (or an object of a custom Module::Build
subclass) and then invoke its C<dispatch()> method to run various
actions.

  my $build = Module::Build->new
    (
     module_name => 'Foo::Bar',
     license     => 'perl',
     requires    => { 'Some::Module'   => '1.23' },
    );
  $build->dispatch('build');
  $build->dispatch('test', verbose => 1);
  $build->dispatch('install');

The first argument to C<dispatch()> is the name of the action, and any
following arguments are named parameters.

This is the interface we use to test Module::Build itself in the
regression tests.


=head2 Installing to a temporary directory

To create packages for package managers like RedHat's C<rpm> or
Debian's C<deb>, you may need to install to a temporary directory
first and then create the package from that temporary installation.
To do this, specify the C<destdir> parameter to the C<install> action:

  ./Build install --destdir /tmp/my-package-1.003

This essentially just prepends all the installation paths with the
F</tmp/my-package-1.003> directory.


=head2 Installing to a non-standard directory

To install to a non-standard directory (for example, if you don't have
permission to install in the system-wide directories), you can use the
C<install_base> or C<prefix> parameters:

  ./Build install --install_base /foo/bar

See L<Module::Build/"INSTALL PATHS"> for a much more complete
discussion of how installation paths are determined.


=head2 Installing in the same location as ExtUtils::MakeMaker

With the introduction of C<--prefix> in Module::Build 0.28 and
C<INSTALL_BASE> in C<ExtUtils::MakeMaker> 6.31 its easy to get them both
to install to the same locations.

First, ensure you have at least version 0.28 of Module::Build
installed and 6.31 of C<ExtUtils::MakeMaker>.  Prior versions have
differing (and in some cases quite strange) installation behaviors.

The following installation flags are equivalent between
C<ExtUtils::MakeMaker> and C<Module::Build>.

    MakeMaker             Module::Build
    PREFIX=...            --prefix ...
    INSTALL_BASE=...      --install_base ...
    DESTDIR=...           --destdir ...
    LIB=...               --install_path lib=...
    INSTALLDIRS=...       --installdirs ...
    INSTALLDIRS=perl      --installdirs core
    UNINST=...            --uninst ...
    INC=...               --extra_compiler_flags ...
    POLLUTE=1             --extra_compiler_flags -DPERL_POLLUTE

For example, if you are currently installing C<MakeMaker> modules with
this command:

    perl Makefile.PL PREFIX=~
    make test
    make install UNINST=1

You can install into the same location with Module::Build using this:

    perl Build.PL --prefix ~
    ./Build test
    ./Build install --uninst 1

=head3 C<prefix> vs C<install_base>

The behavior of C<prefix> is complicated and depends on
how your Perl is configured.  The resulting installation locations
will vary from machine to machine and even different installations of
Perl on the same machine.  Because of this, it's difficult to document
where C<prefix> will place your modules.

In contrast, C<install_base> has predictable, easy to explain
installation locations.  Now that C<Module::Build> and C<MakeMaker> both
have C<install_base> there is little reason to use C<prefix> other
than to preserve your existing installation locations.  If you are
starting a fresh Perl installation we encourage you to use
C<install_base>.  If you have an existing installation installed via
C<prefix>, consider moving it to an installation structure matching
C<install_base> and using that instead.


=head2 Running a single test file

C<Module::Build> supports running a single test, which enables you to
track down errors more quickly.  Use the following format:

  ./Build test --test_files t/mytest.t

In addition, you may want to run the test in verbose mode to get more
informative output:

  ./Build test --test_files t/mytest.t --verbose 1

I run this so frequently that I define the following shell alias:

  alias t './Build test --verbose 1 --test_files'

So then I can just execute C<t t/mytest.t> to run a single test.


=head1 ADVANCED RECIPES


=head2 Making a CPAN.pm-compatible distribution

New versions of CPAN.pm understand how to use a F<Build.PL> script,
but old versions don't.  If authors want to help users who have old
versions, some form of F<Makefile.PL> should be supplied.  The easiest
way to accomplish this is to use the C<create_makefile_pl> parameter to
C<< Module::Build->new() >> in the C<Build.PL> script, which can
create various flavors of F<Makefile.PL> during the C<dist> action.

As a best practice, we recommend using the "traditional" style of
F<Makefile.PL> unless your distribution has needs that can't be
accomplished that way.

The C<Module::Build::Compat> module, which is part of
C<Module::Build>'s distribution, is responsible for creating these
F<Makefile.PL>s.  Please see L<Module::Build::Compat> for the details.


=head2 Changing the order of the build process

The C<build_elements> property specifies the steps C<Module::Build>
will take when building a distribution.  To change the build order,
change the order of the entries in that property:

  # Process pod files first
  my @e = @{$build->build_elements};
  my ($i) = grep {$e[$_] eq 'pod'} 0..$#e;
  unshift @e, splice @e, $i, 1;

Currently, C<build_elements> has the following default value:

  [qw( PL support pm xs pod script )]

Do take care when altering this property, since there may be
non-obvious (and non-documented!) ordering dependencies in the
C<Module::Build> code.


=head2 Adding new file types to the build process

Sometimes you might have extra types of files that you want to install
alongside the standard types like F<.pm> and F<.pod> files.  For
instance, you might have a F<Bar.dat> file containing some data
related to the C<Foo::Bar> module and you'd like for it to end up as
F<Foo/Bar.dat> somewhere in perl's C<@INC> path so C<Foo::Bar> can
access it easily at runtime.  The following code from a sample
C<Build.PL> file demonstrates how to accomplish this:

  use Module::Build;
  my $build = Module::Build->new
    (
     module_name => 'Foo::Bar',
     ...other stuff here...
    );
  $build->add_build_element('dat');
  $build->create_build_script;

This will find all F<.dat> files in the F<lib/> directory, copy them
to the F<blib/lib/> directory during the C<build> action, and install
them during the C<install> action.

If your extra files aren't located in the C<lib/> directory in your
distribution, you can explicitly say where they are, just as you'd do
with F<.pm> or F<.pod> files:

  use Module::Build;
  my $build = new Module::Build
    (
     module_name => 'Foo::Bar',
     dat_files => {'some/dir/Bar.dat' => 'lib/Foo/Bar.dat'},
     ...other stuff here...
    );
  $build->add_build_element('dat');
  $build->create_build_script;

If your extra files actually need to be created on the user's machine,
or if they need some other kind of special processing, you'll probably
want to subclass C<Module::Build> and create a special method to
process them, named C<process_${kind}_files()>:

  use Module::Build;
  my $class = Module::Build->subclass(code => <<'EOF');
    sub process_dat_files {
      my $self = shift;
      ... locate and process *.dat files,
      ... and create something in blib/lib/
    }
  EOF
  my $build = $class->new
    (
     module_name => 'Foo::Bar',
     ...other stuff here...
    );
  $build->add_build_element('dat');
  $build->create_build_script;

If your extra files don't go in F<lib/> but in some other place, see
L<"Adding new elements to the install process"> for how to actually
get them installed.

Please note that these examples use some capabilities of Module::Build
that first appeared in version 0.26.  Before that it could
still be done, but the simple cases took a bit more work.


=head2 Adding new elements to the install process

By default, Module::Build creates seven subdirectories of the F<blib>
directory during the build process: F<lib>, F<arch>, F<bin>,
F<script>, F<bindoc>, F<libdoc>, and F<html> (some of these may be
missing or empty if there's nothing to go in them).  Anything copied
to these directories during the build will eventually be installed
during the C<install> action (see L<Module::Build/"INSTALL PATHS">.

If you need to create a new custom type of installable element, e.g. C<conf>,
then you need to tell Module::Build where things in F<blib/conf/>
should be installed.  To do this, use the C<install_path> parameter to
the C<new()> method:

  my $build = Module::Build->new
    (
     ...other stuff here...
     install_path => { conf => $installation_path }
    );

Or you can call the C<install_path()> method later:

  $build->install_path(conf => $installation_path);

The user may also specify the path on the command line:

  perl Build.PL --install_path conf=/foo/path/etc

The important part, though, is that I<somehow> the install path needs
to be set, or else nothing in the F<blib/conf/> directory will get
installed, and a runtime error during the C<install> action will
result.

See also L<"Adding new file types to the build process"> for how to
create the stuff in F<blib/conf/> in the first place.


=head1 EXAMPLES ON CPAN

Several distributions on CPAN are making good use of various features
of Module::Build.  They can serve as real-world examples for others.


=head2 SVN-Notify-Mirror

L<http://search.cpan.org/~jpeacock/SVN-Notify-Mirror/>

John Peacock, author of the C<SVN-Notify-Mirror> distribution, says:

=over 4

=item 1. Using C<auto_features>, I check to see whether two optional
modules are available - SVN::Notify::Config and Net::SSH;

=item 2. If the S::N::Config module is loaded, I automatically
generate test files for it during Build (using the C<PL_files>
property).

=item 3. If the C<ssh_feature> is available, I ask if the user wishes
to perform the ssh tests (since it requires a little preliminary
setup);

=item 4. Only if the user has C<ssh_feature> and answers yes to the
testing, do I generate a test file.

I'm sure I could not have handled this complexity with EU::MM, but it
was very easy to do with M::B.

=back


=head2 Modifying an action

Sometimes you might need an to have an action, say C<./Build install>,
do something unusual.  For instance, you might need to change the
ownership of a file or do something else peculiar to your application.

You can subclass C<Module::Build> on the fly using the C<subclass()>
method and override the methods that perform the actions.  You may
need to read through C<Module::Build::Authoring> and
C<Module::Build::API> to find the methods you want to override.  All
"action" methods are implemented by a method called "ACTION_" followed
by the action's name, so here's an example of how it would work for
the C<install> action:

  # Build.PL
  use Module::Build;
  my $class = Module::Build->subclass(
      class => "Module::Build::Custom",
      code => <<'SUBCLASS' );

  sub ACTION_install {
      my $self = shift;
      # YOUR CODE HERE
      $self->SUPER::ACTION_install;
  }
  SUBCLASS

  $class->new(
      module_name => 'Your::Module',
      # rest of the usual Module::Build parameters
  )->create_build_script;


=head2 Adding an action

You can add a new C<./Build> action simply by writing the method for
it in your subclass.  Use C<depends_on> to declare that another action
must have been run before your action.

For example, let's say you wanted to be able to write C<./Build
commit> to test your code and commit it to Subversion.

  # Build.PL
  use Module::Build;
  my $class = Module::Build->subclass(
      class => "Module::Build::Custom",
      code => <<'SUBCLASS' );

  sub ACTION_commit {
      my $self = shift;

      $self->depends_on("test");
      $self->do_system(qw(svn commit));
  }
  SUBCLASS


=head2 Bundling Module::Build

Note: This section probably needs an update as the technology improves
(see contrib/bundle.pl in the distribution).

Suppose you want to use some new-ish features of Module::Build,
e.g. newer than the version of Module::Build your users are likely to
already have installed on their systems.  The first thing you should
do is set C<configure_requires> to your minimum version of
Module::Build.  See L<Module::Build::Authoring>.

But not every build system honors C<configure_requires> yet.  Here's
how you can ship a copy of Module::Build, but still use a newer
installed version to take advantage of any bug fixes and upgrades.

First, install Module::Build into F<Your-Project/inc/Module-Build>.
CPAN will not index anything in the F<inc> directory so this copy will
not show up in CPAN searches.

    cd Module-Build
    perl Build.PL --install_base /path/to/Your-Project/inc/Module-Build
    ./Build test
    ./Build install

You should now have all the Module::Build .pm files in
F<Your-Project/inc/Module-Build/lib/perl5>.

Next, add this to the top of your F<Build.PL>.

    my $Bundled_MB = 0.30;  # or whatever version it was.

    # Find out what version of Module::Build is installed or fail quietly.
    # This should be cross-platform.
    my $Installed_MB =
        `$^X -e "eval q{require Module::Build; print Module::Build->VERSION} or exit 1"`;

    # some operating systems put a newline at the end of every print.
    chomp $Installed_MB;

    $Installed_MB = 0 if $?;

    # Use our bundled copy of Module::Build if it's newer than the installed.
    unshift @INC, "inc/Module-Build/lib/perl5" if $Bundled_MB > $Installed_MB;

    require Module::Build;

And write the rest of your F<Build.PL> normally.  Module::Build will
remember your change to C<@INC> and use it when you run F<./Build>.

In the future, we hope to provide a more automated solution for this
scenario; see C<inc/latest.pm> in the Module::Build distribution for
one indication of the direction we're moving.


=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>


=head1 COPYRIGHT

Copyright (c) 2001-2008 Ken Williams.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.


=head1 SEE ALSO

perl(1), L<Module::Build>(3), L<Module::Build::Authoring>(3),
L<Module::Build::API>(3)

=cut
Build/PPMMaker.pm000064400000010672150517530330007565 0ustar00package Module::Build::PPMMaker;

use strict;
use warnings;
use Config;

our $VERSION = '0.4224';
$VERSION = eval $VERSION;

# This code is mostly borrowed from ExtUtils::MM_Unix 6.10_03, with a
# few tweaks based on the PPD spec at
# http://www.xav.com/perl/site/lib/XML/PPD.html

# The PPD spec is based on <http://www.w3.org/TR/NOTE-OSD>

sub new {
  my $package = shift;
  return bless {@_}, $package;
}

sub make_ppd {
  my ($self, %args) = @_;
  my $build = delete $args{build};

  my @codebase;
  if (exists $args{codebase}) {
    @codebase = ref $args{codebase} ? @{$args{codebase}} : ($args{codebase});
  } else {
    my $distfile = $build->ppm_name . '.tar.gz';
    print "Using default codebase '$distfile'\n";
    @codebase = ($distfile);
  }

  my %dist;
  foreach my $info (qw(name author abstract version)) {
    my $method = "dist_$info";
    $dist{$info} = $build->$method() or die "Can't determine distribution's $info\n";
  }

  $self->_simple_xml_escape($_) foreach $dist{abstract}, @{$dist{author}};

  # TODO: could add <LICENSE HREF=...> tag if we knew what the URLs were for
  # various licenses
  my $ppd = <<"PPD";
<SOFTPKG NAME=\"$dist{name}\" VERSION=\"$dist{version}\">
    <ABSTRACT>$dist{abstract}</ABSTRACT>
@{[ join "\n", map "    <AUTHOR>$_</AUTHOR>", @{$dist{author}} ]}
    <IMPLEMENTATION>
PPD

  # We don't include recommended dependencies because PPD has no way
  # to distinguish them from normal dependencies.  We don't include
  # build_requires dependencies because the PPM installer doesn't
  # build or test before installing.  And obviously we don't include
  # conflicts either.

  foreach my $type (qw(requires)) {
    my $prereq = $build->$type();
    foreach my $modname (sort keys %$prereq) {
      next if $modname eq 'perl';

      my $min_version = '0.0';
      foreach my $c ($build->_parse_conditions($prereq->{$modname})) {
        my ($op, $version) = $c =~ /^\s*  (<=?|>=?|==|!=)  \s*  ([\w.]+)  \s*$/x;

        # This is a nasty hack because it fails if there is no >= op
        if ($op eq '>=') {
          $min_version = $version;
          last;
        }
      }

      # PPM4 spec requires a '::' for top level modules
      $modname .= '::' unless $modname =~ /::/;

      $ppd .= qq!        <REQUIRE NAME="$modname" VERSION="$min_version" />\n!;
    }
  }

  # We only include these tags if this module involves XS, on the
  # assumption that pure Perl modules will work on any OS.
  if (keys %{$build->find_xs_files}) {
    my $perl_version = $self->_ppd_version($build->perl_version);
    $ppd .= sprintf(<<'EOF', $self->_varchname($build->config) );
        <ARCHITECTURE NAME="%s" />
EOF
  }

  foreach my $codebase (@codebase) {
    $self->_simple_xml_escape($codebase);
    $ppd .= sprintf(<<'EOF', $codebase);
        <CODEBASE HREF="%s" />
EOF
  }

  $ppd .= <<'EOF';
    </IMPLEMENTATION>
</SOFTPKG>
EOF

  my $ppd_file = "$dist{name}.ppd";
  open(my $fh, '>', $ppd_file)
    or die "Cannot write to $ppd_file: $!";

  binmode($fh, ":utf8")
    if $] >= 5.008 && $Config{useperlio};
  print $fh $ppd;
  close $fh;

  return $ppd_file;
}

sub _ppd_version {
  my ($self, $version) = @_;

  # generates something like "0,18,0,0"
  return join ',', (split(/\./, $version), (0)x4)[0..3];
}

sub _varchname {  # Copied from PPM.pm
  my ($self, $config) = @_;
  my $varchname = $config->{archname};
  # Append "-5.8" to architecture name for Perl 5.8 and later
  if ($] >= 5.008) {
      my $vstring = sprintf "%vd", $^V;
      $vstring =~ s/\.\d+$//;
      $varchname .= "-$vstring";
  }
  return $varchname;
}

{
  my %escapes = (
		 "\n" => "\\n",
		 '"' => '&quot;',
		 '&' => '&amp;',
		 '>' => '&gt;',
		 '<' => '&lt;',
		);
  my $rx = join '|', keys %escapes;

  sub _simple_xml_escape {
    $_[1] =~ s/($rx)/$escapes{$1}/go;
  }
}

1;
__END__


=head1 NAME

Module::Build::PPMMaker - Perl Package Manager file creation

=head1 SYNOPSIS

  On the command line, builds a .ppd file:
  ./Build ppd


=head1 DESCRIPTION

This package contains the code that builds F<.ppd> "Perl Package
Description" files, in support of ActiveState's "Perl Package
Manager".  Details are here:
L<http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/>


=head1 AUTHOR

Dave Rolsky <autarch@urth.org>, Ken Williams <kwilliams@cpan.org>


=head1 COPYRIGHT

Copyright (c) 2001-2006 Ken Williams.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.


=head1 SEE ALSO

perl(1), Module::Build(3)

=cut
Build/Notes.pm000064400000020170150517530330007233 0ustar00package Module::Build::Notes;

# A class for persistent hashes

use strict;
use warnings;
our $VERSION = '0.4224';
$VERSION = eval $VERSION;
use Data::Dumper;
use Module::Build::Dumper;

sub new {
  my ($class, %args) = @_;
  my $file = delete $args{file} or die "Missing required parameter 'file' to new()";
  my $self = bless {
		    disk => {},
		    new  => {},
		    file => $file,
		    %args,
		   }, $class;
}

sub restore {
  my $self = shift;

  open(my $fh, '<', $self->{file}) or die "Can't read $self->{file}: $!";
  $self->{disk} = eval do {local $/; <$fh>};
  die $@ if $@;
  close $fh;
  $self->{new} = {};
}

sub access {
  my $self = shift;
  return $self->read() unless @_;

  my $key = shift;
  return $self->read($key) unless @_;

  my $value = shift;
  $self->write({ $key => $value });
  return $self->read($key);
}

sub has_data {
  my $self = shift;
  return keys %{$self->read()} > 0;
}

sub exists {
  my ($self, $key) = @_;
  return exists($self->{new}{$key}) || exists($self->{disk}{$key});
}

sub read {
  my $self = shift;

  if (@_) {
    # Return 1 key as a scalar
    my $key = shift;
    return $self->{new}{$key} if exists $self->{new}{$key};
    return $self->{disk}{$key};
  }

  # Return all data
  my $out = (keys %{$self->{new}}
	     ? {%{$self->{disk}}, %{$self->{new}}}
	     : $self->{disk});
  return wantarray ? %$out : $out;
}

sub _same {
  my ($self, $x, $y) = @_;
  return 1 if !defined($x) and !defined($y);
  return 0 if !defined($x) or  !defined($y);
  return $x eq $y;
}

sub write {
  my ($self, $href) = @_;
  $href ||= {};

  @{$self->{new}}{ keys %$href } = values %$href;  # Merge

  # Do some optimization to avoid unnecessary writes
  foreach my $key (keys %{ $self->{new} }) {
    next if ref $self->{new}{$key};
    next if ref $self->{disk}{$key} or !exists $self->{disk}{$key};
    delete $self->{new}{$key} if $self->_same($self->{new}{$key}, $self->{disk}{$key});
  }

  if (my $file = $self->{file}) {
    my ($vol, $dir, $base) = File::Spec->splitpath($file);
    $dir = File::Spec->catpath($vol, $dir, '');
    return unless -e $dir && -d $dir;  # The user needs to arrange for this

    return if -e $file and !keys %{ $self->{new} };  # Nothing to do

    @{$self->{disk}}{ keys %{$self->{new}} } = values %{$self->{new}};  # Merge
    $self->_dump($file, $self->{disk});

    $self->{new} = {};
  }
  return $self->read;
}

sub _dump {
  my ($self, $file, $data) = @_;

  open(my $fh, '>', $file) or die "Can't create '$file': $!";
  print {$fh} Module::Build::Dumper->_data_dump($data);
  close $fh;
}

my $orig_template = do { local $/; <DATA> };
close DATA;

sub write_config_data {
  my ($self, %args) = @_;

  my $template = $orig_template;
  $template =~ s/NOTES_NAME/$args{config_module}/g;
  $template =~ s/MODULE_NAME/$args{module}/g;
  $template =~ s/=begin private\n//;
  $template =~ s/=end private/=cut/;

  # strip out private POD markers we use to keep pod from being
  # recognized for *this* source file
  $template =~ s{$_\n}{} for '=begin private', '=end private';

  open(my $fh, '>', $args{file}) or die "Can't create '$args{file}': $!";
  print {$fh} $template;
  print {$fh} "\n__DATA__\n";
  print {$fh} Module::Build::Dumper->_data_dump([$args{config_data}, $args{feature}, $args{auto_features}]);
  close $fh;
}

1;


=head1 NAME

Module::Build::Notes - Create persistent distribution configuration modules

=head1 DESCRIPTION

This module is used internally by Module::Build to create persistent
configuration files that can be installed with a distribution.  See
L<Module::Build::ConfigData> for an example.

=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

=head1 COPYRIGHT

Copyright (c) 2001-2006 Ken Williams.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=head1 SEE ALSO

perl(1), L<Module::Build>(3)

=cut

__DATA__
package NOTES_NAME;
use strict;
my $arrayref = eval do {local $/; <DATA>}
  or die "Couldn't load ConfigData data: $@";
close DATA;
my ($config, $features, $auto_features) = @$arrayref;

sub config { $config->{$_[1]} }

sub set_config { $config->{$_[1]} = $_[2] }
sub set_feature { $features->{$_[1]} = 0+!!$_[2] }  # Constrain to 1 or 0

sub auto_feature_names { sort grep !exists $features->{$_}, keys %$auto_features }

sub feature_names {
  my @features = (sort keys %$features, auto_feature_names());
  @features;
}

sub config_names  { sort keys %$config }

sub write {
  my $me = __FILE__;

  # Can't use Module::Build::Dumper here because M::B is only a
  # build-time prereq of this module
  require Data::Dumper;

  my $mode_orig = (stat $me)[2] & 07777;
  chmod($mode_orig | 0222, $me); # Make it writeable
  open(my $fh, '+<', $me) or die "Can't rewrite $me: $!";
  seek($fh, 0, 0);
  while (<$fh>) {
    last if /^__DATA__$/;
  }
  die "Couldn't find __DATA__ token in $me" if eof($fh);

  seek($fh, tell($fh), 0);
  my $data = [$config, $features, $auto_features];
  print($fh 'do{ my '
	      . Data::Dumper->new([$data],['x'])->Purity(1)->Dump()
	      . '$x; }' );
  truncate($fh, tell($fh));
  close $fh;

  chmod($mode_orig, $me)
    or warn "Couldn't restore permissions on $me: $!";
}

sub feature {
  my ($package, $key) = @_;
  return $features->{$key} if exists $features->{$key};

  my $info = $auto_features->{$key} or return 0;

  require Module::Build;  # XXX should get rid of this
  foreach my $type (sort keys %$info) {
    my $prereqs = $info->{$type};
    next if $type eq 'description' || $type eq 'recommends';

    foreach my $modname (sort keys %$prereqs) {
      my $status = Module::Build->check_installed_status($modname, $prereqs->{$modname});
      if ((!$status->{ok}) xor ($type =~ /conflicts$/)) { return 0; }
      if ( ! eval "require $modname; 1" ) { return 0; }
    }
  }
  return 1;
}

=begin private

=head1 NAME

NOTES_NAME - Configuration for MODULE_NAME

=head1 SYNOPSIS

  use NOTES_NAME;
  $value = NOTES_NAME->config('foo');
  $value = NOTES_NAME->feature('bar');

  @names = NOTES_NAME->config_names;
  @names = NOTES_NAME->feature_names;

  NOTES_NAME->set_config(foo => $new_value);
  NOTES_NAME->set_feature(bar => $new_value);
  NOTES_NAME->write;  # Save changes


=head1 DESCRIPTION

This module holds the configuration data for the C<MODULE_NAME>
module.  It also provides a programmatic interface for getting or
setting that configuration data.  Note that in order to actually make
changes, you'll have to have write access to the C<NOTES_NAME>
module, and you should attempt to understand the repercussions of your
actions.


=head1 METHODS

=over 4

=item config($name)

Given a string argument, returns the value of the configuration item
by that name, or C<undef> if no such item exists.

=item feature($name)

Given a string argument, returns the value of the feature by that
name, or C<undef> if no such feature exists.

=item set_config($name, $value)

Sets the configuration item with the given name to the given value.
The value may be any Perl scalar that will serialize correctly using
C<Data::Dumper>.  This includes references, objects (usually), and
complex data structures.  It probably does not include transient
things like filehandles or sockets.

=item set_feature($name, $value)

Sets the feature with the given name to the given boolean value.  The
value will be converted to 0 or 1 automatically.

=item config_names()

Returns a list of all the names of config items currently defined in
C<NOTES_NAME>, or in scalar context the number of items.

=item feature_names()

Returns a list of all the names of features currently defined in
C<NOTES_NAME>, or in scalar context the number of features.

=item auto_feature_names()

Returns a list of all the names of features whose availability is
dynamically determined, or in scalar context the number of such
features.  Does not include such features that have later been set to
a fixed value.

=item write()

Commits any changes from C<set_config()> and C<set_feature()> to disk.
Requires write access to the C<NOTES_NAME> module.

=back


=head1 AUTHOR

C<NOTES_NAME> was automatically created using C<Module::Build>.
C<Module::Build> was written by Ken Williams, but he holds no
authorship claim or copyright claim to the contents of C<NOTES_NAME>.

=end private

Build/Compat.pm000064400000044152150517530330007374 0ustar00package Module::Build::Compat;

use strict;
use warnings;
our $VERSION = '0.4224';

use File::Basename ();
use File::Spec;
use Config;
use Module::Build;
use Module::Metadata;
use version;
use Data::Dumper;

my %convert_installdirs = (
    PERL        => 'core',
    SITE        => 'site',
    VENDOR      => 'vendor',
);

my %makefile_to_build =
  (
   TEST_VERBOSE => 'verbose',
   VERBINST     => 'verbose',
   INC          => sub { map {(extra_compiler_flags => $_)} Module::Build->split_like_shell(shift) },
   POLLUTE      => sub { (extra_compiler_flags => '-DPERL_POLLUTE') },
   INSTALLDIRS  => sub { (installdirs => $convert_installdirs{uc shift()}) },
   LIB          => sub {
       my $lib = shift;
       my %config = (
           installprivlib  => $lib,
           installsitelib  => $lib,
           installarchlib  => "$lib/$Config{archname}",
           installsitearch => "$lib/$Config{archname}"
       );
       return map { (config => "$_=$config{$_}") } sort keys %config;
   },

   # Convert INSTALLVENDORLIB and friends.
   (
       map {
           my $name = $_;
           $name => sub {
                 my @ret = (config => lc($name) . "=" . shift );
                 print STDERR "# Converted to @ret\n";

                 return @ret;
           }
       } qw(
         INSTALLARCHLIB  INSTALLSITEARCH     INSTALLVENDORARCH
         INSTALLPRIVLIB  INSTALLSITELIB      INSTALLVENDORLIB
         INSTALLBIN      INSTALLSITEBIN      INSTALLVENDORBIN
         INSTALLSCRIPT   INSTALLSITESCRIPT   INSTALLVENDORSCRIPT
         INSTALLMAN1DIR  INSTALLSITEMAN1DIR  INSTALLVENDORMAN1DIR
         INSTALLMAN3DIR  INSTALLSITEMAN3DIR  INSTALLVENDORMAN3DIR
       )
   ),

   # Some names they have in common
   map {$_, lc($_)} qw(DESTDIR PREFIX INSTALL_BASE UNINST),
  );

my %macro_to_build = %makefile_to_build;
# "LIB=foo make" is not the same as "perl Makefile.PL LIB=foo"
delete $macro_to_build{LIB};

sub _merge_prereq {
  my ($req, $breq) = @_;
  $req ||= {};
  $breq ||= {};

  # validate formats
  for my $p ( $req, $breq ) {
    for my $k (sort keys %$p) {
      next if $k eq 'perl';

      my $v_obj = eval { version->new($p->{$k}) };
      if ( ! defined $v_obj ) {
          die "A prereq of the form '$p->{$k}' for '$k' is not supported by Module::Build::Compat ( use a simpler version like '0.05' or 'v1.4.25' )\n";
      }

      # It seems like a lot of people trip over "0.1.2" stuff, so we help them here...
      if ( $v_obj->is_qv ) {
        my $proper_ver = $v_obj->numify;
        warn "Dotted-decimal prereq '$p->{$k}' for '$k' is not portable - converting it to '$proper_ver'\n";
        $p->{$k} = $proper_ver;
      }
    }
  }
  # merge
  my $merge = { %$req };
  for my $k ( keys %$breq ) {
    my $v1 = $merge->{$k} || 0;
    my $v2 = $breq->{$k};
    $merge->{$k} = $v1 > $v2 ? $v1 : $v2;
  }
  return %$merge;
}


sub create_makefile_pl {
  my ($package, $type, $build, %args) = @_;

  die "Don't know how to build Makefile.PL of type '$type'"
    unless $type =~ /^(small|passthrough|traditional)$/;

  if ($type eq 'passthrough') {
    $build->log_warn(<<"HERE");

IMPORTANT NOTE: The '$type' style of Makefile.PL is deprecated and
may be removed in a future version of Module::Build in favor of the
'configure_requires' property.  See Module::Build::Compat
documentation for details.

HERE
  }

  my $fh;
  if ($args{fh}) {
    $fh = $args{fh};
  } else {
    $args{file} ||= 'Makefile.PL';
    local $build->{properties}{quiet} = 1;
    $build->delete_filetree($args{file});
    open($fh, '>', "$args{file}") or die "Can't write $args{file}: $!";
  }

  print {$fh} "# Note: this file was auto-generated by ", __PACKAGE__, " version $VERSION\n";

  # Minimum perl version should be specified as "require 5.XXXXXX" in
  # Makefile.PL
  my $requires = $build->requires;
  if ( my $minimum_perl = $requires->{perl} ) {
    my $min_ver = version->new($minimum_perl)->numify;
    print {$fh} "require $min_ver;\n";
  }

  # If a *bundled* custom subclass is being used, make sure we add its
  # directory to @INC.  Also, lib.pm always needs paths in Unix format.
  my $subclass_load = '';
  if (ref($build) ne "Module::Build") {
    my $subclass_dir = $package->subclass_dir($build);

    if (File::Spec->file_name_is_absolute($subclass_dir)) {
      my $base_dir = $build->base_dir;

      if ($build->dir_contains($base_dir, $subclass_dir)) {
	$subclass_dir = File::Spec->abs2rel($subclass_dir, $base_dir);
	$subclass_dir = $package->unixify_dir($subclass_dir);
        $subclass_load = "use lib '$subclass_dir';";
      }
      # Otherwise, leave it the empty string

    } else {
      $subclass_dir = $package->unixify_dir($subclass_dir);
      $subclass_load = "use lib '$subclass_dir';";
    }
  }

  if ($type eq 'small') {
    printf {$fh} <<'EOF', $subclass_load, ref($build), ref($build);
    use Module::Build::Compat 0.02;
    %s
    Module::Build::Compat->run_build_pl(args => \@ARGV);
    require %s;
    Module::Build::Compat->write_makefile(build_class => '%s');
EOF

  } elsif ($type eq 'passthrough') {
    printf {$fh} <<'EOF', $subclass_load, ref($build), ref($build);

    unless (eval "use Module::Build::Compat 0.02; 1" ) {
      print "This module requires Module::Build to install itself.\n";

      require ExtUtils::MakeMaker;
      my $yn = ExtUtils::MakeMaker::prompt
	('  Install Module::Build now from CPAN?', 'y');

      unless ($yn =~ /^y/i) {
	die " *** Cannot install without Module::Build.  Exiting ...\n";
      }

      require Cwd;
      require File::Spec;
      require CPAN;

      # Save this 'cause CPAN will chdir all over the place.
      my $cwd = Cwd::cwd();

      CPAN::Shell->install('Module::Build::Compat');
      CPAN::Shell->expand("Module", "Module::Build::Compat")->uptodate
	or die "Couldn't install Module::Build, giving up.\n";

      chdir $cwd or die "Cannot chdir() back to $cwd: $!";
    }
    eval "use Module::Build::Compat 0.02; 1" or die $@;
    %s
    Module::Build::Compat->run_build_pl(args => \@ARGV);
    my $build_script = 'Build';
    $build_script .= '.com' if $^O eq 'VMS';
    exit(0) unless(-e $build_script); # cpantesters convention
    require %s;
    Module::Build::Compat->write_makefile(build_class => '%s');
EOF

  } elsif ($type eq 'traditional') {

    my (%MM_Args, %prereq);
    if (eval "use Tie::IxHash 1.2; 1") {
      tie %MM_Args, 'Tie::IxHash'; # Don't care if it fails here
      tie %prereq,  'Tie::IxHash'; # Don't care if it fails here
    }

    my %name = ($build->module_name
		? (NAME => $build->module_name)
		: (DISTNAME => $build->dist_name));

    my %version = ($build->dist_version_from
		   ? (VERSION_FROM => $build->dist_version_from)
		   : (VERSION      => $build->dist_version)
		  );
    %MM_Args = (%name, %version);

    %prereq = _merge_prereq( $build->requires, $build->build_requires );
    %prereq = map {$_, $prereq{$_}} sort keys %prereq;

     delete $prereq{perl};
    $MM_Args{PREREQ_PM} = \%prereq;

    $MM_Args{INSTALLDIRS} = $build->installdirs eq 'core' ? 'perl' : $build->installdirs;

    $MM_Args{EXE_FILES} = [ sort keys %{$build->script_files} ] if $build->script_files;

    $MM_Args{PL_FILES} = $build->PL_files || {};

    if ($build->recursive_test_files) {
        $MM_Args{test} = { TESTS => join q{ }, $package->_test_globs($build) };
    }

    local $Data::Dumper::Terse = 1;
    my $args = Data::Dumper::Dumper(\%MM_Args);
    $args =~ s/\{(.*)\}/($1)/s;

    print $fh <<"EOF";
use ExtUtils::MakeMaker;
WriteMakefile
$args;
EOF
  }
}

sub _test_globs {
  my ($self, $build) = @_;

  return map { File::Spec->catfile($_, '*.t') }
         @{$build->rscan_dir('t', sub { -d $File::Find::name })};
}

sub subclass_dir {
  my ($self, $build) = @_;

  return (Module::Metadata->find_module_dir_by_name(ref $build)
	  || File::Spec->catdir($build->config_dir, 'lib'));
}

sub unixify_dir {
  my ($self, $path) = @_;
  return join '/', File::Spec->splitdir($path);
}

sub makefile_to_build_args {
  my $class = shift;
  my @out;
  foreach my $arg (@_) {
    next if $arg eq '';

    my ($key, $val) = ($arg =~ /^(\w+)=(.+)/ ? ($1, $2) :
		       die "Malformed argument '$arg'");

    # Do tilde-expansion if it looks like a tilde prefixed path
    ( $val ) = Module::Build->_detildefy( $val ) if $val =~ /^~/;

    if (exists $makefile_to_build{$key}) {
      my $trans = $makefile_to_build{$key};
      push @out, $class->_argvify( ref($trans) ? $trans->($val) : ($trans => $val) );
    } elsif (exists $Config{lc($key)}) {
      push @out, $class->_argvify( config => lc($key) . "=$val" );
    } else {
      # Assume M::B can handle it in lowercase form
      push @out, $class->_argvify("\L$key" => $val);
    }
  }
  return @out;
}

sub _argvify {
  my ($self, @pairs) = @_;
  my @out;
  while (@pairs) {
    my ($k, $v) = splice @pairs, 0, 2;
    push @out, ("--$k", $v);
  }
  return @out;
}

sub makefile_to_build_macros {
  my @out;
  my %config; # must accumulate and return as a hashref
  foreach my $macro (sort keys %macro_to_build) {
    my $trans = $macro_to_build{$macro};
    # On some platforms (e.g. Cygwin with 'make'), the mere presence
    # of "EXPORT: FOO" in the Makefile will make $ENV{FOO} defined.
    # Therefore we check length() too.
    next unless exists $ENV{$macro} && length $ENV{$macro};
    my $val = $ENV{$macro};
    my @args = ref($trans) ? $trans->($val) : ($trans => $val);
    while (@args) {
      my ($k, $v) = splice(@args, 0, 2);
      if ( $k eq 'config' ) {
        if ( $v =~ /^([^=]+)=(.*)$/ ) {
          $config{$1} = $2;
        }
        else {
          warn "Couldn't parse config '$v'\n";
        }
      }
      else {
        push @out, ($k => $v);
      }
    }
  }
  push @out, (config => \%config) if %config;
  return @out;
}

sub run_build_pl {
  my ($pack, %in) = @_;
  $in{script} ||= 'Build.PL';
  my @args = $in{args} ? $pack->makefile_to_build_args(@{$in{args}}) : ();
  print "# running $in{script} @args\n";
  Module::Build->run_perl_script($in{script}, [], \@args) or die "Couldn't run $in{script}: $!";
}

sub fake_makefile {
  my ($self, %args) = @_;
  unless (exists $args{build_class}) {
    warn "Unknown 'build_class', defaulting to 'Module::Build'\n";
    $args{build_class} = 'Module::Build';
  }
  my $class = $args{build_class};

  my $perl = $class->find_perl_interpreter;

  # VMS MMS/MMK need to use MCR to run the Perl image.
  $perl = 'MCR ' . $perl if $self->_is_vms_mms;

  my $noop = ($class->is_windowsish ? 'rem>nul'  :
	      $self->_is_vms_mms    ? 'Continue' :
	      'true');

  my $filetype = $class->is_vmsish ? '.COM' : '';

  my $Build = 'Build' . $filetype . ' --makefile_env_macros 1';
  my $unlink = $class->oneliner('1 while unlink $ARGV[0]', [], [$args{makefile}]);
  $unlink =~ s/\$/\$\$/g unless $class->is_vmsish;

  my $maketext = join '', map { "$_=\n" } sort keys %macro_to_build;

  $maketext .= ($^O eq 'os2' ? "SHELL = sh\n\n"
                    : $^O eq 'MSWin32' && $Config{make} =~ /gmake/
                    ? "SHELL = $ENV{COMSPEC}\n\n" : "\n\n");

  $maketext .= <<"EOF";
all : force_do_it
	$perl $Build
realclean : force_do_it
	$perl $Build realclean
	$unlink
distclean : force_do_it
	$perl $Build distclean
	$unlink


force_do_it :
	@ $noop
EOF

  foreach my $action ($class->known_actions) {
    next if $action =~ /^(all|distclean|realclean|force_do_it)$/;  # Don't double-define
    $maketext .= <<"EOF";
$action : force_do_it
	$perl $Build $action
EOF
  }

  if ($self->_is_vms_mms) {
    # Roll our own .EXPORT as MMS/MMK don't honor that directive.
    $maketext .= "\n.FIRST\n\t\@ $noop\n";
    for my $macro (sort keys %macro_to_build) {
      $maketext .= ".IFDEF $macro\n\tDEFINE $macro \"\$($macro)\"\n.ENDIF\n";
    }
    $maketext .= "\n";
  }
  else {
    $maketext .= "\n.EXPORT : " . join(' ', sort keys %macro_to_build) . "\n\n";
  }

  return $maketext;
}

sub fake_prereqs {
  my $file = File::Spec->catfile('_build', 'prereqs');
  open(my $fh, '<', "$file") or die "Can't read $file: $!";
  my $prereqs = eval do {local $/; <$fh>};
  close $fh;

  my %merged = _merge_prereq( $prereqs->{requires}, $prereqs->{build_requires} );
  my @prereq;
  foreach (sort keys %merged) {
    next if $_ eq 'perl';
    push @prereq, "$_=>q[$merged{$_}]";
  }
  return unless @prereq;
  return "#     PREREQ_PM => { " . join(", ", @prereq) . " }\n\n";
}


sub write_makefile {
  my ($pack, %in) = @_;

  unless (exists $in{build_class}) {
    warn "Unknown 'build_class', defaulting to 'Module::Build'\n";
    $in{build_class} = 'Module::Build';
  }
  my $class = $in{build_class};
  $in{makefile} ||= $pack->_is_vms_mms ? 'Descrip.MMS' : 'Makefile';

  open  MAKE, "> $in{makefile}" or die "Cannot write $in{makefile}: $!";
  print MAKE $pack->fake_prereqs;
  print MAKE $pack->fake_makefile(%in);
  close MAKE;
}

sub _is_vms_mms {
  return Module::Build->is_vmsish && ($Config{make} =~ m/MM[SK]/i);
}

1;
__END__

=for :stopwords passthrough

=head1 NAME

Module::Build::Compat - Compatibility with ExtUtils::MakeMaker

=head1 SYNOPSIS

  # In a Build.PL :
  use Module::Build;
  my $build = Module::Build->new
    ( module_name => 'Foo::Bar',
      license     => 'perl',
      create_makefile_pl => 'traditional' );
  ...


=head1 DESCRIPTION

Because C<ExtUtils::MakeMaker> has been the standard way to distribute
modules for a long time, many tools (CPAN.pm, or your system
administrator) may expect to find a working F<Makefile.PL> in every
distribution they download from CPAN.  If you want to throw them a
bone, you can use C<Module::Build::Compat> to automatically generate a
F<Makefile.PL> for you, in one of several different styles.

C<Module::Build::Compat> also provides some code that helps out the
F<Makefile.PL> at runtime.


=head1 METHODS

=over 4

=item create_makefile_pl($style, $build)

Creates a F<Makefile.PL> in the current directory in one of several
styles, based on the supplied C<Module::Build> object C<$build>.  This is
typically controlled by passing the desired style as the
C<create_makefile_pl> parameter to C<Module::Build>'s C<new()> method;
the F<Makefile.PL> will then be automatically created during the
C<distdir> action.

The currently supported styles are:

=over 4

=item traditional

A F<Makefile.PL> will be created in the "traditional" style, i.e. it will
use C<ExtUtils::MakeMaker> and won't rely on C<Module::Build> at all.
In order to create the F<Makefile.PL>, we'll include the C<requires> and
C<build_requires> dependencies as the C<PREREQ_PM> parameter.

You don't want to use this style if during the C<perl Build.PL> stage
you ask the user questions, or do some auto-sensing about the user's
environment, or if you subclass C<Module::Build> to do some
customization, because the vanilla F<Makefile.PL> won't do any of that.

=item small

A small F<Makefile.PL> will be created that passes all functionality
through to the F<Build.PL> script in the same directory.  The user must
already have C<Module::Build> installed in order to use this, or else
they'll get a module-not-found error.

=item passthrough (DEPRECATED)

This is just like the C<small> option above, but if C<Module::Build> is
not already installed on the user's system, the script will offer to
use C<CPAN.pm> to download it and install it before continuing with
the build.

This option has been deprecated and may be removed in a future version
of Module::Build.  Modern CPAN.pm and CPANPLUS will recognize the
C<configure_requires> metadata property and install Module::Build before
running Build.PL if Module::Build is listed and Module::Build now
adds itself to configure_requires by default.

Perl 5.10.1 includes C<configure_requires> support.  In the future, when
C<configure_requires> support is deemed sufficiently widespread, the
C<passthrough> style will be removed.

=back

=item run_build_pl(args => \@ARGV)

This method runs the F<Build.PL> script, passing it any arguments the
user may have supplied to the C<perl Makefile.PL> command.  Because
C<ExtUtils::MakeMaker> and C<Module::Build> accept different arguments, this
method also performs some translation between the two.

C<run_build_pl()> accepts the following named parameters:

=over 4

=item args

The C<args> parameter specifies the parameters that would usually
appear on the command line of the C<perl Makefile.PL> command -
typically you'll just pass a reference to C<@ARGV>.

=item script

This is the filename of the script to run - it defaults to C<Build.PL>.

=back

=item write_makefile()

This method writes a 'dummy' F<Makefile> that will pass all commands
through to the corresponding C<Module::Build> actions.

C<write_makefile()> accepts the following named parameters:

=over 4

=item makefile

The name of the file to write - defaults to the string C<Makefile>.

=back

=back


=head1 SCENARIOS

So, some common scenarios are:

=over 4

=item 1.

Just include a F<Build.PL> script (without a F<Makefile.PL>
script), and give installation directions in a F<README> or F<INSTALL>
document explaining how to install the module.  In particular, explain
that the user must install C<Module::Build> before installing your
module.

Note that if you do this, you may make things easier for yourself, but
harder for people with older versions of CPAN or CPANPLUS on their
system, because those tools generally only understand the
F<Makefile.PL>/C<ExtUtils::MakeMaker> way of doing things.

=item 2.

Include a F<Build.PL> script and a "traditional" F<Makefile.PL>,
created either manually or with C<create_makefile_pl()>.  Users won't
ever have to install C<Module::Build> if they use the F<Makefile.PL>, but
they won't get to take advantage of C<Module::Build>'s extra features
either.

For good measure, of course, test both the F<Makefile.PL> and the
F<Build.PL> before shipping.

=item 3.

Include a F<Build.PL> script and a "pass-through" F<Makefile.PL>
built using C<Module::Build::Compat>.  This will mean that people can
continue to use the "old" installation commands, and they may never
notice that it's actually doing something else behind the scenes.  It
will also mean that your installation process is compatible with older
versions of tools like CPAN and CPANPLUS.

=back


=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>


=head1 COPYRIGHT

Copyright (c) 2001-2006 Ken Williams.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.


=head1 SEE ALSO

L<Module::Build>(3), L<ExtUtils::MakeMaker>(3)


=cut
Build/API.pod000064400000206131150517530330006725 0ustar00=head1 NAME

Module::Build::API - API Reference for Module Authors

=for :stopwords apache bsd distdir distsign gpl installdirs lgpl mit mozilla packlists

=head1 DESCRIPTION

I list here some of the most important methods in C<Module::Build>.
Normally you won't need to deal with these methods unless you want to
subclass C<Module::Build>.  But since one of the reasons I created
this module in the first place was so that subclassing is possible
(and easy), I will certainly write more docs as the interface
stabilizes.


=head2 CONSTRUCTORS

=over 4

=item current()

[version 0.20]

This method returns a reasonable facsimile of the currently-executing
C<Module::Build> object representing the current build.  You can use
this object to query its L</notes()> method, inquire about installed
modules, and so on.  This is a great way to share information between
different parts of your build process.  For instance, you can ask
the user a question during C<perl Build.PL>, then use their answer
during a regression test:

  # In Build.PL:
  my $color = $build->prompt("What is your favorite color?");
  $build->notes(color => $color);

  # In t/colortest.t:
  use Module::Build;
  my $build = Module::Build->current;
  my $color = $build->notes('color');
  ...

The way the C<current()> method is currently implemented, there may be
slight differences between the C<$build> object in Build.PL and the
one in C<t/colortest.t>.  It is our goal to minimize these differences
in future releases of Module::Build, so please report any anomalies
you find.

One important caveat: in its current implementation, C<current()> will
B<NOT> work correctly if you have changed out of the directory that
C<Module::Build> was invoked from.

=item new()

[version 0.03]

Creates a new Module::Build object.  Arguments to the new() method are
listed below.  Most arguments are optional, but you must provide
either the L</module_name> argument, or L</dist_name> and one of
L</dist_version> or L</dist_version_from>.  In other words, you must
provide enough information to determine both a distribution name and
version.


=over 4

=item add_to_cleanup

[version 0.19]

An array reference of files to be cleaned up when the C<clean> action
is performed. See also the L<add_to_cleanup()|/"add_to_cleanup(@files)">
method.

=item allow_pureperl

[version 0.4005]

A bool indicating the module is still functional without its xs parts.
When an XS module is build with --pureperl_only, it will otherwise fail.

=item auto_configure_requires

[version 0.34]

This parameter determines whether Module::Build will add itself
automatically to configure_requires (and build_requires) if Module::Build
is not already there.  The required version will be the last 'major' release,
as defined by the decimal version truncated to two decimal places (e.g. 0.34,
instead of 0.3402).  The default value is true.

=item auto_features

[version 0.26]

This parameter supports the setting of features (see
L</feature($name)>) automatically based on a set of prerequisites.  For
instance, for a module that could optionally use either MySQL or
PostgreSQL databases, you might use C<auto_features> like this:

  my $build = Module::Build->new
    (
     ...other stuff here...
     auto_features => {
       pg_support    => {
                         description => "Interface with Postgres databases",
                         requires    => { 'DBD::Pg' => 23.3,
                                          'DateTime::Format::Pg' => 0 },
                        },
       mysql_support => {
                         description => "Interface with MySQL databases",
                         requires    => { 'DBD::mysql' => 17.9,
                                          'DateTime::Format::MySQL' => 0 },
                        },
     }
    );

For each feature named, the required prerequisites will be checked, and
if there are no failures, the feature will be enabled (set to C<1>).
Otherwise the failures will be displayed to the user and the feature
will be disabled (set to C<0>).

See the documentation for L</requires> for the details of how
requirements can be specified.

=item autosplit

[version 0.04]

An optional C<autosplit> argument specifies a file which should be run
through the L<AutoSplit::autosplit()|AutoSplit/autosplit> function.
If multiple files should be split, the argument may be given as an
array of the files to split.

In general I don't consider autosplitting a great idea, because it's
not always clear that autosplitting achieves its intended performance
benefits.  It may even harm performance in environments like mod_perl,
where as much as possible of a module's code should be loaded during
startup.

=item build_class

[version 0.28]

The Module::Build class or subclass to use in the build script.
Defaults to "Module::Build" or the class name passed to or created by
a call to L</subclass()>.  This property is useful if you're
writing a custom Module::Build subclass and have a bootstrapping
problem--that is, your subclass requires modules that may not be
installed when C<perl Build.PL> is executed, but you've listed in
L</build_requires> so that they should be available when C<./Build> is
executed.

=item build_requires

[version 0.07]

Modules listed in this section are necessary to build and install the
given module, but are not necessary for regular usage of it.  This is
actually an important distinction - it allows for tighter control over
the body of installed modules, and facilitates correct dependency
checking on binary/packaged distributions of the module.

See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
for the details of how requirements can be specified.

=item configure_requires

[version 0.30]

Modules listed in this section must be installed I<before> configuring
this distribution (i.e. before running the F<Build.PL> script).
This might be a specific minimum version of C<Module::Build> or any
other module the F<Build.PL> needs in order to do its stuff.  Clients
like C<CPAN.pm> or C<CPANPLUS> will be expected to pick
C<configure_requires> out of the F<META.yml> file and install these
items before running the C<Build.PL>.

Module::Build may automatically add itself to configure_requires.
See L</auto_configure_requires> for details.

See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
for the details of how requirements can be specified.

=item test_requires

[version 0.4004]

Modules listed in this section must be installed before testing the distribution.

See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
for the details of how requirements can be specified.

=item create_packlist

[version 0.28]

If true, this parameter tells Module::Build to create a F<.packlist>
file during the C<install> action, just like C<ExtUtils::MakeMaker> does.
The file is created in a subdirectory of the C<arch> installation
location.  It is used by some other tools (CPAN, CPANPLUS, etc.) for
determining what files are part of an install.

The default value is true.  This parameter was introduced in
Module::Build version 0.2609; previously no packlists were ever
created by Module::Build.

=item c_source

[version 0.04]

An optional C<c_source> argument specifies a directory which contains
C source files that the rest of the build may depend on.  Any C<.c>
files in the directory will be compiled to object files.  The
directory will be added to the search path during the compilation and
linking phases of any C or XS files.

[version 0.3604]

A list of directories can be supplied using an anonymous array
reference of strings.

=item conflicts

[version 0.07]

Modules listed in this section conflict in some serious way with the
given module.  C<Module::Build> (or some higher-level tool) will
refuse to install the given module if the given module/version is also
installed.

See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
for the details of how requirements can be specified.

=item create_license

[version 0.31]

This parameter tells Module::Build to automatically create a
F<LICENSE> file at the top level of your distribution, containing the
full text of the author's chosen license.  This requires
C<Software::License> on the author's machine, and further requires
that the C<license> parameter specifies a license that it knows about.

=item create_makefile_pl

[version 0.19]

This parameter lets you use C<Module::Build::Compat> during the
C<distdir> (or C<dist>) action to automatically create a Makefile.PL
for compatibility with C<ExtUtils::MakeMaker>.  The parameter's value
should be one of the styles named in the L<Module::Build::Compat>
documentation.

=item create_readme

[version 0.22]

This parameter tells Module::Build to automatically create a F<README>
file at the top level of your distribution.  Currently it will simply
use C<Pod::Text> (or C<Pod::Readme> if it's installed) on the file
indicated by C<dist_version_from> and put the result in the F<README>
file.  This is by no means the only recommended style for writing a
F<README>, but it seems to be one common one used on the CPAN.

If you generate a F<README> in this way, it's probably a good idea to
create a separate F<INSTALL> file if that information isn't in the
generated F<README>.

=item dist_abstract

[version 0.20]

This should be a short description of the distribution.  This is used when
generating metadata for F<META.yml> and PPD files.  If it is not given
then C<Module::Build> looks in the POD of the module from which it gets
the distribution's version.  If it finds a POD section marked "=head1
NAME", then it looks for the first line matching C<\s+-\s+(.+)>,
and uses the captured text as the abstract.

=item dist_author

[version 0.20]

This should be something like "John Doe <jdoe@example.com>", or if
there are multiple authors, an anonymous array of strings may be
specified.  This is used when generating metadata for F<META.yml> and
PPD files.  If this is not specified, then C<Module::Build> looks at
the module from which it gets the distribution's version.  If it finds
a POD section marked "=head1 AUTHOR", then it uses the contents of
this section.

=item dist_name

[version 0.11]

Specifies the name for this distribution.  Most authors won't need to
set this directly, they can use C<module_name> to set C<dist_name> to
a reasonable default.  However, some agglomerative distributions like
C<libwww-perl> or C<bioperl> have names that don't correspond directly
to a module name, so C<dist_name> can be set independently.

=item dist_suffix

[version 0.37]

Specifies an optional suffix to include after the version number
in the distribution directory (and tarball) name.  The only suffix
currently recognized by PAUSE is 'TRIAL', which indicates that the
distribution should not be indexed.  For example:

  Foo-Bar-1.23-TRIAL.tar.gz

This will automatically do the "right thing" depending on C<dist_version> and
C<release_status>.  When C<dist_version> does not have an underscore and
C<release_status> is not 'stable', then C<dist_suffix> will default to 'TRIAL'.
Otherwise it will default to the empty string, disabling the suffix.  

In general, authors should only set this if they B<must> override the default
behavior for some particular purpose.

=item dist_version

[version 0.11]

Specifies a version number for the distribution.  See L</module_name>
or L</dist_version_from> for ways to have this set automatically from a
C<$VERSION> variable in a module.  One way or another, a version
number needs to be set.

=item dist_version_from

[version 0.11]

Specifies a file to look for the distribution version in.  Most
authors won't need to set this directly, they can use L</module_name>
to set it to a reasonable default.

The version is extracted from the specified file according to the same
rules as L<ExtUtils::MakeMaker> and C<CPAN.pm>.  It involves finding
the first line that matches the regular expression

   /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/

eval()-ing that line, then checking the value of the C<$VERSION>
variable.  Quite ugly, really, but all the modules on CPAN depend on
this process, so there's no real opportunity to change to something
better.

If the target file of L</dist_version_from> contains more than one package
declaration, the version returned will be the one matching the configured
L</module_name>.

=item dynamic_config

[version 0.07]

A boolean flag indicating whether the F<Build.PL> file must be
executed, or whether this module can be built, tested and installed
solely from consulting its metadata file.  The main reason to set this
to a true value is that your module performs some dynamic
configuration as part of its build/install process.  If the flag is
omitted, the F<META.yml> spec says that installation tools should
treat it as 1 (true), because this is a safer way to behave.

Currently C<Module::Build> doesn't actually do anything with this flag
- it's up to higher-level tools like C<CPAN.pm> to do something useful
with it.  It can potentially bring lots of security, packaging, and
convenience improvements.

=item extra_compiler_flags

=item extra_linker_flags

[version 0.19]

These parameters can contain array references (or strings, in which
case they will be split into arrays) to pass through to the compiler
and linker phases when compiling/linking C code.  For example, to tell
the compiler that your code is C++, you might do:

  my $build = Module::Build->new
    (
     module_name          => 'Foo::Bar',
     extra_compiler_flags => ['-x', 'c++'],
    );

To link your XS code against glib you might write something like:

  my $build = Module::Build->new
    (
     module_name          => 'Foo::Bar',
     dynamic_config       => 1,
     extra_compiler_flags => scalar `glib-config --cflags`,
     extra_linker_flags   => scalar `glib-config --libs`,
    );

=item extra_manify_args

[version 0.4006]

Any extra arguments to pass to C<< Pod::Man->new() >> when building
man pages.  One common choice might be C<< utf8 => 1 >> to get Unicode
support.

=item get_options

[version 0.26]

You can pass arbitrary command line options to F<Build.PL> or
F<Build>, and they will be stored in the Module::Build object and can
be accessed via the L</args()> method.  However, sometimes you want
more flexibility out of your argument processing than this allows.  In
such cases, use the C<get_options> parameter to pass in a hash
reference of argument specifications, and the list of arguments to
F<Build.PL> or F<Build> will be processed according to those
specifications before they're passed on to C<Module::Build>'s own
argument processing.

The supported option specification hash keys are:


=over 4

=item type

The type of option.  The types are those supported by Getopt::Long; consult
its documentation for a complete list.  Typical types are C<=s> for strings,
C<+> for additive options, and C<!> for negatable options.  If the
type is not specified, it will be considered a boolean, i.e. no
argument is taken and a value of 1 will be assigned when the option is
encountered.

=item store

A reference to a scalar in which to store the value passed to the option.
If not specified, the value will be stored under the option name in the
hash returned by the C<args()> method.

=item default

A default value for the option.  If no default value is specified and no option
is passed, then the option key will not exist in the hash returned by
C<args()>.

=back


You can combine references to your own variables or subroutines with
unreferenced specifications, for which the result will also be stored in the
hash returned by C<args()>.  For example:

  my $loud = 0;
  my $build = Module::Build->new
    (
     module_name => 'Foo::Bar',
     get_options => {
                     Loud =>     { store => \$loud },
                     Dbd  =>     { type  => '=s'   },
                     Quantity => { type  => '+'    },
                    }
    );

  print STDERR "HEY, ARE YOU LISTENING??\n" if $loud;
  print "We'll use the ", $build->args('Dbd'), " DBI driver\n";
  print "Are you sure you want that many?\n"
    if $build->args('Quantity') > 2;

The arguments for such a specification can be called like so:

  perl Build.PL --Loud --Dbd=DBD::pg --Quantity --Quantity --Quantity

B<WARNING:> Any option specifications that conflict with Module::Build's own
options (defined by its properties) will throw an exception.  Use capitalized
option names to avoid unintended conflicts with future Module::Build options.

Consult the Getopt::Long documentation for details on its usage.

=item include_dirs

[version 0.24]

Specifies any additional directories in which to search for C header
files.  May be given as a string indicating a single directory, or as
a list reference indicating multiple directories.

=item install_path

[version 0.19]

You can set paths for individual installable elements by using the
C<install_path> parameter:

  my $build = Module::Build->new
    (
     ...other stuff here...
     install_path => {
                      lib  => '/foo/lib',
                      arch => '/foo/lib/arch',
                     }
    );

=item installdirs

[version 0.19]

Determines where files are installed within the normal perl hierarchy
as determined by F<Config.pm>.  Valid values are: C<core>, C<site>,
C<vendor>.  The default is C<site>.  See
L<Module::Build/"INSTALL PATHS">

=item license

[version 0.07]

Specifies the licensing terms of your distribution.

As of Module::Build version 0.36_14, you may use a L<Software::License>
subclass name (e.g. 'Apache_2_0') instead of one of the keys below.

The legacy list of valid license values include:

=over 4

=item apache

The distribution is licensed under the Apache License, Version 2.0
(L<http://apache.org/licenses/LICENSE-2.0>).

=item apache_1_1

The distribution is licensed under the Apache Software License, Version 1.1
(L<http://apache.org/licenses/LICENSE-1.1>).

=item artistic

The distribution is licensed under the Artistic License, as specified
by the F<Artistic> file in the standard Perl distribution.

=item artistic_2

The distribution is licensed under the Artistic 2.0 License
(L<http://opensource.org/licenses/artistic-license-2.0.php>.)

=item bsd

The distribution is licensed under the BSD License
(L<http://www.opensource.org/licenses/bsd-license.php>).

=item gpl

The distribution is licensed under the terms of the GNU General
Public License (L<http://www.opensource.org/licenses/gpl-license.php>).

=item lgpl

The distribution is licensed under the terms of the GNU Lesser
General Public License
(L<http://www.opensource.org/licenses/lgpl-license.php>).

=item mit

The distribution is licensed under the MIT License
(L<http://opensource.org/licenses/mit-license.php>).

=item mozilla

The distribution is licensed under the Mozilla Public
License.  (L<http://opensource.org/licenses/mozilla1.0.php> or
L<http://opensource.org/licenses/mozilla1.1.php>)

=item open_source

The distribution is licensed under some other Open Source
Initiative-approved license listed at
L<http://www.opensource.org/licenses/>.

=item perl

The distribution may be copied and redistributed under the same terms
as Perl itself (this is by far the most common licensing option for
modules on CPAN).  This is a dual license, in which the user may
choose between either the GPL or the Artistic license.

=item restrictive

The distribution may not be redistributed without special permission
from the author and/or copyright holder.

=item unrestricted

The distribution is licensed under a license that is B<not> approved
by www.opensource.org but that allows distribution without
restrictions.

=back

Note that you must still include the terms of your license in your
code and documentation - this field only sets the information that is included
in distribution metadata to let automated tools figure out your
licensing restrictions.  Humans still need something to read.  If you
choose to provide this field, you should make sure that you keep it in
sync with your written documentation if you ever change your licensing
terms.

You may also use a license type of C<unknown> if you don't wish to
specify your terms in the metadata.

Also see the C<create_license> parameter.

=item meta_add

[version 0.28]

A hash of key/value pairs that should be added to the F<META.yml> file
during the C<distmeta> action.  Any existing entries with the same
names will be overridden.

See the L</"MODULE METADATA"> section for details.

=item meta_merge

[version 0.28]

A hash of key/value pairs that should be merged into the F<META.yml>
file during the C<distmeta> action.  Any existing entries with the
same names will be overridden.

The only difference between C<meta_add> and C<meta_merge> is their
behavior on hash-valued and array-valued entries: C<meta_add> will
completely blow away the existing hash or array value, but
C<meta_merge> will merge the supplied data into the existing hash or
array value.

See the L</"MODULE METADATA"> section for details.

=item module_name

[version 0.03]

The C<module_name> is a shortcut for setting default values of
C<dist_name> and C<dist_version_from>, reflecting the fact that the
majority of CPAN distributions are centered around one "main" module.
For instance, if you set C<module_name> to C<Foo::Bar>, then
C<dist_name> will default to C<Foo-Bar> and C<dist_version_from> will
default to C<lib/Foo/Bar.pm>.  C<dist_version_from> will in turn be
used to set C<dist_version>.

Setting C<module_name> won't override a C<dist_*> parameter you
specify explicitly.

=item needs_compiler

[version 0.36]

The C<needs_compiler> parameter indicates whether a compiler is required to
build the distribution.  The default is false, unless XS files are found or
the C<c_source> parameter is set, in which case it is true.  If true,
L<ExtUtils::CBuilder> is automatically added to C<build_requires> if needed.

For a distribution where a compiler is I<optional>, e.g. a dual XS/pure-Perl
distribution, C<needs_compiler> should explicitly be set to a false value.

=item PL_files

[version 0.06]

An optional parameter specifying a set of C<.PL> files in your
distribution.  These will be run as Perl scripts prior to processing
the rest of the files in your distribution with the name of the file
they're generating as an argument.  They are usually used as templates
for creating other files dynamically, so that a file like
C<lib/Foo/Bar.pm.PL> might create the file C<lib/Foo/Bar.pm>.

The files are specified with the C<.PL> files as hash keys, and the
file(s) they generate as hash values, like so:

  my $build = Module::Build->new
    (
     module_name => 'Foo::Bar',
     ...
     PL_files => { 'lib/Foo/Bar.pm.PL' => 'lib/Foo/Bar.pm' },
    );

Note that the path specifications are I<always> given in Unix-like
format, not in the style of the local system.

If your C<.PL> scripts don't create any files, or if they create files
with unexpected names, or even if they create multiple files, you can
indicate that so that Module::Build can properly handle these created
files:

  PL_files => {
               'lib/Foo/Bar.pm.PL' => 'lib/Foo/Bar.pm',
               'lib/something.PL'  => ['/lib/something', '/lib/else'],
               'lib/funny.PL'      => [],
              }

Here's an example of a simple PL file.

    my $output_file = shift;
    open my $fh, ">", $output_file or die "Can't open $output_file: $!";

    print $fh <<'END';
    #!/usr/bin/perl

    print "Hello, world!\n";
    END

PL files are not installed by default, so its safe to put them in
F<lib/> and F<bin/>.


=item pm_files

[version 0.19]

An optional parameter specifying the set of C<.pm> files in this
distribution, specified as a hash reference whose keys are the files'
locations in the distributions, and whose values are their logical
locations based on their package name, i.e. where they would be found
in a "normal" Module::Build-style distribution.  This parameter is
mainly intended to support alternative layouts of files.

For instance, if you have an old-style C<MakeMaker> distribution for a
module called C<Foo::Bar> and a F<Bar.pm> file at the top level of the
distribution, you could specify your layout in your C<Build.PL> like
this:

  my $build = Module::Build->new
    (
     module_name => 'Foo::Bar',
     ...
     pm_files => { 'Bar.pm' => 'lib/Foo/Bar.pm' },
    );

Note that the values should include C<lib/>, because this is where
they would be found in a "normal" Module::Build-style distribution.

Note also that the path specifications are I<always> given in
Unix-like format, not in the style of the local system.

=item pod_files

[version 0.19]

Just like C<pm_files>, but used for specifying the set of C<.pod>
files in your distribution.

=item recommends

[version 0.08]

This is just like the L</requires> argument, except that modules listed
in this section aren't essential, just a good idea.  We'll just print
a friendly warning if one of these modules aren't found, but we'll
continue running.

If a module is recommended but not required, all tests should still
pass if the module isn't installed.  This may mean that some tests
may be skipped if recommended dependencies aren't present.

Automated tools like CPAN.pm should inform the user when recommended
modules aren't installed, and it should offer to install them if it
wants to be helpful.

See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
for the details of how requirements can be specified.

=item recursive_test_files

[version 0.28]

Normally, C<Module::Build> does not search subdirectories when looking
for tests to run. When this options is set it will search recursively
in all subdirectories of the standard 't' test directory.

=item release_status

[version 0.37]

The CPAN Meta Spec version 2 adds C<release_status> to allow authors
to specify how a distribution should be indexed.  Consistent with the
spec, this parameter can only have one three values: 'stable',
'testing' or 'unstable'.

Unless explicitly set by the author, C<release_status> will default
to 'stable' unless C<dist_version> contains an underscore, in which
case it will default to 'testing'.

It is an error to specify a C<release_status> of 'stable' when
C<dist_version> contains an underscore character.

=item requires

[version 0.07]

An optional C<requires> argument specifies any module prerequisites
that the current module depends on.

One note: currently C<Module::Build> doesn't actually I<require> the
user to have dependencies installed, it just strongly urges.  In the
future we may require it.  There's also a L</recommends> section for
things that aren't absolutely required.

Automated tools like CPAN.pm should refuse to install a module if one
of its dependencies isn't satisfied, unless a "force" command is given
by the user.  If the tools are helpful, they should also offer to
install the dependencies.

A synonym for C<requires> is C<prereq>, to help succour people
transitioning from C<ExtUtils::MakeMaker>.  The C<requires> term is
preferred, but the C<prereq> term will remain valid in future
distributions.

See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
for the details of how requirements can be specified.

=item script_files

[version 0.18]

An optional parameter specifying a set of files that should be
installed as executable Perl scripts when the module is installed.
May be given as an array reference of the files, as a hash reference
whose keys are the files (and whose values will currently be ignored),
as a string giving the name of a directory in which to find scripts,
or as a string giving the name of a single script file.

The default is to install any scripts found in a F<bin> directory at
the top level of the distribution, minus any keys of L<PL_files>.

For backward compatibility, you may use the parameter C<scripts>
instead of C<script_files>.  Please consider this usage deprecated,
though it will continue to exist for several version releases.

=item share_dir

[version 0.36]

An optional parameter specifying directories of static data files to
be installed as read-only files for use with L<File::ShareDir>.  The
C<share_dir> property supports both distribution-level and
module-level share files.

The simplest use of C<share_dir> is to set it to a directory name or an
arrayref of directory names containing files to be installed in the
distribution-level share directory.

  share_dir => 'share'

Alternatively, if C<share_dir> is a hashref, it may have C<dist> or
C<module> keys providing full flexibility in defining how share
directories should be installed.

  share_dir => {
    dist => [ 'examples', 'more_examples' ],
    module => {
      Foo::Templates => ['share/html', 'share/text'],
      Foo::Config    => 'share/config',
    }
  }

If C<share_dir> is set, then File::ShareDir will automatically be added
to the C<requires> hash.

=item sign

[version 0.16]

If a true value is specified for this parameter, L<Module::Signature>
will be used (via the 'distsign' action) to create a SIGNATURE file
for your distribution during the 'distdir' action, and to add the
SIGNATURE file to the MANIFEST (therefore, don't add it yourself).

The default value is false.  In the future, the default may change to
true if you have C<Module::Signature> installed on your system.

=item tap_harness_args

[version 0.2808_03]

An optional parameter specifying parameters to be passed to TAP::Harness when
running tests. Must be given as a hash reference of parameters; see the
L<TAP::Harness|TAP::Harness> documentation for details. Note that specifying
this parameter will implicitly set C<use_tap_harness> to a true value. You
must therefore be sure to add TAP::Harness as a requirement for your module in
L</build_requires>.

=item test_files

[version 0.23]

An optional parameter specifying a set of files that should be used as
C<Test::Harness>-style regression tests to be run during the C<test>
action.  May be given as an array reference of the files, or as a hash
reference whose keys are the files (and whose values will currently be
ignored).  If the argument is given as a single string (not in an
array reference), that string will be treated as a C<glob()> pattern
specifying the files to use.

The default is to look for a F<test.pl> script in the top-level
directory of the distribution, and any files matching the glob pattern
C<*.t> in the F<t/> subdirectory.  If the C<recursive_test_files>
property is true, then the C<t/> directory will be scanned recursively
for C<*.t> files.

=item use_tap_harness

[version 0.2808_03]

An optional parameter indicating whether or not to use TAP::Harness for
testing rather than Test::Harness. Defaults to false. If set to true, you must
therefore be sure to add TAP::Harness as a requirement for your module in
L</build_requires>. Implicitly set to a true value if C<tap_harness_args> is
specified.

=item xs_files

[version 0.19]

Just like C<pm_files>, but used for specifying the set of C<.xs>
files in your distribution.

=back


=item new_from_context(%args)

[version 0.28]

When called from a directory containing a F<Build.PL> script (in other words,
the base directory of a distribution), this method will run the F<Build.PL> and
call C<resume()> to return the resulting C<Module::Build> object to the caller.
Any key-value arguments given to C<new_from_context()> are essentially like
command line arguments given to the F<Build.PL> script, so for example you
could pass C<< verbose => 1 >> to this method to turn on verbosity.

=item resume()

[version 0.03]

You'll probably never call this method directly, it's only called from the
auto-generated C<Build> script (and the C<new_from_context> method).  The
C<new()> method is only called once, when the user runs C<perl Build.PL>.
Thereafter, when the user runs C<Build test> or another action, the
C<Module::Build> object is created using the C<resume()> method to
re-instantiate with the settings given earlier to C<new()>.

=item subclass()

[version 0.06]

This creates a new C<Module::Build> subclass on the fly, as described
in the L<Module::Build::Authoring/"SUBCLASSING"> section.  The caller
must provide either a C<class> or C<code> parameter, or both.  The
C<class> parameter indicates the name to use for the new subclass, and
defaults to C<MyModuleBuilder>.  The C<code> parameter specifies Perl
code to use as the body of the subclass.

=item add_property

[version 0.31]

  package 'My::Build';
  use base 'Module::Build';
  __PACKAGE__->add_property( 'pedantic' );
  __PACKAGE__->add_property( answer => 42 );
  __PACKAGE__->add_property(
     'epoch',
      default => sub { time },
      check   => sub {
          return 1 if /^\d+$/;
          shift->property_error( "'$_' is not an epoch time" );
          return 0;
      },
  );

Adds a property to a Module::Build class. Properties are those attributes of a
Module::Build object which can be passed to the constructor and which have
accessors to get and set them. All of the core properties, such as
C<module_name> and C<license>, are defined using this class method.

The first argument to C<add_property()> is always the name of the property.
The second argument can be either a default value for the property, or a list
of key/value pairs. The supported keys are:

=over

=item C<default>

The default value. May optionally be specified as a code reference, in which
case the return value from the execution of the code reference will be used.
If you need the default to be a code reference, just use a code reference to
return it, e.g.:

      default => sub { sub { ... } },

=item C<check>

A code reference that checks that a value specified for the property is valid.
During the execution of the code reference, the new value will be included in
the C<$_> variable. If the value is correct, the C<check> code reference
should return true. If the value is not correct, it sends an error message to
C<property_error()> and returns false.

=back

When this method is called, a new property will be installed in the
Module::Build class, and an accessor will be built to allow the property to be
get or set on the build object.

  print $build->pedantic, $/;
  $build->pedantic(0);

If the default value is a hash reference, this generates a special-case
accessor method, wherein individual key/value pairs may be set or fetched:

  print "stuff{foo} is: ", $build->stuff( 'foo' ), $/;
  $build->stuff( foo => 'bar' );
  print $build->stuff( 'foo' ), $/; # Outputs "bar"

Of course, you can still set the entire hash reference at once, as well:

  $build->stuff( { foo => 'bar', baz => 'yo' } );

In either case, if a C<check> has been specified for the property, it will be
applied to the entire hash. So the check code reference should look something
like:

      check => sub {
            return 1 if defined $_ && exists $_->{foo};
            shift->property_error(qq{Property "stuff" needs "foo"});
            return 0;
      },

=item property_error

[version 0.31]

=back


=head2 METHODS

=over 4

=item add_build_element($type)

[version 0.26]

Adds a new type of entry to the build process.  Accepts a single
string specifying its type-name.  There must also be a method defined
to process things of that type, e.g. if you add a build element called
C<'foo'>, then you must also define a method called
C<process_foo_files()>.

See also
L<Module::Build::Cookbook/"Adding new file types to the build process">.

=item add_to_cleanup(@files)

[version 0.03]

You may call C<< $self->add_to_cleanup(@patterns) >> to tell
C<Module::Build> that certain files should be removed when the user
performs the C<Build clean> action.  The arguments to the method are
patterns suitable for passing to Perl's C<glob()> function, specified
in either Unix format or the current machine's native format.  It's
usually convenient to use Unix format when you hard-code the filenames
(e.g. in F<Build.PL>) and the native format when the names are
programmatically generated (e.g. in a testing script).

I decided to provide a dynamic method of the C<$build> object, rather
than just use a static list of files named in the F<Build.PL>, because
these static lists can get difficult to manage.  I usually prefer to
keep the responsibility for registering temporary files close to the
code that creates them.

=item args()

[version 0.26]

  my $args_href = $build->args;
  my %args = $build->args;
  my $arg_value = $build->args($key);
  $build->args($key, $value);

This method is the preferred interface for retrieving the arguments passed via
command line options to F<Build.PL> or F<Build>, minus the Module-Build
specific options.

When called in a scalar context with no arguments, this method returns a
reference to the hash storing all of the arguments; in an array context, it
returns the hash itself.  When passed a single argument, it returns the value
stored in the args hash for that option key.  When called with two arguments,
the second argument is assigned to the args hash under the key passed as the
first argument.

=item autosplit_file($from, $to)

[version 0.28]

Invokes the L<AutoSplit> module on the C<$from> file, sending the
output to the C<lib/auto> directory inside C<$to>.  C<$to> is
typically the C<blib/> directory.

=item base_dir()

[version 0.14]

Returns a string containing the root-level directory of this build,
i.e. where the C<Build.PL> script and the C<lib> directory can be
found.  This is usually the same as the current working directory,
because the C<Build> script will C<chdir()> into this directory as
soon as it begins execution.

=item build_requires()

[version 0.21]

Returns a hash reference indicating the C<build_requires>
prerequisites that were passed to the C<new()> method.

=item can_action( $action )

Returns a reference to the method that defines C<$action>, or false
otherwise. This is handy for actions defined (or maybe not!) in subclasses.

[version 0.32_xx]

=item cbuilder()

[version 0.2809]

Returns the internal ExtUtils::CBuilder object that can be used for
compiling & linking C code.  If no such object is available (e.g. if
the system has no compiler installed) an exception will be thrown.

=item check_installed_status($module, $version)

[version 0.11]

This method returns a hash reference indicating whether a version
dependency on a certain module is satisfied.  The C<$module> argument
is given as a string like C<"Data::Dumper"> or C<"perl">, and the
C<$version> argument can take any of the forms described in L</requires>
above.  This allows very fine-grained version checking.

The returned hash reference has the following structure:

  {
   ok => $whether_the_dependency_is_satisfied,
   have => $version_already_installed,
   need => $version_requested, # Same as incoming $version argument
   message => $informative_error_message,
  }

If no version of C<$module> is currently installed, the C<have> value
will be the string C<< "<none>" >>.  Otherwise the C<have> value will
simply be the version of the installed module.  Note that this means
that if C<$module> is installed but doesn't define a version number,
the C<have> value will be C<undef> - this is why we don't use C<undef>
for the case when C<$module> isn't installed at all.

This method may be called either as an object method
(C<< $build->check_installed_status($module, $version) >>)
or as a class method
(C<< Module::Build->check_installed_status($module, $version) >>).

=item check_installed_version($module, $version)

[version 0.05]

Like L<check_installed_status()|/"check_installed_status($module, $version)">,
but simply returns true or false depending on whether module
C<$module> satisfies the dependency C<$version>.

If the check succeeds, the return value is the actual version of
C<$module> installed on the system.  This allows you to do the
following:

  my $installed = $build->check_installed_version('DBI', '1.15');
  if ($installed) {
    print "Congratulations, version $installed of DBI is installed.\n";
  } else {
    die "Sorry, you must install DBI.\n";
  }

If the check fails, we return false and set C<$@> to an informative
error message.

If C<$version> is any non-true value (notably zero) and any version of
C<$module> is installed, we return true.  In this case, if C<$module>
doesn't define a version, or if its version is zero, we return the
special value "0 but true", which is numerically zero, but logically
true.

In general you might prefer to use C<check_installed_status> if you
need detailed information, or this method if you just need a yes/no
answer.

=item compare_versions($v1, $op, $v2)

[version 0.28]

Compares two module versions C<$v1> and C<$v2> using the operator
C<$op>, which should be one of Perl's numeric operators like C<!=> or
C<< >= >> or the like.  We do at least a halfway-decent job of
handling versions that aren't strictly numeric, like C<0.27_02>, but
exotic stuff will likely cause problems.

In the future, the guts of this method might be replaced with a call
out to C<version.pm>.

=item config($key)

=item config($key, $value)

=item config() [deprecated]

[version 0.22]

With a single argument C<$key>, returns the value associated with that
key in the C<Config.pm> hash, including any changes the author or user
has specified.

With C<$key> and C<$value> arguments, sets the value for future
callers of C<config($key)>.

With no arguments, returns a hash reference containing all such
key-value pairs.  This usage is deprecated, though, because it's a
resource hog and violates encapsulation.

=item config_data($name)

=item config_data($name => $value)

[version 0.26]

With a single argument, returns the value of the configuration
variable C<$name>.  With two arguments, sets the given configuration
variable to the given value.  The value may be any Perl scalar that's
serializable with C<Data::Dumper>.  For instance, if you write a
module that can use a MySQL or PostgreSQL back-end, you might create
configuration variables called C<mysql_connect> and
C<postgres_connect>, and set each to an array of connection parameters
for C<< DBI->connect() >>.

Configuration values set in this way using the Module::Build object
will be available for querying during the build/test process and after
installation via the generated C<...::ConfigData> module, as
C<< ...::ConfigData->config($name) >>.

The L<feature()|/"feature($name)"> and C<config_data()> methods represent
Module::Build's main support for configuration of installed modules.
See also L<Module::Build::Authoring/"SAVING CONFIGURATION INFORMATION">.

=item conflicts()

[version 0.21]

Returns a hash reference indicating the C<conflicts> prerequisites
that were passed to the C<new()> method.

=item contains_pod($file) [deprecated]

[version 0.20]

[Deprecated] Please see L<Module::Metadata> instead.

Returns true if the given file appears to contain POD documentation.
Currently this checks whether the file has a line beginning with
'=pod', '=head', or '=item', but the exact semantics may change in the
future.

=item copy_if_modified(%parameters)

[version 0.19]

Takes the file in the C<from> parameter and copies it to the file in
the C<to> parameter, or the directory in the C<to_dir> parameter, if
the file has changed since it was last copied (or if it doesn't exist
in the new location).  By default the entire directory structure of
C<from> will be copied into C<to_dir>; an optional C<flatten>
parameter will copy into C<to_dir> without doing so.

Returns the path to the destination file, or C<undef> if nothing
needed to be copied.

Any directories that need to be created in order to perform the
copying will be automatically created.

The destination file is set to read-only. If the source file has the
executable bit set, then the destination file will be made executable.

=item create_build_script()

[version 0.05]

Creates an executable script called C<Build> in the current directory
that will be used to execute further user actions.  This script is
roughly analogous (in function, not in form) to the Makefile created
by C<ExtUtils::MakeMaker>.  This method also creates some temporary
data in a directory called C<_build/>.  Both of these will be removed
when the C<realclean> action is performed.

Among the files created in C<_build/> is a F<_build/prereqs> file
containing the set of prerequisites for this distribution, as a hash
of hashes.  This file may be C<eval()>-ed to obtain the authoritative
set of prerequisites, which might be different from the contents of
F<META.yml> (because F<Build.PL> might have set them dynamically).
But fancy developers take heed: do not put any fancy custom runtime
code in the F<_build/prereqs> file, leave it as a static declaration
containing only strings and numbers.  Similarly, do not alter the
structure of the internal C<< $self->{properties}{requires} >> (etc.)
data members, because that's where this data comes from.

=item current_action()

[version 0.28]

Returns the name of the currently-running action, such as "build" or
"test".  This action is not necessarily the action that was originally
invoked by the user.  For example, if the user invoked the "test"
action, current_action() would initially return "test".  However,
action "test" depends on action "code", so current_action() will
return "code" while that dependency is being executed.  Once that
action has completed, current_action() will again return "test".

If you need to know the name of the original action invoked by the
user, see L</invoked_action()> below.

=item depends_on(@actions)

[version 0.28]

Invokes the named action or list of actions in sequence.  Using this
method is preferred to calling the action explicitly because it
performs some internal record-keeping, and it ensures that the same
action is not invoked multiple times (note: in future versions of
Module::Build it's conceivable that this run-only-once mechanism will
be changed to something more intelligent).

Note that the name of this method is something of a misnomer; it
should really be called something like
C<invoke_actions_unless_already_invoked()> or something, but for
better or worse (perhaps better!) we were still thinking in
C<make>-like dependency terms when we created this method.

See also L<dispatch()|/"dispatch($action, %args)">.  The main
distinction between the two is that C<depends_on()> is meant to call
an action from inside another action, whereas C<dispatch()> is meant
to set the very top action in motion.

=item dir_contains($first_dir, $second_dir)

[version 0.28]

Returns true if the first directory logically contains the second
directory.  This is just a convenience function because C<File::Spec>
doesn't really provide an easy way to figure this out (but
C<Path::Class> does...).

=item dispatch($action, %args)

[version 0.03]

Invokes the build action C<$action>.  Optionally, a list of options
and their values can be passed in.  This is equivalent to invoking an
action at the command line, passing in a list of options.

Custom options that have not been registered must be passed in as a
hash reference in a key named "args":

  $build->dispatch('foo', verbose => 1, args => { my_option => 'value' });

This method is intended to be used to programmatically invoke build
actions, e.g. by applications controlling Module::Build-based builds
rather than by subclasses.

See also L<depends_on()|/"depends_on(@actions)">.  The main
distinction between the two is that C<depends_on()> is meant to call
an action from inside another action, whereas C<dispatch()> is meant
to set the very top action in motion.

=item dist_dir()

[version 0.28]

Returns the name of the directory that will be created during the
C<dist> action.  The name is derived from the C<dist_name> and
C<dist_version> properties.

=item dist_name()

[version 0.21]

Returns the name of the current distribution, as passed to the
C<new()> method in a C<dist_name> or modified C<module_name>
parameter.

=item dist_version()

[version 0.21]

Returns the version of the current distribution, as determined by the
C<new()> method from a C<dist_version>, C<dist_version_from>, or
C<module_name> parameter.

=item do_system($cmd, @args)

[version 0.21]

This is a fairly simple wrapper around Perl's C<system()> built-in
command.  Given a command and an array of optional arguments, this
method will print the command to C<STDOUT>, and then execute it using
Perl's C<system()>.  It returns true or false to indicate success or
failure (the opposite of how C<system()> works, but more intuitive).

Note that if you supply a single argument to C<do_system()>, it
will/may be processed by the system's shell, and any special
characters will do their special things.  If you supply multiple
arguments, no shell will get involved and the command will be executed
directly.

=item extra_compiler_flags()

=item extra_compiler_flags(@flags)

[version 0.25]

Set or retrieve the extra compiler flags. Returns an arrayref of flags.

=item extra_linker_flags()

=item extra_linker_flags(@flags)

[version 0.25]

Set or retrieve the extra linker flags. Returns an arrayref of flags.

=item feature($name)

=item feature($name => $value)

[version 0.26]

With a single argument, returns true if the given feature is set.
With two arguments, sets the given feature to the given boolean value.
In this context, a "feature" is any optional functionality of an
installed module.  For instance, if you write a module that could
optionally support a MySQL or PostgreSQL backend, you might create
features called C<mysql_support> and C<postgres_support>, and set them
to true/false depending on whether the user has the proper databases
installed and configured.

Features set in this way using the Module::Build object will be
available for querying during the build/test process and after
installation via the generated C<...::ConfigData> module, as
C<< ...::ConfigData->feature($name) >>.

The C<feature()> and C<config_data()> methods represent
Module::Build's main support for configuration of installed modules.
See also L<Module::Build::Authoring/"SAVING CONFIGURATION INFORMATION">.

=item fix_shebang_line(@files)

[version 0.??]

Modify any "shebang" line in the specified files to use the path to the
perl executable being used for the current build.  Files are modified
in-place.  The existing shebang line must have a command that contains
"C<perl>"; arguments to the command do not count.  In particular, this
means that the use of C<#!/usr/bin/env perl> will not be changed.

For an explanation of shebang lines, see
L<http://en.wikipedia.org/wiki/Shebang_%28Unix%29>.

=item have_c_compiler()

[version 0.21]

Returns true if the current system seems to have a working C compiler.
We currently determine this by attempting to compile a simple C source
file and reporting whether the attempt was successful.

=item install_base_relpaths()

=item install_base_relpaths($type)

=item install_base_relpaths($type => $path)

[version 0.28]

Set or retrieve the relative paths that are appended to
C<install_base> for any installable element. This is useful if you
want to set the relative install path for custom build elements.

With no argument, it returns a reference to a hash containing all
elements and their respective values. This hash should not be modified
directly; use the multiple argument below form to change values.

The single argument form returns the value associated with the
element C<$type>.

The multiple argument form allows you to set the paths for element types.
C<$value> must be a relative path using Unix-like paths.  (A series of
directories separated by slashes, e.g. C<foo/bar>.)  The return value is a
localized path based on C<$value>.

Assigning the value C<undef> to an element causes it to be removed.

=item install_destination($type)

[version 0.28]

Returns the directory in which items of type C<$type> (e.g. C<lib>,
C<arch>, C<bin>, or anything else returned by the L</install_types()>
method) will be installed during the C<install> action.  Any settings
for C<install_path>, C<install_base>, and C<prefix> are taken into
account when determining the return value.

=item install_path()

=item install_path($type)

=item install_path($type => $path)

[version 0.28]

Set or retrieve paths for specific installable elements. This is
useful when you want to examine any explicit install paths specified
by the user on the command line, or if you want to set the install
path for a specific installable element based on another attribute
like C<install_base()>.

With no argument, it returns a reference to a hash containing all
elements and their respective values. This hash should not be modified
directly; use the multiple argument below form to change values.

The single argument form returns the value associated with the
element C<$type>.

The multiple argument form allows you to set the paths for element types.
The supplied C<$path> should be an absolute path to install elements
of C<$type>.  The return value is C<$path>.

Assigning the value C<undef> to an element causes it to be removed.

=item install_types()

[version 0.28]

Returns a list of installable types that this build knows about.
These types each correspond to the name of a directory in F<blib/>,
and the list usually includes items such as C<lib>, C<arch>, C<bin>,
C<script>, C<libdoc>, C<bindoc>, and if HTML documentation is to be
built, C<libhtml> and C<binhtml>.  Other user-defined types may also
exist.

=item invoked_action()

[version 0.28]

This is the name of the original action invoked by the user.  This
value is set when the user invokes F<Build.PL>, the F<Build> script,
or programmatically through the L<dispatch()|/"dispatch($action, %args)">
method.  It does not change as sub-actions are executed as
dependencies are evaluated.

To get the name of the currently executing dependency, see
L</current_action()> above.

=item notes()

=item notes($key)

=item notes($key => $value)

[version 0.20]

The C<notes()> value allows you to store your own persistent
information about the build, and to share that information among
different entities involved in the build.  See the example in the
C<current()> method.

The C<notes()> method is essentially a glorified hash access.  With no
arguments, C<notes()> returns the entire hash of notes.  With one argument,
C<notes($key)> returns the value associated with the given key.  With two
arguments, C<notes($key, $value)> sets the value associated with the given key
to C<$value> and returns the new value.

The lifetime of the C<notes> data is for "a build" - that is, the
C<notes> hash is created when C<perl Build.PL> is run (or when the
C<new()> method is run, if the Module::Build Perl API is being used
instead of called from a shell), and lasts until C<perl Build.PL> is
run again or the C<clean> action is run.

=item orig_dir()

[version 0.28]

Returns a string containing the working directory that was in effect
before the F<Build> script chdir()-ed into the C<base_dir>.  This
might be useful for writing wrapper tools that might need to chdir()
back out.

=item os_type()

[version 0.04]

If you're subclassing Module::Build and some code needs to alter its
behavior based on the current platform, you may only need to know
whether you're running on Windows, Unix, MacOS, VMS, etc., and not the
fine-grained value of Perl's C<$^O> variable.  The C<os_type()> method
will return a string like C<Windows>, C<Unix>, C<MacOS>, C<VMS>, or
whatever is appropriate.  If you're running on an unknown platform, it
will return C<undef> - there shouldn't be many unknown platforms
though.

=item is_vmsish()

=item is_windowsish()

=item is_unixish()

Convenience functions that return a boolean value indicating whether
this platform behaves respectively like VMS, Windows, or Unix.  For
arbitrary reasons other platforms don't get their own such functions,
at least not yet.


=item prefix_relpaths()

=item prefix_relpaths($installdirs)

=item prefix_relpaths($installdirs, $type)

=item prefix_relpaths($installdirs, $type => $path)

[version 0.28]

Set or retrieve the relative paths that are appended to C<prefix> for
any installable element.  This is useful if you want to set the
relative install path for custom build elements.

With no argument, it returns a reference to a hash containing all
elements and their respective values as defined by the current
C<installdirs> setting.

With a single argument, it returns a reference to a hash containing
all elements and their respective values as defined by
C<$installdirs>.

The hash returned by the above calls should not be modified directly;
use the three-argument below form to change values.

The two argument form returns the value associated with the
element C<$type>.

The multiple argument form allows you to set the paths for element types.
C<$value> must be a relative path using Unix-like paths.  (A series of
directories separated by slashes, e.g. C<foo/bar>.)  The return value is a
localized path based on C<$value>.

Assigning the value C<undef> to an element causes it to be removed.

=item get_metadata()

[version 0.36]

This method returns a hash reference of metadata that can be used to create a
YAML datastream. It is provided for authors to override or customize the fields
of F<META.yml>.   E.g.

  package My::Builder;
  use base 'Module::Build';

  sub get_metadata {
    my $self, @args = @_;
    my $data = $self->SUPER::get_metadata(@args);
    $data->{custom_field} = 'foo';
    return $data;
  }

Valid arguments include:

=over

=item *

C<fatal> -- indicates whether missing required
metadata fields should be a fatal error or not.  For META creation, it
generally should, but for MYMETA creation for end-users, it should not be
fatal.

=item *

C<auto> -- indicates whether any necessary configure_requires should be
automatically added.  This is used in META creation.

=back

This method is a wrapper around the old prepare_metadata API now that we
no longer use YAML::Node to hold metadata.

=item prepare_metadata() [deprecated]

[version 0.36]

[Deprecated] As of 0.36, authors should use C<get_metadata> instead.  This
method is preserved for backwards compatibility only.

It takes three positional arguments: a hashref (to which metadata will be
added), an optional arrayref (to which metadata keys will be added in order if
the arrayref exists), and a hashref of arguments (as provided to get_metadata).
The latter argument is new as of 0.36.  Earlier versions are always fatal on
errors.

Prior to version 0.36, this method took a YAML::Node as an argument to hold
assembled metadata.

=item prereq_failures()

[version 0.11]

Returns a data structure containing information about any failed
prerequisites (of any of the types described above), or C<undef> if
all prerequisites are met.

The data structure returned is a hash reference.  The top level keys
are the type of prerequisite failed, one of "requires",
"build_requires", "conflicts", or "recommends".  The associated values
are hash references whose keys are the names of required (or
conflicting) modules.  The associated values of those are hash
references indicating some information about the failure.  For example:

  {
   have => '0.42',
   need => '0.59',
   message => 'Version 0.42 is installed, but we need version 0.59',
  }

or

  {
   have => '<none>',
   need => '0.59',
   message => 'Prerequisite Foo isn't installed',
  }

This hash has the same structure as the hash returned by the
C<check_installed_status()> method, except that in the case of
"conflicts" dependencies we change the "need" key to "conflicts" and
construct a proper message.

Examples:

  # Check a required dependency on Foo::Bar
  if ( $build->prereq_failures->{requires}{Foo::Bar} ) { ...

  # Check whether there were any failures
  if ( $build->prereq_failures ) { ...

  # Show messages for all failures
  my $failures = $build->prereq_failures;
  while (my ($type, $list) = each %$failures) {
    while (my ($name, $hash) = each %$list) {
      print "Failure for $name: $hash->{message}\n";
    }
  }

=item prereq_data()

[version 0.32]

Returns a reference to a hash describing all prerequisites.  The keys of the
hash will be the various prerequisite types ('requires', 'build_requires',
'test_requires', 'configure_requires', 'recommends', or 'conflicts') and the values will be
references to hashes of module names and version numbers.  Only prerequisites
types that are defined will be included.  The C<prereq_data> action is just a
thin wrapper around the C<prereq_data()> method and dumps the hash as a string
that can be loaded using C<eval()>.

=item prereq_report()

[version 0.28]

Returns a human-readable (table-form) string showing all
prerequisites, the versions required, and the versions actually
installed.  This can be useful for reviewing the configuration of your
system prior to a build, or when compiling data to send for a bug
report.  The C<prereq_report> action is just a thin wrapper around the
C<prereq_report()> method.

=item prompt($message, $default)

[version 0.12]

Asks the user a question and returns their response as a string.  The
first argument specifies the message to display to the user (for
example, C<"Where do you keep your money?">).  The second argument,
which is optional, specifies a default answer (for example,
C<"wallet">).  The user will be asked the question once.

If C<prompt()> detects that it is not running interactively and there
is nothing on STDIN or if the PERL_MM_USE_DEFAULT environment variable
is set to true, the $default will be used without prompting.

To prevent automated processes from blocking, the user must either set
PERL_MM_USE_DEFAULT or attach something to STDIN (this can be a
pipe/file containing a scripted set of answers or /dev/null.)

If no $default is provided an empty string will be used instead.  In
non-interactive mode, the absence of $default is an error (though
explicitly passing C<undef()> as the default is valid as of 0.27.)

This method may be called as a class or object method.

=item recommends()

[version 0.21]

Returns a hash reference indicating the C<recommends> prerequisites
that were passed to the C<new()> method.

=item requires()

[version 0.21]

Returns a hash reference indicating the C<requires> prerequisites that
were passed to the C<new()> method.

=item rscan_dir($dir, $pattern)

[version 0.28]

Uses C<File::Find> to traverse the directory C<$dir>, returning a
reference to an array of entries matching C<$pattern>.  C<$pattern>
may either be a regular expression (using C<qr//> or just a plain
string), or a reference to a subroutine that will return true for
wanted entries.  If C<$pattern> is not given, all entries will be
returned.

Examples:

 # All the *.pm files in lib/
 $m->rscan_dir('lib', qr/\.pm$/)

 # All the files in blib/ that aren't *.html files
 $m->rscan_dir('blib', sub {-f $_ and not /\.html$/});

 # All the files in t/
 $m->rscan_dir('t');

=item runtime_params()

=item runtime_params($key)

[version 0.28]

The C<runtime_params()> method stores the values passed on the command line
for valid properties (that is, any command line options for which
C<valid_property()> returns a true value).  The value on the command line may
override the default value for a property, as well as any value specified in a
call to C<new()>.  This allows you to programmatically tell if C<perl Build.PL>
or any execution of C<./Build> had command line options specified that
override valid properties.

The C<runtime_params()> method is essentially a glorified read-only hash.  With
no arguments, C<runtime_params()> returns the entire hash of properties
specified on the command line.  With one argument, C<runtime_params($key)>
returns the value associated with the given key.

The lifetime of the C<runtime_params> data is for "a build" - that is, the
C<runtime_params> hash is created when C<perl Build.PL> is run (or when the
C<new()> method is called, if the Module::Build Perl API is being used instead
of called from a shell), and lasts until C<perl Build.PL> is run again or the
C<clean> action is run.

=item script_files()

[version 0.18]

Returns a hash reference whose keys are the perl script files to be
installed, if any.  This corresponds to the C<script_files> parameter to the
C<new()> method.  With an optional argument, this parameter may be set
dynamically.

For backward compatibility, the C<scripts()> method does exactly the
same thing as C<script_files()>.  C<scripts()> is deprecated, but it
will stay around for several versions to give people time to
transition.

=item up_to_date($source_file, $derived_file)

=item up_to_date(\@source_files, \@derived_files)

[version 0.20]

This method can be used to compare a set of source files to a set of
derived files.  If any of the source files are newer than any of the
derived files, it returns false.  Additionally, if any of the derived
files do not exist, it returns false.  Otherwise it returns true.

The arguments may be either a scalar or an array reference of file
names.

=item y_n($message, $default)

[version 0.12]

Asks the user a yes/no question using C<prompt()> and returns true or
false accordingly.  The user will be asked the question repeatedly
until they give an answer that looks like "yes" or "no".

The first argument specifies the message to display to the user (for
example, C<"Shall I invest your money for you?">), and the second
argument specifies the default answer (for example, C<"y">).

Note that the default is specified as a string like C<"y"> or C<"n">,
and the return value is a Perl boolean value like 1 or 0.  I thought
about this for a while and this seemed like the most useful way to do
it.

This method may be called as a class or object method.

=back


=head2 Autogenerated Accessors

In addition to the aforementioned methods, there are also some get/set
accessor methods for the following properties:

=over 4

=item PL_files()

=item allow_mb_mismatch()

=item allow_pureperl()

=item auto_configure_requires()

=item autosplit()

=item base_dir()

=item bindoc_dirs()

=item blib()

=item build_bat()

=item build_class()

=item build_elements()

=item build_requires()

=item build_script()

=item bundle_inc()

=item bundle_inc_preload()

=item c_source()

=item config_dir()

=item configure_requires()

=item conflicts()

=item cover()

=item cpan_client()

=item create_license()

=item create_makefile_pl()

=item create_packlist()

=item create_readme()

=item debug()

=item debugger()

=item destdir()

=item dynamic_config()

=item extra_manify_args()

=item get_options()

=item html_css()

=item include_dirs()

=item install_base()

=item installdirs()

=item libdoc_dirs()

=item license()

=item magic_number()

=item mb_version()

=item meta_add()

=item meta_merge()

=item metafile()

=item metafile2()

=item module_name()

=item mymetafile()

=item mymetafile2()

=item needs_compiler()

=item orig_dir()

=item perl()

=item pm_files()

=item pod_files()

=item pollute()

=item prefix()

=item prereq_action_types()

=item program_name()

=item pureperl_only()

=item quiet()

=item recommends()

=item recurse_into()

=item recursive_test_files()

=item requires()

=item scripts()

=item sign()

=item tap_harness_args()

=item test_file_exts()

=item test_requires()

=item use_rcfile()

=item use_tap_harness()

=item verbose()

=item xs_files()

=back

=head1 MODULE METADATA

If you would like to add other useful metadata, C<Module::Build>
supports this with the C<meta_add> and C<meta_merge> arguments to
L</new()>. The authoritative list of supported metadata can be found at
L<CPAN::Meta::Spec> but for convenience - here are a few of the more useful ones:

=over 4

=item keywords

For describing the distribution using keyword (or "tags") in order to
make CPAN.org indexing and search more efficient and useful.

=item resources

A list of additional resources available for users of the
distribution. This can include links to a homepage on the web, a
bug tracker, the repository location, and even a subscription page for the
distribution mailing list.

=back


=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>


=head1 COPYRIGHT

Copyright (c) 2001-2006 Ken Williams.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.


=head1 SEE ALSO

perl(1), L<Module::Build>(3), L<Module::Build::Authoring>(3),
L<Module::Build::Cookbook>(3), L<ExtUtils::MakeMaker>(3)

F<META.yml> Specification:
L<CPAN::Meta::Spec>

=cut
CoreList.pm000064400003051101150517530330006631 0ustar00package Module::CoreList;
use strict;

our ( %released, %version, %families, %upstream, %bug_tracker, %deprecated, %delta );

use version;
our $VERSION = '5.20181130';

sub PKG_PATTERN () { q#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z# }
sub _looks_like_invocant ($) { local $@; !!eval { $_[0]->isa(__PACKAGE__) } }

sub _undelta {
    my ($delta) = @_;
    my (%expanded, $delta_from, $base, $changed, $removed);
    for my $v (sort keys %$delta) {
        ($delta_from, $changed, $removed) = @{$delta->{$v}}{qw( delta_from changed removed )};
        $base = $delta_from ? $expanded{$delta_from} : {};
        my %full = ( %$base, %{$changed || {}} );
        delete @full{ keys %$removed };
        $expanded{$v} = \%full;
    }
    return %expanded;
}

sub _released_order {   # Sort helper, to make '?' sort after everything else
    (substr($released{$a}, 0, 1) eq "?")
    ? ((substr($released{$b}, 0, 1) eq "?")
        ? 0
        : 1)
    : ((substr($released{$b}, 0, 1) eq "?")
        ? -1
        : $released{$a} cmp $released{$b} )
}

my $dumpinc = 0;
sub import {
    my $self = shift;
    my $what = shift || '';
    if ($what eq 'dumpinc') {
        $dumpinc = 1;
    }
}

END {
    print "---INC---\n", join "\n" => keys %INC
      if $dumpinc;
}


sub first_release_raw {
    shift if defined $_[1] and $_[1] =~ PKG_PATTERN and _looks_like_invocant $_[0];
    my $module = shift;
    my $version = shift;

    my @perls = $version
        ? grep { defined $version{$_}{ $module } &&
                        $version{$_}{ $module } ge $version } keys %version
        : grep { exists $version{$_}{ $module }             } keys %version;

    return @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 find_modules {
    shift if _looks_like_invocant $_[0];
    my $regex = shift;
    my @perls = @_ ? @_ : keys %version;

    my %mods;
    foreach (@perls) {
        while (my ($k, $v) = each %{$version{$_}}) {
            $mods{$k}++ if $k =~ $regex;
        }
    }
    return sort keys %mods
}

sub find_version {
    shift if _looks_like_invocant $_[0];
    my $v = shift;
    return $version{$v} if defined $v and defined $version{$v};
    return;
}

sub is_deprecated {
    shift if defined $_[1] and $_[1] =~ PKG_PATTERN and _looks_like_invocant $_[0];
    my $module = shift;
    my $perl_version = shift || $];
    return unless $module && exists $deprecated{$perl_version}{$module};
    return $deprecated{$perl_version}{$module};
}

sub deprecated_in {
    shift if defined $_[1] and $_[1] =~ PKG_PATTERN and _looks_like_invocant $_[0];
    my $module = shift or return;
    my @perls = grep { exists $deprecated{$_}{$module} } keys %deprecated;
    return unless @perls;
    require List::Util;
    return List::Util::minstr(@perls);
}

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 {
  shift if defined $_[1] and $_[1] =~ PKG_PATTERN and _looks_like_invocant $_[0];
  my $mod = shift;
  return unless my @perls = sort { $a cmp $b } first_release_raw($mod);
  my $last = pop @perls;
  my @removed = grep { $_ > $last } sort { $a cmp $b } keys %version;
  return @removed;
}

sub changes_between {
  shift if _looks_like_invocant $_[0];
  my $left_ver = shift;
  my $right_ver = shift;

  my $left  = $version{ $left_ver };
  my $right = $version{ $right_ver };

  my %uniq = (%$left, %$right);

  my %changes;
  for my $lib (keys %uniq) {
      my $lhs = exists $left->{ $lib }
              ? (defined $left->{ $lib } ? $left->{ $lib } : '(undef)')
              : '(absent)';
      my $rhs = exists $right->{ $lib }
              ? (defined $right->{ $lib } ? $right->{ $lib } : '(undef)')
              : '(absent)';

      next if $lhs eq $rhs;

      my $change = {
        (exists $left->{$lib}  ? (left  => $left->{$lib})  : ()),
        (exists $right->{$lib} ? (right => $right->{$lib}) : ()),
      };

      $changes{$lib} = $change;
  }

  return %changes;
}

# When things escaped.
# NB. If you put version numbers with trailing zeroes here, you
# should also add an alias for the numerical ($]) version; see
# just before the __END__ of this module.
%released = (
    5.000    => '1994-10-17',
    5.001    => '1995-03-14',
    5.002    => '1996-02-29',
    5.00307  => '1996-10-10',
    5.004    => '1997-05-15',
    5.005    => '1998-07-22',
    5.00503  => '1999-03-28',
    5.00405  => '1999-04-29',
    5.006    => '2000-03-22',
    5.006001 => '2001-04-08',
    5.007003 => '2002-03-05',
    5.008    => '2002-07-19',
    5.008001 => '2003-09-25',
    5.009    => '2003-10-27',
    5.008002 => '2003-11-05',
    5.006002 => '2003-11-15',
    5.008003 => '2004-01-14',
    5.00504  => '2004-02-23',
    5.009001 => '2004-03-16',
    5.008004 => '2004-04-21',
    5.008005 => '2004-07-19',
    5.008006 => '2004-11-27',
    5.009002 => '2005-04-01',
    5.008007 => '2005-05-30',
    5.009003 => '2006-01-28',
    5.008008 => '2006-01-31',
    5.009004 => '2006-08-15',
    5.009005 => '2007-07-07',
    5.010000 => '2007-12-18',
    5.008009 => '2008-12-14',
    5.010001 => '2009-08-22',
    5.011000 => '2009-10-02',
    5.011001 => '2009-10-20',
    5.011002 => '2009-11-20',
    5.011003 => '2009-12-20',
    5.011004 => '2010-01-20',
    5.011005 => '2010-02-20',
    5.012000 => '2010-04-12',
    5.013000 => '2010-04-20',
    5.012001 => '2010-05-16',
    5.013001 => '2010-05-20',
    5.013002 => '2010-06-22',
    5.013003 => '2010-07-20',
    5.013004 => '2010-08-20',
    5.012002 => '2010-09-06',
    5.013005 => '2010-09-19',
    5.013006 => '2010-10-20',
    5.013007 => '2010-11-20',
    5.013008 => '2010-12-20',
    5.012003 => '2011-01-21',
    5.013009 => '2011-01-20',
    5.013010 => '2011-02-20',
    5.013011 => '2011-03-20',
    5.014000 => '2011-05-14',
    5.012004 => '2011-06-20',
    5.012005 => '2012-11-10',
    5.014001 => '2011-06-16',
    5.015000 => '2011-06-20',
    5.015001 => '2011-07-20',
    5.015002 => '2011-08-20',
    5.014002 => '2011-09-26',
    5.015003 => '2011-09-20',
    5.015004 => '2011-10-20',
    5.015005 => '2011-11-20',
    5.015006 => '2011-12-20',
    5.015007 => '2012-01-20',
    5.015008 => '2012-02-20',
    5.015009 => '2012-03-20',
    5.016000 => '2012-05-20',
    5.016001 => '2012-08-08',
    5.016002 => '2012-11-01',
    5.017000 => '2012-05-26',
    5.017001 => '2012-06-20',
    5.017002 => '2012-07-20',
    5.017003 => '2012-08-20',
    5.017004 => '2012-09-20',
    5.014003 => '2012-10-12',
    5.017005 => '2012-10-20',
    5.017006 => '2012-11-20',
    5.017007 => '2012-12-18',
    5.017008 => '2013-01-20',
    5.017009 => '2013-02-20',
    5.014004 => '2013-03-10',
    5.016003 => '2013-03-11',
    5.017010 => '2013-03-21',
    5.017011 => '2013-04-20',
    5.018000 => '2013-05-18',
    5.019000 => '2013-05-20',
    5.019001 => '2013-06-21',
    5.019002 => '2013-07-22',
    5.018001 => '2013-08-12',
    5.019003 => '2013-08-20',
    5.019004 => '2013-09-20',
    5.019005 => '2013-10-20',
    5.019006 => '2013-11-20',
    5.019007 => '2013-12-20',
    5.018002 => '2014-01-06',
    5.018003 => '2014-10-01',
    5.018004 => '2014-10-01',
    5.019008 => '2014-01-20',
    5.019009 => '2014-02-20',
    5.01901  => '2014-03-20',
    5.019011 => '2014-04-20',
    5.020000 => '2014-05-27',
    5.021000 => '2014-05-27',
    5.021001 => '2014-06-20',
    5.021002 => '2014-07-20',
    5.021003 => '2014-08-20',
    5.020001 => '2014-09-14',
    5.021004 => '2014-09-20',
    5.021005 => '2014-10-20',
    5.021006 => '2014-11-20',
    5.021007 => '2014-12-20',
    5.021008 => '2015-01-20',
    5.020002 => '2015-02-14',
    5.021009 => '2015-02-21',
    5.021010 => '2015-03-20',
    5.021011 => '2015-04-20',
    5.022000 => '2015-06-01',
    5.023000 => '2015-06-20',
    5.023001 => '2015-07-20',
    5.023002 => '2015-08-20',
    5.020003 => '2015-09-12',
    5.023003 => '2015-09-20',
    5.023004 => '2015-10-20',
    5.023005 => '2015-11-20',
    5.022001 => '2015-12-13',
    5.023006 => '2015-12-21',
    5.023007 => '2016-01-20',
    5.023008 => '2016-02-20',
    5.023009 => '2016-03-20',
    5.022002 => '2016-04-29',
    5.024000 => '2016-05-09',
    5.025000 => '2016-05-09',
    5.025001 => '2016-05-20',
    5.025002 => '2016-06-20',
    5.025003 => '2016-07-20',
    5.025004 => '2016-08-20',
    5.025005 => '2016-09-20',
    5.025006 => '2016-10-20',
    5.025007 => '2016-11-20',
    5.025008 => '2016-12-20',
    5.022003 => '2017-01-14',
    5.024001 => '2017-01-14',
    5.025009 => '2017-01-20',
    5.025010 => '2017-02-20',
    5.025011 => '2017-03-20',
    5.025012 => '2017-04-20',
    5.026000 => '2017-05-30',
    5.027000 => '2017-05-31',
    5.027001 => '2017-06-20',
    5.022004 => '2017-07-15',
    5.024002 => '2017-07-15',
    5.027002 => '2017-07-20',
    5.027003 => '2017-08-21',
    5.027004 => '2017-09-20',
    5.024003 => '2017-09-22',
    5.026001 => '2017-09-22',
    5.027005 => '2017-10-20',
    5.027006 => '2017-11-20',
    5.027007 => '2017-12-20',
    5.027008 => '2018-01-20',
    5.027009 => '2018-02-20',
    5.027010 => '2018-03-20',
    5.024004 => '2018-04-14',
    5.026002 => '2018-04-14',
    5.027011 => '2018-04-20',
    5.028000 => '2018-06-22',
    5.029000 => '2018-06-26',
    5.029001 => '2018-07-20',
    5.029002 => '2018-08-20',
    5.029003 => '2018-09-20',
    5.029004 => '2018-10-20',
    5.029005 => '2018-11-20',
    5.026003 => '2018-11-29',
    5.028001 => '2018-11-29',
  );

for my $version ( sort { $a <=> $b } keys %released ) {
    my $family = int ($version * 1000) / 1000;
    push @{ $families{ $family }} , $version;
}

%delta = (
    5 => {
        changed => {
            'AnyDBM_File'           => undef,
            'AutoLoader'            => undef,
            'AutoSplit'             => undef,
            'Benchmark'             => undef,
            'Carp'                  => undef,
            'Cwd'                   => undef,
            'DB_File'               => undef,
            'DynaLoader'            => undef,
            'English'               => undef,
            'Env'                   => undef,
            'Exporter'              => undef,
            'ExtUtils::MakeMaker'   => undef,
            'Fcntl'                 => undef,
            'File::Basename'        => undef,
            'File::CheckTree'       => undef,
            'File::Find'            => undef,
            'FileHandle'            => undef,
            'GDBM_File'             => undef,
            'Getopt::Long'          => undef,
            'Getopt::Std'           => undef,
            'I18N::Collate'         => undef,
            'IPC::Open2'            => undef,
            'IPC::Open3'            => undef,
            'Math::BigFloat'        => undef,
            'Math::BigInt'          => undef,
            'Math::Complex'         => undef,
            'NDBM_File'             => undef,
            'Net::Ping'             => undef,
            'ODBM_File'             => undef,
            'POSIX'                 => undef,
            'SDBM_File'             => undef,
            'Search::Dict'          => undef,
            'Shell'                 => undef,
            'Socket'                => undef,
            'Sys::Hostname'         => undef,
            'Sys::Syslog'           => undef,
            'Term::Cap'             => undef,
            'Term::Complete'        => undef,
            'Test::Harness'         => undef,
            'Text::Abbrev'          => undef,
            'Text::ParseWords'      => undef,
            'Text::Soundex'         => undef,
            'Text::Tabs'            => undef,
            'TieHash'               => undef,
            'Time::Local'           => undef,
            'integer'               => undef,
            'less'                  => undef,
            'sigtrap'               => undef,
            'strict'                => undef,
            'subs'                  => undef,
        },
        removed => {
        }
    },
    5.001 => {
        delta_from => 5,
        changed => {
            'ExtUtils::Liblist'     => undef,
            'ExtUtils::Manifest'    => undef,
            'ExtUtils::Mkbootstrap' => undef,
            'File::Path'            => undef,
            'SubstrHash'            => undef,
            'lib'                   => undef,
        },
        removed => {
        }
    },
    5.002 => {
        delta_from => 5.001,
        changed => {
            'DB_File'               => '1.01',
            'Devel::SelfStubber'    => '1.01',
            'DirHandle'             => undef,
            'DynaLoader'            => '1.00',
            'ExtUtils::Install'     => undef,
            'ExtUtils::MM_OS2'      => undef,
            'ExtUtils::MM_Unix'     => undef,
            'ExtUtils::MM_VMS'      => undef,
            'ExtUtils::MakeMaker'   => '5.21',
            'ExtUtils::Manifest'    => '1.22',
            'ExtUtils::Mksymlists'  => '1.00',
            'Fcntl'                 => '1.00',
            'File::Copy'            => '1.5',
            'File::Path'            => '1.01',
            'FileCache'             => undef,
            'FileHandle'            => '1.00',
            'GDBM_File'             => '1.00',
            'Getopt::Long'          => '2.01',
            'NDBM_File'             => '1.00',
            'Net::Ping'             => '1',
            'ODBM_File'             => '1.00',
            'POSIX'                 => '1.00',
            'Pod::Functions'        => undef,
            'Pod::Text'             => undef,
            'SDBM_File'             => '1.00',
            'Safe'                  => '1.00',
            'SelectSaver'           => undef,
            'SelfLoader'            => '1.06',
            'Socket'                => '1.5',
            'Symbol'                => undef,
            'Term::ReadLine'        => undef,
            'Test::Harness'         => '1.07',
            'Text::Wrap'            => undef,
            'Tie::Hash'             => undef,
            'Tie::Scalar'           => undef,
            'Tie::SubstrHash'       => undef,
            'diagnostics'           => undef,
            'overload'              => undef,
            'vars'                  => undef,
        },
        removed => {
            'SubstrHash'            => 1,
            'TieHash'               => 1,
        }
    },
    5.00307 => {
        delta_from => 5.002,
        changed => {
            'Config'                => undef,
            'DB_File'               => '1.03',
            'ExtUtils::Embed'       => '1.18',
            'ExtUtils::Install'     => '1.15',
            'ExtUtils::Liblist'     => '1.20',
            'ExtUtils::MM_Unix'     => '1.107',
            'ExtUtils::MakeMaker'   => '5.38',
            'ExtUtils::Manifest'    => '1.27',
            'ExtUtils::Mkbootstrap' => '1.13',
            'ExtUtils::Mksymlists'  => '1.12',
            'ExtUtils::testlib'     => '1.11',
            'Fatal'                 => undef,
            'File::Basename'        => '2.4',
            'FindBin'               => '1.04',
            'Getopt::Long'          => '2.04',
            'IO'                    => undef,
            'IO::File'              => '1.05',
            'IO::Handle'            => '1.12',
            'IO::Pipe'              => '1.07',
            'IO::Seekable'          => '1.05',
            'IO::Select'            => '1.09',
            'IO::Socket'            => '1.13',
            'Net::Ping'             => '1.01',
            'OS2::ExtAttr'          => '0.01',
            'OS2::PrfDB'            => '0.02',
            'OS2::Process'          => undef,
            'OS2::REXX'             => undef,
            'Opcode'                => '1.01',
            'Safe'                  => '2.06',
            'Test::Harness'         => '1.13',
            'Text::Tabs'            => '96.051501',
            'Text::Wrap'            => '96.041801',
            'UNIVERSAL'             => undef,
            'VMS::Filespec'         => undef,
            'VMS::Stdio'            => '2.0',
            'ops'                   => undef,
            'sigtrap'               => '1.01',
        },
        removed => {
        }
    },
    5.004 => {
        delta_from => 5.00307,
        changed => {
            'Bundle::CPAN'          => '0.02',
            'CGI'                   => '2.36',
            'CGI::Apache'           => '1.01',
            'CGI::Carp'             => '1.06',
            'CGI::Fast'             => '1.00a',
            'CGI::Push'             => '1.00',
            'CGI::Switch'           => '0.05',
            'CPAN'                  => '1.2401',
            'CPAN::FirstTime'       => '1.18',
            'CPAN::Nox'             => undef,
            'Class::Struct'         => undef,
            'Cwd'                   => '2.00',
            'DB_File'               => '1.14',
            'DynaLoader'            => '1.02',
            'ExtUtils::Command'     => '1.00',
            'ExtUtils::Embed'       => '1.2501',
            'ExtUtils::Install'     => '1.16',
            'ExtUtils::Liblist'     => '1.2201',
            'ExtUtils::MM_Unix'     => '1.114',
            'ExtUtils::MM_Win32'    => undef,
            'ExtUtils::MakeMaker'   => '5.4002',
            'ExtUtils::Manifest'    => '1.33',
            'ExtUtils::Mksymlists'  => '1.13',
            'ExtUtils::XSSymSet'    => '1.0',
            'Fcntl'                 => '1.03',
            'File::Basename'        => '2.5',
            'File::Compare'         => '1.1001',
            'File::Copy'            => '2.02',
            'File::Path'            => '1.04',
            'File::stat'            => undef,
            'FileHandle'            => '2.00',
            'Getopt::Long'          => '2.10',
            'IO::File'              => '1.0602',
            'IO::Handle'            => '1.1504',
            'IO::Pipe'              => '1.0901',
            'IO::Seekable'          => '1.06',
            'IO::Select'            => '1.10',
            'IO::Socket'            => '1.1602',
            'IPC::Open2'            => '1.01',
            'IPC::Open3'            => '1.0101',
            'Math::Complex'         => '1.01',
            'Math::Trig'            => '1',
            'Net::Ping'             => '2.02',
            'Net::hostent'          => undef,
            'Net::netent'           => undef,
            'Net::protoent'         => undef,
            'Net::servent'          => undef,
            'Opcode'                => '1.04',
            'POSIX'                 => '1.02',
            'Pod::Html'             => undef,
            'Pod::Text'             => '1.0203',
            'SelfLoader'            => '1.07',
            'Socket'                => '1.6',
            'Symbol'                => '1.02',
            'Test::Harness'         => '1.1502',
            'Text::Tabs'            => '96.121201',
            'Text::Wrap'            => '97.011701',
            'Tie::RefHash'          => undef,
            'Time::gmtime'          => '1.01',
            'Time::localtime'       => '1.01',
            'Time::tm'              => undef,
            'User::grent'           => undef,
            'User::pwent'           => undef,
            'VMS::DCLsym'           => '1.01',
            'VMS::Stdio'            => '2.02',
            'autouse'               => '1.01',
            'blib'                  => undef,
            'constant'              => '1.00',
            'locale'                => undef,
            'sigtrap'               => '1.02',
            'vmsish'                => undef,
        },
        removed => {
            'Fatal'                 => 1,
        }
    },
    5.00405 => {
        delta_from => 5.004,
        changed => {
            'AutoLoader'            => '5.56',
            'AutoSplit'             => '1.0303',
            'Bundle::CPAN'          => '0.03',
            'CGI'                   => '2.42',
            'CGI::Apache'           => '1.1',
            'CGI::Carp'             => '1.10',
            'CGI::Cookie'           => '1.06',
            'CGI::Push'             => '1.01',
            'CGI::Switch'           => '0.06',
            'CPAN'                  => '1.40',
            'CPAN::FirstTime'       => '1.30',
            'Cwd'                   => '2.01',
            'DB_File'               => '1.15',
            'DynaLoader'            => '1.03',
            'ExtUtils::Command'     => '1.01',
            'ExtUtils::Embed'       => '1.2505',
            'ExtUtils::Install'     => '1.28',
            'ExtUtils::Liblist'     => '1.25',
            'ExtUtils::MM_Unix'     => '1.118',
            'ExtUtils::MakeMaker'   => '5.42',
            'ExtUtils::Mkbootstrap' => '1.14',
            'ExtUtils::Mksymlists'  => '1.16',
            'File::Basename'        => '2.6',
            'File::DosGlob'         => undef,
            'File::Path'            => '1.0402',
            'File::Spec'            => '0.6',
            'File::Spec::Mac'       => '1.0',
            'File::Spec::OS2'       => undef,
            'File::Spec::Unix'      => undef,
            'File::Spec::VMS'       => undef,
            'File::Spec::Win32'     => undef,
            'FindBin'               => '1.41',
            'Getopt::Long'          => '2.19',
            'IO::File'              => '1.06021',
            'IO::Socket'            => '1.1603',
            'IPC::Open3'            => '1.0103',
            'Math::Complex'         => '1.25',
            'NDBM_File'             => '1.01',
            'Pod::Html'             => '1.0101',
            'Pod::Text'             => '1.0204',
            'SelfLoader'            => '1.08',
            'Socket'                => '1.7',
            'Test'                  => '1.04',
            'Test::Harness'         => '1.1602',
            'Text::ParseWords'      => '3.1001',
            'Text::Wrap'            => '98.112902',
            'Tie::Handle'           => undef,
            'attrs'                 => '0.1',
            'base'                  => undef,
            'blib'                  => '1.00',
            're'                    => undef,
            'strict'                => '1.01',
        },
        removed => {
        }
    },
    5.005 => {
        delta_from => 5.00405,
        changed => {
            'AutoLoader'            => undef,
            'AutoSplit'             => '1.0302',
            'B'                     => undef,
            'B::Asmdata'            => undef,
            'B::Assembler'          => undef,
            'B::Bblock'             => undef,
            'B::Bytecode'           => undef,
            'B::C'                  => undef,
            'B::CC'                 => undef,
            'B::Debug'              => undef,
            'B::Deparse'            => '0.56',
            'B::Disassembler'       => undef,
            'B::Lint'               => undef,
            'B::Showlex'            => undef,
            'B::Stackobj'           => undef,
            'B::Terse'              => undef,
            'B::Xref'               => undef,
            'CGI::Carp'             => '1.101',
            'CPAN'                  => '1.3901',
            'CPAN::FirstTime'       => '1.29',
            'DB_File'               => '1.60',
            'Data::Dumper'          => '2.09',
            'Errno'                 => '1.09',
            'ExtUtils::Installed'   => '0.02',
            'ExtUtils::MM_Unix'     => '1.12601',
            'ExtUtils::MakeMaker'   => '5.4301',
            'ExtUtils::Mkbootstrap' => '1.13',
            'ExtUtils::Mksymlists'  => '1.17',
            'ExtUtils::Packlist'    => '0.03',
            'Fatal'                 => '1.02',
            'File::Path'            => '1.0401',
            'Getopt::Long'          => '2.17',
            'IO::Handle'            => '1.1505',
            'IPC::Msg'              => '1.00',
            'IPC::Open3'            => '1.0102',
            'IPC::Semaphore'        => '1.00',
            'IPC::SysV'             => '1.03',
            'O'                     => undef,
            'OS2::Process'          => '0.2',
            'Pod::Html'             => '1.01',
            'Pod::Text'             => '1.0203',
            'Text::ParseWords'      => '3.1',
            'Text::Wrap'            => '97.02',
            'Thread'                => '1.0',
            'Thread::Queue'         => undef,
            'Thread::Semaphore'     => undef,
            'Thread::Signal'        => undef,
            'Thread::Specific'      => undef,
            'Tie::Array'            => '1.00',
            'VMS::Stdio'            => '2.1',
            'attrs'                 => '1.0',
            'fields'                => '0.02',
            're'                    => '0.02',
        },
        removed => {
            'Bundle::CPAN'          => 1,
        }
    },
    5.00503 => {
        delta_from => 5.005,
        changed => {
            'AutoSplit'             => '1.0303',
            'CGI'                   => '2.46',
            'CGI::Carp'             => '1.13',
            'CGI::Fast'             => '1.01',
            'CPAN'                  => '1.48',
            'CPAN::FirstTime'       => '1.36',
            'CPAN::Nox'             => '1.00',
            'DB_File'               => '1.65',
            'Data::Dumper'          => '2.101',
            'Dumpvalue'             => undef,
            'Errno'                 => '1.111',
            'ExtUtils::Install'     => '1.28',
            'ExtUtils::Liblist'     => '1.25',
            'ExtUtils::MM_Unix'     => '1.12602',
            'ExtUtils::MakeMaker'   => '5.4302',
            'ExtUtils::Manifest'    => '1.33',
            'ExtUtils::Mkbootstrap' => '1.14',
            'ExtUtils::Mksymlists'  => '1.17',
            'ExtUtils::testlib'     => '1.11',
            'FindBin'               => '1.42',
            'Getopt::Long'          => '2.19',
            'Getopt::Std'           => '1.01',
            'IO::Pipe'              => '1.0902',
            'IPC::Open3'            => '1.0103',
            'Math::Complex'         => '1.26',
            'Test'                  => '1.122',
            'Text::Wrap'            => '98.112902',
        },
        removed => {
        }
    },
    5.00504 => {
        delta_from => 5.00503,
        changed => {
            'CPAN::FirstTime'       => '1.36',
            'DB_File'               => '1.807',
            'ExtUtils::Install'     => '1.28',
            'ExtUtils::Liblist'     => '1.25',
            'ExtUtils::MM_Unix'     => '1.12602',
            'ExtUtils::Manifest'    => '1.33',
            'ExtUtils::Miniperl'    => undef,
            'ExtUtils::Mkbootstrap' => '1.14',
            'ExtUtils::Mksymlists'  => '1.17',
            'ExtUtils::testlib'     => '1.11',
            'File::Compare'         => '1.1002',
            'File::Spec'            => '0.8',
            'File::Spec::Functions' => undef,
            'File::Spec::Mac'       => undef,
            'Getopt::Long'          => '2.20',
            'Pod::Html'             => '1.02',
        },
        removed => {
        }
    },
    5.006 => {
        delta_from => 5.00504,
        changed => {
            'AutoLoader'            => '5.57',
            'AutoSplit'             => '1.0305',
            'B::Deparse'            => '0.59',
            'B::Stash'              => undef,
            'Benchmark'             => '1',
            'ByteLoader'            => '0.03',
            'CGI'                   => '2.56',
            'CGI::Apache'           => undef,
            'CGI::Carp'             => '1.14',
            'CGI::Cookie'           => '1.12',
            'CGI::Fast'             => '1.02',
            'CGI::Pretty'           => '1.03',
            'CGI::Switch'           => undef,
            'CPAN'                  => '1.52',
            'CPAN::FirstTime'       => '1.38',
            'Carp::Heavy'           => undef,
            'Class::Struct'         => '0.58',
            'Cwd'                   => '2.02',
            'DB'                    => '1.0',
            'DB_File'               => '1.72',
            'Devel::DProf'          => '20000000.00_00',
            'Devel::Peek'           => '1.00_01',
            'DynaLoader'            => '1.04',
            'Exporter'              => '5.562',
            'Exporter::Heavy'       => undef,
            'ExtUtils::MM_Cygwin'   => undef,
            'ExtUtils::MM_Unix'     => '1.12603',
            'ExtUtils::MakeMaker'   => '5.45',
            'File::Copy'            => '2.03',
            'File::Glob'            => '0.991',
            'File::Path'            => '1.0403',
            'GDBM_File'             => '1.03',
            'Getopt::Long'          => '2.23',
            'Getopt::Std'           => '1.02',
            'IO'                    => '1.20',
            'IO::Dir'               => '1.03',
            'IO::File'              => '1.08',
            'IO::Handle'            => '1.21',
            'IO::Pipe'              => '1.121',
            'IO::Poll'              => '0.01',
            'IO::Seekable'          => '1.08',
            'IO::Select'            => '1.14',
            'IO::Socket'            => '1.26',
            'IO::Socket::INET'      => '1.25',
            'IO::Socket::UNIX'      => '1.20',
            'JNI'                   => '0.01',
            'JPL::AutoLoader'       => undef,
            'JPL::Class'            => undef,
            'JPL::Compile'          => undef,
            'NDBM_File'             => '1.03',
            'ODBM_File'             => '1.02',
            'OS2::DLL'              => undef,
            'POSIX'                 => '1.03',
            'Pod::Checker'          => '1.098',
            'Pod::Find'             => '0.12',
            'Pod::Html'             => '1.03',
            'Pod::InputObjects'     => '1.12',
            'Pod::Man'              => '1.02',
            'Pod::ParseUtils'       => '0.2',
            'Pod::Parser'           => '1.12',
            'Pod::Plainer'          => '0.01',
            'Pod::Select'           => '1.12',
            'Pod::Text'             => '2.03',
            'Pod::Text::Color'      => '0.05',
            'Pod::Text::Termcap'    => '0.04',
            'Pod::Usage'            => '1.12',
            'SDBM_File'             => '1.02',
            'SelfLoader'            => '1.0901',
            'Shell'                 => '0.2',
            'Socket'                => '1.72',
            'Sys::Hostname'         => '1.1',
            'Sys::Syslog'           => '0.01',
            'Term::ANSIColor'       => '1.01',
            'Test'                  => '1.13',
            'Test::Harness'         => '1.1604',
            'Text::ParseWords'      => '3.2',
            'Text::Soundex'         => '1.0',
            'Text::Tabs'            => '98.112801',
            'Tie::Array'            => '1.01',
            'Tie::Handle'           => '1.0',
            'VMS::Stdio'            => '2.2',
            'XSLoader'              => '0.01',
            'attributes'            => '0.03',
            'autouse'               => '1.02',
            'base'                  => '1.01',
            'bytes'                 => undef,
            'charnames'             => undef,
            'constant'              => '1.02',
            'diagnostics'           => '1.0',
            'fields'                => '1.01',
            'filetest'              => undef,
            'lib'                   => '0.5564',
            'open'                  => undef,
            'utf8'                  => undef,
            'warnings'              => undef,
            'warnings::register'    => undef,
        },
        removed => {
        }
    },
    5.006001 => {
        delta_from => 5.006,
        changed => {
            'AutoLoader'            => '5.58',
            'B::Assembler'          => '0.02',
            'B::Concise'            => '0.51',
            'B::Deparse'            => '0.6',
            'ByteLoader'            => '0.04',
            'CGI'                   => '2.752',
            'CGI::Carp'             => '1.20',
            'CGI::Cookie'           => '1.18',
            'CGI::Pretty'           => '1.05',
            'CGI::Push'             => '1.04',
            'CGI::Util'             => '1.1',
            'CPAN'                  => '1.59_54',
            'CPAN::FirstTime'       => '1.53',
            'Class::Struct'         => '0.59',
            'Cwd'                   => '2.04',
            'DB_File'               => '1.75',
            'Data::Dumper'          => '2.102',
            'ExtUtils::Install'     => '1.28',
            'ExtUtils::Liblist'     => '1.26',
            'ExtUtils::MM_Unix'     => '1.12603',
            'ExtUtils::Manifest'    => '1.33',
            'ExtUtils::Mkbootstrap' => '1.14',
            'ExtUtils::Mksymlists'  => '1.17',
            'ExtUtils::testlib'     => '1.11',
            'File::Path'            => '1.0404',
            'File::Spec'            => '0.82',
            'File::Spec::Epoc'      => undef,
            'File::Spec::Functions' => '1.1',
            'File::Spec::Mac'       => '1.2',
            'File::Spec::OS2'       => '1.1',
            'File::Spec::Unix'      => '1.2',
            'File::Spec::VMS'       => '1.1',
            'File::Spec::Win32'     => '1.2',
            'File::Temp'            => '0.12',
            'GDBM_File'             => '1.05',
            'Getopt::Long'          => '2.25',
            'IO::Poll'              => '0.05',
            'JNI'                   => '0.1',
            'Math::BigFloat'        => '0.02',
            'Math::BigInt'          => '0.01',
            'Math::Complex'         => '1.31',
            'NDBM_File'             => '1.04',
            'ODBM_File'             => '1.03',
            'OS2::REXX'             => '1.00',
            'Pod::Checker'          => '1.2',
            'Pod::Find'             => '0.21',
            'Pod::InputObjects'     => '1.13',
            'Pod::LaTeX'            => '0.53',
            'Pod::Man'              => '1.15',
            'Pod::ParseUtils'       => '0.22',
            'Pod::Parser'           => '1.13',
            'Pod::Select'           => '1.13',
            'Pod::Text'             => '2.08',
            'Pod::Text::Color'      => '0.06',
            'Pod::Text::Overstrike' => '1.01',
            'Pod::Text::Termcap'    => '1',
            'Pod::Usage'            => '1.14',
            'SDBM_File'             => '1.03',
            'SelfLoader'            => '1.0902',
            'Shell'                 => '0.3',
            'Term::ANSIColor'       => '1.03',
            'Test'                  => '1.15',
            'Text::Wrap'            => '2001.0131',
            'Tie::Handle'           => '4.0',
            'Tie::RefHash'          => '1.3',
        },
        removed => {
        }
    },
    5.006002 => {
        delta_from => 5.006001,
        changed => {
            'CPAN::FirstTime'       => '1.53',
            'DB_File'               => '1.806',
            'Data::Dumper'          => '2.121',
            'ExtUtils::Command'     => '1.05',
            'ExtUtils::Command::MM' => '0.03',
            'ExtUtils::Install'     => '1.32',
            'ExtUtils::Installed'   => '0.08',
            'ExtUtils::Liblist'     => '1.01',
            'ExtUtils::Liblist::Kid'=> '1.3',
            'ExtUtils::MM'          => '0.04',
            'ExtUtils::MM_Any'      => '0.07',
            'ExtUtils::MM_BeOS'     => '1.04',
            'ExtUtils::MM_Cygwin'   => '1.06',
            'ExtUtils::MM_DOS'      => '0.02',
            'ExtUtils::MM_MacOS'    => '1.07',
            'ExtUtils::MM_NW5'      => '2.06',
            'ExtUtils::MM_OS2'      => '1.04',
            'ExtUtils::MM_UWIN'     => '0.02',
            'ExtUtils::MM_Unix'     => '1.42',
            'ExtUtils::MM_VMS'      => '5.70',
            'ExtUtils::MM_Win32'    => '1.09',
            'ExtUtils::MM_Win95'    => '0.03',
            'ExtUtils::MY'          => '0.01',
            'ExtUtils::MakeMaker'   => '6.17',
            'ExtUtils::MakeMaker::bytes'=> '0.01',
            'ExtUtils::MakeMaker::vmsish'=> '0.01',
            'ExtUtils::Manifest'    => '1.42',
            'ExtUtils::Mkbootstrap' => '1.15',
            'ExtUtils::Mksymlists'  => '1.19',
            'ExtUtils::Packlist'    => '0.04',
            'ExtUtils::testlib'     => '1.15',
            'File::Spec'            => '0.86',
            'File::Spec::Cygwin'    => '1.1',
            'File::Spec::Epoc'      => '1.1',
            'File::Spec::Functions' => '1.3',
            'File::Spec::Mac'       => '1.4',
            'File::Spec::OS2'       => '1.2',
            'File::Spec::Unix'      => '1.5',
            'File::Spec::VMS'       => '1.4',
            'File::Spec::Win32'     => '1.4',
            'File::Temp'            => '0.14',
            'Safe'                  => '2.10',
            'Test'                  => '1.24',
            'Test::Builder'         => '0.17',
            'Test::Harness'         => '2.30',
            'Test::Harness::Assert' => '0.01',
            'Test::Harness::Iterator'=> '0.01',
            'Test::Harness::Straps' => '0.15',
            'Test::More'            => '0.47',
            'Test::Simple'          => '0.47',
            'Unicode'               => '3.0.1',
            'if'                    => '0.03',
            'ops'                   => '1.00',
        },
        removed => {
        }
    },
    5.007003 => {
        delta_from => 5.006001,
        changed => {
            'AnyDBM_File'           => '1.00',
            'Attribute::Handlers'   => '0.76',
            'AutoLoader'            => '5.59',
            'AutoSplit'             => '1.0307',
            'B'                     => '1.00',
            'B::Asmdata'            => '1.00',
            'B::Assembler'          => '0.04',
            'B::Bblock'             => '1.00',
            'B::Bytecode'           => '1.00',
            'B::C'                  => '1.01',
            'B::CC'                 => '1.00',
            'B::Concise'            => '0.52',
            'B::Debug'              => '1.00',
            'B::Deparse'            => '0.63',
            'B::Disassembler'       => '1.01',
            'B::Lint'               => '1.00',
            'B::Showlex'            => '1.00',
            'B::Stackobj'           => '1.00',
            'B::Stash'              => '1.00',
            'B::Terse'              => '1.00',
            'B::Xref'               => '1.00',
            'Benchmark'             => '1.04',
            'CGI'                   => '2.80',
            'CGI::Apache'           => '1.00',
            'CGI::Carp'             => '1.22',
            'CGI::Cookie'           => '1.20',
            'CGI::Fast'             => '1.04',
            'CGI::Pretty'           => '1.05_00',
            'CGI::Switch'           => '1.00',
            'CGI::Util'             => '1.3',
            'CPAN'                  => '1.59_56',
            'CPAN::FirstTime'       => '1.54',
            'CPAN::Nox'             => '1.00_01',
            'Carp'                  => '1.01',
            'Carp::Heavy'           => '1.01',
            'Class::ISA'            => '0.32',
            'Class::Struct'         => '0.61',
            'Cwd'                   => '2.06',
            'DB_File'               => '1.804',
            'Data::Dumper'          => '2.12',
            'Devel::DProf'          => '20000000.00_01',
            'Devel::PPPort'         => '2.0002',
            'Devel::Peek'           => '1.00_03',
            'Devel::SelfStubber'    => '1.03',
            'Digest'                => '1.00',
            'Digest::MD5'           => '2.16',
            'DirHandle'             => '1.00',
            'Dumpvalue'             => '1.10',
            'Encode'                => '0.40',
            'Encode::CN'            => '0.02',
            'Encode::CN::HZ'        => undef,
            'Encode::Encoding'      => '0.02',
            'Encode::Internal'      => '0.30',
            'Encode::JP'            => '0.02',
            'Encode::JP::Constants' => '1.02',
            'Encode::JP::H2Z'       => '0.77',
            'Encode::JP::ISO_2022_JP'=> undef,
            'Encode::JP::JIS'       => undef,
            'Encode::JP::Tr'        => '0.77',
            'Encode::KR'            => '0.02',
            'Encode::TW'            => '0.02',
            'Encode::Tcl'           => '1.01',
            'Encode::Tcl::Escape'   => '1.01',
            'Encode::Tcl::Extended' => '1.01',
            'Encode::Tcl::HanZi'    => '1.01',
            'Encode::Tcl::Table'    => '1.01',
            'Encode::Unicode'       => '0.30',
            'Encode::XS'            => '0.40',
            'Encode::iso10646_1'    => '0.30',
            'Encode::usc2_le'       => '0.30',
            'Encode::utf8'          => '0.30',
            'English'               => '1.00',
            'Env'                   => '1.00',
            'Exporter'              => '5.566',
            'Exporter::Heavy'       => '5.562',
            'ExtUtils::Command'     => '1.02',
            'ExtUtils::Constant'    => '0.11',
            'ExtUtils::Embed'       => '1.250601',
            'ExtUtils::Install'     => '1.29',
            'ExtUtils::Installed'   => '0.04',
            'ExtUtils::Liblist'     => '1.2701',
            'ExtUtils::MM_BeOS'     => '1.00',
            'ExtUtils::MM_Cygwin'   => '1.00',
            'ExtUtils::MM_OS2'      => '1.00',
            'ExtUtils::MM_Unix'     => '1.12607',
            'ExtUtils::MM_VMS'      => '5.56',
            'ExtUtils::MM_Win32'    => '1.00_02',
            'ExtUtils::MakeMaker'   => '5.48_03',
            'ExtUtils::Manifest'    => '1.35',
            'ExtUtils::Mkbootstrap' => '1.1401',
            'ExtUtils::Mksymlists'  => '1.18',
            'ExtUtils::Packlist'    => '0.04',
            'ExtUtils::testlib'     => '1.1201',
            'Fatal'                 => '1.03',
            'Fcntl'                 => '1.04',
            'File::Basename'        => '2.71',
            'File::CheckTree'       => '4.1',
            'File::Compare'         => '1.1003',
            'File::Copy'            => '2.05',
            'File::DosGlob'         => '1.00',
            'File::Find'            => '1.04',
            'File::Glob'            => '1.01',
            'File::Path'            => '1.05',
            'File::Spec'            => '0.83',
            'File::Spec::Cygwin'    => '1.0',
            'File::Spec::Epoc'      => '1.00',
            'File::Spec::Functions' => '1.2',
            'File::Spec::Mac'       => '1.3',
            'File::Spec::Unix'      => '1.4',
            'File::Spec::VMS'       => '1.2',
            'File::Spec::Win32'     => '1.3',
            'File::Temp'            => '0.13',
            'File::stat'            => '1.00',
            'FileCache'             => '1.00',
            'FileHandle'            => '2.01',
            'Filter::Simple'        => '0.77',
            'Filter::Util::Call'    => '1.06',
            'FindBin'               => '1.43',
            'GDBM_File'             => '1.06',
            'Getopt::Long'          => '2.28',
            'Getopt::Std'           => '1.03',
            'I18N::Collate'         => '1.00',
            'I18N::LangTags'        => '0.27',
            'I18N::LangTags::List'  => '0.25',
            'I18N::Langinfo'        => '0.01',
            'IO::Dir'               => '1.03_00',
            'IO::File'              => '1.09',
            'IO::Handle'            => '1.21_00',
            'IO::Pipe'              => '1.122',
            'IO::Poll'              => '0.06',
            'IO::Seekable'          => '1.08_00',
            'IO::Select'            => '1.15',
            'IO::Socket'            => '1.27',
            'IO::Socket::INET'      => '1.26',
            'IO::Socket::UNIX'      => '1.20_00',
            'IPC::Msg'              => '1.00_00',
            'IPC::Open3'            => '1.0104',
            'IPC::Semaphore'        => '1.00_00',
            'IPC::SysV'             => '1.03_00',
            'List::Util'            => '1.06_00',
            'Locale::Constants'     => '2.01',
            'Locale::Country'       => '2.01',
            'Locale::Currency'      => '2.01',
            'Locale::Language'      => '2.01',
            'Locale::Maketext'      => '1.03',
            'Locale::Script'        => '2.01',
            'MIME::Base64'          => '2.12',
            'MIME::QuotedPrint'     => '2.03',
            'Math::BigFloat'        => '1.30',
            'Math::BigInt'          => '1.54',
            'Math::BigInt::Calc'    => '0.25',
            'Math::Complex'         => '1.34',
            'Math::Trig'            => '1.01',
            'Memoize'               => '0.66',
            'Memoize::AnyDBM_File'  => '0.65',
            'Memoize::Expire'       => '0.66',
            'Memoize::ExpireFile'   => '0.65',
            'Memoize::ExpireTest'   => '0.65',
            'Memoize::NDBM_File'    => '0.65',
            'Memoize::SDBM_File'    => '0.65',
            'Memoize::Storable'     => '0.65',
            'NEXT'                  => '0.50',
            'Net::Cmd'              => '2.21',
            'Net::Config'           => '1.10',
            'Net::Domain'           => '2.17',
            'Net::FTP'              => '2.64',
            'Net::FTP::A'           => '1.15',
            'Net::FTP::E'           => '0.01',
            'Net::FTP::I'           => '1.12',
            'Net::FTP::L'           => '0.01',
            'Net::FTP::dataconn'    => '0.10',
            'Net::NNTP'             => '2.21',
            'Net::Netrc'            => '2.12',
            'Net::POP3'             => '2.23',
            'Net::Ping'             => '2.12',
            'Net::SMTP'             => '2.21',
            'Net::Time'             => '2.09',
            'Net::hostent'          => '1.00',
            'Net::netent'           => '1.00',
            'Net::protoent'         => '1.00',
            'Net::servent'          => '1.00',
            'O'                     => '1.00',
            'OS2::DLL'              => '1.00',
            'OS2::Process'          => '1.0',
            'OS2::REXX'             => '1.01',
            'Opcode'                => '1.05',
            'POSIX'                 => '1.05',
            'PerlIO'                => '1.00',
            'PerlIO::Scalar'        => '0.01',
            'PerlIO::Via'           => '0.01',
            'Pod::Checker'          => '1.3',
            'Pod::Find'             => '0.22',
            'Pod::Functions'        => '1.01',
            'Pod::Html'             => '1.04',
            'Pod::LaTeX'            => '0.54',
            'Pod::Man'              => '1.32',
            'Pod::ParseLink'        => '1.05',
            'Pod::Text'             => '2.18',
            'Pod::Text::Color'      => '1.03',
            'Pod::Text::Overstrike' => '1.08',
            'Pod::Text::Termcap'    => '1.09',
            'Safe'                  => '2.07',
            'Scalar::Util'          => '1.06_00',
            'Search::Dict'          => '1.02',
            'SelectSaver'           => '1.00',
            'SelfLoader'            => '1.0903',
            'Shell'                 => '0.4',
            'Socket'                => '1.75',
            'Storable'              => '1.015',
            'Switch'                => '2.06',
            'Symbol'                => '1.04',
            'Sys::Syslog'           => '0.02',
            'Term::ANSIColor'       => '1.04',
            'Term::Cap'             => '1.07',
            'Term::Complete'        => '1.4',
            'Term::ReadLine'        => '1.00',
            'Test'                  => '1.18',
            'Test::Builder'         => '0.11',
            'Test::Harness'         => '2.01',
            'Test::Harness::Assert' => '0.01',
            'Test::Harness::Iterator'=> '0.01',
            'Test::Harness::Straps' => '0.08',
            'Test::More'            => '0.41',
            'Test::Simple'          => '0.41',
            'Text::Abbrev'          => '1.00',
            'Text::Balanced'        => '1.89',
            'Text::ParseWords'      => '3.21',
            'Text::Soundex'         => '1.01',
            'Text::Wrap'            => '2001.0929',
            'Thread'                => '2.00',
            'Thread::Queue'         => '1.00',
            'Thread::Semaphore'     => '1.00',
            'Thread::Signal'        => '1.00',
            'Thread::Specific'      => '1.00',
            'Tie::Array'            => '1.02',
            'Tie::File'             => '0.17',
            'Tie::Handle'           => '4.1',
            'Tie::Hash'             => '1.00',
            'Tie::Memoize'          => '1.0',
            'Tie::RefHash'          => '1.3_00',
            'Tie::Scalar'           => '1.00',
            'Tie::SubstrHash'       => '1.00',
            'Time::HiRes'           => '1.20_00',
            'Time::Local'           => '1.04',
            'Time::gmtime'          => '1.02',
            'Time::localtime'       => '1.02',
            'Time::tm'              => '1.00',
            'UNIVERSAL'             => '1.00',
            'Unicode::Collate'      => '0.10',
            'Unicode::Normalize'    => '0.14',
            'Unicode::UCD'          => '0.2',
            'User::grent'           => '1.00',
            'User::pwent'           => '1.00',
            'VMS::DCLsym'           => '1.02',
            'VMS::Filespec'         => '1.1',
            'VMS::Stdio'            => '2.3',
            'XS::Typemap'           => '0.01',
            'attributes'            => '0.04_01',
            'attrs'                 => '1.01',
            'autouse'               => '1.03',
            'base'                  => '1.02',
            'blib'                  => '1.01',
            'bytes'                 => '1.00',
            'charnames'             => '1.01',
            'constant'              => '1.04',
            'diagnostics'           => '1.1',
            'encoding'              => '1.00',
            'fields'                => '1.02',
            'filetest'              => '1.00',
            'if'                    => '0.01',
            'integer'               => '1.00',
            'less'                  => '0.01',
            'locale'                => '1.00',
            'open'                  => '1.01',
            'ops'                   => '1.00',
            'overload'              => '1.00',
            're'                    => '0.03',
            'sort'                  => '1.00',
            'strict'                => '1.02',
            'subs'                  => '1.00',
            'threads'               => '0.05',
            'threads::shared'       => '0.90',
            'utf8'                  => '1.00',
            'vars'                  => '1.01',
            'vmsish'                => '1.00',
            'warnings'              => '1.00',
            'warnings::register'    => '1.00',
        },
        removed => {
        }
    },
    5.008 => {
        delta_from => 5.007003,
        changed => {
            'Attribute::Handlers'   => '0.77',
            'B'                     => '1.01',
            'B::Lint'               => '1.01',
            'B::Xref'               => '1.01',
            'CGI'                   => '2.81',
            'CGI::Carp'             => '1.23',
            'CPAN'                  => '1.61',
            'CPAN::FirstTime'       => '1.56',
            'CPAN::Nox'             => '1.02',
            'Digest::MD5'           => '2.20',
            'Dumpvalue'             => '1.11',
            'Encode'                => '1.75',
            'Encode::Alias'         => '1.32',
            'Encode::Byte'          => '1.22',
            'Encode::CJKConstants'  => '1.00',
            'Encode::CN'            => '1.24',
            'Encode::CN::HZ'        => '1.04',
            'Encode::Config'        => '1.06',
            'Encode::EBCDIC'        => '1.21',
            'Encode::Encoder'       => '0.05',
            'Encode::Encoding'      => '1.30',
            'Encode::Guess'         => '1.06',
            'Encode::JP'            => '1.25',
            'Encode::JP::H2Z'       => '1.02',
            'Encode::JP::JIS7'      => '1.08',
            'Encode::KR'            => '1.22',
            'Encode::KR::2022_KR'   => '1.05',
            'Encode::MIME::Header'  => '1.05',
            'Encode::Symbol'        => '1.22',
            'Encode::TW'            => '1.26',
            'Encode::Unicode'       => '1.37',
            'Exporter::Heavy'       => '5.566',
            'ExtUtils::Command'     => '1.04',
            'ExtUtils::Command::MM' => '0.01',
            'ExtUtils::Constant'    => '0.12',
            'ExtUtils::Installed'   => '0.06',
            'ExtUtils::Liblist'     => '1.00',
            'ExtUtils::Liblist::Kid'=> '1.29',
            'ExtUtils::MM'          => '0.04',
            'ExtUtils::MM_Any'      => '0.04',
            'ExtUtils::MM_BeOS'     => '1.03',
            'ExtUtils::MM_Cygwin'   => '1.04',
            'ExtUtils::MM_DOS'      => '0.01',
            'ExtUtils::MM_MacOS'    => '1.03',
            'ExtUtils::MM_NW5'      => '2.05',
            'ExtUtils::MM_OS2'      => '1.03',
            'ExtUtils::MM_UWIN'     => '0.01',
            'ExtUtils::MM_Unix'     => '1.33',
            'ExtUtils::MM_VMS'      => '5.65',
            'ExtUtils::MM_Win32'    => '1.05',
            'ExtUtils::MM_Win95'    => '0.02',
            'ExtUtils::MY'          => '0.01',
            'ExtUtils::MakeMaker'   => '6.03',
            'ExtUtils::Manifest'    => '1.38',
            'ExtUtils::Mkbootstrap' => '1.15',
            'ExtUtils::Mksymlists'  => '1.19',
            'ExtUtils::testlib'     => '1.15',
            'File::CheckTree'       => '4.2',
            'FileCache'             => '1.021',
            'Filter::Simple'        => '0.78',
            'Getopt::Long'          => '2.32',
            'Hash::Util'            => '0.04',
            'List::Util'            => '1.07_00',
            'Locale::Country'       => '2.04',
            'Math::BigFloat'        => '1.35',
            'Math::BigFloat::Trace' => '0.01',
            'Math::BigInt'          => '1.60',
            'Math::BigInt::Calc'    => '0.30',
            'Math::BigInt::Trace'   => '0.01',
            'Math::BigRat'          => '0.07',
            'Memoize'               => '1.01',
            'Memoize::Expire'       => '1.00',
            'Memoize::ExpireFile'   => '1.01',
            'Net::FTP'              => '2.65',
            'Net::FTP::dataconn'    => '0.11',
            'Net::Ping'             => '2.19',
            'Net::SMTP'             => '2.24',
            'PerlIO'                => '1.01',
            'PerlIO::encoding'      => '0.06',
            'PerlIO::scalar'        => '0.01',
            'PerlIO::via'           => '0.01',
            'PerlIO::via::QuotedPrint'=> '0.04',
            'Pod::Man'              => '1.33',
            'Pod::Text'             => '2.19',
            'Scalar::Util'          => '1.07_00',
            'Storable'              => '2.04',
            'Switch'                => '2.09',
            'Sys::Syslog'           => '0.03',
            'Test'                  => '1.20',
            'Test::Builder'         => '0.15',
            'Test::Harness'         => '2.26',
            'Test::Harness::Straps' => '0.14',
            'Test::More'            => '0.45',
            'Test::Simple'          => '0.45',
            'Thread::Queue'         => '2.00',
            'Thread::Semaphore'     => '2.00',
            'Tie::File'             => '0.93',
            'Tie::RefHash'          => '1.30',
            'Unicode'               => '3.2.0',
            'Unicode::Collate'      => '0.12',
            'Unicode::Normalize'    => '0.17',
            'XS::APItest'           => '0.01',
            'attributes'            => '0.05',
            'base'                  => '1.03',
            'bigint'                => '0.02',
            'bignum'                => '0.11',
            'bigrat'                => '0.04',
            'blib'                  => '1.02',
            'encoding'              => '1.35',
            'sort'                  => '1.01',
            'threads'               => '0.99',
        },
        removed => {
            'Encode::Internal'      => 1,
            'Encode::JP::Constants' => 1,
            'Encode::JP::ISO_2022_JP'=> 1,
            'Encode::JP::JIS'       => 1,
            'Encode::JP::Tr'        => 1,
            'Encode::Tcl'           => 1,
            'Encode::Tcl::Escape'   => 1,
            'Encode::Tcl::Extended' => 1,
            'Encode::Tcl::HanZi'    => 1,
            'Encode::Tcl::Table'    => 1,
            'Encode::XS'            => 1,
            'Encode::iso10646_1'    => 1,
            'Encode::usc2_le'       => 1,
            'Encode::utf8'          => 1,
            'PerlIO::Scalar'        => 1,
            'PerlIO::Via'           => 1,
        }
    },
    5.008001 => {
        delta_from => 5.008,
        changed => {
            'Attribute::Handlers'   => '0.78',
            'AutoLoader'            => '5.60',
            'AutoSplit'             => '1.04',
            'B'                     => '1.02',
            'B::Asmdata'            => '1.01',
            'B::Assembler'          => '0.06',
            'B::Bblock'             => '1.02',
            'B::Bytecode'           => '1.01',
            'B::C'                  => '1.02',
            'B::Concise'            => '0.56',
            'B::Debug'              => '1.01',
            'B::Deparse'            => '0.64',
            'B::Disassembler'       => '1.03',
            'B::Lint'               => '1.02',
            'B::Terse'              => '1.02',
            'Benchmark'             => '1.051',
            'ByteLoader'            => '0.05',
            'CGI'                   => '3.00',
            'CGI::Carp'             => '1.26',
            'CGI::Cookie'           => '1.24',
            'CGI::Fast'             => '1.041',
            'CGI::Pretty'           => '1.07_00',
            'CGI::Util'             => '1.31',
            'CPAN'                  => '1.76_01',
            'CPAN::FirstTime'       => '1.60',
            'CPAN::Nox'             => '1.03',
            'Class::Struct'         => '0.63',
            'Cwd'                   => '2.08',
            'DB_File'               => '1.806',
            'Data::Dumper'          => '2.121',
            'Devel::DProf'          => '20030813.00',
            'Devel::PPPort'         => '2.007',
            'Devel::Peek'           => '1.01',
            'Digest'                => '1.02',
            'Digest::MD5'           => '2.27',
            'Encode'                => '1.9801',
            'Encode::Alias'         => '1.38',
            'Encode::Byte'          => '1.23',
            'Encode::CJKConstants'  => '1.02',
            'Encode::CN::HZ'        => '1.05',
            'Encode::Config'        => '1.07',
            'Encode::Encoder'       => '0.07',
            'Encode::Encoding'      => '1.33',
            'Encode::Guess'         => '1.09',
            'Encode::JP::JIS7'      => '1.12',
            'Encode::KR'            => '1.23',
            'Encode::KR::2022_KR'   => '1.06',
            'Encode::MIME::Header'  => '1.09',
            'Encode::Unicode'       => '1.40',
            'Encode::Unicode::UTF7' => '0.02',
            'English'               => '1.01',
            'Errno'                 => '1.09_00',
            'Exporter'              => '5.567',
            'Exporter::Heavy'       => '5.567',
            'ExtUtils::Command'     => '1.05',
            'ExtUtils::Command::MM' => '0.03',
            'ExtUtils::Constant'    => '0.14',
            'ExtUtils::Install'     => '1.32',
            'ExtUtils::Installed'   => '0.08',
            'ExtUtils::Liblist'     => '1.01',
            'ExtUtils::Liblist::Kid'=> '1.3',
            'ExtUtils::MM_Any'      => '0.07',
            'ExtUtils::MM_BeOS'     => '1.04',
            'ExtUtils::MM_Cygwin'   => '1.06',
            'ExtUtils::MM_DOS'      => '0.02',
            'ExtUtils::MM_MacOS'    => '1.07',
            'ExtUtils::MM_NW5'      => '2.06',
            'ExtUtils::MM_OS2'      => '1.04',
            'ExtUtils::MM_UWIN'     => '0.02',
            'ExtUtils::MM_Unix'     => '1.42',
            'ExtUtils::MM_VMS'      => '5.70',
            'ExtUtils::MM_Win32'    => '1.09',
            'ExtUtils::MM_Win95'    => '0.03',
            'ExtUtils::MakeMaker'   => '6.17',
            'ExtUtils::MakeMaker::bytes'=> '0.01',
            'ExtUtils::MakeMaker::vmsish'=> '0.01',
            'ExtUtils::Manifest'    => '1.42',
            'Fcntl'                 => '1.05',
            'File::Basename'        => '2.72',
            'File::Copy'            => '2.06',
            'File::Find'            => '1.05',
            'File::Glob'            => '1.02',
            'File::Path'            => '1.06',
            'File::Spec'            => '0.86',
            'File::Spec::Cygwin'    => '1.1',
            'File::Spec::Epoc'      => '1.1',
            'File::Spec::Functions' => '1.3',
            'File::Spec::Mac'       => '1.4',
            'File::Spec::OS2'       => '1.2',
            'File::Spec::Unix'      => '1.5',
            'File::Spec::VMS'       => '1.4',
            'File::Spec::Win32'     => '1.4',
            'File::Temp'            => '0.14',
            'FileCache'             => '1.03',
            'Filter::Util::Call'    => '1.0601',
            'GDBM_File'             => '1.07',
            'Getopt::Long'          => '2.34',
            'Getopt::Std'           => '1.04',
            'Hash::Util'            => '0.05',
            'I18N::LangTags'        => '0.28',
            'I18N::LangTags::List'  => '0.26',
            'I18N::Langinfo'        => '0.02',
            'IO'                    => '1.21',
            'IO::Dir'               => '1.04',
            'IO::File'              => '1.10',
            'IO::Handle'            => '1.23',
            'IO::Seekable'          => '1.09',
            'IO::Select'            => '1.16',
            'IO::Socket'            => '1.28',
            'IO::Socket::INET'      => '1.27',
            'IO::Socket::UNIX'      => '1.21',
            'IPC::Msg'              => '1.02',
            'IPC::Open3'            => '1.0105',
            'IPC::Semaphore'        => '1.02',
            'IPC::SysV'             => '1.04',
            'JNI'                   => '0.2',
            'List::Util'            => '1.13',
            'Locale::Country'       => '2.61',
            'Locale::Currency'      => '2.21',
            'Locale::Language'      => '2.21',
            'Locale::Maketext'      => '1.06',
            'Locale::Maketext::Guts'=> undef,
            'Locale::Maketext::GutsLoader'=> undef,
            'Locale::Script'        => '2.21',
            'MIME::Base64'          => '2.20',
            'MIME::QuotedPrint'     => '2.20',
            'Math::BigFloat'        => '1.40',
            'Math::BigInt'          => '1.66',
            'Math::BigInt::Calc'    => '0.36',
            'Math::BigInt::Scalar'  => '0.11',
            'Math::BigRat'          => '0.10',
            'Math::Trig'            => '1.02',
            'NDBM_File'             => '1.05',
            'NEXT'                  => '0.60',
            'Net::Cmd'              => '2.24',
            'Net::Domain'           => '2.18',
            'Net::FTP'              => '2.71',
            'Net::FTP::A'           => '1.16',
            'Net::NNTP'             => '2.22',
            'Net::POP3'             => '2.24',
            'Net::Ping'             => '2.31',
            'Net::SMTP'             => '2.26',
            'Net::hostent'          => '1.01',
            'Net::servent'          => '1.01',
            'ODBM_File'             => '1.04',
            'OS2::DLL'              => '1.01',
            'OS2::ExtAttr'          => '0.02',
            'OS2::PrfDB'            => '0.03',
            'OS2::Process'          => '1.01',
            'OS2::REXX'             => '1.02',
            'POSIX'                 => '1.06',
            'PerlIO'                => '1.02',
            'PerlIO::encoding'      => '0.07',
            'PerlIO::scalar'        => '0.02',
            'PerlIO::via'           => '0.02',
            'PerlIO::via::QuotedPrint'=> '0.05',
            'Pod::Checker'          => '1.41',
            'Pod::Find'             => '0.24',
            'Pod::Functions'        => '1.02',
            'Pod::Html'             => '1.0501',
            'Pod::InputObjects'     => '1.14',
            'Pod::LaTeX'            => '0.55',
            'Pod::Man'              => '1.37',
            'Pod::ParseLink'        => '1.06',
            'Pod::ParseUtils'       => '0.3',
            'Pod::Perldoc'          => '3.10',
            'Pod::Perldoc::BaseTo'  => undef,
            'Pod::Perldoc::GetOptsOO'=> undef,
            'Pod::Perldoc::ToChecker'=> undef,
            'Pod::Perldoc::ToMan'   => undef,
            'Pod::Perldoc::ToNroff' => undef,
            'Pod::Perldoc::ToPod'   => undef,
            'Pod::Perldoc::ToRtf'   => undef,
            'Pod::Perldoc::ToText'  => undef,
            'Pod::Perldoc::ToTk'    => undef,
            'Pod::Perldoc::ToXml'   => undef,
            'Pod::PlainText'        => '2.01',
            'Pod::Text'             => '2.21',
            'Pod::Text::Color'      => '1.04',
            'Pod::Text::Overstrike' => '1.1',
            'Pod::Text::Termcap'    => '1.11',
            'Pod::Usage'            => '1.16',
            'SDBM_File'             => '1.04',
            'Safe'                  => '2.10',
            'Scalar::Util'          => '1.13',
            'SelfLoader'            => '1.0904',
            'Shell'                 => '0.5',
            'Socket'                => '1.76',
            'Storable'              => '2.08',
            'Switch'                => '2.10',
            'Symbol'                => '1.05',
            'Sys::Hostname'         => '1.11',
            'Sys::Syslog'           => '0.04',
            'Term::ANSIColor'       => '1.07',
            'Term::Cap'             => '1.08',
            'Term::Complete'        => '1.401',
            'Term::ReadLine'        => '1.01',
            'Test'                  => '1.24',
            'Test::Builder'         => '0.17',
            'Test::Harness'         => '2.30',
            'Test::Harness::Straps' => '0.15',
            'Test::More'            => '0.47',
            'Test::Simple'          => '0.47',
            'Text::Abbrev'          => '1.01',
            'Text::Balanced'        => '1.95',
            'Text::Wrap'            => '2001.09291',
            'Thread::Semaphore'     => '2.01',
            'Tie::Array'            => '1.03',
            'Tie::File'             => '0.97',
            'Tie::RefHash'          => '1.31',
            'Time::HiRes'           => '1.51',
            'Time::Local'           => '1.07',
            'UNIVERSAL'             => '1.01',
            'Unicode'               => '4.0.0',
            'Unicode::Collate'      => '0.28',
            'Unicode::Normalize'    => '0.23',
            'Unicode::UCD'          => '0.21',
            'VMS::Filespec'         => '1.11',
            'XS::APItest'           => '0.02',
            'XSLoader'              => '0.02',
            'attributes'            => '0.06',
            'base'                  => '2.03',
            'bigint'                => '0.04',
            'bignum'                => '0.14',
            'bigrat'                => '0.06',
            'bytes'                 => '1.01',
            'charnames'             => '1.02',
            'diagnostics'           => '1.11',
            'encoding'              => '1.47',
            'fields'                => '2.03',
            'filetest'              => '1.01',
            'if'                    => '0.03',
            'lib'                   => '0.5565',
            'open'                  => '1.02',
            'overload'              => '1.01',
            're'                    => '0.04',
            'sort'                  => '1.02',
            'strict'                => '1.03',
            'threads'               => '1.00',
            'threads::shared'       => '0.91',
            'utf8'                  => '1.02',
            'vmsish'                => '1.01',
            'warnings'              => '1.03',
        },
        removed => {
        }
    },
    5.008002 => {
        delta_from => 5.008001,
        changed => {
            'DB_File'               => '1.807',
            'Devel::PPPort'         => '2.009',
            'Digest::MD5'           => '2.30',
            'I18N::LangTags'        => '0.29',
            'I18N::LangTags::List'  => '0.29',
            'MIME::Base64'          => '2.21',
            'MIME::QuotedPrint'     => '2.21',
            'Net::Domain'           => '2.19',
            'Net::FTP'              => '2.72',
            'Pod::Perldoc'          => '3.11',
            'Time::HiRes'           => '1.52',
            'Unicode::Collate'      => '0.30',
            'Unicode::Normalize'    => '0.25',
        },
        removed => {
        }
    },
    5.008003 => {
        delta_from => 5.008002,
        changed => {
            'Benchmark'             => '1.052',
            'CGI'                   => '3.01',
            'CGI::Carp'             => '1.27',
            'CGI::Fast'             => '1.05',
            'CGI::Pretty'           => '1.08',
            'CGI::Util'             => '1.4',
            'Cwd'                   => '2.12',
            'DB_File'               => '1.808',
            'Devel::PPPort'         => '2.011',
            'Digest'                => '1.05',
            'Digest::MD5'           => '2.33',
            'Digest::base'          => '1.00',
            'Encode'                => '1.99',
            'Exporter'              => '5.57',
            'File::CheckTree'       => '4.3',
            'File::Copy'            => '2.07',
            'File::Find'            => '1.06',
            'File::Spec'            => '0.87',
            'FindBin'               => '1.44',
            'Getopt::Std'           => '1.05',
            'Math::BigFloat'        => '1.42',
            'Math::BigInt'          => '1.68',
            'Math::BigInt::Calc'    => '0.38',
            'Math::BigInt::CalcEmu' => '0.02',
            'OS2::DLL'              => '1.02',
            'POSIX'                 => '1.07',
            'PerlIO'                => '1.03',
            'PerlIO::via::QuotedPrint'=> '0.06',
            'Pod::Html'             => '1.0502',
            'Pod::Parser'           => '1.14',
            'Pod::Perldoc'          => '3.12',
            'Pod::PlainText'        => '2.02',
            'Storable'              => '2.09',
            'Test::Harness'         => '2.40',
            'Test::Harness::Assert' => '0.02',
            'Test::Harness::Iterator'=> '0.02',
            'Test::Harness::Straps' => '0.19',
            'Tie::Hash'             => '1.01',
            'Unicode::Collate'      => '0.33',
            'Unicode::Normalize'    => '0.28',
            'XS::APItest'           => '0.03',
            'base'                  => '2.04',
            'diagnostics'           => '1.12',
            'encoding'              => '1.48',
            'threads'               => '1.01',
            'threads::shared'       => '0.92',
        },
        removed => {
            'Math::BigInt::Scalar'  => 1,
        }
    },
    5.008004 => {
        delta_from => 5.008003,
        changed => {
            'Attribute::Handlers'   => '0.78_01',
            'B::Assembler'          => '0.07',
            'B::Concise'            => '0.60',
            'B::Deparse'            => '0.66',
            'Benchmark'             => '1.06',
            'CGI'                   => '3.04',
            'Carp'                  => '1.02',
            'Cwd'                   => '2.17',
            'DBM_Filter'            => '0.01',
            'DBM_Filter::compress'  => '0.01',
            'DBM_Filter::encode'    => '0.01',
            'DBM_Filter::int32'     => '0.01',
            'DBM_Filter::null'      => '0.01',
            'DBM_Filter::utf8'      => '0.01',
            'Digest'                => '1.06',
            'DynaLoader'            => '1.05',
            'Encode'                => '1.99_01',
            'Encode::CN::HZ'        => '1.0501',
            'Exporter'              => '5.58',
            'Exporter::Heavy'       => '5.57',
            'ExtUtils::Liblist::Kid'=> '1.3001',
            'ExtUtils::MM_NW5'      => '2.07_02',
            'ExtUtils::MM_Win95'    => '0.0301',
            'File::Find'            => '1.07',
            'IO::Handle'            => '1.24',
            'IO::Pipe'              => '1.123',
            'IPC::Open3'            => '1.0106',
            'Locale::Maketext'      => '1.08',
            'MIME::Base64'          => '3.01',
            'MIME::QuotedPrint'     => '3.01',
            'Math::BigFloat'        => '1.44',
            'Math::BigInt'          => '1.70',
            'Math::BigInt::Calc'    => '0.40',
            'Math::BigInt::CalcEmu' => '0.04',
            'Math::BigRat'          => '0.12',
            'ODBM_File'             => '1.05',
            'POSIX'                 => '1.08',
            'Shell'                 => '0.5.2',
            'Socket'                => '1.77',
            'Storable'              => '2.12',
            'Sys::Syslog'           => '0.05',
            'Term::ANSIColor'       => '1.08',
            'Time::HiRes'           => '1.59',
            'Unicode'               => '4.0.1',
            'Unicode::UCD'          => '0.22',
            'Win32'                 => '0.23',
            'base'                  => '2.05',
            'bigint'                => '0.05',
            'bignum'                => '0.15',
            'charnames'             => '1.03',
            'open'                  => '1.03',
            'threads'               => '1.03',
            'utf8'                  => '1.03',
        },
        removed => {
        }
    },
    5.008005 => {
        delta_from => 5.008004,
        changed => {
            'B::Concise'            => '0.61',
            'B::Deparse'            => '0.67',
            'CGI'                   => '3.05',
            'CGI::Carp'             => '1.28',
            'CGI::Util'             => '1.5',
            'Carp'                  => '1.03',
            'Carp::Heavy'           => '1.03',
            'Cwd'                   => '2.19',
            'DB_File'               => '1.809',
            'Digest'                => '1.08',
            'Encode'                => '2.01',
            'Encode::Alias'         => '2.00',
            'Encode::Byte'          => '2.00',
            'Encode::CJKConstants'  => '2.00',
            'Encode::CN'            => '2.00',
            'Encode::CN::HZ'        => '2.01',
            'Encode::Config'        => '2.00',
            'Encode::EBCDIC'        => '2.00',
            'Encode::Encoder'       => '2.00',
            'Encode::Encoding'      => '2.00',
            'Encode::Guess'         => '2.00',
            'Encode::JP'            => '2.00',
            'Encode::JP::H2Z'       => '2.00',
            'Encode::JP::JIS7'      => '2.00',
            'Encode::KR'            => '2.00',
            'Encode::KR::2022_KR'   => '2.00',
            'Encode::MIME::Header'  => '2.00',
            'Encode::Symbol'        => '2.00',
            'Encode::TW'            => '2.00',
            'Encode::Unicode'       => '2.00',
            'Encode::Unicode::UTF7' => '2.01',
            'File::Basename'        => '2.73',
            'File::Copy'            => '2.08',
            'File::Glob'            => '1.03',
            'FileCache'             => '1.04_01',
            'I18N::LangTags'        => '0.33',
            'I18N::LangTags::Detect'=> '1.03',
            'List::Util'            => '1.14',
            'Locale::Constants'     => '2.07',
            'Locale::Country'       => '2.07',
            'Locale::Currency'      => '2.07',
            'Locale::Language'      => '2.07',
            'Locale::Maketext'      => '1.09',
            'Locale::Script'        => '2.07',
            'Net::Cmd'              => '2.26',
            'Net::FTP'              => '2.75',
            'Net::NNTP'             => '2.23',
            'Net::POP3'             => '2.28',
            'Net::SMTP'             => '2.29',
            'Net::Time'             => '2.10',
            'Pod::Checker'          => '1.42',
            'Pod::Find'             => '0.2401',
            'Pod::LaTeX'            => '0.56',
            'Pod::ParseUtils'       => '1.2',
            'Pod::Perldoc'          => '3.13',
            'Safe'                  => '2.11',
            'Scalar::Util'          => '1.14',
            'Shell'                 => '0.6',
            'Storable'              => '2.13',
            'Term::Cap'             => '1.09',
            'Test'                  => '1.25',
            'Test::Harness'         => '2.42',
            'Text::ParseWords'      => '3.22',
            'Text::Wrap'            => '2001.09292',
            'Time::Local'           => '1.10',
            'Unicode::Collate'      => '0.40',
            'Unicode::Normalize'    => '0.30',
            'XS::APItest'           => '0.04',
            'autouse'               => '1.04',
            'base'                  => '2.06',
            'charnames'             => '1.04',
            'diagnostics'           => '1.13',
            'encoding'              => '2.00',
            'threads'               => '1.05',
            'utf8'                  => '1.04',
        },
        removed => {
        }
    },
    5.008006 => {
        delta_from => 5.008005,
        changed => {
            'B'                     => '1.07',
            'B::C'                  => '1.04',
            'B::Concise'            => '0.64',
            'B::Debug'              => '1.02',
            'B::Deparse'            => '0.69',
            'B::Lint'               => '1.03',
            'B::Showlex'            => '1.02',
            'Cwd'                   => '3.01',
            'DB_File'               => '1.810',
            'Data::Dumper'          => '2.121_02',
            'Devel::PPPort'         => '3.03',
            'Devel::Peek'           => '1.02',
            'Encode'                => '2.08',
            'Encode::Alias'         => '2.02',
            'Encode::Encoding'      => '2.02',
            'Encode::JP'            => '2.01',
            'Encode::Unicode'       => '2.02',
            'Exporter::Heavy'       => '5.58',
            'ExtUtils::Constant'    => '0.1401',
            'File::Spec'            => '3.01',
            'File::Spec::Win32'     => '1.5',
            'I18N::LangTags'        => '0.35',
            'I18N::LangTags::List'  => '0.35',
            'MIME::Base64'          => '3.05',
            'MIME::QuotedPrint'     => '3.03',
            'Math::BigFloat'        => '1.47',
            'Math::BigInt'          => '1.73',
            'Math::BigInt::Calc'    => '0.43',
            'Math::BigRat'          => '0.13',
            'Text::ParseWords'      => '3.23',
            'Time::HiRes'           => '1.65',
            'XS::APItest'           => '0.05',
            'diagnostics'           => '1.14',
            'encoding'              => '2.01',
            'open'                  => '1.04',
            'overload'              => '1.02',
        },
        removed => {
        }
    },
    5.008007 => {
        delta_from => 5.008006,
        changed => {
            'B'                     => '1.09',
            'B::Concise'            => '0.65',
            'B::Deparse'            => '0.7',
            'B::Disassembler'       => '1.04',
            'B::Terse'              => '1.03',
            'Benchmark'             => '1.07',
            'CGI'                   => '3.10',
            'CGI::Carp'             => '1.29',
            'CGI::Cookie'           => '1.25',
            'Carp'                  => '1.04',
            'Carp::Heavy'           => '1.04',
            'Class::ISA'            => '0.33',
            'Cwd'                   => '3.05',
            'DB_File'               => '1.811',
            'Data::Dumper'          => '2.121_04',
            'Devel::DProf'          => '20050310.00',
            'Devel::PPPort'         => '3.06',
            'Digest'                => '1.10',
            'Digest::file'          => '0.01',
            'Encode'                => '2.10',
            'Encode::Alias'         => '2.03',
            'Errno'                 => '1.09_01',
            'ExtUtils::Constant'    => '0.16',
            'ExtUtils::Constant::Base'=> '0.01',
            'ExtUtils::Constant::Utils'=> '0.01',
            'ExtUtils::Constant::XS'=> '0.01',
            'File::Find'            => '1.09',
            'File::Glob'            => '1.04',
            'File::Path'            => '1.07',
            'File::Spec'            => '3.05',
            'File::Temp'            => '0.16',
            'FileCache'             => '1.05',
            'IO::File'              => '1.11',
            'IO::Socket::INET'      => '1.28',
            'Math::BigFloat'        => '1.51',
            'Math::BigInt'          => '1.77',
            'Math::BigInt::Calc'    => '0.47',
            'Math::BigInt::CalcEmu' => '0.05',
            'Math::BigRat'          => '0.15',
            'Pod::Find'             => '1.3',
            'Pod::Html'             => '1.0503',
            'Pod::InputObjects'     => '1.3',
            'Pod::LaTeX'            => '0.58',
            'Pod::ParseUtils'       => '1.3',
            'Pod::Parser'           => '1.3',
            'Pod::Perldoc'          => '3.14',
            'Pod::Select'           => '1.3',
            'Pod::Usage'            => '1.3',
            'SelectSaver'           => '1.01',
            'Symbol'                => '1.06',
            'Sys::Syslog'           => '0.06',
            'Term::ANSIColor'       => '1.09',
            'Term::Complete'        => '1.402',
            'Test::Builder'         => '0.22',
            'Test::Harness'         => '2.48',
            'Test::Harness::Point'  => '0.01',
            'Test::Harness::Straps' => '0.23',
            'Test::More'            => '0.54',
            'Test::Simple'          => '0.54',
            'Text::ParseWords'      => '3.24',
            'Text::Wrap'            => '2001.09293',
            'Tie::RefHash'          => '1.32',
            'Time::HiRes'           => '1.66',
            'Time::Local'           => '1.11',
            'Unicode'               => '4.1.0',
            'Unicode::Normalize'    => '0.32',
            'Unicode::UCD'          => '0.23',
            'Win32'                 => '0.24',
            'XS::APItest'           => '0.06',
            'base'                  => '2.07',
            'bigint'                => '0.07',
            'bignum'                => '0.17',
            'bigrat'                => '0.08',
            'bytes'                 => '1.02',
            'constant'              => '1.05',
            'overload'              => '1.03',
            'threads::shared'       => '0.93',
            'utf8'                  => '1.05',
        },
        removed => {
            'JNI'                   => 1,
            'JPL::AutoLoader'       => 1,
            'JPL::Class'            => 1,
            'JPL::Compile'          => 1,
        }
    },
    5.008008 => {
        delta_from => 5.008007,
        changed => {
            'Attribute::Handlers'   => '0.78_02',
            'B'                     => '1.09_01',
            'B::Bblock'             => '1.02_01',
            'B::Bytecode'           => '1.01_01',
            'B::C'                  => '1.04_01',
            'B::CC'                 => '1.00_01',
            'B::Concise'            => '0.66',
            'B::Debug'              => '1.02_01',
            'B::Deparse'            => '0.71',
            'B::Disassembler'       => '1.05',
            'B::Terse'              => '1.03_01',
            'ByteLoader'            => '0.06',
            'CGI'                   => '3.15',
            'CGI::Cookie'           => '1.26',
            'CPAN'                  => '1.76_02',
            'Cwd'                   => '3.12',
            'DB'                    => '1.01',
            'DB_File'               => '1.814',
            'Data::Dumper'          => '2.121_08',
            'Devel::DProf'          => '20050603.00',
            'Devel::PPPort'         => '3.06_01',
            'Devel::Peek'           => '1.03',
            'Digest'                => '1.14',
            'Digest::MD5'           => '2.36',
            'Digest::file'          => '1.00',
            'Dumpvalue'             => '1.12',
            'Encode'                => '2.12',
            'Encode::Alias'         => '2.04',
            'Encode::Config'        => '2.01',
            'Encode::MIME::Header'  => '2.01',
            'Encode::MIME::Header::ISO_2022_JP'=> '1.01',
            'English'               => '1.02',
            'ExtUtils::Command'     => '1.09',
            'ExtUtils::Command::MM' => '0.05',
            'ExtUtils::Constant'    => '0.17',
            'ExtUtils::Embed'       => '1.26',
            'ExtUtils::Install'     => '1.33',
            'ExtUtils::Liblist::Kid'=> '1.3',
            'ExtUtils::MM'          => '0.05',
            'ExtUtils::MM_AIX'      => '0.03',
            'ExtUtils::MM_Any'      => '0.13',
            'ExtUtils::MM_BeOS'     => '1.05',
            'ExtUtils::MM_Cygwin'   => '1.08',
            'ExtUtils::MM_MacOS'    => '1.08',
            'ExtUtils::MM_NW5'      => '2.08',
            'ExtUtils::MM_OS2'      => '1.05',
            'ExtUtils::MM_QNX'      => '0.02',
            'ExtUtils::MM_Unix'     => '1.50',
            'ExtUtils::MM_VMS'      => '5.73',
            'ExtUtils::MM_VOS'      => '0.02',
            'ExtUtils::MM_Win32'    => '1.12',
            'ExtUtils::MM_Win95'    => '0.04',
            'ExtUtils::MakeMaker'   => '6.30',
            'ExtUtils::MakeMaker::Config'=> '0.02',
            'ExtUtils::Manifest'    => '1.46',
            'File::Basename'        => '2.74',
            'File::Copy'            => '2.09',
            'File::Find'            => '1.10',
            'File::Glob'            => '1.05',
            'File::Path'            => '1.08',
            'File::Spec'            => '3.12',
            'File::Spec::Win32'     => '1.6',
            'FileCache'             => '1.06',
            'Filter::Simple'        => '0.82',
            'FindBin'               => '1.47',
            'GDBM_File'             => '1.08',
            'Getopt::Long'          => '2.35',
            'IO'                    => '1.22',
            'IO::Dir'               => '1.05',
            'IO::File'              => '1.13',
            'IO::Handle'            => '1.25',
            'IO::Pipe'              => '1.13',
            'IO::Poll'              => '0.07',
            'IO::Seekable'          => '1.10',
            'IO::Select'            => '1.17',
            'IO::Socket'            => '1.29',
            'IO::Socket::INET'      => '1.29',
            'IO::Socket::UNIX'      => '1.22',
            'IPC::Open2'            => '1.02',
            'IPC::Open3'            => '1.02',
            'List::Util'            => '1.18',
            'MIME::Base64'          => '3.07',
            'MIME::QuotedPrint'     => '3.07',
            'Math::Complex'         => '1.35',
            'Math::Trig'            => '1.03',
            'NDBM_File'             => '1.06',
            'ODBM_File'             => '1.06',
            'OS2::PrfDB'            => '0.04',
            'OS2::Process'          => '1.02',
            'OS2::REXX'             => '1.03',
            'Opcode'                => '1.06',
            'POSIX'                 => '1.09',
            'PerlIO'                => '1.04',
            'PerlIO::encoding'      => '0.09',
            'PerlIO::scalar'        => '0.04',
            'PerlIO::via'           => '0.03',
            'Pod::Checker'          => '1.43',
            'Pod::Find'             => '1.34',
            'Pod::Functions'        => '1.03',
            'Pod::Html'             => '1.0504',
            'Pod::ParseUtils'       => '1.33',
            'Pod::Parser'           => '1.32',
            'Pod::Usage'            => '1.33',
            'SDBM_File'             => '1.05',
            'Safe'                  => '2.12',
            'Scalar::Util'          => '1.18',
            'Socket'                => '1.78',
            'Storable'              => '2.15',
            'Switch'                => '2.10_01',
            'Sys::Syslog'           => '0.13',
            'Term::ANSIColor'       => '1.10',
            'Term::ReadLine'        => '1.02',
            'Test::Builder'         => '0.32',
            'Test::Builder::Module' => '0.02',
            'Test::Builder::Tester' => '1.02',
            'Test::Builder::Tester::Color'=> undef,
            'Test::Harness'         => '2.56',
            'Test::Harness::Straps' => '0.26',
            'Test::More'            => '0.62',
            'Test::Simple'          => '0.62',
            'Text::Tabs'            => '2005.0824',
            'Text::Wrap'            => '2005.082401',
            'Tie::Hash'             => '1.02',
            'Time::HiRes'           => '1.86',
            'Unicode::Collate'      => '0.52',
            'Unicode::UCD'          => '0.24',
            'User::grent'           => '1.01',
            'Win32'                 => '0.2601',
            'XS::APItest'           => '0.08',
            'XS::Typemap'           => '0.02',
            'XSLoader'              => '0.06',
            'attrs'                 => '1.02',
            'autouse'               => '1.05',
            'blib'                  => '1.03',
            'charnames'             => '1.05',
            'diagnostics'           => '1.15',
            'encoding'              => '2.02',
            'if'                    => '0.05',
            'open'                  => '1.05',
            'ops'                   => '1.01',
            'overload'              => '1.04',
            're'                    => '0.05',
            'threads'               => '1.07',
            'threads::shared'       => '0.94',
            'utf8'                  => '1.06',
            'vmsish'                => '1.02',
            'warnings'              => '1.05',
            'warnings::register'    => '1.01',
        },
        removed => {
        }
    },
    5.008009 => {
        delta_from => 5.008008,
        changed => {
            'Attribute::Handlers'   => '0.78_03',
            'AutoLoader'            => '5.67',
            'AutoSplit'             => '1.06',
            'B'                     => '1.19',
            'B::Asmdata'            => '1.02',
            'B::Assembler'          => '0.08',
            'B::C'                  => '1.05',
            'B::Concise'            => '0.76',
            'B::Debug'              => '1.05',
            'B::Deparse'            => '0.87',
            'B::Lint'               => '1.11',
            'B::Lint::Debug'        => undef,
            'B::Terse'              => '1.05',
            'Benchmark'             => '1.1',
            'CGI'                   => '3.42',
            'CGI::Carp'             => '1.30_01',
            'CGI::Cookie'           => '1.29',
            'CGI::Fast'             => '1.07',
            'CGI::Util'             => '1.5_01',
            'CPAN'                  => '1.9301',
            'CPAN::Debug'           => '5.5',
            'CPAN::DeferedCode'     => '5.50',
            'CPAN::Distroprefs'     => '6',
            'CPAN::FirstTime'       => '5.5_01',
            'CPAN::HandleConfig'    => '5.5',
            'CPAN::Kwalify'         => '5.50',
            'CPAN::Nox'             => '5.50',
            'CPAN::Queue'           => '5.5',
            'CPAN::Tarzip'          => '5.5',
            'CPAN::Version'         => '5.5',
            'Carp'                  => '1.10',
            'Carp::Heavy'           => '1.10',
            'Cwd'                   => '3.29',
            'DBM_Filter'            => '0.02',
            'DBM_Filter::compress'  => '0.02',
            'DBM_Filter::encode'    => '0.02',
            'DBM_Filter::int32'     => '0.02',
            'DBM_Filter::null'      => '0.02',
            'DBM_Filter::utf8'      => '0.02',
            'DB_File'               => '1.817',
            'Data::Dumper'          => '2.121_17',
            'Devel::DProf'          => '20080331.00',
            'Devel::InnerPackage'   => '0.3',
            'Devel::PPPort'         => '3.14',
            'Devel::Peek'           => '1.04',
            'Digest'                => '1.15',
            'Digest::MD5'           => '2.37',
            'DirHandle'             => '1.02',
            'DynaLoader'            => '1.09',
            'Encode'                => '2.26',
            'Encode::Alias'         => '2.10',
            'Encode::Byte'          => '2.03',
            'Encode::CJKConstants'  => '2.02',
            'Encode::CN'            => '2.02',
            'Encode::CN::HZ'        => '2.05',
            'Encode::Config'        => '2.05',
            'Encode::EBCDIC'        => '2.02',
            'Encode::Encoder'       => '2.01',
            'Encode::Encoding'      => '2.05',
            'Encode::GSM0338'       => '2.01',
            'Encode::Guess'         => '2.02',
            'Encode::JP'            => '2.03',
            'Encode::JP::H2Z'       => '2.02',
            'Encode::JP::JIS7'      => '2.04',
            'Encode::KR'            => '2.02',
            'Encode::KR::2022_KR'   => '2.02',
            'Encode::MIME::Header'  => '2.05',
            'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
            'Encode::MIME::Name'    => '1.01',
            'Encode::Symbol'        => '2.02',
            'Encode::TW'            => '2.02',
            'Encode::Unicode'       => '2.05',
            'Encode::Unicode::UTF7' => '2.04',
            'English'               => '1.03',
            'Errno'                 => '1.10',
            'Exporter'              => '5.63',
            'Exporter::Heavy'       => '5.63',
            'ExtUtils::Command'     => '1.15',
            'ExtUtils::Command::MM' => '6.48',
            'ExtUtils::Constant'    => '0.21',
            'ExtUtils::Constant::Base'=> '0.04',
            'ExtUtils::Constant::ProxySubs'=> '0.06',
            'ExtUtils::Constant::Utils'=> '0.02',
            'ExtUtils::Constant::XS'=> '0.02',
            'ExtUtils::Embed'       => '1.28',
            'ExtUtils::Install'     => '1.50_01',
            'ExtUtils::Installed'   => '1.43',
            'ExtUtils::Liblist'     => '6.48',
            'ExtUtils::Liblist::Kid'=> '6.48',
            'ExtUtils::MM'          => '6.48',
            'ExtUtils::MM_AIX'      => '6.48',
            'ExtUtils::MM_Any'      => '6.48',
            'ExtUtils::MM_BeOS'     => '6.48',
            'ExtUtils::MM_Cygwin'   => '6.48',
            'ExtUtils::MM_DOS'      => '6.48',
            'ExtUtils::MM_Darwin'   => '6.48',
            'ExtUtils::MM_MacOS'    => '6.48',
            'ExtUtils::MM_NW5'      => '6.48',
            'ExtUtils::MM_OS2'      => '6.48',
            'ExtUtils::MM_QNX'      => '6.48',
            'ExtUtils::MM_UWIN'     => '6.48',
            'ExtUtils::MM_Unix'     => '6.48',
            'ExtUtils::MM_VMS'      => '6.48',
            'ExtUtils::MM_VOS'      => '6.48',
            'ExtUtils::MM_Win32'    => '6.48',
            'ExtUtils::MM_Win95'    => '6.48',
            'ExtUtils::MY'          => '6.48',
            'ExtUtils::MakeMaker'   => '6.48',
            'ExtUtils::MakeMaker::Config'=> '6.48',
            'ExtUtils::MakeMaker::bytes'=> '6.48',
            'ExtUtils::MakeMaker::vmsish'=> '6.48',
            'ExtUtils::Manifest'    => '1.55',
            'ExtUtils::Mkbootstrap' => '6.48',
            'ExtUtils::Mksymlists'  => '6.48',
            'ExtUtils::Packlist'    => '1.43',
            'ExtUtils::ParseXS'     => '2.19',
            'ExtUtils::XSSymSet'    => '1.1',
            'ExtUtils::testlib'     => '6.48',
            'Fatal'                 => '1.06',
            'Fcntl'                 => '1.06',
            'File::Basename'        => '2.77',
            'File::CheckTree'       => '4.4',
            'File::Compare'         => '1.1005',
            'File::Copy'            => '2.13',
            'File::DosGlob'         => '1.01',
            'File::Find'            => '1.13',
            'File::Glob'            => '1.06',
            'File::Path'            => '2.07_02',
            'File::Spec'            => '3.29',
            'File::Spec::Cygwin'    => '3.29',
            'File::Spec::Epoc'      => '3.29',
            'File::Spec::Functions' => '3.29',
            'File::Spec::Mac'       => '3.29',
            'File::Spec::OS2'       => '3.29',
            'File::Spec::Unix'      => '3.29',
            'File::Spec::VMS'       => '3.29',
            'File::Spec::Win32'     => '3.29',
            'File::Temp'            => '0.20',
            'File::stat'            => '1.01',
            'FileCache'             => '1.07',
            'Filter::Simple'        => '0.83',
            'Filter::Util::Call'    => '1.07',
            'FindBin'               => '1.49',
            'GDBM_File'             => '1.09',
            'Getopt::Long'          => '2.37',
            'Getopt::Std'           => '1.06',
            'Hash::Util'            => '0.06',
            'IO'                    => '1.23',
            'IO::Dir'               => '1.06',
            'IO::File'              => '1.14',
            'IO::Handle'            => '1.27',
            'IO::Socket'            => '1.30',
            'IO::Socket::INET'      => '1.31',
            'IO::Socket::UNIX'      => '1.23',
            'IPC::Msg'              => '2.00',
            'IPC::Open2'            => '1.03',
            'IPC::Open3'            => '1.03',
            'IPC::Semaphore'        => '2.00',
            'IPC::SharedMem'        => '2.00',
            'IPC::SysV'             => '2.00',
            'List::Util'            => '1.19',
            'Locale::Maketext'      => '1.13',
            'Locale::Maketext::Guts'=> '1.13',
            'Locale::Maketext::GutsLoader'=> '1.13',
            'Math::BigFloat'        => '1.60',
            'Math::BigInt'          => '1.89',
            'Math::BigInt::Calc'    => '0.52',
            'Math::BigRat'          => '0.22',
            'Math::Complex'         => '1.54',
            'Math::Trig'            => '1.18',
            'Module::CoreList'      => '2.17',
            'Module::Pluggable'     => '3.8',
            'Module::Pluggable::Object'=> '3.6',
            'NDBM_File'             => '1.07',
            'NEXT'                  => '0.61',
            'Net::Cmd'              => '2.29',
            'Net::Config'           => '1.11',
            'Net::Domain'           => '2.20',
            'Net::FTP'              => '2.77',
            'Net::FTP::A'           => '1.18',
            'Net::NNTP'             => '2.24',
            'Net::POP3'             => '2.29',
            'Net::Ping'             => '2.35',
            'Net::SMTP'             => '2.31',
            'O'                     => '1.01',
            'ODBM_File'             => '1.07',
            'OS2::DLL'              => '1.03',
            'OS2::Process'          => '1.03',
            'Opcode'                => '1.0601',
            'POSIX'                 => '1.15',
            'PerlIO'                => '1.05',
            'PerlIO::encoding'      => '0.11',
            'PerlIO::scalar'        => '0.06',
            'PerlIO::via'           => '0.05',
            'Pod::Html'             => '1.09',
            'Pod::ParseUtils'       => '1.35',
            'Pod::Parser'           => '1.35',
            'Pod::Select'           => '1.35',
            'Pod::Usage'            => '1.35',
            'SDBM_File'             => '1.06',
            'Safe'                  => '2.16',
            'Scalar::Util'          => '1.19',
            'SelfLoader'            => '1.17',
            'Shell'                 => '0.72',
            'Socket'                => '1.81',
            'Storable'              => '2.19',
            'Switch'                => '2.13',
            'Sys::Syslog'           => '0.27',
            'Sys::Syslog::win32::Win32'=> undef,
            'Term::ANSIColor'       => '1.12',
            'Term::Cap'             => '1.12',
            'Term::ReadLine'        => '1.03',
            'Test::Builder'         => '0.80',
            'Test::Builder::Module' => '0.80',
            'Test::Builder::Tester' => '1.13',
            'Test::Harness'         => '2.64',
            'Test::Harness::Results'=> '0.01_01',
            'Test::Harness::Straps' => '0.26_01',
            'Test::Harness::Util'   => '0.01',
            'Test::More'            => '0.80',
            'Test::Simple'          => '0.80',
            'Text::Balanced'        => '1.98',
            'Text::ParseWords'      => '3.27',
            'Text::Soundex'         => '3.03',
            'Text::Tabs'            => '2007.1117',
            'Text::Wrap'            => '2006.1117',
            'Thread'                => '2.01',
            'Thread::Queue'         => '2.11',
            'Thread::Semaphore'     => '2.09',
            'Tie::Handle'           => '4.2',
            'Tie::Hash'             => '1.03',
            'Tie::Memoize'          => '1.1',
            'Tie::RefHash'          => '1.38',
            'Tie::Scalar'           => '1.01',
            'Tie::StdHandle'        => '4.2',
            'Time::HiRes'           => '1.9715',
            'Time::Local'           => '1.1901',
            'Time::gmtime'          => '1.03',
            'Unicode'               => '5.1.0',
            'Unicode::Normalize'    => '1.02',
            'Unicode::UCD'          => '0.25',
            'VMS::DCLsym'           => '1.03',
            'VMS::Stdio'            => '2.4',
            'Win32'                 => '0.38',
            'Win32API::File'        => '0.1001_01',
            'Win32API::File::ExtUtils::Myconst2perl'=> '1',
            'Win32CORE'             => '0.02',
            'XS::APItest'           => '0.15',
            'XS::Typemap'           => '0.03',
            'XSLoader'              => '0.10',
            'attributes'            => '0.09',
            'autouse'               => '1.06',
            'base'                  => '2.13',
            'bigint'                => '0.23',
            'bignum'                => '0.23',
            'bigrat'                => '0.23',
            'blib'                  => '1.04',
            'charnames'             => '1.06',
            'constant'              => '1.17',
            'diagnostics'           => '1.16',
            'encoding'              => '2.6_01',
            'fields'                => '2.12',
            'filetest'              => '1.02',
            'lib'                   => '0.61',
            'open'                  => '1.06',
            'ops'                   => '1.02',
            'overload'              => '1.06',
            're'                    => '0.0601',
            'sigtrap'               => '1.04',
            'threads'               => '1.71',
            'threads::shared'       => '1.27',
            'utf8'                  => '1.07',
            'warnings'              => '1.05_01',
        },
        removed => {
        }
    },
    5.009 => {
        delta_from => 5.008002,
        changed => {
            'B'                     => '1.03',
            'B::C'                  => '1.03',
            'B::Concise'            => '0.57',
            'B::Deparse'            => '0.65',
            'DB_File'               => '1.806',
            'Devel::PPPort'         => '2.008',
            'English'               => '1.02',
            'Fatal'                 => '1.04',
            'OS2::DLL'              => '1.02',
            'Opcode'                => '1.06',
            'Time::HiRes'           => '1.51',
            'Unicode::Collate'      => '0.28',
            'Unicode::Normalize'    => '0.23',
            'XSLoader'              => '0.03',
            'assertions'            => '0.01',
            'assertions::activate'  => '0.01',
            'overload'              => '1.02',
            'version'               => '0.29',
        },
        removed => {
        }
    },
    5.009001 => {
        delta_from => 5.008004,
        changed => {
            'B'                     => '1.05',
            'B::Assembler'          => '0.06',
            'B::C'                  => '1.04',
            'B::Concise'            => '0.59',
            'B::Debug'              => '1.02',
            'B::Deparse'            => '0.65',
            'DB_File'               => '1.808_01',
            'Devel::PPPort'         => '2.011_01',
            'Digest'                => '1.05',
            'DynaLoader'            => '1.04',
            'English'               => '1.02',
            'Exporter::Heavy'       => '5.567',
            'ExtUtils::Command'     => '1.07',
            'ExtUtils::Liblist::Kid'=> '1.3',
            'ExtUtils::MM_Any'      => '0.0901',
            'ExtUtils::MM_Cygwin'   => '1.07',
            'ExtUtils::MM_NW5'      => '2.07_01',
            'ExtUtils::MM_Unix'     => '1.45_01',
            'ExtUtils::MM_VMS'      => '5.71_01',
            'ExtUtils::MM_Win32'    => '1.10_01',
            'ExtUtils::MM_Win95'    => '0.03',
            'ExtUtils::MakeMaker'   => '6.21_02',
            'ExtUtils::Manifest'    => '1.43',
            'Fatal'                 => '1.04',
            'Getopt::Long'          => '2.3401',
            'IO::Handle'            => '1.23',
            'IO::Pipe'              => '1.122',
            'IPC::Open3'            => '1.0105',
            'MIME::Base64'          => '3.00_01',
            'MIME::QuotedPrint'     => '3.00',
            'Memoize'               => '1.01_01',
            'ODBM_File'             => '1.04',
            'Opcode'                => '1.06',
            'POSIX'                 => '1.07',
            'Storable'              => '2.11',
            'Time::HiRes'           => '1.56',
            'Time::Local'           => '1.07_94',
            'UNIVERSAL'             => '1.02',
            'Unicode'               => '4.0.0',
            'Unicode::UCD'          => '0.21',
            'XSLoader'              => '0.03',
            'assertions'            => '0.01',
            'assertions::activate'  => '0.01',
            'base'                  => '2.04',
            'if'                    => '0.0401',
            'open'                  => '1.02',
            'overload'              => '1.02',
            'threads'               => '1.02',
            'utf8'                  => '1.02',
            'version'               => '0.36',
        },
        removed => {
        }
    },
    5.009002 => {
        delta_from => 5.008007,
        changed => {
            'B'                     => '1.07',
            'B::Concise'            => '0.64',
            'B::Deparse'            => '0.69',
            'B::Disassembler'       => '1.03',
            'B::Terse'              => '1.02',
            'CGI'                   => '3.07',
            'Config::Extensions'    => '0.01',
            'Devel::DProf'          => '20030813.00',
            'DynaLoader'            => '1.07',
            'Encode'                => '2.09',
            'Encode::Alias'         => '2.02',
            'English'               => '1.03',
            'Exporter'              => '5.59',
            'Exporter::Heavy'       => '5.59',
            'ExtUtils::Command'     => '1.07',
            'ExtUtils::Command::MM' => '0.03_01',
            'ExtUtils::Embed'       => '1.26',
            'ExtUtils::Liblist::Kid'=> '1.3',
            'ExtUtils::MM_Any'      => '0.10',
            'ExtUtils::MM_Cygwin'   => '1.07',
            'ExtUtils::MM_MacOS'    => '1.08',
            'ExtUtils::MM_NW5'      => '2.07',
            'ExtUtils::MM_Unix'     => '1.46_01',
            'ExtUtils::MM_VMS'      => '5.71',
            'ExtUtils::MM_Win32'    => '1.10',
            'ExtUtils::MM_Win95'    => '0.03',
            'ExtUtils::MakeMaker'   => '6.25',
            'ExtUtils::Manifest'    => '1.44',
            'Fatal'                 => '1.04',
            'File::Path'            => '1.06',
            'FileCache'             => '1.04_01',
            'Getopt::Long'          => '2.3401',
            'IO::File'              => '1.10',
            'IO::Socket::INET'      => '1.27',
            'Math::BigFloat'        => '1.49',
            'Math::BigInt'          => '1.75',
            'Math::BigInt::Calc'    => '0.45',
            'Math::BigRat'          => '0.14',
            'Memoize'               => '1.01_01',
            'Module::CoreList'      => '1.99',
            'NEXT'                  => '0.60_01',
            'Opcode'                => '1.06',
            'Pod::Html'             => '1.0502',
            'Scalar::Util'          => '1.14_1',
            'Storable'              => '2.14',
            'Symbol'                => '1.05',
            'Test::Harness'         => '2.46',
            'Test::Harness::Straps' => '0.20_01',
            'Text::Balanced'        => '1.95_01',
            'Text::Wrap'            => '2001.09292',
            'UNIVERSAL'             => '1.02',
            'Unicode'               => '4.0.1',
            'Unicode::Normalize'    => '0.30',
            'Unicode::UCD'          => '0.22',
            'Win32'                 => '0.23',
            'XS::APItest'           => '0.05',
            'XSLoader'              => '0.03',
            'assertions'            => '0.01',
            'assertions::activate'  => '0.01',
            'base'                  => '2.06',
            'bigint'                => '0.06',
            'bignum'                => '0.16',
            'bigrat'                => '0.07',
            'bytes'                 => '1.01',
            'encoding::warnings'    => '0.05',
            'if'                    => '0.0401',
            're'                    => '0.05',
            'threads::shared'       => '0.92',
            'utf8'                  => '1.04',
            'version'               => '0.42',
            'warnings'              => '1.04',
        },
        removed => {
            'Test::Harness::Point'  => 1,
        }
    },
    5.009003 => {
        delta_from => 5.008008,
        changed => {
            'Archive::Tar'          => '1.26_01',
            'Archive::Tar::Constant'=> '0.02',
            'Archive::Tar::File'    => '0.02',
            'AutoSplit'             => '1.04_01',
            'B'                     => '1.10',
            'B::Bblock'             => '1.02',
            'B::Bytecode'           => '1.01',
            'B::C'                  => '1.04',
            'B::CC'                 => '1.00',
            'B::Concise'            => '0.67',
            'B::Debug'              => '1.02',
            'B::Deparse'            => '0.73',
            'B::Lint'               => '1.04',
            'B::Terse'              => '1.03',
            'CGI'                   => '3.15_01',
            'CPAN'                  => '1.83_58',
            'CPAN::Debug'           => '4.44',
            'CPAN::FirstTime'       => '4.50',
            'CPAN::HandleConfig'    => '4.31',
            'CPAN::Nox'             => '2.31',
            'CPAN::Tarzip'          => '3.36',
            'CPAN::Version'         => '2.55',
            'Carp'                  => '1.05',
            'Carp::Heavy'           => '1.05',
            'Compress::Zlib'        => '2.000_07',
            'Compress::Zlib::Common'=> '2.000_07',
            'Compress::Zlib::Compress::Gzip::Constants'=> '2.000_07',
            'Compress::Zlib::Compress::Zip::Constants'=> '1.00',
            'Compress::Zlib::CompressPlugin::Deflate'=> '2.000_05',
            'Compress::Zlib::CompressPlugin::Identity'=> '2.000_05',
            'Compress::Zlib::File::GlobMapper'=> '0.000_02',
            'Compress::Zlib::FileConstants'=> '2.000_07',
            'Compress::Zlib::IO::Compress::Base'=> '2.000_05',
            'Compress::Zlib::IO::Compress::Deflate'=> '2.000_07',
            'Compress::Zlib::IO::Compress::Gzip'=> '2.000_07',
            'Compress::Zlib::IO::Compress::RawDeflate'=> '2.000_07',
            'Compress::Zlib::IO::Compress::Zip'=> '2.000_04',
            'Compress::Zlib::IO::Uncompress::AnyInflate'=> '2.000_07',
            'Compress::Zlib::IO::Uncompress::AnyUncompress'=> '2.000_05',
            'Compress::Zlib::IO::Uncompress::Base'=> '2.000_05',
            'Compress::Zlib::IO::Uncompress::Gunzip'=> '2.000_07',
            'Compress::Zlib::IO::Uncompress::Inflate'=> '2.000_07',
            'Compress::Zlib::IO::Uncompress::RawInflate'=> '2.000_07',
            'Compress::Zlib::IO::Uncompress::Unzip'=> '2.000_05',
            'Compress::Zlib::ParseParameters'=> '2.000_07',
            'Compress::Zlib::UncompressPlugin::Identity'=> '2.000_05',
            'Compress::Zlib::UncompressPlugin::Inflate'=> '2.000_05',
            'Config::Extensions'    => '0.01',
            'Cwd'                   => '3.15',
            'Devel::PPPort'         => '3.08',
            'Digest::SHA'           => '5.32',
            'DirHandle'             => '1.01',
            'DynaLoader'            => '1.07',
            'Encode'                => '2.14',
            'Encode::CN::HZ'        => '2.02',
            'Encode::MIME::Header'  => '2.02',
            'English'               => '1.04',
            'Exporter'              => '5.59',
            'Exporter::Heavy'       => '5.59',
            'ExtUtils::CBuilder'    => '0.15',
            'ExtUtils::CBuilder::Base'=> '0.12',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.12',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.12',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.12',
            'ExtUtils::CBuilder::Platform::aix'=> '0.12',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.12',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.12',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.01',
            'ExtUtils::CBuilder::Platform::os2'=> '0.13',
            'ExtUtils::Command::MM' => '0.05_01',
            'ExtUtils::Constant'    => '0.2',
            'ExtUtils::Constant::Base'=> '0.02',
            'ExtUtils::Constant::ProxySubs'=> '0.01',
            'ExtUtils::Constant::XS'=> '0.02',
            'ExtUtils::MM_Any'      => '0.13_01',
            'ExtUtils::MM_Unix'     => '1.50_01',
            'ExtUtils::MakeMaker'   => '6.30_01',
            'ExtUtils::ParseXS'     => '2.15_02',
            'Fatal'                 => '1.04',
            'File::Compare'         => '1.1005',
            'File::Spec'            => '3.15',
            'File::Temp'            => '0.16_01',
            'IO::File'              => '1.13_01',
            'IO::Handle'            => '1.26',
            'IO::Socket'            => '1.29_01',
            'IO::Socket::INET'      => '1.29_02',
            'IO::Socket::UNIX'      => '1.22_01',
            'IO::Zlib'              => '1.04_02',
            'Locale::Maketext'      => '1.10_01',
            'Math::BigInt::FastCalc'=> '0.10',
            'Memoize'               => '1.01_01',
            'Module::CoreList'      => '2.02',
            'Moped::Msg'            => '0.01',
            'NEXT'                  => '0.60_01',
            'Net::Cmd'              => '2.26_01',
            'Net::Domain'           => '2.19_01',
            'Net::Ping'             => '2.31_04',
            'Opcode'                => '1.08',
            'POSIX'                 => '1.10',
            'Pod::Escapes'          => '1.04',
            'Pod::Man'              => '2.04',
            'Pod::Perldoc'          => '3.14_01',
            'Pod::Simple'           => '3.04',
            'Pod::Simple::BlackBox' => undef,
            'Pod::Simple::Checker'  => '2.02',
            'Pod::Simple::Debug'    => undef,
            'Pod::Simple::DumpAsText'=> '2.02',
            'Pod::Simple::DumpAsXML'=> '2.02',
            'Pod::Simple::HTML'     => '3.03',
            'Pod::Simple::HTMLBatch'=> '3.02',
            'Pod::Simple::HTMLLegacy'=> '5.01',
            'Pod::Simple::LinkSection'=> undef,
            'Pod::Simple::Methody'  => '2.02',
            'Pod::Simple::Progress' => '1.01',
            'Pod::Simple::PullParser'=> '2.02',
            'Pod::Simple::PullParserEndToken'=> undef,
            'Pod::Simple::PullParserStartToken'=> undef,
            'Pod::Simple::PullParserTextToken'=> undef,
            'Pod::Simple::PullParserToken'=> '2.02',
            'Pod::Simple::RTF'      => '2.02',
            'Pod::Simple::Search'   => '3.04',
            'Pod::Simple::SimpleTree'=> '2.02',
            'Pod::Simple::Text'     => '2.02',
            'Pod::Simple::TextContent'=> '2.02',
            'Pod::Simple::TiedOutFH'=> undef,
            'Pod::Simple::Transcode'=> undef,
            'Pod::Simple::TranscodeDumb'=> '2.02',
            'Pod::Simple::TranscodeSmart'=> undef,
            'Pod::Simple::XMLOutStream'=> '2.02',
            'Pod::Text'             => '3.01',
            'Pod::Text::Color'      => '2.01',
            'Pod::Text::Overstrike' => '2',
            'Pod::Text::Termcap'    => '2.01',
            'Pod::Usage'            => '1.33_01',
            'SelfLoader'            => '1.0905',
            'Storable'              => '2.15_02',
            'Test::Builder::Module' => '0.03',
            'Text::Balanced'        => '1.95_01',
            'Tie::File'             => '0.97_01',
            'UNIVERSAL'             => '1.03',
            'XS::APItest'           => '0.09',
            'assertions'            => '0.02',
            'assertions::activate'  => '0.02',
            'assertions::compat'    => undef,
            'constant'              => '1.07',
            'encoding::warnings'    => '0.05',
            'feature'               => '1.00',
            're'                    => '0.06',
            'sort'                  => '2.00',
            'version'               => '0.53',
        },
        removed => {
        }
    },
    5.009004 => {
        delta_from => 5.009003,
        changed => {
            'Archive::Tar'          => '1.30_01',
            'AutoLoader'            => '5.61',
            'B'                     => '1.11',
            'B::Bytecode'           => '1.02',
            'B::C'                  => '1.05',
            'B::Concise'            => '0.69',
            'B::Deparse'            => '0.76',
            'B::Lint'               => '1.08',
            'Benchmark'             => '1.08',
            'CGI'                   => '3.20',
            'CGI::Cookie'           => '1.27',
            'CGI::Fast'             => '1.07',
            'CPAN'                  => '1.87_55',
            'CPAN::Debug'           => '5.400561',
            'CPAN::FirstTime'       => '5.400742',
            'CPAN::HandleConfig'    => '5.400740',
            'CPAN::Nox'             => '5.400561',
            'CPAN::Tarzip'          => '5.400714',
            'CPAN::Version'         => '5.400561',
            'Compress::Raw::Zlib'   => '2.000_13',
            'Compress::Zlib'        => '2.000_13',
            'Cwd'                   => '3.19',
            'Devel::PPPort'         => '3.10',
            'Digest'                => '1.15',
            'Digest::SHA'           => '5.43',
            'Encode'                => '2.18_01',
            'Encode::Alias'         => '2.06',
            'Encode::Byte'          => '2.02',
            'Encode::CJKConstants'  => '2.02',
            'Encode::CN'            => '2.02',
            'Encode::CN::HZ'        => '2.04',
            'Encode::Config'        => '2.03',
            'Encode::EBCDIC'        => '2.02',
            'Encode::Encoder'       => '2.01',
            'Encode::Encoding'      => '2.04',
            'Encode::Guess'         => '2.02',
            'Encode::JP'            => '2.03',
            'Encode::JP::H2Z'       => '2.02',
            'Encode::JP::JIS7'      => '2.02',
            'Encode::KR'            => '2.02',
            'Encode::KR::2022_KR'   => '2.02',
            'Encode::MIME::Header'  => '2.04',
            'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
            'Encode::Symbol'        => '2.02',
            'Encode::TW'            => '2.02',
            'Encode::Unicode'       => '2.03',
            'Encode::Unicode::UTF7' => '2.04',
            'ExtUtils::CBuilder'    => '0.18',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.12_01',
            'ExtUtils::Constant::Base'=> '0.03',
            'ExtUtils::Constant::ProxySubs'=> '0.03',
            'ExtUtils::Install'     => '1.41',
            'ExtUtils::Installed'   => '1.41',
            'ExtUtils::MM_Any'      => '0.13_02',
            'ExtUtils::MM_NW5'      => '2.08_01',
            'ExtUtils::MM_Unix'     => '1.5003',
            'ExtUtils::MM_VMS'      => '5.73_03',
            'ExtUtils::MM_Win32'    => '1.12_02',
            'ExtUtils::MM_Win95'    => '0.04_01',
            'ExtUtils::MakeMaker'   => '6.30_02',
            'ExtUtils::Manifest'    => '1.46_01',
            'ExtUtils::Mkbootstrap' => '1.15_01',
            'ExtUtils::Mksymlists'  => '1.19_01',
            'ExtUtils::Packlist'    => '1.41',
            'File::Basename'        => '2.75',
            'File::Find'            => '1.11',
            'File::GlobMapper'      => '0.000_02',
            'File::Spec'            => '3.19',
            'FileCache'             => '1.07',
            'Getopt::Long'          => '2.3501',
            'Hash::Util'            => '0.07',
            'Hash::Util::FieldHash' => '0.01',
            'IO'                    => '1.23_01',
            'IO::Compress::Adapter::Deflate'=> '2.000_13',
            'IO::Compress::Adapter::Identity'=> '2.000_13',
            'IO::Compress::Base'    => '2.000_13',
            'IO::Compress::Base::Common'=> '2.000_13',
            'IO::Compress::Deflate' => '2.000_13',
            'IO::Compress::Gzip'    => '2.000_13',
            'IO::Compress::Gzip::Constants'=> '2.000_13',
            'IO::Compress::RawDeflate'=> '2.000_13',
            'IO::Compress::Zip'     => '2.000_13',
            'IO::Compress::Zip::Constants'=> '2.000_13',
            'IO::Compress::Zlib::Constants'=> '2.000_13',
            'IO::Compress::Zlib::Extra'=> '2.000_13',
            'IO::Dir'               => '1.06',
            'IO::File'              => '1.14',
            'IO::Handle'            => '1.27',
            'IO::Socket'            => '1.30_01',
            'IO::Socket::INET'      => '1.31',
            'IO::Socket::UNIX'      => '1.23',
            'IO::Uncompress::Adapter::Identity'=> '2.000_13',
            'IO::Uncompress::Adapter::Inflate'=> '2.000_13',
            'IO::Uncompress::AnyInflate'=> '2.000_13',
            'IO::Uncompress::AnyUncompress'=> '2.000_13',
            'IO::Uncompress::Base'  => '2.000_13',
            'IO::Uncompress::Gunzip'=> '2.000_13',
            'IO::Uncompress::Inflate'=> '2.000_13',
            'IO::Uncompress::RawInflate'=> '2.000_13',
            'IO::Uncompress::Unzip' => '2.000_13',
            'MIME::Base64'          => '3.07_01',
            'Math::Complex'         => '1.36',
            'Math::Trig'            => '1.04',
            'Module::Build'         => '0.2805',
            'Module::Build::Base'   => undef,
            'Module::Build::Compat' => '0.03',
            'Module::Build::ConfigData'=> undef,
            'Module::Build::Cookbook'=> undef,
            'Module::Build::ModuleInfo'=> undef,
            'Module::Build::Notes'  => undef,
            'Module::Build::PPMMaker'=> undef,
            'Module::Build::Platform::Amiga'=> undef,
            'Module::Build::Platform::Default'=> undef,
            'Module::Build::Platform::EBCDIC'=> undef,
            'Module::Build::Platform::MPEiX'=> undef,
            'Module::Build::Platform::MacOS'=> undef,
            'Module::Build::Platform::RiscOS'=> undef,
            'Module::Build::Platform::Unix'=> undef,
            'Module::Build::Platform::VMS'=> undef,
            'Module::Build::Platform::VOS'=> undef,
            'Module::Build::Platform::Windows'=> undef,
            'Module::Build::Platform::aix'=> undef,
            'Module::Build::Platform::cygwin'=> undef,
            'Module::Build::Platform::darwin'=> undef,
            'Module::Build::Platform::os2'=> undef,
            'Module::Build::PodParser'=> undef,
            'Module::Build::Version'=> '0',
            'Module::Build::YAML'   => '0.50',
            'Module::CoreList'      => '2.08',
            'Module::Load'          => '0.10',
            'Module::Loaded'        => '0.01',
            'Package::Constants'    => '0.01',
            'Pod::Html'             => '1.07',
            'Pod::Man'              => '2.09',
            'Pod::Text'             => '3.07',
            'Pod::Text::Color'      => '2.03',
            'Pod::Text::Termcap'    => '2.03',
            'SDBM_File'             => '1.06',
            'Shell'                 => '0.7',
            'Sys::Syslog'           => '0.17',
            'Term::ANSIColor'       => '1.11',
            'Test::Builder'         => '0.33',
            'Test::Builder::Tester' => '1.04',
            'Test::Harness'         => '2.62',
            'Test::Harness::Util'   => '0.01',
            'Test::More'            => '0.64',
            'Test::Simple'          => '0.64',
            'Text::Balanced'        => '1.98_01',
            'Text::ParseWords'      => '3.25',
            'Text::Tabs'            => '2007.071101',
            'Text::Wrap'            => '2006.0711',
            'Tie::RefHash'          => '1.34_01',
            'Time::HiRes'           => '1.87',
            'Time::Local'           => '1.13',
            'Time::gmtime'          => '1.03',
            'UNIVERSAL'             => '1.04',
            'Unicode::Normalize'    => '1.01',
            'Win32API::File'        => '0.1001',
            'Win32API::File::ExtUtils::Myconst2perl'=> '1',
            'assertions'            => '0.03',
            'assertions::compat'    => '0.02',
            'autouse'               => '1.06',
            'diagnostics'           => '1.16',
            'encoding'              => '2.04',
            'encoding::warnings'    => '0.10',
            'feature'               => '1.01',
            're'                    => '0.0601',
            'threads'               => '1.38',
            'threads::shared'       => '0.94_01',
            'version'               => '0.67',
        },
        removed => {
            'Compress::Zlib::Common'=> 1,
            'Compress::Zlib::Compress::Gzip::Constants'=> 1,
            'Compress::Zlib::Compress::Zip::Constants'=> 1,
            'Compress::Zlib::CompressPlugin::Deflate'=> 1,
            'Compress::Zlib::CompressPlugin::Identity'=> 1,
            'Compress::Zlib::File::GlobMapper'=> 1,
            'Compress::Zlib::FileConstants'=> 1,
            'Compress::Zlib::IO::Compress::Base'=> 1,
            'Compress::Zlib::IO::Compress::Deflate'=> 1,
            'Compress::Zlib::IO::Compress::Gzip'=> 1,
            'Compress::Zlib::IO::Compress::RawDeflate'=> 1,
            'Compress::Zlib::IO::Compress::Zip'=> 1,
            'Compress::Zlib::IO::Uncompress::AnyInflate'=> 1,
            'Compress::Zlib::IO::Uncompress::AnyUncompress'=> 1,
            'Compress::Zlib::IO::Uncompress::Base'=> 1,
            'Compress::Zlib::IO::Uncompress::Gunzip'=> 1,
            'Compress::Zlib::IO::Uncompress::Inflate'=> 1,
            'Compress::Zlib::IO::Uncompress::RawInflate'=> 1,
            'Compress::Zlib::IO::Uncompress::Unzip'=> 1,
            'Compress::Zlib::ParseParameters'=> 1,
            'Compress::Zlib::UncompressPlugin::Identity'=> 1,
            'Compress::Zlib::UncompressPlugin::Inflate'=> 1,
        }
    },
    5.009005 => {
        delta_from => 5.009004,
        changed => {
            'Archive::Extract'      => '0.22_01',
            'Archive::Tar'          => '1.32',
            'Attribute::Handlers'   => '0.78_06',
            'AutoLoader'            => '5.63',
            'AutoSplit'             => '1.05',
            'B'                     => '1.16',
            'B::Concise'            => '0.72',
            'B::Debug'              => '1.05',
            'B::Deparse'            => '0.82',
            'B::Lint'               => '1.09',
            'B::Terse'              => '1.05',
            'Benchmark'             => '1.1',
            'CGI'                   => '3.29',
            'CGI::Cookie'           => '1.28',
            'CGI::Util'             => '1.5_01',
            'CPAN'                  => '1.9102',
            'CPAN::Debug'           => '5.400955',
            'CPAN::FirstTime'       => '5.401669',
            'CPAN::HandleConfig'    => '5.401744',
            'CPAN::Kwalify'         => '5.401418',
            'CPAN::Nox'             => '5.400844',
            'CPAN::Queue'           => '5.401704',
            'CPAN::Tarzip'          => '5.401717',
            'CPAN::Version'         => '5.401387',
            'CPANPLUS'              => '0.81_01',
            'CPANPLUS::Backend'     => undef,
            'CPANPLUS::Backend::RV' => undef,
            'CPANPLUS::Config'      => undef,
            'CPANPLUS::Configure'   => undef,
            'CPANPLUS::Configure::Setup'=> undef,
            'CPANPLUS::Dist'        => undef,
            'CPANPLUS::Dist::Base'  => '0.01',
            'CPANPLUS::Dist::Build' => '0.06_01',
            'CPANPLUS::Dist::Build::Constants'=> '0.01',
            'CPANPLUS::Dist::MM'    => undef,
            'CPANPLUS::Dist::Sample'=> undef,
            'CPANPLUS::Error'       => undef,
            'CPANPLUS::Internals'   => '0.81_01',
            'CPANPLUS::Internals::Constants'=> '0.01',
            'CPANPLUS::Internals::Constants::Report'=> '0.01',
            'CPANPLUS::Internals::Extract'=> undef,
            'CPANPLUS::Internals::Fetch'=> undef,
            'CPANPLUS::Internals::Report'=> undef,
            'CPANPLUS::Internals::Search'=> undef,
            'CPANPLUS::Internals::Source'=> undef,
            'CPANPLUS::Internals::Utils'=> undef,
            'CPANPLUS::Internals::Utils::Autoflush'=> undef,
            'CPANPLUS::Module'      => undef,
            'CPANPLUS::Module::Author'=> undef,
            'CPANPLUS::Module::Author::Fake'=> undef,
            'CPANPLUS::Module::Checksums'=> undef,
            'CPANPLUS::Module::Fake'=> undef,
            'CPANPLUS::Module::Signature'=> undef,
            'CPANPLUS::Selfupdate'  => undef,
            'CPANPLUS::Shell'       => undef,
            'CPANPLUS::Shell::Classic'=> '0.0562',
            'CPANPLUS::Shell::Default'=> '0.81_01',
            'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
            'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
            'CPANPLUS::inc'         => undef,
            'Carp'                  => '1.07',
            'Carp::Heavy'           => '1.07',
            'Compress::Raw::Zlib'   => '2.005',
            'Compress::Zlib'        => '2.005',
            'Cwd'                   => '3.25',
            'DBM_Filter'            => '0.02',
            'DB_File'               => '1.815',
            'Data::Dumper'          => '2.121_13',
            'Devel::InnerPackage'   => '0.3',
            'Devel::PPPort'         => '3.11_01',
            'Digest::MD5'           => '2.36_01',
            'Digest::SHA'           => '5.44',
            'DynaLoader'            => '1.08',
            'Encode'                => '2.23',
            'Encode::Alias'         => '2.07',
            'Encode::Byte'          => '2.03',
            'Encode::Config'        => '2.04',
            'Encode::Encoding'      => '2.05',
            'Encode::GSM0338'       => '2.00',
            'Encode::JP::JIS7'      => '2.03',
            'Encode::MIME::Header'  => '2.05',
            'Encode::MIME::Name'    => '1.01',
            'Encode::Unicode'       => '2.05',
            'Errno'                 => '1.10',
            'Exporter'              => '5.60',
            'Exporter::Heavy'       => '5.60',
            'ExtUtils::CBuilder'    => '0.19',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.13',
            'ExtUtils::Command'     => '1.13',
            'ExtUtils::Command::MM' => '0.07',
            'ExtUtils::Constant::Base'=> '0.04',
            'ExtUtils::Install'     => '1.41_01',
            'ExtUtils::Liblist'     => '1.03',
            'ExtUtils::Liblist::Kid'=> '1.33',
            'ExtUtils::MM'          => '0.07',
            'ExtUtils::MM_AIX'      => '0.05',
            'ExtUtils::MM_Any'      => '0.15',
            'ExtUtils::MM_BeOS'     => '1.07',
            'ExtUtils::MM_Cygwin'   => '1.1',
            'ExtUtils::MM_DOS'      => '0.04',
            'ExtUtils::MM_MacOS'    => '1.1',
            'ExtUtils::MM_NW5'      => '2.1',
            'ExtUtils::MM_OS2'      => '1.07',
            'ExtUtils::MM_QNX'      => '0.04',
            'ExtUtils::MM_UWIN'     => '0.04',
            'ExtUtils::MM_Unix'     => '1.54_01',
            'ExtUtils::MM_VMS'      => '5.76',
            'ExtUtils::MM_VOS'      => '0.04',
            'ExtUtils::MM_Win32'    => '1.15',
            'ExtUtils::MM_Win95'    => '0.06',
            'ExtUtils::MY'          => '0.03',
            'ExtUtils::MakeMaker'   => '6.36',
            'ExtUtils::MakeMaker::Config'=> '0.04',
            'ExtUtils::MakeMaker::bytes'=> '0.03',
            'ExtUtils::MakeMaker::vmsish'=> '0.03',
            'ExtUtils::Manifest'    => '1.51_01',
            'ExtUtils::Mkbootstrap' => '1.17',
            'ExtUtils::Mksymlists'  => '1.21',
            'ExtUtils::ParseXS'     => '2.18',
            'ExtUtils::XSSymSet'    => '1.1',
            'ExtUtils::testlib'     => '1.17',
            'Fatal'                 => '1.05',
            'Fcntl'                 => '1.06',
            'File::Basename'        => '2.76',
            'File::Copy'            => '2.10',
            'File::Fetch'           => '0.10',
            'File::Glob'            => '1.06',
            'File::Path'            => '2.01',
            'File::Spec'            => '3.25',
            'File::Spec::Cygwin'    => '1.1_01',
            'File::Spec::VMS'       => '1.4_01',
            'File::Temp'            => '0.18',
            'Filter::Util::Call'    => '1.0602',
            'FindBin'               => '1.49',
            'Getopt::Long'          => '2.36',
            'Hash::Util::FieldHash' => '1.01',
            'IO::Compress::Adapter::Deflate'=> '2.005',
            'IO::Compress::Adapter::Identity'=> '2.005',
            'IO::Compress::Base'    => '2.005',
            'IO::Compress::Base::Common'=> '2.005',
            'IO::Compress::Deflate' => '2.005',
            'IO::Compress::Gzip'    => '2.005',
            'IO::Compress::Gzip::Constants'=> '2.005',
            'IO::Compress::RawDeflate'=> '2.005',
            'IO::Compress::Zip'     => '2.005',
            'IO::Compress::Zip::Constants'=> '2.005',
            'IO::Compress::Zlib::Constants'=> '2.005',
            'IO::Compress::Zlib::Extra'=> '2.005',
            'IO::Uncompress::Adapter::Identity'=> '2.005',
            'IO::Uncompress::Adapter::Inflate'=> '2.005',
            'IO::Uncompress::AnyInflate'=> '2.005',
            'IO::Uncompress::AnyUncompress'=> '2.005',
            'IO::Uncompress::Base'  => '2.005',
            'IO::Uncompress::Gunzip'=> '2.005',
            'IO::Uncompress::Inflate'=> '2.005',
            'IO::Uncompress::RawInflate'=> '2.005',
            'IO::Uncompress::Unzip' => '2.005',
            'IO::Zlib'              => '1.05_01',
            'IPC::Cmd'              => '0.36_01',
            'List::Util'            => '1.19',
            'Locale::Maketext::Simple'=> '0.18',
            'Log::Message'          => '0.01',
            'Log::Message::Config'  => '0.01',
            'Log::Message::Handlers'=> undef,
            'Log::Message::Item'    => undef,
            'Log::Message::Simple'  => '0.0201',
            'Math::BigFloat'        => '1.58',
            'Math::BigInt'          => '1.87',
            'Math::BigInt::Calc'    => '0.51',
            'Math::BigInt::FastCalc'=> '0.15_01',
            'Math::BigRat'          => '0.19',
            'Math::Complex'         => '1.37',
            'Memoize'               => '1.01_02',
            'Module::Build'         => '0.2808',
            'Module::Build::Config' => undef,
            'Module::Build::Version'=> '0.7203',
            'Module::CoreList'      => '2.12',
            'Module::Load::Conditional'=> '0.16',
            'Module::Pluggable'     => '3.6',
            'Module::Pluggable::Object'=> '3.6',
            'NDBM_File'             => '1.07',
            'Net::Cmd'              => '2.28',
            'Net::Config'           => '1.11',
            'Net::Domain'           => '2.20',
            'Net::FTP'              => '2.77',
            'Net::FTP::A'           => '1.18',
            'Net::NNTP'             => '2.24',
            'Net::POP3'             => '2.29',
            'Net::SMTP'             => '2.31',
            'ODBM_File'             => '1.07',
            'OS2::DLL'              => '1.03',
            'Object::Accessor'      => '0.32',
            'Opcode'                => '1.09',
            'POSIX'                 => '1.13',
            'Params::Check'         => '0.26',
            'PerlIO::encoding'      => '0.10',
            'PerlIO::scalar'        => '0.05',
            'PerlIO::via'           => '0.04',
            'Pod::Html'             => '1.08',
            'Pod::Man'              => '2.12',
            'Pod::ParseUtils'       => '1.35',
            'Pod::Parser'           => '1.35',
            'Pod::Select'           => '1.35',
            'Pod::Simple'           => '3.05',
            'Pod::Text'             => '3.08',
            'Pod::Usage'            => '1.35',
            'Scalar::Util'          => '1.19',
            'SelfLoader'            => '1.11',
            'Shell'                 => '0.72_01',
            'Socket'                => '1.79',
            'Storable'              => '2.16',
            'Switch'                => '2.13',
            'Sys::Syslog'           => '0.18_01',
            'Term::ANSIColor'       => '1.12',
            'Term::UI'              => '0.14_01',
            'Term::UI::History'     => undef,
            'Test::Builder'         => '0.70',
            'Test::Builder::Module' => '0.68',
            'Test::Builder::Tester' => '1.07',
            'Test::Harness'         => '2.64',
            'Test::Harness::Results'=> '0.01',
            'Test::More'            => '0.70',
            'Test::Simple'          => '0.70',
            'Text::Balanced'        => '2.0.0',
            'Text::Soundex'         => '3.02',
            'Text::Tabs'            => '2007.1117',
            'Text::Wrap'            => '2006.1117',
            'Thread'                => '3.02',
            'Tie::File'             => '0.97_02',
            'Tie::Hash::NamedCapture'=> '0.06',
            'Tie::Memoize'          => '1.1',
            'Tie::RefHash'          => '1.37',
            'Time::HiRes'           => '1.9707',
            'Time::Local'           => '1.17',
            'Time::Piece'           => '1.11_02',
            'Time::Seconds'         => undef,
            'Unicode'               => '5.0.0',
            'Unicode::Normalize'    => '1.02',
            'Unicode::UCD'          => '0.25',
            'VMS::DCLsym'           => '1.03',
            'Win32'                 => '0.30',
            'Win32API::File'        => '0.1001_01',
            'Win32CORE'             => '0.02',
            'XS::APItest'           => '0.12',
            'XSLoader'              => '0.08',
            'attributes'            => '0.08',
            'base'                  => '2.12',
            'bigint'                => '0.22',
            'bignum'                => '0.22',
            'bigrat'                => '0.22',
            'bytes'                 => '1.03',
            'charnames'             => '1.06',
            'constant'              => '1.10',
            'diagnostics'           => '1.17',
            'encoding'              => '2.06',
            'encoding::warnings'    => '0.11',
            'feature'               => '1.10',
            'fields'                => '2.12',
            'less'                  => '0.02',
            'mro'                   => '1.00',
            'overload'              => '1.06',
            're'                    => '0.08',
            'sigtrap'               => '1.04',
            'sort'                  => '2.01',
            'strict'                => '1.04',
            'threads'               => '1.63',
            'threads::shared'       => '1.12',
            'utf8'                  => '1.07',
            'version'               => '0.7203',
            'warnings'              => '1.06',
        },
        removed => {
            'B::Asmdata'            => 1,
            'B::Assembler'          => 1,
            'B::Bblock'             => 1,
            'B::Bytecode'           => 1,
            'B::C'                  => 1,
            'B::CC'                 => 1,
            'B::Disassembler'       => 1,
            'B::Stackobj'           => 1,
            'B::Stash'              => 1,
            'ByteLoader'            => 1,
            'Thread::Signal'        => 1,
            'Thread::Specific'      => 1,
            'assertions'            => 1,
            'assertions::activate'  => 1,
            'assertions::compat'    => 1,
        }
    },
    5.01 => {
        delta_from => 5.009005,
        changed => {
            'Archive::Extract'      => '0.24',
            'Archive::Tar'          => '1.38',
            'Attribute::Handlers'   => '0.79',
            'B'                     => '1.17',
            'B::Concise'            => '0.74',
            'B::Deparse'            => '0.83',
            'CPAN'                  => '1.9205',
            'CPAN::API::HOWTO'      => undef,
            'CPAN::Debug'           => '5.402212',
            'CPAN::DeferedCode'     => '5.50',
            'CPAN::FirstTime'       => '5.402229',
            'CPAN::HandleConfig'    => '5.402212',
            'CPAN::Nox'             => '5.402411',
            'CPAN::Queue'           => '5.402212',
            'CPAN::Tarzip'          => '5.402213',
            'CPAN::Version'         => '5.5',
            'CPANPLUS'              => '0.84',
            'CPANPLUS::Dist::Build' => '0.06_02',
            'CPANPLUS::Internals'   => '0.84',
            'CPANPLUS::Shell::Default'=> '0.84',
            'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
            'Carp'                  => '1.08',
            'Carp::Heavy'           => '1.08',
            'Compress::Raw::Zlib'   => '2.008',
            'Compress::Zlib'        => '2.008',
            'Cwd'                   => '3.2501',
            'DB_File'               => '1.816_1',
            'Data::Dumper'          => '2.121_14',
            'Devel::PPPort'         => '3.13',
            'Digest::SHA'           => '5.45',
            'Exporter'              => '5.62',
            'Exporter::Heavy'       => '5.62',
            'ExtUtils::CBuilder'    => '0.21',
            'ExtUtils::CBuilder::Base'=> '0.21',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.21',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.22',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.21',
            'ExtUtils::CBuilder::Platform::aix'=> '0.21',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.21',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.21',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.21',
            'ExtUtils::CBuilder::Platform::os2'=> '0.21',
            'ExtUtils::Command::MM' => '6.42',
            'ExtUtils::Constant::ProxySubs'=> '0.05',
            'ExtUtils::Embed'       => '1.27',
            'ExtUtils::Install'     => '1.44',
            'ExtUtils::Installed'   => '1.43',
            'ExtUtils::Liblist'     => '6.42',
            'ExtUtils::Liblist::Kid'=> '6.42',
            'ExtUtils::MM'          => '6.42',
            'ExtUtils::MM_AIX'      => '6.42',
            'ExtUtils::MM_Any'      => '6.42',
            'ExtUtils::MM_BeOS'     => '6.42',
            'ExtUtils::MM_Cygwin'   => '6.42',
            'ExtUtils::MM_DOS'      => '6.42',
            'ExtUtils::MM_MacOS'    => '6.42',
            'ExtUtils::MM_NW5'      => '6.42',
            'ExtUtils::MM_OS2'      => '6.42',
            'ExtUtils::MM_QNX'      => '6.42',
            'ExtUtils::MM_UWIN'     => '6.42',
            'ExtUtils::MM_Unix'     => '6.42',
            'ExtUtils::MM_VMS'      => '6.42',
            'ExtUtils::MM_VOS'      => '6.42',
            'ExtUtils::MM_Win32'    => '6.42',
            'ExtUtils::MM_Win95'    => '6.42',
            'ExtUtils::MY'          => '6.42',
            'ExtUtils::MakeMaker'   => '6.42',
            'ExtUtils::MakeMaker::Config'=> '6.42',
            'ExtUtils::MakeMaker::bytes'=> '6.42',
            'ExtUtils::MakeMaker::vmsish'=> '6.42',
            'ExtUtils::Mkbootstrap' => '6.42',
            'ExtUtils::Mksymlists'  => '6.42',
            'ExtUtils::Packlist'    => '1.43',
            'ExtUtils::ParseXS'     => '2.18_02',
            'ExtUtils::testlib'     => '6.42',
            'File::Copy'            => '2.11',
            'File::Fetch'           => '0.14',
            'File::Find'            => '1.12',
            'File::Path'            => '2.04',
            'File::Spec'            => '3.2501',
            'File::Spec::Cygwin'    => '3.2501',
            'File::Spec::Epoc'      => '3.2501',
            'File::Spec::Functions' => '3.2501',
            'File::Spec::Mac'       => '3.2501',
            'File::Spec::OS2'       => '3.2501',
            'File::Spec::Unix'      => '3.2501',
            'File::Spec::VMS'       => '3.2501',
            'File::Spec::Win32'     => '3.2501',
            'Filter::Util::Call'    => '1.07',
            'Getopt::Long'          => '2.37',
            'Hash::Util::FieldHash' => '1.03',
            'IO::Compress::Adapter::Deflate'=> '2.008',
            'IO::Compress::Adapter::Identity'=> '2.008',
            'IO::Compress::Base'    => '2.008',
            'IO::Compress::Base::Common'=> '2.008',
            'IO::Compress::Deflate' => '2.008',
            'IO::Compress::Gzip'    => '2.008',
            'IO::Compress::Gzip::Constants'=> '2.008',
            'IO::Compress::RawDeflate'=> '2.008',
            'IO::Compress::Zip'     => '2.008',
            'IO::Compress::Zip::Constants'=> '2.008',
            'IO::Compress::Zlib::Constants'=> '2.008',
            'IO::Compress::Zlib::Extra'=> '2.008',
            'IO::Uncompress::Adapter::Identity'=> '2.008',
            'IO::Uncompress::Adapter::Inflate'=> '2.008',
            'IO::Uncompress::AnyInflate'=> '2.008',
            'IO::Uncompress::AnyUncompress'=> '2.008',
            'IO::Uncompress::Base'  => '2.008',
            'IO::Uncompress::Gunzip'=> '2.008',
            'IO::Uncompress::Inflate'=> '2.008',
            'IO::Uncompress::RawInflate'=> '2.008',
            'IO::Uncompress::Unzip' => '2.008',
            'IO::Zlib'              => '1.07',
            'IPC::Cmd'              => '0.40_1',
            'IPC::SysV'             => '1.05',
            'Locale::Maketext'      => '1.12',
            'Log::Message::Simple'  => '0.04',
            'Math::BigFloat'        => '1.59',
            'Math::BigInt'          => '1.88',
            'Math::BigInt::Calc'    => '0.52',
            'Math::BigInt::FastCalc'=> '0.16',
            'Math::BigRat'          => '0.21',
            'Module::Build'         => '0.2808_01',
            'Module::Build::Base'   => '0.2808_01',
            'Module::Build::Compat' => '0.2808_01',
            'Module::Build::Config' => '0.2808_01',
            'Module::Build::Dumper' => undef,
            'Module::Build::ModuleInfo'=> '0.2808_01',
            'Module::Build::Notes'  => '0.2808_01',
            'Module::Build::PPMMaker'=> '0.2808_01',
            'Module::Build::Platform::Amiga'=> '0.2808_01',
            'Module::Build::Platform::Default'=> '0.2808_01',
            'Module::Build::Platform::EBCDIC'=> '0.2808_01',
            'Module::Build::Platform::MPEiX'=> '0.2808_01',
            'Module::Build::Platform::MacOS'=> '0.2808_01',
            'Module::Build::Platform::RiscOS'=> '0.2808_01',
            'Module::Build::Platform::Unix'=> '0.2808_01',
            'Module::Build::Platform::VMS'=> '0.2808_01',
            'Module::Build::Platform::VOS'=> '0.2808_01',
            'Module::Build::Platform::Windows'=> '0.2808_01',
            'Module::Build::Platform::aix'=> '0.2808_01',
            'Module::Build::Platform::cygwin'=> '0.2808_01',
            'Module::Build::Platform::darwin'=> '0.2808_01',
            'Module::Build::Platform::os2'=> '0.2808_01',
            'Module::Build::PodParser'=> '0.2808_01',
            'Module::CoreList'      => '2.13',
            'Module::Load'          => '0.12',
            'Module::Load::Conditional'=> '0.22',
            'Net::Cmd'              => '2.29',
            'Net::Ping'             => '2.33',
            'Opcode'                => '1.11',
            'Pod::Checker'          => '1.43_01',
            'Pod::Man'              => '2.16',
            'Pod::Perldoc'          => '3.14_02',
            'Socket'                => '1.80',
            'Storable'              => '2.18',
            'Sys::Syslog'           => '0.22',
            'Sys::Syslog::win32::Win32'=> undef,
            'Term::Cap'             => '1.12',
            'Term::ReadLine'        => '1.03',
            'Term::UI'              => '0.18',
            'Test::Builder'         => '0.72',
            'Test::Builder::Module' => '0.72',
            'Test::Builder::Tester' => '1.09',
            'Test::Harness::Straps' => '0.26_01',
            'Test::More'            => '0.72',
            'Test::Simple'          => '0.72',
            'Text::ParseWords'      => '3.26',
            'Text::Soundex'         => '3.03',
            'Tie::StdHandle'        => undef,
            'Time::HiRes'           => '1.9711',
            'Time::Local'           => '1.18',
            'Time::Piece'           => '1.12',
            'VMS::Filespec'         => '1.12',
            'Win32'                 => '0.34',
            'base'                  => '2.13',
            'constant'              => '1.13',
            'feature'               => '1.11',
            'fields'                => '2.13',
            'filetest'              => '1.02',
            'open'                  => '1.06',
            'threads'               => '1.67',
            'threads::shared'       => '1.14',
            'version'               => '0.74',
        },
        removed => {
        }
    },
    5.010001 => {
        delta_from => 5.01,
        changed => {
            'App::Prove'            => '3.17',
            'App::Prove::State'     => '3.17',
            'App::Prove::State::Result'=> '3.17',
            'App::Prove::State::Result::Test'=> '3.17',
            'Archive::Extract'      => '0.34',
            'Archive::Tar'          => '1.52',
            'Attribute::Handlers'   => '0.85',
            'AutoLoader'            => '5.68',
            'AutoSplit'             => '1.06',
            'B'                     => '1.22',
            'B::Concise'            => '0.76',
            'B::Debug'              => '1.11',
            'B::Deparse'            => '0.89',
            'B::Lint'               => '1.11',
            'B::Lint::Debug'        => undef,
            'B::Xref'               => '1.02',
            'Benchmark'             => '1.11',
            'CGI'                   => '3.43',
            'CGI::Carp'             => '1.30_01',
            'CGI::Cookie'           => '1.29',
            'CPAN'                  => '1.9402',
            'CPAN::Author'          => '5.5',
            'CPAN::Bundle'          => '5.5',
            'CPAN::CacheMgr'        => '5.5',
            'CPAN::Complete'        => '5.5',
            'CPAN::Debug'           => '5.5',
            'CPAN::DeferredCode'    => '5.50',
            'CPAN::Distribution'    => '1.93',
            'CPAN::Distroprefs'     => '6',
            'CPAN::Distrostatus'    => '5.5',
            'CPAN::Exception::RecursiveDependency'=> '5.5',
            'CPAN::Exception::blocked_urllist'=> '1.0',
            'CPAN::Exception::yaml_not_installed'=> '5.5',
            'CPAN::FTP'             => '5.5001',
            'CPAN::FTP::netrc'      => '1.00',
            'CPAN::FirstTime'       => '5.53',
            'CPAN::HandleConfig'    => '5.5',
            'CPAN::Index'           => '1.93',
            'CPAN::InfoObj'         => '5.5',
            'CPAN::Kwalify'         => '5.50',
            'CPAN::LWP::UserAgent'  => '1.00',
            'CPAN::Module'          => '5.5',
            'CPAN::Nox'             => '5.50',
            'CPAN::Prompt'          => '5.5',
            'CPAN::Queue'           => '5.5',
            'CPAN::Shell'           => '5.5',
            'CPAN::Tarzip'          => '5.501',
            'CPAN::URL'             => '5.5',
            'CPANPLUS'              => '0.88',
            'CPANPLUS::Dist::Autobundle'=> undef,
            'CPANPLUS::Dist::Base'  => undef,
            'CPANPLUS::Dist::Build' => '0.36',
            'CPANPLUS::Dist::Build::Constants'=> '0.36',
            'CPANPLUS::Internals'   => '0.88',
            'CPANPLUS::Internals::Constants'=> undef,
            'CPANPLUS::Internals::Constants::Report'=> undef,
            'CPANPLUS::Internals::Source::Memory'=> undef,
            'CPANPLUS::Internals::Source::SQLite'=> undef,
            'CPANPLUS::Internals::Source::SQLite::Tie'=> undef,
            'CPANPLUS::Shell::Default'=> '0.88',
            'Carp'                  => '1.11',
            'Carp::Heavy'           => '1.11',
            'Compress::Raw::Bzip2'  => '2.020',
            'Compress::Raw::Zlib'   => '2.020',
            'Compress::Zlib'        => '2.020',
            'Cwd'                   => '3.30',
            'DB'                    => '1.02',
            'DBM_Filter::compress'  => '0.02',
            'DBM_Filter::encode'    => '0.02',
            'DBM_Filter::int32'     => '0.02',
            'DBM_Filter::null'      => '0.02',
            'DBM_Filter::utf8'      => '0.02',
            'DB_File'               => '1.820',
            'Data::Dumper'          => '2.124',
            'Devel::DProf'          => '20080331.00',
            'Devel::PPPort'         => '3.19',
            'Devel::Peek'           => '1.04',
            'Digest'                => '1.16',
            'Digest::MD5'           => '2.39',
            'Digest::SHA'           => '5.47',
            'Digest::base'          => '1.16',
            'Digest::file'          => '1.16',
            'DirHandle'             => '1.03',
            'Dumpvalue'             => '1.13',
            'DynaLoader'            => '1.10',
            'Encode'                => '2.35',
            'Encode::Alias'         => '2.12',
            'Encode::CN::HZ'        => '2.05',
            'Encode::Config'        => '2.05',
            'Encode::GSM0338'       => '2.01',
            'Encode::Guess'         => '2.03',
            'Encode::JP::JIS7'      => '2.04',
            'Encode::MIME::Header'  => '2.11',
            'Encode::Unicode'       => '2.06',
            'Errno'                 => '1.11',
            'Exporter'              => '5.63',
            'Exporter::Heavy'       => '5.63',
            'ExtUtils::CBuilder'    => '0.2602',
            'ExtUtils::CBuilder::Base'=> '0.2602',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.2602',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.2602',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.2602',
            'ExtUtils::CBuilder::Platform::aix'=> '0.2602',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.2602',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.2602',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.2602',
            'ExtUtils::CBuilder::Platform::os2'=> '0.2602',
            'ExtUtils::Command'     => '1.16',
            'ExtUtils::Command::MM' => '6.55_02',
            'ExtUtils::Constant'    => '0.22',
            'ExtUtils::Constant::ProxySubs'=> '0.06',
            'ExtUtils::Constant::Utils'=> '0.02',
            'ExtUtils::Constant::XS'=> '0.03',
            'ExtUtils::Embed'       => '1.28',
            'ExtUtils::Install'     => '1.54',
            'ExtUtils::Installed'   => '1.999_001',
            'ExtUtils::Liblist'     => '6.55_02',
            'ExtUtils::Liblist::Kid'=> '6.5502',
            'ExtUtils::MM'          => '6.55_02',
            'ExtUtils::MM_AIX'      => '6.55_02',
            'ExtUtils::MM_Any'      => '6.55_02',
            'ExtUtils::MM_BeOS'     => '6.55_02',
            'ExtUtils::MM_Cygwin'   => '6.55_02',
            'ExtUtils::MM_DOS'      => '6.5502',
            'ExtUtils::MM_Darwin'   => '6.55_02',
            'ExtUtils::MM_MacOS'    => '6.5502',
            'ExtUtils::MM_NW5'      => '6.55_02',
            'ExtUtils::MM_OS2'      => '6.55_02',
            'ExtUtils::MM_QNX'      => '6.55_02',
            'ExtUtils::MM_UWIN'     => '6.5502',
            'ExtUtils::MM_Unix'     => '6.55_02',
            'ExtUtils::MM_VMS'      => '6.55_02',
            'ExtUtils::MM_VOS'      => '6.55_02',
            'ExtUtils::MM_Win32'    => '6.55_02',
            'ExtUtils::MM_Win95'    => '6.55_02',
            'ExtUtils::MY'          => '6.5502',
            'ExtUtils::MakeMaker'   => '6.55_02',
            'ExtUtils::MakeMaker::Config'=> '6.55_02',
            'ExtUtils::Manifest'    => '1.56',
            'ExtUtils::Mkbootstrap' => '6.55_02',
            'ExtUtils::Mksymlists'  => '6.55_02',
            'ExtUtils::ParseXS'     => '2.2002',
            'ExtUtils::testlib'     => '6.5502',
            'Fatal'                 => '2.06_01',
            'File::Basename'        => '2.77',
            'File::CheckTree'       => '4.4',
            'File::Compare'         => '1.1006',
            'File::Copy'            => '2.14',
            'File::DosGlob'         => '1.01',
            'File::Fetch'           => '0.20',
            'File::Find'            => '1.14',
            'File::GlobMapper'      => '1.000',
            'File::Path'            => '2.07_03',
            'File::Spec'            => '3.30',
            'File::Spec::Cygwin'    => '3.30',
            'File::Spec::Epoc'      => '3.30',
            'File::Spec::Functions' => '3.30',
            'File::Spec::Mac'       => '3.30',
            'File::Spec::OS2'       => '3.30',
            'File::Spec::Unix'      => '3.30',
            'File::Spec::VMS'       => '3.30',
            'File::Spec::Win32'     => '3.30',
            'File::Temp'            => '0.22',
            'File::stat'            => '1.01',
            'FileCache'             => '1.08',
            'FileHandle'            => '2.02',
            'Filter::Simple'        => '0.84',
            'Filter::Util::Call'    => '1.08',
            'FindBin'               => '1.50',
            'GDBM_File'             => '1.09',
            'Getopt::Long'          => '2.38',
            'Getopt::Std'           => '1.06',
            'Hash::Util::FieldHash' => '1.04',
            'I18N::Collate'         => '1.01',
            'IO'                    => '1.25',
            'IO::Compress::Adapter::Bzip2'=> '2.020',
            'IO::Compress::Adapter::Deflate'=> '2.020',
            'IO::Compress::Adapter::Identity'=> '2.020',
            'IO::Compress::Base'    => '2.020',
            'IO::Compress::Base::Common'=> '2.020',
            'IO::Compress::Bzip2'   => '2.020',
            'IO::Compress::Deflate' => '2.020',
            'IO::Compress::Gzip'    => '2.020',
            'IO::Compress::Gzip::Constants'=> '2.020',
            'IO::Compress::RawDeflate'=> '2.020',
            'IO::Compress::Zip'     => '2.020',
            'IO::Compress::Zip::Constants'=> '2.020',
            'IO::Compress::Zlib::Constants'=> '2.020',
            'IO::Compress::Zlib::Extra'=> '2.020',
            'IO::Dir'               => '1.07',
            'IO::Handle'            => '1.28',
            'IO::Socket'            => '1.31',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.020',
            'IO::Uncompress::Adapter::Identity'=> '2.020',
            'IO::Uncompress::Adapter::Inflate'=> '2.020',
            'IO::Uncompress::AnyInflate'=> '2.020',
            'IO::Uncompress::AnyUncompress'=> '2.020',
            'IO::Uncompress::Base'  => '2.020',
            'IO::Uncompress::Bunzip2'=> '2.020',
            'IO::Uncompress::Gunzip'=> '2.020',
            'IO::Uncompress::Inflate'=> '2.020',
            'IO::Uncompress::RawInflate'=> '2.020',
            'IO::Uncompress::Unzip' => '2.020',
            'IO::Zlib'              => '1.09',
            'IPC::Cmd'              => '0.46',
            'IPC::Msg'              => '2.01',
            'IPC::Open2'            => '1.03',
            'IPC::Open3'            => '1.04',
            'IPC::Semaphore'        => '2.01',
            'IPC::SharedMem'        => '2.01',
            'IPC::SysV'             => '2.01',
            'List::Util'            => '1.21',
            'List::Util::PP'        => '1.21',
            'List::Util::XS'        => '1.21',
            'Locale::Maketext'      => '1.13',
            'Locale::Maketext::Guts'=> '1.13',
            'Locale::Maketext::GutsLoader'=> '1.13',
            'Log::Message'          => '0.02',
            'MIME::Base64'          => '3.08',
            'MIME::QuotedPrint'     => '3.08',
            'Math::BigFloat'        => '1.60',
            'Math::BigInt'          => '1.89',
            'Math::BigInt::FastCalc'=> '0.19',
            'Math::BigRat'          => '0.22',
            'Math::Complex'         => '1.56',
            'Math::Trig'            => '1.2',
            'Memoize'               => '1.01_03',
            'Module::Build'         => '0.340201',
            'Module::Build::Base'   => '0.340201',
            'Module::Build::Compat' => '0.340201',
            'Module::Build::Config' => '0.340201',
            'Module::Build::Cookbook'=> '0.340201',
            'Module::Build::Dumper' => '0.340201',
            'Module::Build::ModuleInfo'=> '0.340201',
            'Module::Build::Notes'  => '0.340201',
            'Module::Build::PPMMaker'=> '0.340201',
            'Module::Build::Platform::Amiga'=> '0.340201',
            'Module::Build::Platform::Default'=> '0.340201',
            'Module::Build::Platform::EBCDIC'=> '0.340201',
            'Module::Build::Platform::MPEiX'=> '0.340201',
            'Module::Build::Platform::MacOS'=> '0.340201',
            'Module::Build::Platform::RiscOS'=> '0.340201',
            'Module::Build::Platform::Unix'=> '0.340201',
            'Module::Build::Platform::VMS'=> '0.340201',
            'Module::Build::Platform::VOS'=> '0.340201',
            'Module::Build::Platform::Windows'=> '0.340201',
            'Module::Build::Platform::aix'=> '0.340201',
            'Module::Build::Platform::cygwin'=> '0.340201',
            'Module::Build::Platform::darwin'=> '0.340201',
            'Module::Build::Platform::os2'=> '0.340201',
            'Module::Build::PodParser'=> '0.340201',
            'Module::Build::Version'=> '0.77',
            'Module::CoreList'      => '2.18',
            'Module::Load'          => '0.16',
            'Module::Load::Conditional'=> '0.30',
            'Module::Loaded'        => '0.02',
            'Module::Pluggable'     => '3.9',
            'Module::Pluggable::Object'=> '3.9',
            'NDBM_File'             => '1.08',
            'NEXT'                  => '0.64',
            'Net::Ping'             => '2.36',
            'O'                     => '1.01',
            'OS2::Process'          => '1.03',
            'OS2::REXX'             => '1.04',
            'Object::Accessor'      => '0.34',
            'POSIX'                 => '1.17',
            'Package::Constants'    => '0.02',
            'Parse::CPAN::Meta'     => '1.39',
            'PerlIO'                => '1.06',
            'PerlIO::encoding'      => '0.11',
            'PerlIO::scalar'        => '0.07',
            'PerlIO::via'           => '0.07',
            'Pod::Checker'          => '1.45',
            'Pod::Find'             => '1.35',
            'Pod::Html'             => '1.09',
            'Pod::InputObjects'     => '1.31',
            'Pod::Man'              => '2.22',
            'Pod::ParseLink'        => '1.09',
            'Pod::ParseUtils'       => '1.36',
            'Pod::Parser'           => '1.37',
            'Pod::Perldoc'          => '3.14_04',
            'Pod::PlainText'        => '2.04',
            'Pod::Select'           => '1.36',
            'Pod::Simple'           => '3.07',
            'Pod::Simple::XHTML'    => '3.04',
            'Pod::Text'             => '3.13',
            'Pod::Text::Color'      => '2.05',
            'Pod::Text::Overstrike' => '2.03',
            'Pod::Text::Termcap'    => '2.05',
            'Pod::Usage'            => '1.36',
            'Safe'                  => '2.18',
            'Scalar::Util'          => '1.21',
            'Scalar::Util::PP'      => '1.21',
            'SelectSaver'           => '1.02',
            'SelfLoader'            => '1.17',
            'Socket'                => '1.82',
            'Storable'              => '2.20',
            'Switch'                => '2.14',
            'Symbol'                => '1.07',
            'Sys::Syslog'           => '0.27',
            'TAP::Base'             => '3.17',
            'TAP::Formatter::Base'  => '3.17',
            'TAP::Formatter::Color' => '3.17',
            'TAP::Formatter::Console'=> '3.17',
            'TAP::Formatter::Console::ParallelSession'=> '3.17',
            'TAP::Formatter::Console::Session'=> '3.17',
            'TAP::Formatter::File'  => '3.17',
            'TAP::Formatter::File::Session'=> '3.17',
            'TAP::Formatter::Session'=> '3.17',
            'TAP::Harness'          => '3.17',
            'TAP::Object'           => '3.17',
            'TAP::Parser'           => '3.17',
            'TAP::Parser::Aggregator'=> '3.17',
            'TAP::Parser::Grammar'  => '3.17',
            'TAP::Parser::Iterator' => '3.17',
            'TAP::Parser::Iterator::Array'=> '3.17',
            'TAP::Parser::Iterator::Process'=> '3.17',
            'TAP::Parser::Iterator::Stream'=> '3.17',
            'TAP::Parser::IteratorFactory'=> '3.17',
            'TAP::Parser::Multiplexer'=> '3.17',
            'TAP::Parser::Result'   => '3.17',
            'TAP::Parser::Result::Bailout'=> '3.17',
            'TAP::Parser::Result::Comment'=> '3.17',
            'TAP::Parser::Result::Plan'=> '3.17',
            'TAP::Parser::Result::Pragma'=> '3.17',
            'TAP::Parser::Result::Test'=> '3.17',
            'TAP::Parser::Result::Unknown'=> '3.17',
            'TAP::Parser::Result::Version'=> '3.17',
            'TAP::Parser::Result::YAML'=> '3.17',
            'TAP::Parser::ResultFactory'=> '3.17',
            'TAP::Parser::Scheduler'=> '3.17',
            'TAP::Parser::Scheduler::Job'=> '3.17',
            'TAP::Parser::Scheduler::Spinner'=> '3.17',
            'TAP::Parser::Source'   => '3.17',
            'TAP::Parser::Source::Perl'=> '3.17',
            'TAP::Parser::Utils'    => '3.17',
            'TAP::Parser::YAMLish::Reader'=> '3.17',
            'TAP::Parser::YAMLish::Writer'=> '3.17',
            'Term::ANSIColor'       => '2.00',
            'Term::ReadLine'        => '1.04',
            'Term::UI'              => '0.20',
            'Test'                  => '1.25_02',
            'Test::Builder'         => '0.92',
            'Test::Builder::Module' => '0.92',
            'Test::Builder::Tester' => '1.18',
            'Test::Builder::Tester::Color'=> '1.18',
            'Test::Harness'         => '3.17',
            'Test::More'            => '0.92',
            'Test::Simple'          => '0.92',
            'Text::ParseWords'      => '3.27',
            'Text::Tabs'            => '2009.0305',
            'Text::Wrap'            => '2009.0305',
            'Thread::Queue'         => '2.11',
            'Thread::Semaphore'     => '2.09',
            'Tie::Handle'           => '4.2',
            'Tie::Hash'             => '1.03',
            'Tie::RefHash'          => '1.38',
            'Tie::Scalar'           => '1.01',
            'Tie::StdHandle'        => '4.2',
            'Time::HiRes'           => '1.9719',
            'Time::Local'           => '1.1901',
            'Time::Piece'           => '1.15',
            'UNIVERSAL'             => '1.05',
            'Unicode'               => '5.1.0',
            'Unicode::Normalize'    => '1.03',
            'Unicode::UCD'          => '0.27',
            'VMS::Stdio'            => '2.4',
            'Win32'                 => '0.39',
            'Win32API::File'        => '0.1101',
            'XS::APItest'           => '0.15',
            'XS::Typemap'           => '0.03',
            'XSLoader'              => '0.10',
            'attributes'            => '0.09',
            'attrs'                 => '1.03',
            'autodie'               => '2.06_01',
            'autodie::exception'    => '2.06_01',
            'autodie::exception::system'=> '2.06_01',
            'autodie::hints'        => '2.06_01',
            'base'                  => '2.14',
            'bigint'                => '0.23',
            'bignum'                => '0.23',
            'bigrat'                => '0.23',
            'blib'                  => '1.04',
            'charnames'             => '1.07',
            'constant'              => '1.17',
            'encoding'              => '2.6_01',
            'feature'               => '1.13',
            'fields'                => '2.14',
            'lib'                   => '0.62',
            'mro'                   => '1.01',
            'open'                  => '1.07',
            'ops'                   => '1.02',
            'overload'              => '1.07',
            'overload::numbers'     => undef,
            'overloading'           => '0.01',
            'parent'                => '0.221',
            're'                    => '0.09',
            'threads'               => '1.72',
            'threads::shared'       => '1.29',
            'version'               => '0.77',
        },
        removed => {
            'CPAN::API::HOWTO'      => 1,
            'CPAN::DeferedCode'     => 1,
            'CPANPLUS::inc'         => 1,
            'ExtUtils::MakeMaker::bytes'=> 1,
            'ExtUtils::MakeMaker::vmsish'=> 1,
            'Test::Harness::Assert' => 1,
            'Test::Harness::Iterator'=> 1,
            'Test::Harness::Point'  => 1,
            'Test::Harness::Results'=> 1,
            'Test::Harness::Straps' => 1,
            'Test::Harness::Util'   => 1,
        }
    },
    5.011 => {
        delta_from => 5.010001,
        changed => {
            'Archive::Tar'          => '1.54',
            'Attribute::Handlers'   => '0.87',
            'AutoLoader'            => '5.70',
            'B::Deparse'            => '0.91',
            'B::Lint'               => '1.11_01',
            'B::Lint::Debug'        => '0.01',
            'CGI'                   => '3.45',
            'CGI::Apache'           => '1.01',
            'CGI::Carp'             => '3.45',
            'CGI::Pretty'           => '3.44',
            'CGI::Switch'           => '1.01',
            'CGI::Util'             => '3.45',
            'CPAN'                  => '1.94_51',
            'CPAN::Distribution'    => '1.94',
            'CPAN::FTP'             => '5.5002',
            'CPAN::Index'           => '1.94',
            'CPAN::LWP::UserAgent'  => '1.94',
            'CPANPLUS::Dist::Build' => '0.40',
            'CPANPLUS::Dist::Build::Constants'=> '0.40',
            'Carp'                  => '1.12',
            'Carp::Heavy'           => '1.12',
            'Class::ISA'            => '0.36',
            'Compress::Raw::Bzip2'  => '2.021',
            'Compress::Raw::Zlib'   => '2.021',
            'Compress::Zlib'        => '2.021',
            'Cwd'                   => '3.3002',
            'Data::Dumper'          => '2.125',
            'Encode'                => '2.37',
            'Exporter'              => '5.64',
            'Exporter::Heavy'       => '5.64',
            'ExtUtils::ParseXS'     => '2.200403',
            'File::Basename'        => '2.78',
            'File::Copy'            => '2.16',
            'File::stat'            => '1.02',
            'IO'                    => '1.25_01',
            'IO::Compress::Adapter::Bzip2'=> '2.021',
            'IO::Compress::Adapter::Deflate'=> '2.021',
            'IO::Compress::Adapter::Identity'=> '2.021',
            'IO::Compress::Base'    => '2.021',
            'IO::Compress::Base::Common'=> '2.021',
            'IO::Compress::Bzip2'   => '2.021',
            'IO::Compress::Deflate' => '2.021',
            'IO::Compress::Gzip'    => '2.021',
            'IO::Compress::Gzip::Constants'=> '2.021',
            'IO::Compress::RawDeflate'=> '2.021',
            'IO::Compress::Zip'     => '2.021',
            'IO::Compress::Zip::Constants'=> '2.021',
            'IO::Compress::Zlib::Constants'=> '2.021',
            'IO::Compress::Zlib::Extra'=> '2.021',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.021',
            'IO::Uncompress::Adapter::Identity'=> '2.021',
            'IO::Uncompress::Adapter::Inflate'=> '2.021',
            'IO::Uncompress::AnyInflate'=> '2.021',
            'IO::Uncompress::AnyUncompress'=> '2.021',
            'IO::Uncompress::Base'  => '2.021',
            'IO::Uncompress::Bunzip2'=> '2.021',
            'IO::Uncompress::Gunzip'=> '2.021',
            'IO::Uncompress::Inflate'=> '2.021',
            'IO::Uncompress::RawInflate'=> '2.021',
            'IO::Uncompress::Unzip' => '2.021',
            'IO::Zlib'              => '1.10',
            'IPC::Cmd'              => '0.50',
            'IPC::Open3'            => '1.05',
            'Locale::Maketext::Simple'=> '0.21',
            'Log::Message::Simple'  => '0.06',
            'Math::BigInt'          => '1.89_01',
            'Math::BigRat'          => '0.24',
            'Module::Build'         => '0.35',
            'Module::Build::Base'   => '0.35',
            'Module::Build::Compat' => '0.35',
            'Module::Build::Config' => '0.35',
            'Module::Build::Cookbook'=> '0.35',
            'Module::Build::Dumper' => '0.35',
            'Module::Build::ModuleInfo'=> '0.35',
            'Module::Build::Notes'  => '0.35',
            'Module::Build::PPMMaker'=> '0.35',
            'Module::Build::Platform::Amiga'=> '0.35',
            'Module::Build::Platform::Default'=> '0.35',
            'Module::Build::Platform::EBCDIC'=> '0.35',
            'Module::Build::Platform::MPEiX'=> '0.35',
            'Module::Build::Platform::MacOS'=> '0.35',
            'Module::Build::Platform::RiscOS'=> '0.35',
            'Module::Build::Platform::Unix'=> '0.35',
            'Module::Build::Platform::VMS'=> '0.35',
            'Module::Build::Platform::VOS'=> '0.35',
            'Module::Build::Platform::Windows'=> '0.35',
            'Module::Build::Platform::aix'=> '0.35',
            'Module::Build::Platform::cygwin'=> '0.35',
            'Module::Build::Platform::darwin'=> '0.35',
            'Module::Build::Platform::os2'=> '0.35',
            'Module::Build::PodParser'=> '0.35',
            'Module::CoreList'      => '2.19',
            'Module::Loaded'        => '0.06',
            'Opcode'                => '1.13',
            'PerlIO::via'           => '0.08',
            'Pod::Perldoc'          => '3.15_01',
            'Pod::Plainer'          => '1.01',
            'Safe'                  => '2.19',
            'Socket'                => '1.84',
            'Switch'                => '2.14_01',
            'Term::ANSIColor'       => '2.02',
            'Term::ReadLine'        => '1.05',
            'Text::Balanced'        => '2.02',
            'Text::Soundex'         => '3.03_01',
            'Time::Local'           => '1.1901_01',
            'Unicode::Collate'      => '0.52_01',
            'attributes'            => '0.12',
            'constant'              => '1.19',
            'deprecate'             => '0.01',
            'overload'              => '1.08',
            'parent'                => '0.223',
            're'                    => '0.10',
            'threads'               => '1.74',
            'threads::shared'       => '1.31',
            'warnings'              => '1.07',
        },
        removed => {
            'attrs'                 => 1,
        }
    },
    5.011001 => {
        delta_from => 5.011,
        changed => {
            'B'                     => '1.23',
            'B::Concise'            => '0.77',
            'B::Deparse'            => '0.92',
            'CGI'                   => '3.48',
            'CGI::Pretty'           => '3.46',
            'CGI::Util'             => '3.48',
            'CPANPLUS'              => '0.89_03',
            'CPANPLUS::Internals'   => '0.89_03',
            'CPANPLUS::Shell::Default'=> '0.89_03',
            'Carp'                  => '1.13',
            'Carp::Heavy'           => '1.13',
            'ExtUtils::CBuilder'    => '0.260301',
            'ExtUtils::CBuilder::Base'=> '0.260301',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.260301',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.260301',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.260301',
            'ExtUtils::CBuilder::Platform::aix'=> '0.260301',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.260301',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.260301',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.260301',
            'ExtUtils::CBuilder::Platform::os2'=> '0.260301',
            'ExtUtils::Install'     => '1.55',
            'ExtUtils::Manifest'    => '1.57',
            'ExtUtils::Packlist'    => '1.44',
            'ExtUtils::ParseXS'     => '2.21',
            'File::Glob'            => '1.07',
            'File::Path'            => '2.08',
            'IO'                    => '1.25_02',
            'Module::CoreList'      => '2.21',
            'OS2::DLL'              => '1.04',
            'OS2::Process'          => '1.04',
            'Object::Accessor'      => '0.36',
            'Opcode'                => '1.15',
            'POSIX'                 => '1.18',
            'Parse::CPAN::Meta'     => '1.40',
            'PerlIO::via'           => '0.09',
            'Pod::Simple'           => '3.08',
            'Socket'                => '1.85',
            'Storable'              => '2.22',
            'Switch'                => '2.15',
            'Test::Builder'         => '0.94',
            'Test::Builder::Module' => '0.94',
            'Test::More'            => '0.94',
            'Test::Simple'          => '0.94',
            'XS::APItest'           => '0.16',
            'mro'                   => '1.02',
            'overload'              => '1.09',
            'threads::shared'       => '1.32',
        },
        removed => {
        }
    },
    5.011002 => {
        delta_from => 5.011001,
        changed => {
            'B::Concise'            => '0.78',
            'B::Deparse'            => '0.93',
            'CPANPLUS'              => '0.89_09',
            'CPANPLUS::Dist::Build' => '0.44',
            'CPANPLUS::Dist::Build::Constants'=> '0.44',
            'CPANPLUS::Internals'   => '0.89_09',
            'CPANPLUS::Shell::Default'=> '0.89_09',
            'Carp'                  => '1.14',
            'Carp::Heavy'           => '1.14',
            'Compress::Zlib'        => '2.022',
            'DBM_Filter'            => '0.03',
            'Encode'                => '2.38',
            'Encode::Byte'          => '2.04',
            'Encode::CN'            => '2.03',
            'Encode::JP'            => '2.04',
            'Encode::KR'            => '2.03',
            'Encode::TW'            => '2.03',
            'Encode::Unicode'       => '2.07',
            'Env'                   => '1.01',
            'Exporter'              => '5.64_01',
            'Exporter::Heavy'       => '5.64_01',
            'ExtUtils::CBuilder'    => '0.27',
            'ExtUtils::CBuilder::Base'=> '0.27',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.27',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.27',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.27',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.27',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.27',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.27',
            'ExtUtils::CBuilder::Platform::aix'=> '0.27',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.27',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.27',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.27',
            'ExtUtils::CBuilder::Platform::os2'=> '0.27',
            'File::Fetch'           => '0.22',
            'I18N::LangTags::Detect'=> '1.04',
            'I18N::Langinfo'        => '0.03',
            'IO::Compress::Adapter::Bzip2'=> '2.022',
            'IO::Compress::Adapter::Deflate'=> '2.022',
            'IO::Compress::Adapter::Identity'=> '2.022',
            'IO::Compress::Base'    => '2.022',
            'IO::Compress::Base::Common'=> '2.022',
            'IO::Compress::Bzip2'   => '2.022',
            'IO::Compress::Deflate' => '2.022',
            'IO::Compress::Gzip'    => '2.022',
            'IO::Compress::Gzip::Constants'=> '2.022',
            'IO::Compress::RawDeflate'=> '2.022',
            'IO::Compress::Zip'     => '2.022',
            'IO::Compress::Zip::Constants'=> '2.022',
            'IO::Compress::Zlib::Constants'=> '2.022',
            'IO::Compress::Zlib::Extra'=> '2.022',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.022',
            'IO::Uncompress::Adapter::Identity'=> '2.022',
            'IO::Uncompress::Adapter::Inflate'=> '2.022',
            'IO::Uncompress::AnyInflate'=> '2.022',
            'IO::Uncompress::AnyUncompress'=> '2.022',
            'IO::Uncompress::Base'  => '2.022',
            'IO::Uncompress::Bunzip2'=> '2.022',
            'IO::Uncompress::Gunzip'=> '2.022',
            'IO::Uncompress::Inflate'=> '2.022',
            'IO::Uncompress::RawInflate'=> '2.022',
            'IO::Uncompress::Unzip' => '2.022',
            'IPC::Cmd'              => '0.54',
            'List::Util'            => '1.22',
            'List::Util::PP'        => '1.22',
            'List::Util::XS'        => '1.22',
            'Locale::Maketext'      => '1.14',
            'Module::Build'         => '0.35_09',
            'Module::Build::Base'   => '0.35_09',
            'Module::Build::Compat' => '0.35_09',
            'Module::Build::Config' => '0.35_09',
            'Module::Build::Cookbook'=> '0.35_09',
            'Module::Build::Dumper' => '0.35_09',
            'Module::Build::ModuleInfo'=> '0.35_09',
            'Module::Build::Notes'  => '0.35_09',
            'Module::Build::PPMMaker'=> '0.35_09',
            'Module::Build::Platform::Amiga'=> '0.35_09',
            'Module::Build::Platform::Default'=> '0.35_09',
            'Module::Build::Platform::EBCDIC'=> '0.35_09',
            'Module::Build::Platform::MPEiX'=> '0.35_09',
            'Module::Build::Platform::MacOS'=> '0.35_09',
            'Module::Build::Platform::RiscOS'=> '0.35_09',
            'Module::Build::Platform::Unix'=> '0.35_09',
            'Module::Build::Platform::VMS'=> '0.35_09',
            'Module::Build::Platform::VOS'=> '0.35_09',
            'Module::Build::Platform::Windows'=> '0.35_09',
            'Module::Build::Platform::aix'=> '0.35_09',
            'Module::Build::Platform::cygwin'=> '0.35_09',
            'Module::Build::Platform::darwin'=> '0.35_09',
            'Module::Build::Platform::os2'=> '0.35_09',
            'Module::Build::PodParser'=> '0.35_09',
            'Module::Build::YAML'   => '1.40',
            'Module::CoreList'      => '2.23',
            'Module::Load::Conditional'=> '0.34',
            'Pod::Simple'           => '3.10',
            'Pod::Simple::XHTML'    => '3.10',
            'Scalar::Util'          => '1.22',
            'Scalar::Util::PP'      => '1.22',
            'Switch'                => '2.16',
            'XS::APItest'           => '0.17',
            'XS::APItest::KeywordRPN'=> '0.003',
            'base'                  => '2.15',
            'diagnostics'           => '1.18',
            'fields'                => '2.15',
            'inc::latest'           => '0.35_09',
            'legacy'                => '1.00',
            'overload'              => '1.10',
        },
        removed => {
        }
    },
    5.011003 => {
        delta_from => 5.011002,
        changed => {
            'App::Cpan'             => '1.570001',
            'Archive::Extract'      => '0.36',
            'CPAN'                  => '1.94_5301',
            'CPAN::FTP'             => '5.5004',
            'CPAN::FirstTime'       => '5.530001',
            'CPAN::Mirrors'         => '1.770001',
            'CPANPLUS'              => '0.90',
            'CPANPLUS::Internals'   => '0.90',
            'CPANPLUS::Shell::Default'=> '0.90',
            'Cwd'                   => '3.31',
            'Encode'                => '2.39',
            'ExtUtils::Command::MM' => '6.56',
            'ExtUtils::Liblist'     => '6.56',
            'ExtUtils::Liblist::Kid'=> '6.56',
            'ExtUtils::MM'          => '6.56',
            'ExtUtils::MM_AIX'      => '6.56',
            'ExtUtils::MM_Any'      => '6.56',
            'ExtUtils::MM_BeOS'     => '6.56',
            'ExtUtils::MM_Cygwin'   => '6.56',
            'ExtUtils::MM_DOS'      => '6.56',
            'ExtUtils::MM_Darwin'   => '6.56',
            'ExtUtils::MM_MacOS'    => '6.56',
            'ExtUtils::MM_NW5'      => '6.56',
            'ExtUtils::MM_OS2'      => '6.56',
            'ExtUtils::MM_QNX'      => '6.56',
            'ExtUtils::MM_UWIN'     => '6.56',
            'ExtUtils::MM_Unix'     => '6.56',
            'ExtUtils::MM_VMS'      => '6.56',
            'ExtUtils::MM_VOS'      => '6.56',
            'ExtUtils::MM_Win32'    => '6.56',
            'ExtUtils::MM_Win95'    => '6.56',
            'ExtUtils::MY'          => '6.56',
            'ExtUtils::MakeMaker'   => '6.56',
            'ExtUtils::MakeMaker::Config'=> '6.56',
            'ExtUtils::Mkbootstrap' => '6.56',
            'ExtUtils::Mksymlists'  => '6.56',
            'ExtUtils::testlib'     => '6.56',
            'File::Find'            => '1.15',
            'File::Path'            => '2.08_01',
            'File::Spec'            => '3.31',
            'Module::Build'         => '0.36',
            'Module::Build::Base'   => '0.36',
            'Module::Build::Compat' => '0.36',
            'Module::Build::Config' => '0.36',
            'Module::Build::Cookbook'=> '0.36',
            'Module::Build::Dumper' => '0.36',
            'Module::Build::ModuleInfo'=> '0.36',
            'Module::Build::Notes'  => '0.36',
            'Module::Build::PPMMaker'=> '0.36',
            'Module::Build::Platform::Amiga'=> '0.36',
            'Module::Build::Platform::Default'=> '0.36',
            'Module::Build::Platform::EBCDIC'=> '0.36',
            'Module::Build::Platform::MPEiX'=> '0.36',
            'Module::Build::Platform::MacOS'=> '0.36',
            'Module::Build::Platform::RiscOS'=> '0.36',
            'Module::Build::Platform::Unix'=> '0.36',
            'Module::Build::Platform::VMS'=> '0.36',
            'Module::Build::Platform::VOS'=> '0.36',
            'Module::Build::Platform::Windows'=> '0.36',
            'Module::Build::Platform::aix'=> '0.36',
            'Module::Build::Platform::cygwin'=> '0.36',
            'Module::Build::Platform::darwin'=> '0.36',
            'Module::Build::Platform::os2'=> '0.36',
            'Module::Build::PodParser'=> '0.36',
            'Module::CoreList'      => '2.24',
            'POSIX'                 => '1.19',
            'Pod::Simple'           => '3.13',
            'Pod::Simple::BlackBox' => '3.13',
            'Pod::Simple::Checker'  => '3.13',
            'Pod::Simple::Debug'    => '3.13',
            'Pod::Simple::DumpAsText'=> '3.13',
            'Pod::Simple::DumpAsXML'=> '3.13',
            'Pod::Simple::HTML'     => '3.13',
            'Pod::Simple::HTMLBatch'=> '3.13',
            'Pod::Simple::LinkSection'=> '3.13',
            'Pod::Simple::Methody'  => '3.13',
            'Pod::Simple::Progress' => '3.13',
            'Pod::Simple::PullParser'=> '3.13',
            'Pod::Simple::PullParserEndToken'=> '3.13',
            'Pod::Simple::PullParserStartToken'=> '3.13',
            'Pod::Simple::PullParserTextToken'=> '3.13',
            'Pod::Simple::PullParserToken'=> '3.13',
            'Pod::Simple::RTF'      => '3.13',
            'Pod::Simple::Search'   => '3.13',
            'Pod::Simple::SimpleTree'=> '3.13',
            'Pod::Simple::Text'     => '3.13',
            'Pod::Simple::TextContent'=> '3.13',
            'Pod::Simple::TiedOutFH'=> '3.13',
            'Pod::Simple::Transcode'=> '3.13',
            'Pod::Simple::TranscodeDumb'=> '3.13',
            'Pod::Simple::TranscodeSmart'=> '3.13',
            'Pod::Simple::XHTML'    => '3.13',
            'Pod::Simple::XMLOutStream'=> '3.13',
            'Safe'                  => '2.20',
            'Unicode'               => '5.2.0',
            'constant'              => '1.20',
            'diagnostics'           => '1.19',
            'feature'               => '1.14',
            'inc::latest'           => '0.36',
            'threads'               => '1.75',
            'warnings'              => '1.08',
        },
        removed => {
            'legacy'                => 1,
        }
    },
    5.011004 => {
        delta_from => 5.011003,
        changed => {
            'App::Cpan'             => '1.5701',
            'Archive::Extract'      => '0.38',
            'B::Deparse'            => '0.94',
            'CPAN'                  => '1.94_54',
            'CPAN::FirstTime'       => '5.53',
            'CPAN::Mirrors'         => '1.77',
            'Carp'                  => '1.15',
            'Carp::Heavy'           => '1.15',
            'Compress::Raw::Bzip2'  => '2.024',
            'Compress::Raw::Zlib'   => '2.024',
            'Compress::Zlib'        => '2.024',
            'File::Copy'            => '2.17',
            'File::Fetch'           => '0.24',
            'GDBM_File'             => '1.10',
            'IO::Compress::Adapter::Bzip2'=> '2.024',
            'IO::Compress::Adapter::Deflate'=> '2.024',
            'IO::Compress::Adapter::Identity'=> '2.024',
            'IO::Compress::Base'    => '2.024',
            'IO::Compress::Base::Common'=> '2.024',
            'IO::Compress::Bzip2'   => '2.024',
            'IO::Compress::Deflate' => '2.024',
            'IO::Compress::Gzip'    => '2.024',
            'IO::Compress::Gzip::Constants'=> '2.024',
            'IO::Compress::RawDeflate'=> '2.024',
            'IO::Compress::Zip'     => '2.024',
            'IO::Compress::Zip::Constants'=> '2.024',
            'IO::Compress::Zlib::Constants'=> '2.024',
            'IO::Compress::Zlib::Extra'=> '2.024',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.024',
            'IO::Uncompress::Adapter::Identity'=> '2.024',
            'IO::Uncompress::Adapter::Inflate'=> '2.024',
            'IO::Uncompress::AnyInflate'=> '2.024',
            'IO::Uncompress::AnyUncompress'=> '2.024',
            'IO::Uncompress::Base'  => '2.024',
            'IO::Uncompress::Bunzip2'=> '2.024',
            'IO::Uncompress::Gunzip'=> '2.024',
            'IO::Uncompress::Inflate'=> '2.024',
            'IO::Uncompress::RawInflate'=> '2.024',
            'IO::Uncompress::Unzip' => '2.024',
            'Module::Build'         => '0.3603',
            'Module::Build::Base'   => '0.3603',
            'Module::Build::Compat' => '0.3603',
            'Module::Build::Config' => '0.3603',
            'Module::Build::Cookbook'=> '0.3603',
            'Module::Build::Dumper' => '0.3603',
            'Module::Build::ModuleInfo'=> '0.3603',
            'Module::Build::Notes'  => '0.3603',
            'Module::Build::PPMMaker'=> '0.3603',
            'Module::Build::Platform::Amiga'=> '0.3603',
            'Module::Build::Platform::Default'=> '0.3603',
            'Module::Build::Platform::EBCDIC'=> '0.3603',
            'Module::Build::Platform::MPEiX'=> '0.3603',
            'Module::Build::Platform::MacOS'=> '0.3603',
            'Module::Build::Platform::RiscOS'=> '0.3603',
            'Module::Build::Platform::Unix'=> '0.3603',
            'Module::Build::Platform::VMS'=> '0.3603',
            'Module::Build::Platform::VOS'=> '0.3603',
            'Module::Build::Platform::Windows'=> '0.3603',
            'Module::Build::Platform::aix'=> '0.3603',
            'Module::Build::Platform::cygwin'=> '0.3603',
            'Module::Build::Platform::darwin'=> '0.3603',
            'Module::Build::Platform::os2'=> '0.3603',
            'Module::Build::PodParser'=> '0.3603',
            'Module::CoreList'      => '2.25',
            'PerlIO::encoding'      => '0.12',
            'Safe'                  => '2.21',
            'UNIVERSAL'             => '1.06',
            'feature'               => '1.15',
            'inc::latest'           => '0.3603',
            'less'                  => '0.03',
            're'                    => '0.11',
            'version'               => '0.81',
            'warnings'              => '1.09',
        },
        removed => {
        }
    },
    5.011005 => {
        delta_from => 5.011004,
        changed => {
            'B::Debug'              => '1.12',
            'CPAN'                  => '1.94_56',
            'CPAN::Debug'           => '5.5001',
            'CPAN::Distribution'    => '1.9456',
            'CPAN::FirstTime'       => '5.5301',
            'CPAN::HandleConfig'    => '5.5001',
            'CPAN::Shell'           => '5.5001',
            'CPAN::Tarzip'          => '5.5011',
            'CPANPLUS::Dist::Build' => '0.46',
            'CPANPLUS::Dist::Build::Constants'=> '0.46',
            'Module::CoreList'      => '2.26',
            'Pod::Man'              => '2.23',
            'Pod::ParseLink'        => '1.10',
            'Pod::Perldoc'          => '3.15_02',
            'Pod::Plainer'          => '1.02',
            'Pod::Text'             => '3.14',
            'Pod::Text::Color'      => '2.06',
            'Pod::Text::Overstrike' => '2.04',
            'Pod::Text::Termcap'    => '2.06',
            'Safe'                  => '2.22',
            'Socket'                => '1.86',
            'version'               => '0.82',
        },
        removed => {
        }
    },
    5.012 => {
        delta_from => 5.011005,
        changed => {
            'B::Deparse'            => '0.96',
            'CPAN::Distribution'    => '1.9456_01',
            'Module::CoreList'      => '2.29',
            'Safe'                  => '2.25',
            'Socket'                => '1.87',
            'Tie::Scalar'           => '1.02',
            'Time::Piece'           => '1.15_01',
            'bytes'                 => '1.04',
            'feature'               => '1.16',
            'utf8'                  => '1.08',
        },
        removed => {
        }
    },
    5.012001 => {
        delta_from => 5.012,
        changed => {
            'B::Deparse'            => '0.97',
            'CGI'                   => '3.49',
            'CGI::Fast'             => '1.08',
            'Carp'                  => '1.16',
            'Carp::Heavy'           => '1.16',
            'File::Copy'            => '2.18',
            'Module::CoreList'      => '2.32',
            'Pod::Functions'        => '1.04',
            'Pod::Simple'           => '3.14',
            'Pod::Simple::BlackBox' => '3.14',
            'Pod::Simple::Checker'  => '3.14',
            'Pod::Simple::Debug'    => '3.14',
            'Pod::Simple::DumpAsText'=> '3.14',
            'Pod::Simple::DumpAsXML'=> '3.14',
            'Pod::Simple::HTML'     => '3.14',
            'Pod::Simple::HTMLBatch'=> '3.14',
            'Pod::Simple::LinkSection'=> '3.14',
            'Pod::Simple::Methody'  => '3.14',
            'Pod::Simple::Progress' => '3.14',
            'Pod::Simple::PullParser'=> '3.14',
            'Pod::Simple::PullParserEndToken'=> '3.14',
            'Pod::Simple::PullParserStartToken'=> '3.14',
            'Pod::Simple::PullParserTextToken'=> '3.14',
            'Pod::Simple::PullParserToken'=> '3.14',
            'Pod::Simple::RTF'      => '3.14',
            'Pod::Simple::Search'   => '3.14',
            'Pod::Simple::SimpleTree'=> '3.14',
            'Pod::Simple::Text'     => '3.14',
            'Pod::Simple::TextContent'=> '3.14',
            'Pod::Simple::TiedOutFH'=> '3.14',
            'Pod::Simple::Transcode'=> '3.14',
            'Pod::Simple::TranscodeDumb'=> '3.14',
            'Pod::Simple::TranscodeSmart'=> '3.14',
            'Pod::Simple::XHTML'    => '3.14',
            'Pod::Simple::XMLOutStream'=> '3.14',
            'Safe'                  => '2.27',
        },
        removed => {
        }
    },
    5.012002 => {
        delta_from => 5.012001,
        changed => {
            'Carp'                  => '1.17',
            'Carp::Heavy'           => '1.17',
            'File::Spec'            => '3.31_01',
            'Module::CoreList'      => '2.38',
            'Module::Load::Conditional'=> '0.38',
            'PerlIO::scalar'        => '0.08',
        },
        removed => {
        }
    },
    5.012003 => {
        delta_from => 5.012002,
        changed => {
            'B::Deparse'            => '0.9701',
            'Module::Build::Platform::cygwin'=> '0.360301',
            'Module::CoreList'      => '2.43',
            'Socket'                => '1.87_01',
        },
        removed => {
        }
    },
    5.012004 => {
        delta_from => 5.012003,
        changed => {
            'Module::CoreList'      => '2.50',
        },
        removed => {
        }
    },
    5.012005 => {
        delta_from => 5.012004,
        changed => {
            'B::Concise'            => '0.78_01',
            'Encode'                => '2.39_01',
            'File::Glob'            => '1.07_01',
            'Module::CoreList'      => '2.50_02',
            'Unicode::UCD'          => '0.29',
            'charnames'             => '1.07_01',
        },
        removed => {
        }
    },
    5.013 => {
        delta_from => 5.012,
        changed => {
            'CGI'                   => '3.49',
            'CGI::Fast'             => '1.08',
            'Data::Dumper'          => '2.126',
            'ExtUtils::MM_Unix'     => '6.5601',
            'ExtUtils::MakeMaker'   => '6.5601',
            'File::Copy'            => '2.18',
            'IPC::Open3'            => '1.06',
            'MIME::Base64'          => '3.09',
            'MIME::QuotedPrint'     => '3.09',
            'Module::CoreList'      => '2.31',
            'Pod::Functions'        => '1.04',
            'XS::APItest'           => '0.18',
            'XS::APItest::KeywordRPN'=> '0.004',
            'feature'               => '1.17',
            'threads'               => '1.77_01',
            'threads::shared'       => '1.33',
        },
        removed => {
        }
    },
    5.013001 => {
        delta_from => 5.012001,
        changed => {
            'Data::Dumper'          => '2.126',
            'Dumpvalue'             => '1.14',
            'Errno'                 => '1.12',
            'ExtUtils::MM_Unix'     => '6.5601',
            'ExtUtils::MakeMaker'   => '6.5601',
            'ExtUtils::ParseXS'     => '2.2205',
            'File::Find'            => '1.16',
            'IPC::Cmd'              => '0.58',
            'IPC::Open3'            => '1.06',
            'List::Util'            => '1.23',
            'List::Util::PP'        => '1.23',
            'List::Util::XS'        => '1.23',
            'Locale::Codes'         => '3.12',
            'Locale::Codes::Country'=> '3.12',
            'Locale::Codes::Currency'=> '3.12',
            'Locale::Codes::Language'=> '3.12',
            'Locale::Codes::Script' => '3.12',
            'Locale::Constants'     => '3.12',
            'Locale::Country'       => '3.12',
            'Locale::Currency'      => '3.12',
            'Locale::Language'      => '3.12',
            'Locale::Script'        => '3.12',
            'MIME::Base64'          => '3.09',
            'MIME::QuotedPrint'     => '3.09',
            'Module::Build::Platform::cygwin'=> '0.360301',
            'Module::CoreList'      => '2.34',
            'Module::Load::Conditional'=> '0.38',
            'PerlIO::scalar'        => '0.08',
            'Scalar::Util'          => '1.23',
            'Scalar::Util::PP'      => '1.23',
            'Socket'                => '1.88',
            'Term::ReadLine'        => '1.06',
            'Unicode::UCD'          => '0.28',
            'XS::APItest'           => '0.19',
            'XS::APItest::KeywordRPN'=> '0.004',
            'charnames'             => '1.08',
            'feature'               => '1.17',
            'threads'               => '1.77_01',
            'threads::shared'       => '1.33',
        },
        removed => {
            'Class::ISA'            => 1,
            'Pod::Plainer'          => 1,
            'Switch'                => 1,
        }
    },
    5.013002 => {
        delta_from => 5.013001,
        changed => {
            'B::Concise'            => '0.79',
            'B::Deparse'            => '0.98',
            'CPAN'                  => '1.94_57',
            'CPAN::Distribution'    => '1.9600',
            'Exporter'              => '5.64_02',
            'Exporter::Heavy'       => '5.64_02',
            'File::Copy'            => '2.19',
            'Hash::Util'            => '0.08',
            'IO::Socket'            => '1.32',
            'Locale::Codes'         => '3.13',
            'Locale::Codes::Country'=> '3.13',
            'Locale::Codes::Currency'=> '3.13',
            'Locale::Codes::Language'=> '3.13',
            'Locale::Codes::Script' => '3.13',
            'Locale::Constants'     => '3.13',
            'Locale::Country'       => '3.13',
            'Locale::Currency'      => '3.13',
            'Locale::Language'      => '3.13',
            'Locale::Script'        => '3.13',
            'Search::Dict'          => '1.03',
            'Socket'                => '1.89',
            'Thread::Semaphore'     => '2.11',
            'UNIVERSAL'             => '1.07',
            'VMS::DCLsym'           => '1.04',
            'mro'                   => '1.03',
            'threads'               => '1.77_02',
            'threads::shared'       => '1.33_01',
        },
        removed => {
        }
    },
    5.013003 => {
        delta_from => 5.013002,
        changed => {
            'App::Prove'            => '3.21',
            'App::Prove::State'     => '3.21',
            'App::Prove::State::Result'=> '3.21',
            'App::Prove::State::Result::Test'=> '3.21',
            'Archive::Extract'      => '0.42',
            'Archive::Tar'          => '1.64',
            'Archive::Tar::Constant'=> '1.64',
            'Archive::Tar::File'    => '1.64',
            'Attribute::Handlers'   => '0.88',
            'CPANPLUS'              => '0.9007',
            'CPANPLUS::Internals'   => '0.9007',
            'CPANPLUS::Shell::Default'=> '0.9007',
            'Compress::Raw::Bzip2'  => '2.027',
            'Compress::Raw::Zlib'   => '2.027_01',
            'Compress::Zlib'        => '2.027',
            'DB'                    => '1.03',
            'Digest::MD5'           => '2.40',
            'Digest::SHA'           => '5.48',
            'Exporter'              => '5.64_03',
            'Exporter::Heavy'       => '5.64_03',
            'ExtUtils::CBuilder'    => '0.2703',
            'ExtUtils::CBuilder::Base'=> '0.2703_01',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.2703',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.2703',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.2703',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.2703',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.2703',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.2703',
            'ExtUtils::CBuilder::Platform::aix'=> '0.2703',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.2703',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.2703',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.2703',
            'ExtUtils::CBuilder::Platform::os2'=> '0.2703',
            'ExtUtils::Manifest'    => '1.58',
            'ExtUtils::ParseXS'     => '2.2206',
            'Fatal'                 => '2.10',
            'File::Basename'        => '2.79',
            'File::Copy'            => '2.20',
            'File::DosGlob'         => '1.02',
            'File::Find'            => '1.17',
            'File::Glob'            => '1.08',
            'File::stat'            => '1.03',
            'I18N::LangTags'        => '0.35_01',
            'I18N::LangTags::List'  => '0.35_01',
            'IO::Compress::Adapter::Bzip2'=> '2.027',
            'IO::Compress::Adapter::Deflate'=> '2.027',
            'IO::Compress::Adapter::Identity'=> '2.027',
            'IO::Compress::Base'    => '2.027',
            'IO::Compress::Base::Common'=> '2.027',
            'IO::Compress::Bzip2'   => '2.027',
            'IO::Compress::Deflate' => '2.027',
            'IO::Compress::Gzip'    => '2.027',
            'IO::Compress::Gzip::Constants'=> '2.027',
            'IO::Compress::RawDeflate'=> '2.027',
            'IO::Compress::Zip'     => '2.027',
            'IO::Compress::Zip::Constants'=> '2.027',
            'IO::Compress::Zlib::Constants'=> '2.027',
            'IO::Compress::Zlib::Extra'=> '2.027',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.027',
            'IO::Uncompress::Adapter::Identity'=> '2.027',
            'IO::Uncompress::Adapter::Inflate'=> '2.027',
            'IO::Uncompress::AnyInflate'=> '2.027',
            'IO::Uncompress::AnyUncompress'=> '2.027',
            'IO::Uncompress::Base'  => '2.027',
            'IO::Uncompress::Bunzip2'=> '2.027',
            'IO::Uncompress::Gunzip'=> '2.027',
            'IO::Uncompress::Inflate'=> '2.027',
            'IO::Uncompress::RawInflate'=> '2.027',
            'IO::Uncompress::Unzip' => '2.027',
            'IPC::Cmd'              => '0.60',
            'IPC::Msg'              => '2.03',
            'IPC::Semaphore'        => '2.03',
            'IPC::SharedMem'        => '2.03',
            'IPC::SysV'             => '2.03',
            'Locale::Maketext'      => '1.15',
            'Locale::Maketext::Guts'=> undef,
            'Locale::Maketext::GutsLoader'=> undef,
            'Module::Build'         => '0.3607',
            'Module::Build::Base'   => '0.3607',
            'Module::Build::Compat' => '0.3607',
            'Module::Build::Config' => '0.3607',
            'Module::Build::Cookbook'=> '0.3607',
            'Module::Build::Dumper' => '0.3607',
            'Module::Build::ModuleInfo'=> '0.3607',
            'Module::Build::Notes'  => '0.3607',
            'Module::Build::PPMMaker'=> '0.3607',
            'Module::Build::Platform::Amiga'=> '0.3607',
            'Module::Build::Platform::Default'=> '0.3607',
            'Module::Build::Platform::EBCDIC'=> '0.3607',
            'Module::Build::Platform::MPEiX'=> '0.3607',
            'Module::Build::Platform::MacOS'=> '0.3607',
            'Module::Build::Platform::RiscOS'=> '0.3607',
            'Module::Build::Platform::Unix'=> '0.3607',
            'Module::Build::Platform::VMS'=> '0.3607',
            'Module::Build::Platform::VOS'=> '0.3607',
            'Module::Build::Platform::Windows'=> '0.3607',
            'Module::Build::Platform::aix'=> '0.3607',
            'Module::Build::Platform::cygwin'=> '0.3607',
            'Module::Build::Platform::darwin'=> '0.3607',
            'Module::Build::Platform::os2'=> '0.3607',
            'Module::Build::PodParser'=> '0.3607',
            'Module::CoreList'      => '2.36',
            'Module::Load'          => '0.18',
            'TAP::Base'             => '3.21',
            'TAP::Formatter::Base'  => '3.21',
            'TAP::Formatter::Color' => '3.21',
            'TAP::Formatter::Console'=> '3.21',
            'TAP::Formatter::Console::ParallelSession'=> '3.21',
            'TAP::Formatter::Console::Session'=> '3.21',
            'TAP::Formatter::File'  => '3.21',
            'TAP::Formatter::File::Session'=> '3.21',
            'TAP::Formatter::Session'=> '3.21',
            'TAP::Harness'          => '3.21',
            'TAP::Object'           => '3.21',
            'TAP::Parser'           => '3.21',
            'TAP::Parser::Aggregator'=> '3.21',
            'TAP::Parser::Grammar'  => '3.21',
            'TAP::Parser::Iterator' => '3.21',
            'TAP::Parser::Iterator::Array'=> '3.21',
            'TAP::Parser::Iterator::Process'=> '3.21',
            'TAP::Parser::Iterator::Stream'=> '3.21',
            'TAP::Parser::IteratorFactory'=> '3.21',
            'TAP::Parser::Multiplexer'=> '3.21',
            'TAP::Parser::Result'   => '3.21',
            'TAP::Parser::Result::Bailout'=> '3.21',
            'TAP::Parser::Result::Comment'=> '3.21',
            'TAP::Parser::Result::Plan'=> '3.21',
            'TAP::Parser::Result::Pragma'=> '3.21',
            'TAP::Parser::Result::Test'=> '3.21',
            'TAP::Parser::Result::Unknown'=> '3.21',
            'TAP::Parser::Result::Version'=> '3.21',
            'TAP::Parser::Result::YAML'=> '3.21',
            'TAP::Parser::ResultFactory'=> '3.21',
            'TAP::Parser::Scheduler'=> '3.21',
            'TAP::Parser::Scheduler::Job'=> '3.21',
            'TAP::Parser::Scheduler::Spinner'=> '3.21',
            'TAP::Parser::Source'   => '3.21',
            'TAP::Parser::SourceHandler'=> '3.21',
            'TAP::Parser::SourceHandler::Executable'=> '3.21',
            'TAP::Parser::SourceHandler::File'=> '3.21',
            'TAP::Parser::SourceHandler::Handle'=> '3.21',
            'TAP::Parser::SourceHandler::Perl'=> '3.21',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.21',
            'TAP::Parser::SourceHandler::pgTAP'=> '3.21',
            'TAP::Parser::Utils'    => '3.21',
            'TAP::Parser::YAMLish::Reader'=> '3.21',
            'TAP::Parser::YAMLish::Writer'=> '3.21',
            'Term::ANSIColor'       => '3.00',
            'Term::ReadLine'        => '1.07',
            'Test::Harness'         => '3.21',
            'Tie::Array'            => '1.04',
            'Time::HiRes'           => '1.9721',
            'Time::Piece'           => '1.20_01',
            'Unicode::Collate'      => '0.53',
            'Unicode::Normalize'    => '1.06',
            'Unicode::UCD'          => '0.29',
            'autodie'               => '2.10',
            'autodie::exception'    => '2.10',
            'autodie::exception::system'=> '2.10',
            'autodie::hints'        => '2.10',
            'blib'                  => '1.05',
            'charnames'             => '1.11',
            'diagnostics'           => '1.20',
            'inc::latest'           => '0.3607',
            'lib'                   => '0.63',
            're'                    => '0.12',
            'threads'               => '1.77_03',
            'threads::shared'       => '1.33_02',
            'vars'                  => '1.02',
            'warnings'              => '1.10',
        },
        removed => {
            'TAP::Parser::Source::Perl'=> 1,
        }
    },
    5.013004 => {
        delta_from => 5.013003,
        changed => {
            'App::Prove'            => '3.22',
            'App::Prove::State'     => '3.22',
            'App::Prove::State::Result'=> '3.22',
            'App::Prove::State::Result::Test'=> '3.22',
            'Archive::Tar'          => '1.68',
            'Archive::Tar::Constant'=> '1.68',
            'Archive::Tar::File'    => '1.68',
            'B::Lint'               => '1.12',
            'B::Lint::Debug'        => '1.12',
            'Carp'                  => '1.18',
            'Carp::Heavy'           => '1.18',
            'Compress::Raw::Bzip2'  => '2.030',
            'Compress::Raw::Zlib'   => '2.030',
            'Compress::Zlib'        => '2.030',
            'ExtUtils::ParseXS'     => '2.2207',
            'File::Spec'            => '3.31_01',
            'I18N::Langinfo'        => '0.04',
            'IO::Compress::Adapter::Bzip2'=> '2.030',
            'IO::Compress::Adapter::Deflate'=> '2.030',
            'IO::Compress::Adapter::Identity'=> '2.030',
            'IO::Compress::Base'    => '2.030',
            'IO::Compress::Base::Common'=> '2.030',
            'IO::Compress::Bzip2'   => '2.030',
            'IO::Compress::Deflate' => '2.030',
            'IO::Compress::Gzip'    => '2.030',
            'IO::Compress::Gzip::Constants'=> '2.030',
            'IO::Compress::RawDeflate'=> '2.030',
            'IO::Compress::Zip'     => '2.030',
            'IO::Compress::Zip::Constants'=> '2.030',
            'IO::Compress::Zlib::Constants'=> '2.030',
            'IO::Compress::Zlib::Extra'=> '2.030',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.030',
            'IO::Uncompress::Adapter::Identity'=> '2.030',
            'IO::Uncompress::Adapter::Inflate'=> '2.030',
            'IO::Uncompress::AnyInflate'=> '2.030',
            'IO::Uncompress::AnyUncompress'=> '2.030',
            'IO::Uncompress::Base'  => '2.030',
            'IO::Uncompress::Bunzip2'=> '2.030',
            'IO::Uncompress::Gunzip'=> '2.030',
            'IO::Uncompress::Inflate'=> '2.030',
            'IO::Uncompress::RawInflate'=> '2.030',
            'IO::Uncompress::Unzip' => '2.030',
            'Module::CoreList'      => '2.37',
            'TAP::Base'             => '3.22',
            'TAP::Formatter::Base'  => '3.22',
            'TAP::Formatter::Color' => '3.22',
            'TAP::Formatter::Console'=> '3.22',
            'TAP::Formatter::Console::ParallelSession'=> '3.22',
            'TAP::Formatter::Console::Session'=> '3.22',
            'TAP::Formatter::File'  => '3.22',
            'TAP::Formatter::File::Session'=> '3.22',
            'TAP::Formatter::Session'=> '3.22',
            'TAP::Harness'          => '3.22',
            'TAP::Object'           => '3.22',
            'TAP::Parser'           => '3.22',
            'TAP::Parser::Aggregator'=> '3.22',
            'TAP::Parser::Grammar'  => '3.22',
            'TAP::Parser::Iterator' => '3.22',
            'TAP::Parser::Iterator::Array'=> '3.22',
            'TAP::Parser::Iterator::Process'=> '3.22',
            'TAP::Parser::Iterator::Stream'=> '3.22',
            'TAP::Parser::IteratorFactory'=> '3.22',
            'TAP::Parser::Multiplexer'=> '3.22',
            'TAP::Parser::Result'   => '3.22',
            'TAP::Parser::Result::Bailout'=> '3.22',
            'TAP::Parser::Result::Comment'=> '3.22',
            'TAP::Parser::Result::Plan'=> '3.22',
            'TAP::Parser::Result::Pragma'=> '3.22',
            'TAP::Parser::Result::Test'=> '3.22',
            'TAP::Parser::Result::Unknown'=> '3.22',
            'TAP::Parser::Result::Version'=> '3.22',
            'TAP::Parser::Result::YAML'=> '3.22',
            'TAP::Parser::ResultFactory'=> '3.22',
            'TAP::Parser::Scheduler'=> '3.22',
            'TAP::Parser::Scheduler::Job'=> '3.22',
            'TAP::Parser::Scheduler::Spinner'=> '3.22',
            'TAP::Parser::Source'   => '3.22',
            'TAP::Parser::SourceHandler'=> '3.22',
            'TAP::Parser::SourceHandler::Executable'=> '3.22',
            'TAP::Parser::SourceHandler::File'=> '3.22',
            'TAP::Parser::SourceHandler::Handle'=> '3.22',
            'TAP::Parser::SourceHandler::Perl'=> '3.22',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.22',
            'TAP::Parser::Utils'    => '3.22',
            'TAP::Parser::YAMLish::Reader'=> '3.22',
            'TAP::Parser::YAMLish::Writer'=> '3.22',
            'Test::Builder'         => '0.96',
            'Test::Builder::Module' => '0.96',
            'Test::Builder::Tester' => '1.20',
            'Test::Builder::Tester::Color'=> '1.20',
            'Test::Harness'         => '3.22',
            'Test::More'            => '0.96',
            'Test::Simple'          => '0.96',
            'Unicode::Collate'      => '0.56',
            'Unicode::Collate::Locale'=> '0.56',
            'XS::APItest'           => '0.20',
            'charnames'             => '1.15',
            'feature'               => '1.18',
        },
        removed => {
            'TAP::Parser::SourceHandler::pgTAP'=> 1,
        }
    },
    5.013005 => {
        delta_from => 5.013004,
        changed => {
            'B::Debug'              => '1.16',
            'CPANPLUS::Dist::Build' => '0.48',
            'CPANPLUS::Dist::Build::Constants'=> '0.48',
            'Data::Dumper'          => '2.128',
            'Encode'                => '2.40',
            'Encode::Guess'         => '2.04',
            'Encode::MIME::Header'  => '2.12',
            'Encode::Unicode::UTF7' => '2.05',
            'Errno'                 => '1.13',
            'ExtUtils::Command::MM' => '6.57_05',
            'ExtUtils::Liblist'     => '6.57_05',
            'ExtUtils::Liblist::Kid'=> '6.5705',
            'ExtUtils::MM'          => '6.57_05',
            'ExtUtils::MM_AIX'      => '6.57_05',
            'ExtUtils::MM_Any'      => '6.57_05',
            'ExtUtils::MM_BeOS'     => '6.57_05',
            'ExtUtils::MM_Cygwin'   => '6.57_05',
            'ExtUtils::MM_DOS'      => '6.5705',
            'ExtUtils::MM_Darwin'   => '6.57_05',
            'ExtUtils::MM_MacOS'    => '6.5705',
            'ExtUtils::MM_NW5'      => '6.57_05',
            'ExtUtils::MM_OS2'      => '6.57_05',
            'ExtUtils::MM_QNX'      => '6.57_05',
            'ExtUtils::MM_UWIN'     => '6.5705',
            'ExtUtils::MM_Unix'     => '6.57_05',
            'ExtUtils::MM_VMS'      => '6.57_05',
            'ExtUtils::MM_VOS'      => '6.57_05',
            'ExtUtils::MM_Win32'    => '6.57_05',
            'ExtUtils::MM_Win95'    => '6.57_05',
            'ExtUtils::MY'          => '6.5705',
            'ExtUtils::MakeMaker'   => '6.57_05',
            'ExtUtils::MakeMaker::Config'=> '6.57_05',
            'ExtUtils::MakeMaker::YAML'=> '1.44',
            'ExtUtils::Mkbootstrap' => '6.57_05',
            'ExtUtils::Mksymlists'  => '6.57_05',
            'ExtUtils::testlib'     => '6.5705',
            'Filter::Simple'        => '0.85',
            'Hash::Util'            => '0.09',
            'Math::BigFloat'        => '1.62',
            'Math::BigInt'          => '1.95',
            'Math::BigInt::Calc'    => '0.54',
            'Math::BigInt::CalcEmu' => '0.06',
            'Math::BigInt::FastCalc'=> '0.22',
            'Math::BigRat'          => '0.26',
            'Module::CoreList'      => '2.39',
            'POSIX'                 => '1.20',
            'PerlIO::scalar'        => '0.09',
            'Safe'                  => '2.28',
            'Test::Builder'         => '0.97_01',
            'Test::Builder::Module' => '0.97_01',
            'Test::Builder::Tester' => '1.21_01',
            'Test::Builder::Tester::Color'=> '1.21_01',
            'Test::More'            => '0.97_01',
            'Test::Simple'          => '0.97_01',
            'Tie::Hash'             => '1.04',
            'Unicode::Collate'      => '0.59',
            'Unicode::Collate::Locale'=> '0.59',
            'XS::APItest'           => '0.21',
            'XS::APItest::KeywordRPN'=> '0.005',
            'XSLoader'              => '0.11',
            'bigint'                => '0.25',
            'bignum'                => '0.25',
            'bigrat'                => '0.25',
            'blib'                  => '1.06',
            'open'                  => '1.08',
            'threads::shared'       => '1.33_03',
            'warnings'              => '1.11',
            'warnings::register'    => '1.02',
        },
        removed => {
        }
    },
    5.013006 => {
        delta_from => 5.013005,
        changed => {
            'Archive::Extract'      => '0.44',
            'B'                     => '1.24',
            'B::Deparse'            => '0.99',
            'CPAN'                  => '1.94_61',
            'CPAN::FTP'             => '5.5005',
            'CPAN::Queue'           => '5.5001',
            'CPAN::Version'         => '5.5001',
            'Carp'                  => '1.19',
            'Carp::Heavy'           => '1.19',
            'Compress::Raw::Bzip2'  => '2.031',
            'Cwd'                   => '3.34',
            'Data::Dumper'          => '2.129',
            'Devel::Peek'           => '1.05',
            'Digest::MD5'           => '2.51',
            'ExtUtils::Constant::Base'=> '0.05',
            'ExtUtils::Constant::ProxySubs'=> '0.07',
            'ExtUtils::Embed'       => '1.29',
            'ExtUtils::XSSymSet'    => '1.2',
            'Fcntl'                 => '1.09',
            'File::DosGlob'         => '1.03',
            'File::Find'            => '1.18',
            'File::Glob'            => '1.09',
            'File::Spec'            => '3.33',
            'File::Spec::Cygwin'    => '3.33',
            'File::Spec::Epoc'      => '3.33',
            'File::Spec::Functions' => '3.33',
            'File::Spec::Mac'       => '3.33',
            'File::Spec::OS2'       => '3.33',
            'File::Spec::Unix'      => '3.33',
            'File::Spec::VMS'       => '3.33',
            'File::Spec::Win32'     => '3.33',
            'GDBM_File'             => '1.11',
            'Hash::Util::FieldHash' => '1.05',
            'I18N::Langinfo'        => '0.06',
            'IPC::Cmd'              => '0.64',
            'IPC::Open3'            => '1.07',
            'Locale::Codes'         => '3.14',
            'Locale::Codes::Country'=> '3.14',
            'Locale::Codes::Currency'=> '3.14',
            'Locale::Codes::Language'=> '3.14',
            'Locale::Codes::Script' => '3.14',
            'Locale::Constants'     => '3.14',
            'Locale::Country'       => '3.14',
            'Locale::Currency'      => '3.14',
            'Locale::Language'      => '3.14',
            'Locale::Maketext'      => '1.16',
            'Locale::Script'        => '3.14',
            'Math::BigFloat'        => '1.63',
            'Math::BigInt'          => '1.97',
            'Math::BigInt::Calc'    => '0.55',
            'Math::BigInt::CalcEmu' => '0.07',
            'Module::CoreList'      => '2.40',
            'NDBM_File'             => '1.09',
            'NEXT'                  => '0.65',
            'ODBM_File'             => '1.08',
            'Opcode'                => '1.16',
            'POSIX'                 => '1.21',
            'PerlIO::encoding'      => '0.13',
            'PerlIO::scalar'        => '0.10',
            'PerlIO::via'           => '0.10',
            'Pod::Man'              => '2.25',
            'Pod::Text'             => '3.15',
            'SDBM_File'             => '1.07',
            'Socket'                => '1.90',
            'Sys::Hostname'         => '1.13',
            'Tie::Hash::NamedCapture'=> '0.07',
            'Unicode::Collate'      => '0.63',
            'Unicode::Collate::Locale'=> '0.63',
            'Unicode::Normalize'    => '1.07',
            'XS::APItest'           => '0.23',
            'XSLoader'              => '0.13',
            'attributes'            => '0.13',
            'charnames'             => '1.16',
            'if'                    => '0.06',
            'mro'                   => '1.04',
            'overload'              => '1.11',
            're'                    => '0.13',
            'sigtrap'               => '1.05',
            'threads'               => '1.81_01',
            'threads::shared'       => '1.34',
        },
        removed => {
            'XS::APItest::KeywordRPN'=> 1,
        }
    },
    5.013007 => {
        delta_from => 5.013006,
        changed => {
            'Archive::Extract'      => '0.46',
            'Archive::Tar'          => '1.72',
            'Archive::Tar::Constant'=> '1.72',
            'Archive::Tar::File'    => '1.72',
            'AutoLoader'            => '5.71',
            'B'                     => '1.26',
            'B::Concise'            => '0.81',
            'B::Deparse'            => '1.01',
            'CGI'                   => '3.50',
            'CPAN'                  => '1.94_62',
            'CPANPLUS'              => '0.9010',
            'CPANPLUS::Dist::Build' => '0.50',
            'CPANPLUS::Dist::Build::Constants'=> '0.50',
            'CPANPLUS::Internals'   => '0.9010',
            'CPANPLUS::Shell::Default'=> '0.9010',
            'Data::Dumper'          => '2.130_01',
            'DynaLoader'            => '1.11',
            'ExtUtils::Constant'    => '0.23',
            'ExtUtils::Constant::ProxySubs'=> '0.08',
            'Fcntl'                 => '1.10',
            'File::Fetch'           => '0.28',
            'File::Glob'            => '1.10',
            'File::stat'            => '1.04',
            'GDBM_File'             => '1.12',
            'Hash::Util'            => '0.10',
            'Hash::Util::FieldHash' => '1.06',
            'I18N::Langinfo'        => '0.07',
            'Locale::Maketext'      => '1.17',
            'Locale::Maketext::Guts'=> '1.17',
            'Locale::Maketext::GutsLoader'=> '1.17',
            'MIME::Base64'          => '3.10',
            'MIME::QuotedPrint'     => '3.10',
            'Math::BigFloat'        => '1.99_01',
            'Math::BigInt'          => '1.99_01',
            'Math::BigInt::Calc'    => '1.99_01',
            'Math::BigInt::CalcEmu' => '1.99_01',
            'Math::BigInt::FastCalc'=> '0.24_01',
            'Math::BigRat'          => '0.26_01',
            'Module::CoreList'      => '2.41',
            'NDBM_File'             => '1.10',
            'ODBM_File'             => '1.09',
            'Opcode'                => '1.17',
            'POSIX'                 => '1.22',
            'Pod::Simple'           => '3.15',
            'Pod::Simple::BlackBox' => '3.15',
            'Pod::Simple::Checker'  => '3.15',
            'Pod::Simple::Debug'    => '3.15',
            'Pod::Simple::DumpAsText'=> '3.15',
            'Pod::Simple::DumpAsXML'=> '3.15',
            'Pod::Simple::HTML'     => '3.15',
            'Pod::Simple::HTMLBatch'=> '3.15',
            'Pod::Simple::LinkSection'=> '3.15',
            'Pod::Simple::Methody'  => '3.15',
            'Pod::Simple::Progress' => '3.15',
            'Pod::Simple::PullParser'=> '3.15',
            'Pod::Simple::PullParserEndToken'=> '3.15',
            'Pod::Simple::PullParserStartToken'=> '3.15',
            'Pod::Simple::PullParserTextToken'=> '3.15',
            'Pod::Simple::PullParserToken'=> '3.15',
            'Pod::Simple::RTF'      => '3.15',
            'Pod::Simple::Search'   => '3.15',
            'Pod::Simple::SimpleTree'=> '3.15',
            'Pod::Simple::Text'     => '3.15',
            'Pod::Simple::TextContent'=> '3.15',
            'Pod::Simple::TiedOutFH'=> '3.15',
            'Pod::Simple::Transcode'=> '3.15',
            'Pod::Simple::TranscodeDumb'=> '3.15',
            'Pod::Simple::TranscodeSmart'=> '3.15',
            'Pod::Simple::XHTML'    => '3.15',
            'Pod::Simple::XMLOutStream'=> '3.15',
            'SDBM_File'             => '1.08',
            'Safe'                  => '2.29',
            'SelfLoader'            => '1.18',
            'Socket'                => '1.91',
            'Storable'              => '2.24',
            'Sys::Hostname'         => '1.14',
            'Unicode'               => '6.0.0',
            'Unicode::Collate'      => '0.67',
            'Unicode::Collate::CJK::Big5'=> '0.65',
            'Unicode::Collate::CJK::GB2312'=> '0.65',
            'Unicode::Collate::CJK::JISX0208'=> '0.64',
            'Unicode::Collate::CJK::Korean'=> '0.66',
            'Unicode::Collate::CJK::Pinyin'=> '0.65',
            'Unicode::Collate::CJK::Stroke'=> '0.65',
            'Unicode::Collate::Locale'=> '0.67',
            'XS::APItest'           => '0.26',
            'XS::Typemap'           => '0.04',
            'charnames'             => '1.17',
            'mro'                   => '1.05',
            'parent'                => '0.224',
            're'                    => '0.14',
            'threads'               => '1.81_02',
        },
        removed => {
        }
    },
    5.013008 => {
        delta_from => 5.013007,
        changed => {
            'Archive::Tar'          => '1.74',
            'Archive::Tar::Constant'=> '1.74',
            'Archive::Tar::File'    => '1.74',
            'B'                     => '1.27',
            'B::Concise'            => '0.82',
            'B::Deparse'            => '1.02',
            'Carp::Heavy'           => '1.17',
            'Cwd'                   => '3.35',
            'Data::Dumper'          => '2.130_02',
            'Devel::Peek'           => '1.06',
            'Devel::SelfStubber'    => '1.05',
            'Digest::SHA'           => '5.50',
            'Dumpvalue'             => '1.15',
            'DynaLoader'            => '1.12',
            'Env'                   => '1.02',
            'Exporter::Heavy'       => '5.64_01',
            'ExtUtils::CBuilder'    => '0.280201',
            'ExtUtils::CBuilder::Base'=> '0.280201',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280201',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280201',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280201',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280201',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280201',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280201',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280201',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280201',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280201',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280201',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280201',
            'ExtUtils::Constant::Utils'=> '0.03',
            'ExtUtils::Embed'       => '1.30',
            'ExtUtils::ParseXS'     => '2.2208',
            'Fatal'                 => '2.1001',
            'Fcntl'                 => '1.11',
            'File::CheckTree'       => '4.41',
            'File::Glob'            => '1.11',
            'GDBM_File'             => '1.13',
            'Hash::Util::FieldHash' => '1.07',
            'I18N::Collate'         => '1.02',
            'IO'                    => '1.25_03',
            'IPC::Cmd'              => '0.66',
            'IPC::Open3'            => '1.08',
            'Locale::Codes'         => '3.15',
            'Locale::Codes::Country'=> '3.15',
            'Locale::Codes::Currency'=> '3.15',
            'Locale::Codes::Language'=> '3.15',
            'Locale::Codes::Script' => '3.15',
            'Locale::Constants'     => '3.15',
            'Locale::Country'       => '3.15',
            'Locale::Currency'      => '3.15',
            'Locale::Language'      => '3.15',
            'Locale::Script'        => '3.15',
            'MIME::Base64'          => '3.13',
            'MIME::QuotedPrint'     => '3.13',
            'Math::BigFloat'        => '1.99_02',
            'Math::BigInt'          => '1.99_02',
            'Math::BigInt::Calc'    => '1.99_02',
            'Math::BigInt::CalcEmu' => '1.99_02',
            'Memoize'               => '1.02',
            'Memoize::AnyDBM_File'  => '1.02',
            'Memoize::Expire'       => '1.02',
            'Memoize::ExpireFile'   => '1.02',
            'Memoize::ExpireTest'   => '1.02',
            'Memoize::NDBM_File'    => '1.02',
            'Memoize::SDBM_File'    => '1.02',
            'Memoize::Storable'     => '1.02',
            'Module::CoreList'      => '2.43',
            'NDBM_File'             => '1.11',
            'Net::Ping'             => '2.37',
            'ODBM_File'             => '1.10',
            'Opcode'                => '1.18',
            'POSIX'                 => '1.23',
            'PerlIO::encoding'      => '0.14',
            'PerlIO::scalar'        => '0.11',
            'PerlIO::via'           => '0.11',
            'SDBM_File'             => '1.09',
            'Socket'                => '1.92',
            'Storable'              => '2.25',
            'Time::HiRes'           => '1.9721_01',
            'Unicode::Collate'      => '0.6801',
            'Unicode::Collate::Locale'=> '0.68',
            'Unicode::Normalize'    => '1.08',
            'Unicode::UCD'          => '0.30',
            'Win32'                 => '0.41',
            'XS::APItest'           => '0.27',
            'autodie'               => '2.1001',
            'autodie::exception'    => '2.1001',
            'autodie::exception::system'=> '2.1001',
            'autodie::hints'        => '2.1001',
            'feature'               => '1.19',
            'if'                    => '0.0601',
            'mro'                   => '1.06',
            'overload'              => '1.12',
            're'                    => '0.15',
            'threads'               => '1.81_03',
            'threads::shared'       => '1.35',
            'version'               => '0.86',
        },
        removed => {
        }
    },
    5.013009 => {
        delta_from => 5.013008,
        changed => {
            'Archive::Extract'      => '0.48',
            'Archive::Tar'          => '1.76',
            'Archive::Tar::Constant'=> '1.76',
            'Archive::Tar::File'    => '1.76',
            'B::Concise'            => '0.83',
            'B::Deparse'            => '1.03',
            'B::Lint'               => '1.13',
            'Benchmark'             => '1.12',
            'CGI'                   => '3.51',
            'CGI::Carp'             => '3.51',
            'CGI::Cookie'           => '1.30',
            'CGI::Push'             => '1.05',
            'CGI::Util'             => '3.51',
            'CPAN'                  => '1.94_63',
            'CPAN::HTTP::Client'    => '1.94',
            'CPAN::HTTP::Credentials'=> '1.94',
            'CPAN::Meta::YAML'      => '0.003',
            'CPANPLUS'              => '0.9011',
            'CPANPLUS::Dist::Build' => '0.52',
            'CPANPLUS::Dist::Build::Constants'=> '0.52',
            'CPANPLUS::Internals'   => '0.9011',
            'CPANPLUS::Shell::Default'=> '0.9011',
            'Carp::Heavy'           => '1.19',
            'Compress::Raw::Bzip2'  => '2.033',
            'Compress::Raw::Zlib'   => '2.033',
            'Compress::Zlib'        => '2.033',
            'Cwd'                   => '3.36',
            'DBM_Filter'            => '0.04',
            'DB_File'               => '1.821',
            'Devel::Peek'           => '1.07',
            'DirHandle'             => '1.04',
            'Dumpvalue'             => '1.16',
            'Encode'                => '2.42',
            'Encode::Alias'         => '2.13',
            'Encode::MIME::Header'  => '2.13',
            'Exporter::Heavy'       => '5.64_03',
            'ExtUtils::Install'     => '1.56',
            'ExtUtils::ParseXS'     => '2.2209',
            'File::Basename'        => '2.80',
            'File::Copy'            => '2.21',
            'File::DosGlob'         => '1.04',
            'File::Fetch'           => '0.32',
            'File::Find'            => '1.19',
            'File::Spec::Mac'       => '3.34',
            'File::Spec::VMS'       => '3.34',
            'File::stat'            => '1.05',
            'HTTP::Tiny'            => '0.009',
            'Hash::Util::FieldHash' => '1.08',
            'IO::Compress::Adapter::Bzip2'=> '2.033',
            'IO::Compress::Adapter::Deflate'=> '2.033',
            'IO::Compress::Adapter::Identity'=> '2.033',
            'IO::Compress::Base'    => '2.033',
            'IO::Compress::Base::Common'=> '2.033',
            'IO::Compress::Bzip2'   => '2.033',
            'IO::Compress::Deflate' => '2.033',
            'IO::Compress::Gzip'    => '2.033',
            'IO::Compress::Gzip::Constants'=> '2.033',
            'IO::Compress::RawDeflate'=> '2.033',
            'IO::Compress::Zip'     => '2.033',
            'IO::Compress::Zip::Constants'=> '2.033',
            'IO::Compress::Zlib::Constants'=> '2.033',
            'IO::Compress::Zlib::Extra'=> '2.033',
            'IO::Handle'            => '1.29',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.033',
            'IO::Uncompress::Adapter::Identity'=> '2.033',
            'IO::Uncompress::Adapter::Inflate'=> '2.033',
            'IO::Uncompress::AnyInflate'=> '2.033',
            'IO::Uncompress::AnyUncompress'=> '2.033',
            'IO::Uncompress::Base'  => '2.033',
            'IO::Uncompress::Bunzip2'=> '2.033',
            'IO::Uncompress::Gunzip'=> '2.033',
            'IO::Uncompress::Inflate'=> '2.033',
            'IO::Uncompress::RawInflate'=> '2.033',
            'IO::Uncompress::Unzip' => '2.033',
            'IPC::Cmd'              => '0.68',
            'IPC::Open3'            => '1.09',
            'JSON::PP'              => '2.27103',
            'JSON::PP::Boolean'     => undef,
            'Locale::Maketext'      => '1.18',
            'Log::Message'          => '0.04',
            'Log::Message::Config'  => '0.04',
            'Log::Message::Handlers'=> '0.04',
            'Log::Message::Item'    => '0.04',
            'Log::Message::Simple'  => '0.08',
            'Math::BigFloat'        => '1.99_03',
            'Math::BigInt'          => '1.99_03',
            'Math::BigInt::Calc'    => '1.99_03',
            'Math::BigInt::FastCalc'=> '0.24_02',
            'Math::BigRat'          => '0.26_02',
            'Module::CoreList'      => '2.42_01',
            'Module::Load::Conditional'=> '0.40',
            'Module::Metadata'      => '1.000003',
            'Net::Ping'             => '2.38',
            'OS2::Process'          => '1.05',
            'Object::Accessor'      => '0.38',
            'POSIX'                 => '1.24',
            'Params::Check'         => '0.28',
            'Perl::OSType'          => '1.002',
            'Pod::LaTeX'            => '0.59',
            'Pod::Perldoc'          => '3.15_03',
            'Socket'                => '1.93',
            'Storable'              => '2.26',
            'Sys::Hostname'         => '1.15',
            'Term::UI'              => '0.24',
            'Thread::Queue'         => '2.12',
            'Thread::Semaphore'     => '2.12',
            'Time::Local'           => '1.2000',
            'UNIVERSAL'             => '1.08',
            'Unicode::Normalize'    => '1.10',
            'Win32'                 => '0.44',
            'bigint'                => '0.26',
            'bignum'                => '0.26',
            'bigrat'                => '0.26',
            'charnames'             => '1.18',
            'diagnostics'           => '1.21',
            're'                    => '0.16',
            'threads'               => '1.83',
            'threads::shared'       => '1.36',
            'version'               => '0.88',
        },
        removed => {
        }
    },
    5.01301 => {
        delta_from => 5.013009,
        changed => {
            'Attribute::Handlers'   => '0.89',
            'B'                     => '1.28',
            'B::Showlex'            => '1.03',
            'CGI'                   => '3.52',
            'CPAN'                  => '1.94_65',
            'CPAN::Distribution'    => '1.9601',
            'CPAN::FTP::netrc'      => '1.01',
            'CPAN::FirstTime'       => '5.5303',
            'CPAN::HandleConfig'    => '5.5003',
            'CPAN::Meta'            => '2.110440',
            'CPAN::Meta::Converter' => '2.110440',
            'CPAN::Meta::Feature'   => '2.110440',
            'CPAN::Meta::History'   => '2.110440',
            'CPAN::Meta::Prereqs'   => '2.110440',
            'CPAN::Meta::Spec'      => '2.110440',
            'CPAN::Meta::Validator' => '2.110440',
            'CPAN::Shell'           => '5.5002',
            'CPANPLUS'              => '0.9101',
            'CPANPLUS::Internals'   => '0.9101',
            'CPANPLUS::Shell::Default'=> '0.9101',
            'Carp'                  => '1.20',
            'Carp::Heavy'           => '1.20',
            'Cwd'                   => '3.37',
            'Devel::DProf'          => '20110217.00',
            'DynaLoader'            => '1.13',
            'ExtUtils::CBuilder'    => '0.280202',
            'ExtUtils::CBuilder::Base'=> '0.280202',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280202',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280202',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280202',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280202',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280202',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280202',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280202',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280202',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280202',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280202',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280202',
            'File::Copy'            => '2.22',
            'Filter::Simple'        => '0.86',
            'HTTP::Tiny'            => '0.010',
            'I18N::LangTags::Detect'=> '1.05',
            'IO::Select'            => '1.18',
            'IPC::Cmd'              => '0.70',
            'Locale::Maketext'      => '1.19',
            'Math::BigFloat'        => '1.992',
            'Math::BigInt'          => '1.992',
            'Math::BigInt::Calc'    => '1.992',
            'Math::BigInt::CalcEmu' => '1.992',
            'Module::Build'         => '0.37_05',
            'Module::Build::Base'   => '0.37_05',
            'Module::Build::Compat' => '0.37_05',
            'Module::Build::Config' => '0.37_05',
            'Module::Build::Cookbook'=> '0.37_05',
            'Module::Build::Dumper' => '0.37_05',
            'Module::Build::ModuleInfo'=> '0.37_05',
            'Module::Build::Notes'  => '0.37_05',
            'Module::Build::PPMMaker'=> '0.37_05',
            'Module::Build::Platform::Amiga'=> '0.37_05',
            'Module::Build::Platform::Default'=> '0.37_05',
            'Module::Build::Platform::EBCDIC'=> '0.37_05',
            'Module::Build::Platform::MPEiX'=> '0.37_05',
            'Module::Build::Platform::MacOS'=> '0.37_05',
            'Module::Build::Platform::RiscOS'=> '0.37_05',
            'Module::Build::Platform::Unix'=> '0.37_05',
            'Module::Build::Platform::VMS'=> '0.37_05',
            'Module::Build::Platform::VOS'=> '0.37_05',
            'Module::Build::Platform::Windows'=> '0.37_05',
            'Module::Build::Platform::aix'=> '0.37_05',
            'Module::Build::Platform::cygwin'=> '0.37_05',
            'Module::Build::Platform::darwin'=> '0.37_05',
            'Module::Build::Platform::os2'=> '0.37_05',
            'Module::Build::PodParser'=> '0.37_05',
            'Module::Build::Version'=> '0.87',
            'Module::Build::YAML'   => '1.41',
            'Module::CoreList'      => '2.45',
            'Module::Load::Conditional'=> '0.44',
            'Module::Metadata'      => '1.000004',
            'OS2::Process'          => '1.06',
            'Parse::CPAN::Meta'     => '1.4401',
            'Pod::Html'             => '1.1',
            'Socket'                => '1.94',
            'Term::UI'              => '0.26',
            'Unicode::Collate'      => '0.72',
            'Unicode::Collate::Locale'=> '0.71',
            'Unicode::UCD'          => '0.31',
            'VMS::DCLsym'           => '1.05',
            'Version::Requirements' => '0.101020',
            'bigrat'                => '0.27',
            'deprecate'             => '0.02',
            'diagnostics'           => '1.22',
            'inc::latest'           => '0.37_05',
            'overload'              => '1.13',
            're'                    => '0.17',
            'utf8'                  => '1.09',
            'warnings'              => '1.12',
        },
        removed => {
        }
    },
    5.013011 => {
        delta_from => 5.01301,
        changed => {
            'App::Prove'            => '3.23',
            'App::Prove::State'     => '3.23',
            'App::Prove::State::Result'=> '3.23',
            'App::Prove::State::Result::Test'=> '3.23',
            'B'                     => '1.29',
            'CPAN'                  => '1.9600',
            'CPAN::Author'          => '5.5001',
            'CPAN::CacheMgr'        => '5.5001',
            'CPAN::Distribution'    => '1.9602',
            'CPAN::Exception::blocked_urllist'=> '1.001',
            'CPAN::HTTP::Client'    => '1.9600',
            'CPAN::HTTP::Credentials'=> '1.9600',
            'CPAN::Index'           => '1.9600',
            'CPAN::LWP::UserAgent'  => '1.9600',
            'CPAN::Mirrors'         => '1.9600',
            'CPAN::Module'          => '5.5001',
            'CPANPLUS'              => '0.9103',
            'CPANPLUS::Dist::Build' => '0.54',
            'CPANPLUS::Dist::Build::Constants'=> '0.54',
            'CPANPLUS::Internals'   => '0.9103',
            'CPANPLUS::Shell::Default'=> '0.9103',
            'Cwd'                   => '3.36',
            'Devel::DProf'          => '20110228.00',
            'Digest::SHA'           => '5.61',
            'ExtUtils::Command'     => '1.17',
            'File::Basename'        => '2.81',
            'File::Copy'            => '2.21',
            'File::Glob'            => '1.12',
            'GDBM_File'             => '1.14',
            'HTTP::Tiny'            => '0.011',
            'Hash::Util'            => '0.11',
            'Hash::Util::FieldHash' => '1.09',
            'I18N::Langinfo'        => '0.08',
            'IO'                    => '1.25_04',
            'IO::Dir'               => '1.08',
            'IO::File'              => '1.15',
            'IO::Handle'            => '1.30',
            'IO::Pipe'              => '1.14',
            'IO::Poll'              => '0.08',
            'IO::Select'            => '1.20',
            'JSON::PP'              => '2.27105',
            'Locale::Codes'         => '3.16',
            'Locale::Codes::Country'=> '3.16',
            'Locale::Codes::Currency'=> '3.16',
            'Locale::Codes::Language'=> '3.16',
            'Locale::Codes::Script' => '3.16',
            'Locale::Constants'     => '3.16',
            'Locale::Country'       => '3.16',
            'Locale::Currency'      => '3.16',
            'Locale::Language'      => '3.16',
            'Locale::Script'        => '3.16',
            'Math::BigFloat'        => '1.993',
            'Math::BigInt'          => '1.994',
            'Math::BigInt::Calc'    => '1.993',
            'Math::BigInt::CalcEmu' => '1.993',
            'Math::BigInt::FastCalc'=> '0.28',
            'Module::Build'         => '0.3800',
            'Module::Build::Base'   => '0.3800',
            'Module::Build::Compat' => '0.3800',
            'Module::Build::Config' => '0.3800',
            'Module::Build::Cookbook'=> '0.3800',
            'Module::Build::Dumper' => '0.3800',
            'Module::Build::ModuleInfo'=> '0.3800',
            'Module::Build::Notes'  => '0.3800',
            'Module::Build::PPMMaker'=> '0.3800',
            'Module::Build::Platform::Amiga'=> '0.3800',
            'Module::Build::Platform::Default'=> '0.3800',
            'Module::Build::Platform::EBCDIC'=> '0.3800',
            'Module::Build::Platform::MPEiX'=> '0.3800',
            'Module::Build::Platform::MacOS'=> '0.3800',
            'Module::Build::Platform::RiscOS'=> '0.3800',
            'Module::Build::Platform::Unix'=> '0.3800',
            'Module::Build::Platform::VMS'=> '0.3800',
            'Module::Build::Platform::VOS'=> '0.3800',
            'Module::Build::Platform::Windows'=> '0.3800',
            'Module::Build::Platform::aix'=> '0.3800',
            'Module::Build::Platform::cygwin'=> '0.3800',
            'Module::Build::Platform::darwin'=> '0.3800',
            'Module::Build::Platform::os2'=> '0.3800',
            'Module::Build::PodParser'=> '0.3800',
            'Module::CoreList'      => '2.46',
            'NDBM_File'             => '1.12',
            'Pod::Simple'           => '3.16',
            'Pod::Simple::BlackBox' => '3.16',
            'Pod::Simple::Checker'  => '3.16',
            'Pod::Simple::Debug'    => '3.16',
            'Pod::Simple::DumpAsText'=> '3.16',
            'Pod::Simple::DumpAsXML'=> '3.16',
            'Pod::Simple::HTML'     => '3.16',
            'Pod::Simple::HTMLBatch'=> '3.16',
            'Pod::Simple::LinkSection'=> '3.16',
            'Pod::Simple::Methody'  => '3.16',
            'Pod::Simple::Progress' => '3.16',
            'Pod::Simple::PullParser'=> '3.16',
            'Pod::Simple::PullParserEndToken'=> '3.16',
            'Pod::Simple::PullParserStartToken'=> '3.16',
            'Pod::Simple::PullParserTextToken'=> '3.16',
            'Pod::Simple::PullParserToken'=> '3.16',
            'Pod::Simple::RTF'      => '3.16',
            'Pod::Simple::Search'   => '3.16',
            'Pod::Simple::SimpleTree'=> '3.16',
            'Pod::Simple::Text'     => '3.16',
            'Pod::Simple::TextContent'=> '3.16',
            'Pod::Simple::TiedOutFH'=> '3.16',
            'Pod::Simple::Transcode'=> '3.16',
            'Pod::Simple::TranscodeDumb'=> '3.16',
            'Pod::Simple::TranscodeSmart'=> '3.16',
            'Pod::Simple::XHTML'    => '3.16',
            'Pod::Simple::XMLOutStream'=> '3.16',
            'Storable'              => '2.27',
            'Sys::Hostname'         => '1.16',
            'TAP::Base'             => '3.23',
            'TAP::Formatter::Base'  => '3.23',
            'TAP::Formatter::Color' => '3.23',
            'TAP::Formatter::Console'=> '3.23',
            'TAP::Formatter::Console::ParallelSession'=> '3.23',
            'TAP::Formatter::Console::Session'=> '3.23',
            'TAP::Formatter::File'  => '3.23',
            'TAP::Formatter::File::Session'=> '3.23',
            'TAP::Formatter::Session'=> '3.23',
            'TAP::Harness'          => '3.23',
            'TAP::Object'           => '3.23',
            'TAP::Parser'           => '3.23',
            'TAP::Parser::Aggregator'=> '3.23',
            'TAP::Parser::Grammar'  => '3.23',
            'TAP::Parser::Iterator' => '3.23',
            'TAP::Parser::Iterator::Array'=> '3.23',
            'TAP::Parser::Iterator::Process'=> '3.23',
            'TAP::Parser::Iterator::Stream'=> '3.23',
            'TAP::Parser::IteratorFactory'=> '3.23',
            'TAP::Parser::Multiplexer'=> '3.23',
            'TAP::Parser::Result'   => '3.23',
            'TAP::Parser::Result::Bailout'=> '3.23',
            'TAP::Parser::Result::Comment'=> '3.23',
            'TAP::Parser::Result::Plan'=> '3.23',
            'TAP::Parser::Result::Pragma'=> '3.23',
            'TAP::Parser::Result::Test'=> '3.23',
            'TAP::Parser::Result::Unknown'=> '3.23',
            'TAP::Parser::Result::Version'=> '3.23',
            'TAP::Parser::Result::YAML'=> '3.23',
            'TAP::Parser::ResultFactory'=> '3.23',
            'TAP::Parser::Scheduler'=> '3.23',
            'TAP::Parser::Scheduler::Job'=> '3.23',
            'TAP::Parser::Scheduler::Spinner'=> '3.23',
            'TAP::Parser::Source'   => '3.23',
            'TAP::Parser::SourceHandler'=> '3.23',
            'TAP::Parser::SourceHandler::Executable'=> '3.23',
            'TAP::Parser::SourceHandler::File'=> '3.23',
            'TAP::Parser::SourceHandler::Handle'=> '3.23',
            'TAP::Parser::SourceHandler::Perl'=> '3.23',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.23',
            'TAP::Parser::Utils'    => '3.23',
            'TAP::Parser::YAMLish::Reader'=> '3.23',
            'TAP::Parser::YAMLish::Writer'=> '3.23',
            'Test::Builder'         => '0.98',
            'Test::Builder::Module' => '0.98',
            'Test::Builder::Tester' => '1.22',
            'Test::Builder::Tester::Color'=> '1.22',
            'Test::Harness'         => '3.23',
            'Test::More'            => '0.98',
            'Test::Simple'          => '0.98',
            'Tie::Hash::NamedCapture'=> '0.08',
            'Tie::RefHash'          => '1.39',
            'Unicode::Collate'      => '0.73',
            'Unicode::Collate::Locale'=> '0.73',
            'Unicode::UCD'          => '0.32',
            'XS::Typemap'           => '0.05',
            'attributes'            => '0.14',
            'base'                  => '2.16',
            'inc::latest'           => '0.3800',
            'mro'                   => '1.07',
            'parent'                => '0.225',
        },
        removed => {
        }
    },
    5.014 => {
        delta_from => 5.013011,
        changed => {
            'ExtUtils::CBuilder'    => '0.280203',
            'ExtUtils::CBuilder::Base'=> '0.280203',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280203',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280203',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280203',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280203',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280203',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280203',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280203',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280203',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280203',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280203',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280203',
            'ExtUtils::ParseXS'     => '2.2210',
            'File::Basename'        => '2.82',
            'HTTP::Tiny'            => '0.012',
            'IO::Handle'            => '1.31',
            'Module::CoreList'      => '2.49',
            'PerlIO'                => '1.07',
            'Pod::Html'             => '1.11',
            'XS::APItest'           => '0.28',
            'bigint'                => '0.27',
            'bignum'                => '0.27',
            'bigrat'                => '0.28',
            'constant'              => '1.21',
            'feature'               => '1.20',
            're'                    => '0.18',
            'threads::shared'       => '1.37',
        },
        removed => {
        }
    },
    5.014001 => {
        delta_from => 5.014,
        changed => {
            'B::Deparse'            => '1.04',
            'Module::CoreList'      => '2.49_01',
            'Pod::Perldoc'          => '3.15_04',
        },
        removed => {
        }
    },
    5.014002 => {
        delta_from => 5.014001,
        changed => {
            'CPAN'                  => '1.9600_01',
            'CPAN::Distribution'    => '1.9602_01',
            'Devel::DProf::dprof::V'=> undef,
            'Encode'                => '2.42_01',
            'File::Glob'            => '1.13',
            'Module::CoreList'      => '2.49_02',
            'PerlIO::scalar'        => '0.11_01',
            'Time::Piece::Seconds'  => undef,
        },
        removed => {
        }
    },
    5.014003 => {
        delta_from => 5.014002,
        changed => {
            'Digest'                => '1.16_01',
            'IPC::Open3'            => '1.09_01',
            'Module::CoreList'      => '2.49_04',
        },
        removed => {
        }
    },
    5.014004 => {
        delta_from => 5.014003,
        changed => {
            'Encode'                => '2.42_02',
            'IPC::Open3'            => '1.0901',
            'Module::CoreList'      => '2.49_06',
        },
        removed => {
        }
    },
    5.015 => {
        delta_from => 5.014001,
        changed => {
            'Archive::Extract'      => '0.52',
            'Attribute::Handlers'   => '0.91',
            'B'                     => '1.30',
            'B::Concise'            => '0.84',
            'B::Deparse'            => '1.05',
            'Benchmark'             => '1.13',
            'CGI'                   => '3.54',
            'CGI::Util'             => '3.53',
            'CPAN::Meta'            => '2.110930',
            'CPAN::Meta::Converter' => '2.110930',
            'CPAN::Meta::Feature'   => '2.110930',
            'CPAN::Meta::History'   => '2.110930',
            'CPAN::Meta::Prereqs'   => '2.110930',
            'CPAN::Meta::Spec'      => '2.110930',
            'CPAN::Meta::Validator' => '2.110930',
            'CPANPLUS'              => '0.9105',
            'CPANPLUS::Dist::Build' => '0.56',
            'CPANPLUS::Dist::Build::Constants'=> '0.56',
            'CPANPLUS::Internals'   => '0.9105',
            'CPANPLUS::Shell::Default'=> '0.9105',
            'Compress::Raw::Bzip2'  => '2.035',
            'Compress::Raw::Zlib'   => '2.035',
            'Compress::Zlib'        => '2.035',
            'DB_File'               => '1.822',
            'Data::Dumper'          => '2.131',
            'Devel::Peek'           => '1.08',
            'Digest::SHA'           => '5.62',
            'Encode'                => '2.43',
            'Encode::Alias'         => '2.14',
            'ExtUtils::CBuilder'    => '0.280204',
            'ExtUtils::CBuilder::Base'=> '0.280204',
            'Fatal'                 => '2.10',
            'File::Spec::Win32'     => '3.34',
            'Filter::Simple'        => '0.87',
            'Filter::Util::Call'    => '1.39',
            'FindBin'               => '1.51',
            'Hash::Util::FieldHash' => '1.10',
            'I18N::LangTags'        => '0.36',
            'IO::Compress::Adapter::Bzip2'=> '2.035',
            'IO::Compress::Adapter::Deflate'=> '2.035',
            'IO::Compress::Adapter::Identity'=> '2.035',
            'IO::Compress::Base'    => '2.035',
            'IO::Compress::Base::Common'=> '2.035',
            'IO::Compress::Bzip2'   => '2.035',
            'IO::Compress::Deflate' => '2.035',
            'IO::Compress::Gzip'    => '2.035',
            'IO::Compress::Gzip::Constants'=> '2.035',
            'IO::Compress::RawDeflate'=> '2.035',
            'IO::Compress::Zip'     => '2.035',
            'IO::Compress::Zip::Constants'=> '2.035',
            'IO::Compress::Zlib::Constants'=> '2.035',
            'IO::Compress::Zlib::Extra'=> '2.035',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.035',
            'IO::Uncompress::Adapter::Identity'=> '2.035',
            'IO::Uncompress::Adapter::Inflate'=> '2.035',
            'IO::Uncompress::AnyInflate'=> '2.035',
            'IO::Uncompress::AnyUncompress'=> '2.035',
            'IO::Uncompress::Base'  => '2.035',
            'IO::Uncompress::Bunzip2'=> '2.035',
            'IO::Uncompress::Gunzip'=> '2.035',
            'IO::Uncompress::Inflate'=> '2.035',
            'IO::Uncompress::RawInflate'=> '2.035',
            'IO::Uncompress::Unzip' => '2.035',
            'IPC::Open2'            => '1.04',
            'IPC::Open3'            => '1.11',
            'JSON::PP'              => '2.27200',
            'Math::BigFloat'        => '1.994',
            'Math::BigInt'          => '1.995',
            'Math::Complex'         => '1.57',
            'Math::Trig'            => '1.21',
            'Module::CoreList'      => '2.51',
            'ODBM_File'             => '1.11',
            'Object::Accessor'      => '0.42',
            'Opcode'                => '1.19',
            'PerlIO::encoding'      => '0.15',
            'PerlIO::scalar'        => '0.12',
            'Pod::Perldoc'          => '3.15_05',
            'Storable'              => '2.28',
            'Sys::Syslog'           => '0.29',
            'Time::HiRes'           => '1.9722',
            'Unicode::Collate'      => '0.76',
            'Unicode::Collate::CJK::Pinyin'=> '0.76',
            'Unicode::Collate::CJK::Stroke'=> '0.76',
            'Unicode::Collate::Locale'=> '0.76',
            'Unicode::Normalize'    => '1.12',
            'XS::APItest'           => '0.29',
            'XSLoader'              => '0.15',
            'autodie'               => '2.10',
            'autodie::exception'    => '2.10',
            'autodie::exception::system'=> '2.10',
            'autodie::hints'        => '2.10',
            'base'                  => '2.17',
            'charnames'             => '1.22',
            'constant'              => '1.22',
            'feature'               => '1.21',
            'mro'                   => '1.08',
            'overload'              => '1.14',
            'threads::shared'       => '1.38',
            'vmsish'                => '1.03',
        },
        removed => {
            'Devel::DProf'          => 1,
            'Shell'                 => 1,
        }
    },
    5.015001 => {
        delta_from => 5.015,
        changed => {
            'B::Deparse'            => '1.06',
            'CGI'                   => '3.55',
            'CPAN::Meta'            => '2.110930001',
            'CPAN::Meta::Converter' => '2.110930001',
            'CPANPLUS'              => '0.9108',
            'CPANPLUS::Internals'   => '0.9108',
            'CPANPLUS::Shell::Default'=> '0.9108',
            'Carp'                  => '1.21',
            'Carp::Heavy'           => '1.21',
            'Compress::Raw::Bzip2'  => '2.037',
            'Compress::Raw::Zlib'   => '2.037',
            'Compress::Zlib'        => '2.037',
            'Cwd'                   => '3.37',
            'Env'                   => '1.03',
            'ExtUtils::Command::MM' => '6.58',
            'ExtUtils::Liblist'     => '6.58',
            'ExtUtils::Liblist::Kid'=> '6.58',
            'ExtUtils::MM'          => '6.58',
            'ExtUtils::MM_AIX'      => '6.58',
            'ExtUtils::MM_Any'      => '6.58',
            'ExtUtils::MM_BeOS'     => '6.58',
            'ExtUtils::MM_Cygwin'   => '6.58',
            'ExtUtils::MM_DOS'      => '6.58',
            'ExtUtils::MM_Darwin'   => '6.58',
            'ExtUtils::MM_MacOS'    => '6.58',
            'ExtUtils::MM_NW5'      => '6.58',
            'ExtUtils::MM_OS2'      => '6.58',
            'ExtUtils::MM_QNX'      => '6.58',
            'ExtUtils::MM_UWIN'     => '6.58',
            'ExtUtils::MM_Unix'     => '6.58',
            'ExtUtils::MM_VMS'      => '6.58',
            'ExtUtils::MM_VOS'      => '6.58',
            'ExtUtils::MM_Win32'    => '6.58',
            'ExtUtils::MM_Win95'    => '6.58',
            'ExtUtils::MY'          => '6.58',
            'ExtUtils::MakeMaker'   => '6.58',
            'ExtUtils::MakeMaker::Config'=> '6.58',
            'ExtUtils::Mkbootstrap' => '6.58',
            'ExtUtils::Mksymlists'  => '6.58',
            'ExtUtils::ParseXS'     => '3.00_01',
            'ExtUtils::ParseXS::Constants'=> undef,
            'ExtUtils::ParseXS::CountLines'=> undef,
            'ExtUtils::ParseXS::Utilities'=> undef,
            'ExtUtils::Typemaps'    => '1.00',
            'ExtUtils::Typemaps::InputMap'=> undef,
            'ExtUtils::Typemaps::OutputMap'=> undef,
            'ExtUtils::Typemaps::Type'=> '0.05',
            'ExtUtils::testlib'     => '6.58',
            'File::Basename'        => '2.83',
            'File::Find'            => '1.20',
            'HTTP::Tiny'            => '0.013',
            'I18N::Langinfo'        => '0.08_02',
            'IO::Compress::Adapter::Bzip2'=> '2.037',
            'IO::Compress::Adapter::Deflate'=> '2.037',
            'IO::Compress::Adapter::Identity'=> '2.037',
            'IO::Compress::Base'    => '2.037',
            'IO::Compress::Base::Common'=> '2.037',
            'IO::Compress::Bzip2'   => '2.037',
            'IO::Compress::Deflate' => '2.037',
            'IO::Compress::Gzip'    => '2.037',
            'IO::Compress::Gzip::Constants'=> '2.037',
            'IO::Compress::RawDeflate'=> '2.037',
            'IO::Compress::Zip'     => '2.037',
            'IO::Compress::Zip::Constants'=> '2.037',
            'IO::Compress::Zlib::Constants'=> '2.037',
            'IO::Compress::Zlib::Extra'=> '2.037',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.037',
            'IO::Uncompress::Adapter::Identity'=> '2.037',
            'IO::Uncompress::Adapter::Inflate'=> '2.037',
            'IO::Uncompress::AnyInflate'=> '2.037',
            'IO::Uncompress::AnyUncompress'=> '2.037',
            'IO::Uncompress::Base'  => '2.037',
            'IO::Uncompress::Bunzip2'=> '2.037',
            'IO::Uncompress::Gunzip'=> '2.037',
            'IO::Uncompress::Inflate'=> '2.037',
            'IO::Uncompress::RawInflate'=> '2.037',
            'IO::Uncompress::Unzip' => '2.037',
            'IPC::Cmd'              => '0.72',
            'Locale::Codes'         => '3.17',
            'Locale::Codes::Constants'=> '3.17',
            'Locale::Codes::Country'=> '3.17',
            'Locale::Codes::Country_Codes'=> '3.17',
            'Locale::Codes::Currency'=> '3.17',
            'Locale::Codes::Currency_Codes'=> '3.17',
            'Locale::Codes::LangExt'=> '3.17',
            'Locale::Codes::LangExt_Codes'=> '3.17',
            'Locale::Codes::LangVar'=> '3.17',
            'Locale::Codes::LangVar_Codes'=> '3.17',
            'Locale::Codes::Language'=> '3.17',
            'Locale::Codes::Language_Codes'=> '3.17',
            'Locale::Codes::Script' => '3.17',
            'Locale::Codes::Script_Codes'=> '3.17',
            'Locale::Country'       => '3.17',
            'Locale::Currency'      => '3.17',
            'Locale::Language'      => '3.17',
            'Locale::Script'        => '3.17',
            'Math::BigFloat::Trace' => '0.28',
            'Math::BigInt::FastCalc'=> '0.29',
            'Math::BigInt::Trace'   => '0.28',
            'Math::BigRat'          => '0.2602',
            'Math::Complex'         => '1.58',
            'Math::Trig'            => '1.22',
            'Module::CoreList'      => '2.54',
            'OS2::Process'          => '1.07',
            'Pod::Perldoc'          => '3.15_06',
            'Pod::Simple'           => '3.18',
            'Pod::Simple::BlackBox' => '3.18',
            'Pod::Simple::Checker'  => '3.18',
            'Pod::Simple::Debug'    => '3.18',
            'Pod::Simple::DumpAsText'=> '3.18',
            'Pod::Simple::DumpAsXML'=> '3.18',
            'Pod::Simple::HTML'     => '3.18',
            'Pod::Simple::HTMLBatch'=> '3.18',
            'Pod::Simple::LinkSection'=> '3.18',
            'Pod::Simple::Methody'  => '3.18',
            'Pod::Simple::Progress' => '3.18',
            'Pod::Simple::PullParser'=> '3.18',
            'Pod::Simple::PullParserEndToken'=> '3.18',
            'Pod::Simple::PullParserStartToken'=> '3.18',
            'Pod::Simple::PullParserTextToken'=> '3.18',
            'Pod::Simple::PullParserToken'=> '3.18',
            'Pod::Simple::RTF'      => '3.18',
            'Pod::Simple::Search'   => '3.18',
            'Pod::Simple::SimpleTree'=> '3.18',
            'Pod::Simple::Text'     => '3.18',
            'Pod::Simple::TextContent'=> '3.18',
            'Pod::Simple::TiedOutFH'=> '3.18',
            'Pod::Simple::Transcode'=> '3.18',
            'Pod::Simple::TranscodeDumb'=> '3.18',
            'Pod::Simple::TranscodeSmart'=> '3.18',
            'Pod::Simple::XHTML'    => '3.18',
            'Pod::Simple::XMLOutStream'=> '3.18',
            'Storable'              => '2.31',
            'Sys::Syslog::Win32'    => undef,
            'Time::HiRes'           => '1.9724',
            'Unicode::Collate'      => '0.77',
            'Unicode::UCD'          => '0.33',
            'Win32API::File'        => '0.1200',
            'XS::APItest'           => '0.30',
            'attributes'            => '0.15',
            'bigint'                => '0.28',
            'bignum'                => '0.28',
            'charnames'             => '1.23',
            'diagnostics'           => '1.23',
            'feature'               => '1.22',
            'overload'              => '1.15',
            'perlfaq'               => '5.015000',
            'threads'               => '1.84',
            'version'               => '0.93',
        },
        removed => {
            'ExtUtils::MakeMaker::YAML'=> 1,
            'Locale::Constants'     => 1,
            'Sys::Syslog::win32::Win32'=> 1,
        }
    },
    5.015002 => {
        delta_from => 5.015001,
        changed => {
            'Attribute::Handlers'   => '0.92',
            'B'                     => '1.31',
            'B::Concise'            => '0.85',
            'B::Deparse'            => '1.07',
            'B::Terse'              => '1.06',
            'B::Xref'               => '1.03',
            'CPAN'                  => '1.9800',
            'CPAN::Exception::yaml_process_error'=> '5.5',
            'CPAN::Meta'            => '2.112150',
            'CPAN::Meta::Converter' => '2.112150',
            'CPAN::Meta::Feature'   => '2.112150',
            'CPAN::Meta::History'   => '2.112150',
            'CPAN::Meta::Prereqs'   => '2.112150',
            'CPAN::Meta::Spec'      => '2.112150',
            'CPAN::Meta::Validator' => '2.112150',
            'CPANPLUS'              => '0.9109',
            'CPANPLUS::Internals'   => '0.9109',
            'CPANPLUS::Shell::Default'=> '0.9109',
            'DB_File'               => '1.824',
            'Data::Dumper'          => '2.132',
            'Encode'                => '2.44',
            'Encode::Alias'         => '2.15',
            'Encode::Encoder'       => '2.02',
            'Encode::Guess'         => '2.05',
            'ExtUtils::Command::MM' => '6.59',
            'ExtUtils::Install'     => '1.57',
            'ExtUtils::Installed'   => '1.999002',
            'ExtUtils::Liblist'     => '6.59',
            'ExtUtils::Liblist::Kid'=> '6.59',
            'ExtUtils::MM'          => '6.59',
            'ExtUtils::MM_AIX'      => '6.59',
            'ExtUtils::MM_Any'      => '6.59',
            'ExtUtils::MM_BeOS'     => '6.59',
            'ExtUtils::MM_Cygwin'   => '6.59',
            'ExtUtils::MM_DOS'      => '6.59',
            'ExtUtils::MM_Darwin'   => '6.59',
            'ExtUtils::MM_MacOS'    => '6.59',
            'ExtUtils::MM_NW5'      => '6.59',
            'ExtUtils::MM_OS2'      => '6.59',
            'ExtUtils::MM_QNX'      => '6.59',
            'ExtUtils::MM_UWIN'     => '6.59',
            'ExtUtils::MM_Unix'     => '6.59',
            'ExtUtils::MM_VMS'      => '6.59',
            'ExtUtils::MM_VOS'      => '6.59',
            'ExtUtils::MM_Win32'    => '6.59',
            'ExtUtils::MM_Win95'    => '6.59',
            'ExtUtils::MY'          => '6.59',
            'ExtUtils::MakeMaker'   => '6.59',
            'ExtUtils::MakeMaker::Config'=> '6.59',
            'ExtUtils::Manifest'    => '1.60',
            'ExtUtils::Mkbootstrap' => '6.59',
            'ExtUtils::Mksymlists'  => '6.59',
            'ExtUtils::ParseXS'     => '3.03_01',
            'ExtUtils::Typemaps'    => '1.01',
            'ExtUtils::testlib'     => '6.59',
            'File::Spec'            => '3.34',
            'File::Spec::Mac'       => '3.35',
            'File::Spec::Unix'      => '3.34',
            'File::Spec::VMS'       => '3.35',
            'File::Spec::Win32'     => '3.35',
            'I18N::LangTags'        => '0.37',
            'IO'                    => '1.25_05',
            'IO::Handle'            => '1.32',
            'IO::Socket'            => '1.33',
            'IO::Socket::INET'      => '1.32',
            'IPC::Open3'            => '1.12',
            'Math::BigFloat'        => '1.995',
            'Math::BigFloat::Trace' => '0.29',
            'Math::BigInt'          => '1.996',
            'Math::BigInt::Trace'   => '0.29',
            'Module::Build'         => '0.39_01',
            'Module::Build::Base'   => '0.39_01',
            'Module::Build::Compat' => '0.39_01',
            'Module::Build::Config' => '0.39_01',
            'Module::Build::Cookbook'=> '0.39_01',
            'Module::Build::Dumper' => '0.39_01',
            'Module::Build::ModuleInfo'=> '0.39_01',
            'Module::Build::Notes'  => '0.39_01',
            'Module::Build::PPMMaker'=> '0.39_01',
            'Module::Build::Platform::Amiga'=> '0.39_01',
            'Module::Build::Platform::Default'=> '0.39_01',
            'Module::Build::Platform::EBCDIC'=> '0.39_01',
            'Module::Build::Platform::MPEiX'=> '0.39_01',
            'Module::Build::Platform::MacOS'=> '0.39_01',
            'Module::Build::Platform::RiscOS'=> '0.39_01',
            'Module::Build::Platform::Unix'=> '0.39_01',
            'Module::Build::Platform::VMS'=> '0.39_01',
            'Module::Build::Platform::VOS'=> '0.39_01',
            'Module::Build::Platform::Windows'=> '0.39_01',
            'Module::Build::Platform::aix'=> '0.39_01',
            'Module::Build::Platform::cygwin'=> '0.39_01',
            'Module::Build::Platform::darwin'=> '0.39_01',
            'Module::Build::Platform::os2'=> '0.39_01',
            'Module::Build::PodParser'=> '0.39_01',
            'Module::CoreList'      => '2.55',
            'Module::Load'          => '0.20',
            'Module::Metadata'      => '1.000005_01',
            'Opcode'                => '1.20',
            'Params::Check'         => '0.32',
            'PerlIO::via'           => '0.12',
            'Term::ANSIColor'       => '3.01',
            'Unicode::Collate'      => '0.78',
            'Unicode::Normalize'    => '1.13',
            'Unicode::UCD'          => '0.34',
            'bigint'                => '0.29',
            'bignum'                => '0.29',
            'bigrat'                => '0.29',
            'diagnostics'           => '1.24',
            'fields'                => '2.16',
            'inc::latest'           => '0.39_01',
        },
        removed => {
        }
    },
    5.015003 => {
        delta_from => 5.015002,
        changed => {
            'AnyDBM_File'           => '1.01',
            'Archive::Extract'      => '0.56',
            'Archive::Tar'          => '1.78',
            'Archive::Tar::Constant'=> '1.78',
            'Archive::Tar::File'    => '1.78',
            'Attribute::Handlers'   => '0.93',
            'B'                     => '1.32',
            'B::Concise'            => '0.86',
            'B::Deparse'            => '1.08',
            'CPAN::Meta'            => '2.112621',
            'CPAN::Meta::Converter' => '2.112621',
            'CPAN::Meta::Feature'   => '2.112621',
            'CPAN::Meta::History'   => '2.112621',
            'CPAN::Meta::Prereqs'   => '2.112621',
            'CPAN::Meta::Spec'      => '2.112621',
            'CPAN::Meta::Validator' => '2.112621',
            'CPAN::Meta::YAML'      => '0.004',
            'CPANPLUS'              => '0.9111',
            'CPANPLUS::Dist::Build' => '0.58',
            'CPANPLUS::Dist::Build::Constants'=> '0.58',
            'CPANPLUS::Internals'   => '0.9111',
            'CPANPLUS::Shell::Default'=> '0.9111',
            'Carp'                  => '1.23',
            'Carp::Heavy'           => '1.23',
            'Data::Dumper'          => '2.134',
            'Devel::PPPort'         => '3.20',
            'Errno'                 => '1.14',
            'Exporter'              => '5.65',
            'Exporter::Heavy'       => '5.65',
            'ExtUtils::ParseXS'     => '3.04_04',
            'ExtUtils::ParseXS::Constants'=> '3.04_04',
            'ExtUtils::ParseXS::CountLines'=> '3.04_04',
            'ExtUtils::ParseXS::Utilities'=> '3.04_04',
            'ExtUtils::Typemaps'    => '1.02',
            'File::Glob'            => '1.13',
            'Filter::Simple'        => '0.88',
            'IO'                    => '1.25_06',
            'IO::Handle'            => '1.33',
            'Locale::Codes'         => '3.18',
            'Locale::Codes::Constants'=> '3.18',
            'Locale::Codes::Country'=> '3.18',
            'Locale::Codes::Country_Codes'=> '3.18',
            'Locale::Codes::Currency'=> '3.18',
            'Locale::Codes::Currency_Codes'=> '3.18',
            'Locale::Codes::LangExt'=> '3.18',
            'Locale::Codes::LangExt_Codes'=> '3.18',
            'Locale::Codes::LangVar'=> '3.18',
            'Locale::Codes::LangVar_Codes'=> '3.18',
            'Locale::Codes::Language'=> '3.18',
            'Locale::Codes::Language_Codes'=> '3.18',
            'Locale::Codes::Script' => '3.18',
            'Locale::Codes::Script_Codes'=> '3.18',
            'Locale::Country'       => '3.18',
            'Locale::Currency'      => '3.18',
            'Locale::Language'      => '3.18',
            'Locale::Script'        => '3.18',
            'Math::BigFloat'        => '1.997',
            'Math::BigInt'          => '1.997',
            'Math::BigInt::Calc'    => '1.997',
            'Math::BigInt::CalcEmu' => '1.997',
            'Math::BigInt::FastCalc'=> '0.30',
            'Math::BigRat'          => '0.2603',
            'Module::CoreList'      => '2.56',
            'Module::Load::Conditional'=> '0.46',
            'Module::Metadata'      => '1.000007',
            'ODBM_File'             => '1.12',
            'POSIX'                 => '1.26',
            'Pod::Perldoc'          => '3.15_07',
            'Pod::Simple'           => '3.19',
            'Pod::Simple::BlackBox' => '3.19',
            'Pod::Simple::Checker'  => '3.19',
            'Pod::Simple::Debug'    => '3.19',
            'Pod::Simple::DumpAsText'=> '3.19',
            'Pod::Simple::DumpAsXML'=> '3.19',
            'Pod::Simple::HTML'     => '3.19',
            'Pod::Simple::HTMLBatch'=> '3.19',
            'Pod::Simple::LinkSection'=> '3.19',
            'Pod::Simple::Methody'  => '3.19',
            'Pod::Simple::Progress' => '3.19',
            'Pod::Simple::PullParser'=> '3.19',
            'Pod::Simple::PullParserEndToken'=> '3.19',
            'Pod::Simple::PullParserStartToken'=> '3.19',
            'Pod::Simple::PullParserTextToken'=> '3.19',
            'Pod::Simple::PullParserToken'=> '3.19',
            'Pod::Simple::RTF'      => '3.19',
            'Pod::Simple::Search'   => '3.19',
            'Pod::Simple::SimpleTree'=> '3.19',
            'Pod::Simple::Text'     => '3.19',
            'Pod::Simple::TextContent'=> '3.19',
            'Pod::Simple::TiedOutFH'=> '3.19',
            'Pod::Simple::Transcode'=> '3.19',
            'Pod::Simple::TranscodeDumb'=> '3.19',
            'Pod::Simple::TranscodeSmart'=> '3.19',
            'Pod::Simple::XHTML'    => '3.19',
            'Pod::Simple::XMLOutStream'=> '3.19',
            'Search::Dict'          => '1.04',
            'Socket'                => '1.94_01',
            'Storable'              => '2.32',
            'Text::Abbrev'          => '1.02',
            'Tie::Array'            => '1.05',
            'UNIVERSAL'             => '1.09',
            'Unicode::UCD'          => '0.35',
            'XS::APItest'           => '0.31',
            'XSLoader'              => '0.16',
            'attributes'            => '0.16',
            'diagnostics'           => '1.25',
            'open'                  => '1.09',
            'perlfaq'               => '5.0150034',
            'threads'               => '1.85',
            'threads::shared'       => '1.40',
        },
        removed => {
        }
    },
    5.015004 => {
        delta_from => 5.015003,
        changed => {
            'Archive::Tar'          => '1.80',
            'Archive::Tar::Constant'=> '1.80',
            'Archive::Tar::File'    => '1.80',
            'Digest'                => '1.17',
            'DynaLoader'            => '1.14',
            'ExtUtils::Command::MM' => '6.61_01',
            'ExtUtils::Liblist'     => '6.61_01',
            'ExtUtils::Liblist::Kid'=> '6.61_01',
            'ExtUtils::MM'          => '6.61_01',
            'ExtUtils::MM_AIX'      => '6.61_01',
            'ExtUtils::MM_Any'      => '6.61_01',
            'ExtUtils::MM_BeOS'     => '6.61_01',
            'ExtUtils::MM_Cygwin'   => '6.61_01',
            'ExtUtils::MM_DOS'      => '6.61_01',
            'ExtUtils::MM_Darwin'   => '6.61_01',
            'ExtUtils::MM_MacOS'    => '6.61_01',
            'ExtUtils::MM_NW5'      => '6.61_01',
            'ExtUtils::MM_OS2'      => '6.61_01',
            'ExtUtils::MM_QNX'      => '6.61_01',
            'ExtUtils::MM_UWIN'     => '6.61_01',
            'ExtUtils::MM_Unix'     => '6.61_01',
            'ExtUtils::MM_VMS'      => '6.61_01',
            'ExtUtils::MM_VOS'      => '6.61_01',
            'ExtUtils::MM_Win32'    => '6.61_01',
            'ExtUtils::MM_Win95'    => '6.61_01',
            'ExtUtils::MY'          => '6.61_01',
            'ExtUtils::MakeMaker'   => '6.61_01',
            'ExtUtils::MakeMaker::Config'=> '6.61_01',
            'ExtUtils::Mkbootstrap' => '6.61_01',
            'ExtUtils::Mksymlists'  => '6.61_01',
            'ExtUtils::ParseXS'     => '3.05',
            'ExtUtils::ParseXS::Constants'=> '3.05',
            'ExtUtils::ParseXS::CountLines'=> '3.05',
            'ExtUtils::ParseXS::Utilities'=> '3.05',
            'ExtUtils::testlib'     => '6.61_01',
            'File::DosGlob'         => '1.05',
            'Module::CoreList'      => '2.57',
            'Module::Load'          => '0.22',
            'Unicode::Collate'      => '0.80',
            'Unicode::Collate::Locale'=> '0.80',
            'Unicode::UCD'          => '0.36',
            'XS::APItest'           => '0.32',
            'XS::Typemap'           => '0.07',
            'attributes'            => '0.17',
            'base'                  => '2.18',
            'constant'              => '1.23',
            'mro'                   => '1.09',
            'open'                  => '1.10',
            'perlfaq'               => '5.0150035',
        },
        removed => {
        }
    },
    5.015005 => {
        delta_from => 5.015004,
        changed => {
            'Archive::Extract'      => '0.58',
            'B::Concise'            => '0.87',
            'B::Deparse'            => '1.09',
            'CGI'                   => '3.58',
            'CGI::Fast'             => '1.09',
            'CPANPLUS'              => '0.9112',
            'CPANPLUS::Dist::Build' => '0.60',
            'CPANPLUS::Dist::Build::Constants'=> '0.60',
            'CPANPLUS::Internals'   => '0.9112',
            'CPANPLUS::Shell::Default'=> '0.9112',
            'Compress::Raw::Bzip2'  => '2.042',
            'Compress::Raw::Zlib'   => '2.042',
            'Compress::Zlib'        => '2.042',
            'Digest::SHA'           => '5.63',
            'Errno'                 => '1.15',
            'ExtUtils::Command::MM' => '6.63_02',
            'ExtUtils::Liblist'     => '6.63_02',
            'ExtUtils::Liblist::Kid'=> '6.63_02',
            'ExtUtils::MM'          => '6.63_02',
            'ExtUtils::MM_AIX'      => '6.63_02',
            'ExtUtils::MM_Any'      => '6.63_02',
            'ExtUtils::MM_BeOS'     => '6.63_02',
            'ExtUtils::MM_Cygwin'   => '6.63_02',
            'ExtUtils::MM_DOS'      => '6.63_02',
            'ExtUtils::MM_Darwin'   => '6.63_02',
            'ExtUtils::MM_MacOS'    => '6.63_02',
            'ExtUtils::MM_NW5'      => '6.63_02',
            'ExtUtils::MM_OS2'      => '6.63_02',
            'ExtUtils::MM_QNX'      => '6.63_02',
            'ExtUtils::MM_UWIN'     => '6.63_02',
            'ExtUtils::MM_Unix'     => '6.63_02',
            'ExtUtils::MM_VMS'      => '6.63_02',
            'ExtUtils::MM_VOS'      => '6.63_02',
            'ExtUtils::MM_Win32'    => '6.63_02',
            'ExtUtils::MM_Win95'    => '6.63_02',
            'ExtUtils::MY'          => '6.63_02',
            'ExtUtils::MakeMaker'   => '6.63_02',
            'ExtUtils::MakeMaker::Config'=> '6.63_02',
            'ExtUtils::Mkbootstrap' => '6.63_02',
            'ExtUtils::Mksymlists'  => '6.63_02',
            'ExtUtils::testlib'     => '6.63_02',
            'File::DosGlob'         => '1.06',
            'File::Glob'            => '1.14',
            'HTTP::Tiny'            => '0.016',
            'IO::Compress::Adapter::Bzip2'=> '2.042',
            'IO::Compress::Adapter::Deflate'=> '2.042',
            'IO::Compress::Adapter::Identity'=> '2.042',
            'IO::Compress::Base'    => '2.042',
            'IO::Compress::Base::Common'=> '2.042',
            'IO::Compress::Bzip2'   => '2.042',
            'IO::Compress::Deflate' => '2.042',
            'IO::Compress::Gzip'    => '2.042',
            'IO::Compress::Gzip::Constants'=> '2.042',
            'IO::Compress::RawDeflate'=> '2.042',
            'IO::Compress::Zip'     => '2.042',
            'IO::Compress::Zip::Constants'=> '2.042',
            'IO::Compress::Zlib::Constants'=> '2.042',
            'IO::Compress::Zlib::Extra'=> '2.042',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.042',
            'IO::Uncompress::Adapter::Identity'=> '2.042',
            'IO::Uncompress::Adapter::Inflate'=> '2.042',
            'IO::Uncompress::AnyInflate'=> '2.042',
            'IO::Uncompress::AnyUncompress'=> '2.042',
            'IO::Uncompress::Base'  => '2.042',
            'IO::Uncompress::Bunzip2'=> '2.042',
            'IO::Uncompress::Gunzip'=> '2.042',
            'IO::Uncompress::Inflate'=> '2.042',
            'IO::Uncompress::RawInflate'=> '2.042',
            'IO::Uncompress::Unzip' => '2.042',
            'Locale::Maketext'      => '1.20',
            'Locale::Maketext::Guts'=> '1.20',
            'Locale::Maketext::GutsLoader'=> '1.20',
            'Module::CoreList'      => '2.58',
            'Opcode'                => '1.21',
            'Socket'                => '1.94_02',
            'Storable'              => '2.33',
            'UNIVERSAL'             => '1.10',
            'Unicode::Collate'      => '0.85',
            'Unicode::Collate::CJK::Pinyin'=> '0.85',
            'Unicode::Collate::CJK::Stroke'=> '0.85',
            'Unicode::Collate::Locale'=> '0.85',
            'Unicode::UCD'          => '0.37',
            'XS::APItest'           => '0.33',
            'arybase'               => '0.01',
            'charnames'             => '1.24',
            'feature'               => '1.23',
            'perlfaq'               => '5.0150036',
            'strict'                => '1.05',
            'unicore::Name'         => undef,
        },
        removed => {
        }
    },
    5.015006 => {
        delta_from => 5.015005,
        changed => {
            'Archive::Tar'          => '1.82',
            'Archive::Tar::Constant'=> '1.82',
            'Archive::Tar::File'    => '1.82',
            'AutoLoader'            => '5.72',
            'B::Concise'            => '0.88',
            'B::Debug'              => '1.17',
            'B::Deparse'            => '1.10',
            'CPAN::Meta::YAML'      => '0.005',
            'CPANPLUS'              => '0.9113',
            'CPANPLUS::Internals'   => '0.9113',
            'CPANPLUS::Shell::Default'=> '0.9113',
            'Carp'                  => '1.24',
            'Compress::Raw::Bzip2'  => '2.045',
            'Compress::Raw::Zlib'   => '2.045',
            'Compress::Zlib'        => '2.045',
            'Cwd'                   => '3.38',
            'DB'                    => '1.04',
            'Data::Dumper'          => '2.135_01',
            'Digest::SHA'           => '5.70',
            'Dumpvalue'             => '1.17',
            'Exporter'              => '5.66',
            'Exporter::Heavy'       => '5.66',
            'ExtUtils::CBuilder'    => '0.280205',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280204',
            'ExtUtils::Packlist'    => '1.45',
            'ExtUtils::ParseXS'     => '3.08',
            'ExtUtils::ParseXS::Constants'=> '3.08',
            'ExtUtils::ParseXS::CountLines'=> '3.08',
            'ExtUtils::ParseXS::Utilities'=> '3.08',
            'File::Basename'        => '2.84',
            'File::Glob'            => '1.15',
            'File::Spec::Unix'      => '3.35',
            'Getopt::Std'           => '1.07',
            'I18N::LangTags'        => '0.38',
            'IO::Compress::Adapter::Bzip2'=> '2.045',
            'IO::Compress::Adapter::Deflate'=> '2.045',
            'IO::Compress::Adapter::Identity'=> '2.045',
            'IO::Compress::Base'    => '2.046',
            'IO::Compress::Base::Common'=> '2.045',
            'IO::Compress::Bzip2'   => '2.045',
            'IO::Compress::Deflate' => '2.045',
            'IO::Compress::Gzip'    => '2.045',
            'IO::Compress::Gzip::Constants'=> '2.045',
            'IO::Compress::RawDeflate'=> '2.045',
            'IO::Compress::Zip'     => '2.046',
            'IO::Compress::Zip::Constants'=> '2.045',
            'IO::Compress::Zlib::Constants'=> '2.045',
            'IO::Compress::Zlib::Extra'=> '2.045',
            'IO::Dir'               => '1.09',
            'IO::File'              => '1.16',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.045',
            'IO::Uncompress::Adapter::Identity'=> '2.045',
            'IO::Uncompress::Adapter::Inflate'=> '2.045',
            'IO::Uncompress::AnyInflate'=> '2.045',
            'IO::Uncompress::AnyUncompress'=> '2.045',
            'IO::Uncompress::Base'  => '2.046',
            'IO::Uncompress::Bunzip2'=> '2.045',
            'IO::Uncompress::Gunzip'=> '2.045',
            'IO::Uncompress::Inflate'=> '2.045',
            'IO::Uncompress::RawInflate'=> '2.045',
            'IO::Uncompress::Unzip' => '2.046',
            'Locale::Codes'         => '3.20',
            'Locale::Codes::Constants'=> '3.20',
            'Locale::Codes::Country'=> '3.20',
            'Locale::Codes::Country_Codes'=> '3.20',
            'Locale::Codes::Country_Retired'=> '3.20',
            'Locale::Codes::Currency'=> '3.20',
            'Locale::Codes::Currency_Codes'=> '3.20',
            'Locale::Codes::Currency_Retired'=> '3.20',
            'Locale::Codes::LangExt'=> '3.20',
            'Locale::Codes::LangExt_Codes'=> '3.20',
            'Locale::Codes::LangExt_Retired'=> '3.20',
            'Locale::Codes::LangFam'=> '3.20',
            'Locale::Codes::LangFam_Codes'=> '3.20',
            'Locale::Codes::LangFam_Retired'=> '3.20',
            'Locale::Codes::LangVar'=> '3.20',
            'Locale::Codes::LangVar_Codes'=> '3.20',
            'Locale::Codes::LangVar_Retired'=> '3.20',
            'Locale::Codes::Language'=> '3.20',
            'Locale::Codes::Language_Codes'=> '3.20',
            'Locale::Codes::Language_Retired'=> '3.20',
            'Locale::Codes::Script' => '3.20',
            'Locale::Codes::Script_Codes'=> '3.20',
            'Locale::Codes::Script_Retired'=> '3.20',
            'Locale::Country'       => '3.20',
            'Locale::Currency'      => '3.20',
            'Locale::Language'      => '3.20',
            'Locale::Maketext'      => '1.21',
            'Locale::Script'        => '3.20',
            'Module::CoreList'      => '2.59',
            'Module::Loaded'        => '0.08',
            'Opcode'                => '1.22',
            'POSIX'                 => '1.27',
            'Pod::Html'             => '1.12',
            'Pod::LaTeX'            => '0.60',
            'Pod::Perldoc'          => '3.15_08',
            'Safe'                  => '2.30',
            'SelfLoader'            => '1.20',
            'Socket'                => '1.97',
            'Storable'              => '2.34',
            'UNIVERSAL'             => '1.11',
            'Unicode::Collate'      => '0.87',
            'Unicode::Collate::Locale'=> '0.87',
            'XS::APItest'           => '0.34',
            'arybase'               => '0.02',
            'charnames'             => '1.27',
            'diagnostics'           => '1.26',
            'feature'               => '1.24',
            'if'                    => '0.0602',
            'overload'              => '1.16',
            'sigtrap'               => '1.06',
            'strict'                => '1.06',
            'threads'               => '1.86',
            'version'               => '0.96',
        },
        removed => {
        }
    },
    5.015007 => {
        delta_from => 5.015006,
        changed => {
            'B'                     => '1.33',
            'B::Deparse'            => '1.11',
            'CGI'                   => '3.59',
            'CPAN::Meta'            => '2.113640',
            'CPAN::Meta::Converter' => '2.113640',
            'CPAN::Meta::Feature'   => '2.113640',
            'CPAN::Meta::History'   => '2.113640',
            'CPAN::Meta::Prereqs'   => '2.113640',
            'CPAN::Meta::Requirements'=> '2.113640',
            'CPAN::Meta::Spec'      => '2.113640',
            'CPAN::Meta::Validator' => '2.113640',
            'CPANPLUS'              => '0.9116',
            'CPANPLUS::Internals'   => '0.9116',
            'CPANPLUS::Shell::Default'=> '0.9116',
            'Cwd'                   => '3.39_01',
            'Data::Dumper'          => '2.135_03',
            'Devel::InnerPackage'   => '0.4',
            'ExtUtils::CBuilder::Base'=> '0.280205',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280205',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280205',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280205',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280205',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280205',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280205',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280205',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280205',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280205',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280205',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280205',
            'ExtUtils::Manifest'    => '1.61',
            'ExtUtils::Packlist'    => '1.46',
            'ExtUtils::ParseXS'     => '3.12',
            'ExtUtils::ParseXS::Constants'=> '3.12',
            'ExtUtils::ParseXS::CountLines'=> '3.12',
            'ExtUtils::ParseXS::Utilities'=> '3.12',
            'ExtUtils::Typemaps'    => '1.03',
            'ExtUtils::Typemaps::Cmd'=> undef,
            'ExtUtils::Typemaps::Type'=> '0.06',
            'File::Glob'            => '1.16',
            'File::Spec'            => '3.39_01',
            'File::Spec::Cygwin'    => '3.39_01',
            'File::Spec::Epoc'      => '3.39_01',
            'File::Spec::Functions' => '3.39_01',
            'File::Spec::Mac'       => '3.39_01',
            'File::Spec::OS2'       => '3.39_01',
            'File::Spec::Unix'      => '3.39_01',
            'File::Spec::VMS'       => '3.39_01',
            'File::Spec::Win32'     => '3.39_01',
            'IO::Dir'               => '1.10',
            'IO::Pipe'              => '1.15',
            'IO::Poll'              => '0.09',
            'IO::Select'            => '1.21',
            'IO::Socket'            => '1.34',
            'IO::Socket::INET'      => '1.33',
            'IO::Socket::UNIX'      => '1.24',
            'Locale::Maketext'      => '1.22',
            'Math::BigInt'          => '1.998',
            'Module::CoreList'      => '2.60',
            'Module::Pluggable'     => '4.0',
            'POSIX'                 => '1.28',
            'PerlIO::scalar'        => '0.13',
            'Pod::Html'             => '1.13',
            'Pod::Perldoc'          => '3.15_15',
            'Pod::Perldoc::BaseTo'  => '3.15_15',
            'Pod::Perldoc::GetOptsOO'=> '3.15_15',
            'Pod::Perldoc::ToANSI'  => '3.15_15',
            'Pod::Perldoc::ToChecker'=> '3.15_15',
            'Pod::Perldoc::ToMan'   => '3.15_15',
            'Pod::Perldoc::ToNroff' => '3.15_15',
            'Pod::Perldoc::ToPod'   => '3.15_15',
            'Pod::Perldoc::ToRtf'   => '3.15_15',
            'Pod::Perldoc::ToTerm'  => '3.15_15',
            'Pod::Perldoc::ToText'  => '3.15_15',
            'Pod::Perldoc::ToTk'    => '3.15_15',
            'Pod::Perldoc::ToXml'   => '3.15_15',
            'Term::UI'              => '0.30',
            'Tie::File'             => '0.98',
            'Unicode::UCD'          => '0.39',
            'Version::Requirements' => '0.101021',
            'XS::APItest'           => '0.35',
            '_charnames'            => '1.28',
            'arybase'               => '0.03',
            'autouse'               => '1.07',
            'charnames'             => '1.28',
            'diagnostics'           => '1.27',
            'feature'               => '1.25',
            'overload'              => '1.17',
            'overloading'           => '0.02',
            'perlfaq'               => '5.0150038',
        },
        removed => {
        }
    },
    5.015008 => {
        delta_from => 5.015007,
        changed => {
            'B'                     => '1.34',
            'B::Deparse'            => '1.12',
            'CPAN::Meta'            => '2.120351',
            'CPAN::Meta::Converter' => '2.120351',
            'CPAN::Meta::Feature'   => '2.120351',
            'CPAN::Meta::History'   => '2.120351',
            'CPAN::Meta::Prereqs'   => '2.120351',
            'CPAN::Meta::Requirements'=> '2.120351',
            'CPAN::Meta::Spec'      => '2.120351',
            'CPAN::Meta::Validator' => '2.120351',
            'CPAN::Meta::YAML'      => '0.007',
            'CPANPLUS'              => '0.9118',
            'CPANPLUS::Dist::Build' => '0.62',
            'CPANPLUS::Dist::Build::Constants'=> '0.62',
            'CPANPLUS::Internals'   => '0.9118',
            'CPANPLUS::Shell::Default'=> '0.9118',
            'Carp'                  => '1.25',
            'Carp::Heavy'           => '1.25',
            'Compress::Raw::Bzip2'  => '2.048',
            'Compress::Raw::Zlib'   => '2.048',
            'Compress::Zlib'        => '2.048',
            'Cwd'                   => '3.39_02',
            'DB_File'               => '1.826',
            'Data::Dumper'          => '2.135_05',
            'English'               => '1.05',
            'ExtUtils::Install'     => '1.58',
            'ExtUtils::ParseXS'     => '3.16',
            'ExtUtils::ParseXS::Constants'=> '3.16',
            'ExtUtils::ParseXS::CountLines'=> '3.16',
            'ExtUtils::ParseXS::Utilities'=> '3.16',
            'ExtUtils::Typemaps'    => '3.16',
            'ExtUtils::Typemaps::Cmd'=> '3.16',
            'ExtUtils::Typemaps::InputMap'=> '3.16',
            'ExtUtils::Typemaps::OutputMap'=> '3.16',
            'ExtUtils::Typemaps::Type'=> '3.16',
            'File::Copy'            => '2.23',
            'File::Glob'            => '1.17',
            'File::Spec'            => '3.39_02',
            'File::Spec::Cygwin'    => '3.39_02',
            'File::Spec::Epoc'      => '3.39_02',
            'File::Spec::Functions' => '3.39_02',
            'File::Spec::Mac'       => '3.39_02',
            'File::Spec::OS2'       => '3.39_02',
            'File::Spec::Unix'      => '3.39_02',
            'File::Spec::VMS'       => '3.39_02',
            'File::Spec::Win32'     => '3.39_02',
            'Filter::Util::Call'    => '1.40',
            'IO::Compress::Adapter::Bzip2'=> '2.048',
            'IO::Compress::Adapter::Deflate'=> '2.048',
            'IO::Compress::Adapter::Identity'=> '2.048',
            'IO::Compress::Base'    => '2.048',
            'IO::Compress::Base::Common'=> '2.048',
            'IO::Compress::Bzip2'   => '2.048',
            'IO::Compress::Deflate' => '2.048',
            'IO::Compress::Gzip'    => '2.048',
            'IO::Compress::Gzip::Constants'=> '2.048',
            'IO::Compress::RawDeflate'=> '2.048',
            'IO::Compress::Zip'     => '2.048',
            'IO::Compress::Zip::Constants'=> '2.048',
            'IO::Compress::Zlib::Constants'=> '2.048',
            'IO::Compress::Zlib::Extra'=> '2.048',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.048',
            'IO::Uncompress::Adapter::Identity'=> '2.048',
            'IO::Uncompress::Adapter::Inflate'=> '2.048',
            'IO::Uncompress::AnyInflate'=> '2.048',
            'IO::Uncompress::AnyUncompress'=> '2.048',
            'IO::Uncompress::Base'  => '2.048',
            'IO::Uncompress::Bunzip2'=> '2.048',
            'IO::Uncompress::Gunzip'=> '2.048',
            'IO::Uncompress::Inflate'=> '2.048',
            'IO::Uncompress::RawInflate'=> '2.048',
            'IO::Uncompress::Unzip' => '2.048',
            'IPC::Cmd'              => '0.76',
            'Math::Complex'         => '1.59',
            'Math::Trig'            => '1.23',
            'Module::Metadata'      => '1.000009',
            'Opcode'                => '1.23',
            'POSIX'                 => '1.30',
            'Parse::CPAN::Meta'     => '1.4402',
            'PerlIO::mmap'          => '0.010',
            'Pod::Checker'          => '1.51',
            'Pod::Find'             => '1.51',
            'Pod::Functions'        => '1.05',
            'Pod::Html'             => '1.14',
            'Pod::InputObjects'     => '1.51',
            'Pod::ParseUtils'       => '1.51',
            'Pod::Parser'           => '1.51',
            'Pod::PlainText'        => '2.05',
            'Pod::Select'           => '1.51',
            'Pod::Usage'            => '1.51',
            'Safe'                  => '2.31',
            'Socket'                => '1.98',
            'Term::Cap'             => '1.13',
            'Term::ReadLine'        => '1.08',
            'Time::HiRes'           => '1.9725',
            'Unicode'               => '6.1.0',
            'Unicode::UCD'          => '0.41',
            'Version::Requirements' => '0.101022',
            'XS::APItest'           => '0.36',
            'XS::Typemap'           => '0.08',
            '_charnames'            => '1.29',
            'arybase'               => '0.04',
            'charnames'             => '1.29',
            'diagnostics'           => '1.28',
            'feature'               => '1.26',
            'locale'                => '1.01',
            'overload'              => '1.18',
            'perlfaq'               => '5.0150039',
            're'                    => '0.19',
            'subs'                  => '1.01',
            'warnings'              => '1.13',
        },
        removed => {
        }
    },
    5.015009 => {
        delta_from => 5.015008,
        changed => {
            'B::Deparse'            => '1.13',
            'B::Lint'               => '1.14',
            'B::Lint::Debug'        => '1.14',
            'CPAN::Meta'            => '2.120630',
            'CPAN::Meta::Converter' => '2.120630',
            'CPAN::Meta::Feature'   => '2.120630',
            'CPAN::Meta::History'   => '2.120630',
            'CPAN::Meta::Prereqs'   => '2.120630',
            'CPAN::Meta::Requirements'=> '2.120630',
            'CPAN::Meta::Spec'      => '2.120630',
            'CPAN::Meta::Validator' => '2.120630',
            'CPANPLUS'              => '0.9121',
            'CPANPLUS::Internals'   => '0.9121',
            'CPANPLUS::Shell::Default'=> '0.9121',
            'Data::Dumper'          => '2.135_06',
            'Digest::SHA'           => '5.71',
            'ExtUtils::CBuilder'    => '0.280206',
            'ExtUtils::CBuilder::Base'=> '0.280206',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280206',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280206',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280206',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280206',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280206',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280206',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280206',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280206',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280206',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280206',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280206',
            'HTTP::Tiny'            => '0.017',
            'Locale::Codes'         => '3.21',
            'Locale::Codes::Constants'=> '3.21',
            'Locale::Codes::Country'=> '3.21',
            'Locale::Codes::Country_Codes'=> '3.21',
            'Locale::Codes::Country_Retired'=> '3.21',
            'Locale::Codes::Currency'=> '3.21',
            'Locale::Codes::Currency_Codes'=> '3.21',
            'Locale::Codes::Currency_Retired'=> '3.21',
            'Locale::Codes::LangExt'=> '3.21',
            'Locale::Codes::LangExt_Codes'=> '3.21',
            'Locale::Codes::LangExt_Retired'=> '3.21',
            'Locale::Codes::LangFam'=> '3.21',
            'Locale::Codes::LangFam_Codes'=> '3.21',
            'Locale::Codes::LangFam_Retired'=> '3.21',
            'Locale::Codes::LangVar'=> '3.21',
            'Locale::Codes::LangVar_Codes'=> '3.21',
            'Locale::Codes::LangVar_Retired'=> '3.21',
            'Locale::Codes::Language'=> '3.21',
            'Locale::Codes::Language_Codes'=> '3.21',
            'Locale::Codes::Language_Retired'=> '3.21',
            'Locale::Codes::Script' => '3.21',
            'Locale::Codes::Script_Codes'=> '3.21',
            'Locale::Codes::Script_Retired'=> '3.21',
            'Locale::Country'       => '3.21',
            'Locale::Currency'      => '3.21',
            'Locale::Language'      => '3.21',
            'Locale::Script'        => '3.21',
            'Module::CoreList'      => '2.65',
            'Pod::Html'             => '1.1501',
            'Pod::Perldoc'          => '3.17',
            'Pod::Perldoc::BaseTo'  => '3.17',
            'Pod::Perldoc::GetOptsOO'=> '3.17',
            'Pod::Perldoc::ToANSI'  => '3.17',
            'Pod::Perldoc::ToChecker'=> '3.17',
            'Pod::Perldoc::ToMan'   => '3.17',
            'Pod::Perldoc::ToNroff' => '3.17',
            'Pod::Perldoc::ToPod'   => '3.17',
            'Pod::Perldoc::ToRtf'   => '3.17',
            'Pod::Perldoc::ToTerm'  => '3.17',
            'Pod::Perldoc::ToText'  => '3.17',
            'Pod::Perldoc::ToTk'    => '3.17',
            'Pod::Perldoc::ToXml'   => '3.17',
            'Pod::Simple'           => '3.20',
            'Pod::Simple::BlackBox' => '3.20',
            'Pod::Simple::Checker'  => '3.20',
            'Pod::Simple::Debug'    => '3.20',
            'Pod::Simple::DumpAsText'=> '3.20',
            'Pod::Simple::DumpAsXML'=> '3.20',
            'Pod::Simple::HTML'     => '3.20',
            'Pod::Simple::HTMLBatch'=> '3.20',
            'Pod::Simple::LinkSection'=> '3.20',
            'Pod::Simple::Methody'  => '3.20',
            'Pod::Simple::Progress' => '3.20',
            'Pod::Simple::PullParser'=> '3.20',
            'Pod::Simple::PullParserEndToken'=> '3.20',
            'Pod::Simple::PullParserStartToken'=> '3.20',
            'Pod::Simple::PullParserTextToken'=> '3.20',
            'Pod::Simple::PullParserToken'=> '3.20',
            'Pod::Simple::RTF'      => '3.20',
            'Pod::Simple::Search'   => '3.20',
            'Pod::Simple::SimpleTree'=> '3.20',
            'Pod::Simple::Text'     => '3.20',
            'Pod::Simple::TextContent'=> '3.20',
            'Pod::Simple::TiedOutFH'=> '3.20',
            'Pod::Simple::Transcode'=> '3.20',
            'Pod::Simple::TranscodeDumb'=> '3.20',
            'Pod::Simple::TranscodeSmart'=> '3.20',
            'Pod::Simple::XHTML'    => '3.20',
            'Pod::Simple::XMLOutStream'=> '3.20',
            'Socket'                => '2.000',
            'Term::ReadLine'        => '1.09',
            'Unicode::Collate'      => '0.89',
            'Unicode::Collate::CJK::Korean'=> '0.88',
            'Unicode::Collate::Locale'=> '0.89',
            'Unicode::Normalize'    => '1.14',
            'Unicode::UCD'          => '0.42',
            'XS::APItest'           => '0.37',
            'arybase'               => '0.05',
            'attributes'            => '0.18',
            'charnames'             => '1.30',
            'feature'               => '1.27',
        },
        removed => {
        }
    },
    5.016 => {
        delta_from => 5.015009,
        changed => {
            'B::Concise'            => '0.89',
            'B::Deparse'            => '1.14',
            'Carp'                  => '1.26',
            'Carp::Heavy'           => '1.26',
            'IO::Socket'            => '1.35',
            'Module::CoreList'      => '2.66',
            'PerlIO::scalar'        => '0.14',
            'Pod::Html'             => '1.1502',
            'Safe'                  => '2.31_01',
            'Socket'                => '2.001',
            'Unicode::UCD'          => '0.43',
            'XS::APItest'           => '0.38',
            '_charnames'            => '1.31',
            'attributes'            => '0.19',
            'strict'                => '1.07',
            'version'               => '0.99',
        },
        removed => {
        }
    },
    5.016001 => {
        delta_from => 5.016,
        changed => {
            'B'                     => '1.35',
            'B::Deparse'            => '1.14_01',
            'List::Util'            => '1.25',
            'List::Util::PP'        => '1.25',
            'List::Util::XS'        => '1.25',
            'Module::CoreList'      => '2.70',
            'PerlIO::scalar'        => '0.14_01',
            'Scalar::Util'          => '1.25',
            'Scalar::Util::PP'      => '1.25',
            're'                    => '0.19_01',
        },
        removed => {
        }
    },
    5.016002 => {
        delta_from => 5.016001,
        changed => {
            'Module::CoreList'      => '2.76',
        },
        removed => {
        }
    },
    5.016003 => {
        delta_from => 5.016002,
        changed => {
            'Encode'                => '2.44_01',
            'Module::CoreList'      => '2.76_02',
            'XS::APItest'           => '0.39',
        },
        removed => {
        }
    },
    5.017 => {
        delta_from => 5.016,
        changed => {
            'B'                     => '1.35',
            'B::Concise'            => '0.90',
            'ExtUtils::ParseXS'     => '3.17',
            'ExtUtils::ParseXS::Utilities'=> '3.17',
            'File::DosGlob'         => '1.07',
            'File::Find'            => '1.21',
            'File::stat'            => '1.06',
            'Hash::Util'            => '0.12',
            'IO::Socket'            => '1.34',
            'Module::CoreList'      => '2.67',
            'Pod::Functions'        => '1.06',
            'Storable'              => '2.35',
            'XS::APItest'           => '0.39',
            'diagnostics'           => '1.29',
            'feature'               => '1.28',
            'overload'              => '1.19',
            'utf8'                  => '1.10',
        },
        removed => {
            'Version::Requirements' => 1,
        }
    },
    5.017001 => {
        delta_from => 5.017,
        changed => {
            'App::Prove'            => '3.25',
            'App::Prove::State'     => '3.25',
            'App::Prove::State::Result'=> '3.25',
            'App::Prove::State::Result::Test'=> '3.25',
            'Archive::Extract'      => '0.60',
            'Archive::Tar'          => '1.88',
            'Archive::Tar::Constant'=> '1.88',
            'Archive::Tar::File'    => '1.88',
            'B'                     => '1.36',
            'B::Deparse'            => '1.15',
            'CPAN::Meta'            => '2.120921',
            'CPAN::Meta::Converter' => '2.120921',
            'CPAN::Meta::Feature'   => '2.120921',
            'CPAN::Meta::History'   => '2.120921',
            'CPAN::Meta::Prereqs'   => '2.120921',
            'CPAN::Meta::Requirements'=> '2.122',
            'CPAN::Meta::Spec'      => '2.120921',
            'CPAN::Meta::Validator' => '2.120921',
            'CPAN::Meta::YAML'      => '0.008',
            'CPANPLUS'              => '0.9130',
            'CPANPLUS::Config::HomeEnv'=> '0.04',
            'CPANPLUS::Internals'   => '0.9130',
            'CPANPLUS::Shell::Default'=> '0.9130',
            'Class::Struct'         => '0.64',
            'Compress::Raw::Bzip2'  => '2.052',
            'Compress::Raw::Zlib'   => '2.054',
            'Compress::Zlib'        => '2.052',
            'Digest::MD5'           => '2.52',
            'DynaLoader'            => '1.15',
            'ExtUtils::CBuilder'    => '0.280208',
            'ExtUtils::CBuilder::Base'=> '0.280208',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280208',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280208',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280208',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280208',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280208',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280208',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280208',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280208',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280208',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280208',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280208',
            'Fatal'                 => '2.11',
            'File::DosGlob'         => '1.08',
            'File::Fetch'           => '0.34',
            'File::Spec::Unix'      => '3.39_03',
            'Filter::Util::Call'    => '1.45',
            'HTTP::Tiny'            => '0.022',
            'IO'                    => '1.25_07',
            'IO::Compress::Adapter::Bzip2'=> '2.052',
            'IO::Compress::Adapter::Deflate'=> '2.052',
            'IO::Compress::Adapter::Identity'=> '2.052',
            'IO::Compress::Base'    => '2.052',
            'IO::Compress::Base::Common'=> '2.052',
            'IO::Compress::Bzip2'   => '2.052',
            'IO::Compress::Deflate' => '2.052',
            'IO::Compress::Gzip'    => '2.052',
            'IO::Compress::Gzip::Constants'=> '2.052',
            'IO::Compress::RawDeflate'=> '2.052',
            'IO::Compress::Zip'     => '2.052',
            'IO::Compress::Zip::Constants'=> '2.052',
            'IO::Compress::Zlib::Constants'=> '2.052',
            'IO::Compress::Zlib::Extra'=> '2.052',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.052',
            'IO::Uncompress::Adapter::Identity'=> '2.052',
            'IO::Uncompress::Adapter::Inflate'=> '2.052',
            'IO::Uncompress::AnyInflate'=> '2.052',
            'IO::Uncompress::AnyUncompress'=> '2.052',
            'IO::Uncompress::Base'  => '2.052',
            'IO::Uncompress::Bunzip2'=> '2.052',
            'IO::Uncompress::Gunzip'=> '2.052',
            'IO::Uncompress::Inflate'=> '2.052',
            'IO::Uncompress::RawInflate'=> '2.052',
            'IO::Uncompress::Unzip' => '2.052',
            'IPC::Cmd'              => '0.78',
            'List::Util'            => '1.25',
            'List::Util::XS'        => '1.25',
            'Locale::Codes'         => '3.22',
            'Locale::Codes::Constants'=> '3.22',
            'Locale::Codes::Country'=> '3.22',
            'Locale::Codes::Country_Codes'=> '3.22',
            'Locale::Codes::Country_Retired'=> '3.22',
            'Locale::Codes::Currency'=> '3.22',
            'Locale::Codes::Currency_Codes'=> '3.22',
            'Locale::Codes::Currency_Retired'=> '3.22',
            'Locale::Codes::LangExt'=> '3.22',
            'Locale::Codes::LangExt_Codes'=> '3.22',
            'Locale::Codes::LangExt_Retired'=> '3.22',
            'Locale::Codes::LangFam'=> '3.22',
            'Locale::Codes::LangFam_Codes'=> '3.22',
            'Locale::Codes::LangFam_Retired'=> '3.22',
            'Locale::Codes::LangVar'=> '3.22',
            'Locale::Codes::LangVar_Codes'=> '3.22',
            'Locale::Codes::LangVar_Retired'=> '3.22',
            'Locale::Codes::Language'=> '3.22',
            'Locale::Codes::Language_Codes'=> '3.22',
            'Locale::Codes::Language_Retired'=> '3.22',
            'Locale::Codes::Script' => '3.22',
            'Locale::Codes::Script_Codes'=> '3.22',
            'Locale::Codes::Script_Retired'=> '3.22',
            'Locale::Country'       => '3.22',
            'Locale::Currency'      => '3.22',
            'Locale::Language'      => '3.22',
            'Locale::Script'        => '3.22',
            'Memoize'               => '1.03',
            'Memoize::AnyDBM_File'  => '1.03',
            'Memoize::Expire'       => '1.03',
            'Memoize::ExpireFile'   => '1.03',
            'Memoize::ExpireTest'   => '1.03',
            'Memoize::NDBM_File'    => '1.03',
            'Memoize::SDBM_File'    => '1.03',
            'Memoize::Storable'     => '1.03',
            'Module::Build'         => '0.40',
            'Module::Build::Base'   => '0.40',
            'Module::Build::Compat' => '0.40',
            'Module::Build::Config' => '0.40',
            'Module::Build::Cookbook'=> '0.40',
            'Module::Build::Dumper' => '0.40',
            'Module::Build::ModuleInfo'=> '0.40',
            'Module::Build::Notes'  => '0.40',
            'Module::Build::PPMMaker'=> '0.40',
            'Module::Build::Platform::Amiga'=> '0.40',
            'Module::Build::Platform::Default'=> '0.40',
            'Module::Build::Platform::EBCDIC'=> '0.40',
            'Module::Build::Platform::MPEiX'=> '0.40',
            'Module::Build::Platform::MacOS'=> '0.40',
            'Module::Build::Platform::RiscOS'=> '0.40',
            'Module::Build::Platform::Unix'=> '0.40',
            'Module::Build::Platform::VMS'=> '0.40',
            'Module::Build::Platform::VOS'=> '0.40',
            'Module::Build::Platform::Windows'=> '0.40',
            'Module::Build::Platform::aix'=> '0.40',
            'Module::Build::Platform::cygwin'=> '0.40',
            'Module::Build::Platform::darwin'=> '0.40',
            'Module::Build::Platform::os2'=> '0.40',
            'Module::Build::PodParser'=> '0.40',
            'Module::CoreList'      => '2.68',
            'Module::Load::Conditional'=> '0.50',
            'Object::Accessor'      => '0.44',
            'POSIX'                 => '1.31',
            'Params::Check'         => '0.36',
            'Parse::CPAN::Meta'     => '1.4404',
            'PerlIO::mmap'          => '0.011',
            'PerlIO::via::QuotedPrint'=> '0.07',
            'Pod::Html'             => '1.16',
            'Pod::Man'              => '2.26',
            'Pod::Text'             => '3.16',
            'Safe'                  => '2.33_01',
            'Scalar::Util'          => '1.25',
            'Search::Dict'          => '1.07',
            'Storable'              => '2.36',
            'TAP::Base'             => '3.25',
            'TAP::Formatter::Base'  => '3.25',
            'TAP::Formatter::Color' => '3.25',
            'TAP::Formatter::Console'=> '3.25',
            'TAP::Formatter::Console::ParallelSession'=> '3.25',
            'TAP::Formatter::Console::Session'=> '3.25',
            'TAP::Formatter::File'  => '3.25',
            'TAP::Formatter::File::Session'=> '3.25',
            'TAP::Formatter::Session'=> '3.25',
            'TAP::Harness'          => '3.25',
            'TAP::Object'           => '3.25',
            'TAP::Parser'           => '3.25',
            'TAP::Parser::Aggregator'=> '3.25',
            'TAP::Parser::Grammar'  => '3.25',
            'TAP::Parser::Iterator' => '3.25',
            'TAP::Parser::Iterator::Array'=> '3.25',
            'TAP::Parser::Iterator::Process'=> '3.25',
            'TAP::Parser::Iterator::Stream'=> '3.25',
            'TAP::Parser::IteratorFactory'=> '3.25',
            'TAP::Parser::Multiplexer'=> '3.25',
            'TAP::Parser::Result'   => '3.25',
            'TAP::Parser::Result::Bailout'=> '3.25',
            'TAP::Parser::Result::Comment'=> '3.25',
            'TAP::Parser::Result::Plan'=> '3.25',
            'TAP::Parser::Result::Pragma'=> '3.25',
            'TAP::Parser::Result::Test'=> '3.25',
            'TAP::Parser::Result::Unknown'=> '3.25',
            'TAP::Parser::Result::Version'=> '3.25',
            'TAP::Parser::Result::YAML'=> '3.25',
            'TAP::Parser::ResultFactory'=> '3.25',
            'TAP::Parser::Scheduler'=> '3.25',
            'TAP::Parser::Scheduler::Job'=> '3.25',
            'TAP::Parser::Scheduler::Spinner'=> '3.25',
            'TAP::Parser::Source'   => '3.25',
            'TAP::Parser::SourceHandler'=> '3.25',
            'TAP::Parser::SourceHandler::Executable'=> '3.25',
            'TAP::Parser::SourceHandler::File'=> '3.25',
            'TAP::Parser::SourceHandler::Handle'=> '3.25',
            'TAP::Parser::SourceHandler::Perl'=> '3.25',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.25',
            'TAP::Parser::Utils'    => '3.25',
            'TAP::Parser::YAMLish::Reader'=> '3.25',
            'TAP::Parser::YAMLish::Writer'=> '3.25',
            'Term::ANSIColor'       => '3.02',
            'Test::Harness'         => '3.25',
            'Unicode'               => '6.2.0',
            'Unicode::UCD'          => '0.44',
            'XS::APItest'           => '0.40',
            '_charnames'            => '1.32',
            'attributes'            => '0.2',
            'autodie'               => '2.11',
            'autodie::exception'    => '2.11',
            'autodie::exception::system'=> '2.11',
            'autodie::hints'        => '2.11',
            'bigint'                => '0.30',
            'charnames'             => '1.32',
            'feature'               => '1.29',
            'inc::latest'           => '0.40',
            'perlfaq'               => '5.0150040',
            're'                    => '0.20',
        },
        removed => {
            'List::Util::PP'        => 1,
            'Scalar::Util::PP'      => 1,
        }
    },
    5.017002 => {
        delta_from => 5.017001,
        changed => {
            'App::Prove'            => '3.25_01',
            'App::Prove::State'     => '3.25_01',
            'App::Prove::State::Result'=> '3.25_01',
            'App::Prove::State::Result::Test'=> '3.25_01',
            'B::Concise'            => '0.91',
            'Compress::Raw::Bzip2'  => '2.05201',
            'Compress::Raw::Zlib'   => '2.05401',
            'Exporter'              => '5.67',
            'Exporter::Heavy'       => '5.67',
            'Fatal'                 => '2.12',
            'File::Fetch'           => '0.36',
            'File::stat'            => '1.07',
            'IO'                    => '1.25_08',
            'IO::Socket'            => '1.35',
            'Module::CoreList'      => '2.69',
            'PerlIO::scalar'        => '0.15',
            'Socket'                => '2.002',
            'Storable'              => '2.37',
            'TAP::Base'             => '3.25_01',
            'TAP::Formatter::Base'  => '3.25_01',
            'TAP::Formatter::Color' => '3.25_01',
            'TAP::Formatter::Console'=> '3.25_01',
            'TAP::Formatter::Console::ParallelSession'=> '3.25_01',
            'TAP::Formatter::Console::Session'=> '3.25_01',
            'TAP::Formatter::File'  => '3.25_01',
            'TAP::Formatter::File::Session'=> '3.25_01',
            'TAP::Formatter::Session'=> '3.25_01',
            'TAP::Harness'          => '3.25_01',
            'TAP::Object'           => '3.25_01',
            'TAP::Parser'           => '3.25_01',
            'TAP::Parser::Aggregator'=> '3.25_01',
            'TAP::Parser::Grammar'  => '3.25_01',
            'TAP::Parser::Iterator' => '3.25_01',
            'TAP::Parser::Iterator::Array'=> '3.25_01',
            'TAP::Parser::Iterator::Process'=> '3.25_01',
            'TAP::Parser::Iterator::Stream'=> '3.25_01',
            'TAP::Parser::IteratorFactory'=> '3.25_01',
            'TAP::Parser::Multiplexer'=> '3.25_01',
            'TAP::Parser::Result'   => '3.25_01',
            'TAP::Parser::Result::Bailout'=> '3.25_01',
            'TAP::Parser::Result::Comment'=> '3.25_01',
            'TAP::Parser::Result::Plan'=> '3.25_01',
            'TAP::Parser::Result::Pragma'=> '3.25_01',
            'TAP::Parser::Result::Test'=> '3.25_01',
            'TAP::Parser::Result::Unknown'=> '3.25_01',
            'TAP::Parser::Result::Version'=> '3.25_01',
            'TAP::Parser::Result::YAML'=> '3.25_01',
            'TAP::Parser::ResultFactory'=> '3.25_01',
            'TAP::Parser::Scheduler'=> '3.25_01',
            'TAP::Parser::Scheduler::Job'=> '3.25_01',
            'TAP::Parser::Scheduler::Spinner'=> '3.25_01',
            'TAP::Parser::Source'   => '3.25_01',
            'TAP::Parser::SourceHandler'=> '3.25_01',
            'TAP::Parser::SourceHandler::Executable'=> '3.25_01',
            'TAP::Parser::SourceHandler::File'=> '3.25_01',
            'TAP::Parser::SourceHandler::Handle'=> '3.25_01',
            'TAP::Parser::SourceHandler::Perl'=> '3.25_01',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.25_01',
            'TAP::Parser::Utils'    => '3.25_01',
            'TAP::Parser::YAMLish::Reader'=> '3.25_01',
            'TAP::Parser::YAMLish::Writer'=> '3.25_01',
            'Test::Harness'         => '3.25_01',
            'Tie::StdHandle'        => '4.3',
            'XS::APItest'           => '0.41',
            'autodie'               => '2.12',
            'autodie::exception'    => '2.12',
            'autodie::exception::system'=> '2.12',
            'autodie::hints'        => '2.12',
            'diagnostics'           => '1.30',
            'overload'              => '1.20',
            're'                    => '0.21',
            'vars'                  => '1.03',
        },
        removed => {
        }
    },
    5.017003 => {
        delta_from => 5.017002,
        changed => {
            'B'                     => '1.37',
            'B::Concise'            => '0.92',
            'B::Debug'              => '1.18',
            'B::Deparse'            => '1.16',
            'CGI'                   => '3.60',
            'Compress::Raw::Bzip2'  => '2.055',
            'Compress::Raw::Zlib'   => '2.056',
            'Compress::Zlib'        => '2.055',
            'Data::Dumper'          => '2.135_07',
            'Devel::Peek'           => '1.09',
            'Encode'                => '2.47',
            'Encode::Alias'         => '2.16',
            'Encode::GSM0338'       => '2.02',
            'Encode::Unicode::UTF7' => '2.06',
            'IO::Compress::Adapter::Bzip2'=> '2.055',
            'IO::Compress::Adapter::Deflate'=> '2.055',
            'IO::Compress::Adapter::Identity'=> '2.055',
            'IO::Compress::Base'    => '2.055',
            'IO::Compress::Base::Common'=> '2.055',
            'IO::Compress::Bzip2'   => '2.055',
            'IO::Compress::Deflate' => '2.055',
            'IO::Compress::Gzip'    => '2.055',
            'IO::Compress::Gzip::Constants'=> '2.055',
            'IO::Compress::RawDeflate'=> '2.055',
            'IO::Compress::Zip'     => '2.055',
            'IO::Compress::Zip::Constants'=> '2.055',
            'IO::Compress::Zlib::Constants'=> '2.055',
            'IO::Compress::Zlib::Extra'=> '2.055',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.055',
            'IO::Uncompress::Adapter::Identity'=> '2.055',
            'IO::Uncompress::Adapter::Inflate'=> '2.055',
            'IO::Uncompress::AnyInflate'=> '2.055',
            'IO::Uncompress::AnyUncompress'=> '2.055',
            'IO::Uncompress::Base'  => '2.055',
            'IO::Uncompress::Bunzip2'=> '2.055',
            'IO::Uncompress::Gunzip'=> '2.055',
            'IO::Uncompress::Inflate'=> '2.055',
            'IO::Uncompress::RawInflate'=> '2.055',
            'IO::Uncompress::Unzip' => '2.055',
            'Module::Build'         => '0.4003',
            'Module::Build::Base'   => '0.4003',
            'Module::Build::Compat' => '0.4003',
            'Module::Build::Config' => '0.4003',
            'Module::Build::Cookbook'=> '0.4003',
            'Module::Build::Dumper' => '0.4003',
            'Module::Build::ModuleInfo'=> '0.4003',
            'Module::Build::Notes'  => '0.4003',
            'Module::Build::PPMMaker'=> '0.4003',
            'Module::Build::Platform::Amiga'=> '0.4003',
            'Module::Build::Platform::Default'=> '0.4003',
            'Module::Build::Platform::EBCDIC'=> '0.4003',
            'Module::Build::Platform::MPEiX'=> '0.4003',
            'Module::Build::Platform::MacOS'=> '0.4003',
            'Module::Build::Platform::RiscOS'=> '0.4003',
            'Module::Build::Platform::Unix'=> '0.4003',
            'Module::Build::Platform::VMS'=> '0.4003',
            'Module::Build::Platform::VOS'=> '0.4003',
            'Module::Build::Platform::Windows'=> '0.4003',
            'Module::Build::Platform::aix'=> '0.4003',
            'Module::Build::Platform::cygwin'=> '0.4003',
            'Module::Build::Platform::darwin'=> '0.4003',
            'Module::Build::Platform::os2'=> '0.4003',
            'Module::Build::PodParser'=> '0.4003',
            'Module::CoreList'      => '2.71',
            'Module::CoreList::TieHashDelta'=> '2.71',
            'Module::Load::Conditional'=> '0.54',
            'Module::Metadata'      => '1.000011',
            'Module::Pluggable'     => '4.3',
            'Module::Pluggable::Object'=> '4.3',
            'Pod::Simple'           => '3.23',
            'Pod::Simple::BlackBox' => '3.23',
            'Pod::Simple::Checker'  => '3.23',
            'Pod::Simple::Debug'    => '3.23',
            'Pod::Simple::DumpAsText'=> '3.23',
            'Pod::Simple::DumpAsXML'=> '3.23',
            'Pod::Simple::HTML'     => '3.23',
            'Pod::Simple::HTMLBatch'=> '3.23',
            'Pod::Simple::LinkSection'=> '3.23',
            'Pod::Simple::Methody'  => '3.23',
            'Pod::Simple::Progress' => '3.23',
            'Pod::Simple::PullParser'=> '3.23',
            'Pod::Simple::PullParserEndToken'=> '3.23',
            'Pod::Simple::PullParserStartToken'=> '3.23',
            'Pod::Simple::PullParserTextToken'=> '3.23',
            'Pod::Simple::PullParserToken'=> '3.23',
            'Pod::Simple::RTF'      => '3.23',
            'Pod::Simple::Search'   => '3.23',
            'Pod::Simple::SimpleTree'=> '3.23',
            'Pod::Simple::Text'     => '3.23',
            'Pod::Simple::TextContent'=> '3.23',
            'Pod::Simple::TiedOutFH'=> '3.23',
            'Pod::Simple::Transcode'=> '3.23',
            'Pod::Simple::TranscodeDumb'=> '3.23',
            'Pod::Simple::TranscodeSmart'=> '3.23',
            'Pod::Simple::XHTML'    => '3.23',
            'Pod::Simple::XMLOutStream'=> '3.23',
            'Socket'                => '2.004',
            'Storable'              => '2.38',
            'Sys::Syslog'           => '0.31',
            'Term::ReadLine'        => '1.10',
            'Text::Tabs'            => '2012.0818',
            'Text::Wrap'            => '2012.0818',
            'Time::Local'           => '1.2300',
            'Unicode::UCD'          => '0.45',
            'Win32'                 => '0.45',
            'Win32CORE'             => '0.03',
            'XS::APItest'           => '0.42',
            'inc::latest'           => '0.4003',
            'perlfaq'               => '5.0150041',
            're'                    => '0.22',
        },
        removed => {
        }
    },
    5.017004 => {
        delta_from => 5.017003,
        changed => {
            'Archive::Tar'          => '1.90',
            'Archive::Tar::Constant'=> '1.90',
            'Archive::Tar::File'    => '1.90',
            'B'                     => '1.38',
            'B::Concise'            => '0.93',
            'B::Deparse'            => '1.17',
            'B::Xref'               => '1.04',
            'CPANPLUS'              => '0.9131',
            'CPANPLUS::Internals'   => '0.9131',
            'CPANPLUS::Shell::Default'=> '0.9131',
            'DB_File'               => '1.827',
            'Devel::Peek'           => '1.10',
            'DynaLoader'            => '1.16',
            'Errno'                 => '1.16',
            'ExtUtils::ParseXS'     => '3.18',
            'ExtUtils::ParseXS::Constants'=> '3.18',
            'ExtUtils::ParseXS::CountLines'=> '3.18',
            'ExtUtils::ParseXS::Utilities'=> '3.18',
            'File::Copy'            => '2.24',
            'File::Find'            => '1.22',
            'IPC::Open3'            => '1.13',
            'Locale::Codes'         => '3.23',
            'Locale::Codes::Constants'=> '3.23',
            'Locale::Codes::Country'=> '3.23',
            'Locale::Codes::Country_Codes'=> '3.23',
            'Locale::Codes::Country_Retired'=> '3.23',
            'Locale::Codes::Currency'=> '3.23',
            'Locale::Codes::Currency_Codes'=> '3.23',
            'Locale::Codes::Currency_Retired'=> '3.23',
            'Locale::Codes::LangExt'=> '3.23',
            'Locale::Codes::LangExt_Codes'=> '3.23',
            'Locale::Codes::LangExt_Retired'=> '3.23',
            'Locale::Codes::LangFam'=> '3.23',
            'Locale::Codes::LangFam_Codes'=> '3.23',
            'Locale::Codes::LangFam_Retired'=> '3.23',
            'Locale::Codes::LangVar'=> '3.23',
            'Locale::Codes::LangVar_Codes'=> '3.23',
            'Locale::Codes::LangVar_Retired'=> '3.23',
            'Locale::Codes::Language'=> '3.23',
            'Locale::Codes::Language_Codes'=> '3.23',
            'Locale::Codes::Language_Retired'=> '3.23',
            'Locale::Codes::Script' => '3.23',
            'Locale::Codes::Script_Codes'=> '3.23',
            'Locale::Codes::Script_Retired'=> '3.23',
            'Locale::Country'       => '3.23',
            'Locale::Currency'      => '3.23',
            'Locale::Language'      => '3.23',
            'Locale::Script'        => '3.23',
            'Math::BigFloat::Trace' => '0.30',
            'Math::BigInt::Trace'   => '0.30',
            'Module::CoreList'      => '2.73',
            'Module::CoreList::TieHashDelta'=> '2.73',
            'Opcode'                => '1.24',
            'Socket'                => '2.006',
            'Storable'              => '2.39',
            'Sys::Syslog'           => '0.32',
            'Unicode::UCD'          => '0.46',
            'XS::APItest'           => '0.43',
            'bignum'                => '0.30',
            'bigrat'                => '0.30',
            'constant'              => '1.24',
            'feature'               => '1.30',
            'threads::shared'       => '1.41',
            'version'               => '0.9901',
            'warnings'              => '1.14',
        },
        removed => {
        }
    },
    5.017005 => {
        delta_from => 5.017004,
        changed => {
            'AutoLoader'            => '5.73',
            'B'                     => '1.39',
            'B::Deparse'            => '1.18',
            'CPANPLUS'              => '0.9133',
            'CPANPLUS::Internals'   => '0.9133',
            'CPANPLUS::Shell::Default'=> '0.9133',
            'Carp'                  => '1.27',
            'Carp::Heavy'           => '1.27',
            'Data::Dumper'          => '2.136',
            'Digest::SHA'           => '5.72',
            'ExtUtils::CBuilder'    => '0.280209',
            'ExtUtils::CBuilder::Base'=> '0.280209',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280209',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280209',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280209',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280209',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280209',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280209',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280209',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280209',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280209',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280209',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280209',
            'File::Copy'            => '2.25',
            'File::Glob'            => '1.18',
            'HTTP::Tiny'            => '0.024',
            'Module::CoreList'      => '2.75',
            'Module::CoreList::TieHashDelta'=> '2.75',
            'PerlIO::encoding'      => '0.16',
            'Unicode::Collate'      => '0.90',
            'Unicode::Collate::Locale'=> '0.90',
            'Unicode::Normalize'    => '1.15',
            'Win32CORE'             => '0.04',
            'XS::APItest'           => '0.44',
            'attributes'            => '0.21',
            'bigint'                => '0.31',
            'bignum'                => '0.31',
            'bigrat'                => '0.31',
            'feature'               => '1.31',
            'threads::shared'       => '1.42',
            'warnings'              => '1.15',
        },
        removed => {
        }
    },
    5.017006 => {
        delta_from => 5.017005,
        changed => {
            'B'                     => '1.40',
            'B::Concise'            => '0.94',
            'B::Deparse'            => '1.19',
            'B::Xref'               => '1.05',
            'CGI'                   => '3.63',
            'CGI::Util'             => '3.62',
            'CPAN'                  => '1.99_51',
            'CPANPLUS::Dist::Build' => '0.64',
            'CPANPLUS::Dist::Build::Constants'=> '0.64',
            'Carp'                  => '1.28',
            'Carp::Heavy'           => '1.28',
            'Compress::Raw::Bzip2'  => '2.058',
            'Compress::Raw::Zlib'   => '2.058',
            'Compress::Zlib'        => '2.058',
            'Data::Dumper'          => '2.137',
            'Digest::SHA'           => '5.73',
            'DynaLoader'            => '1.17',
            'Env'                   => '1.04',
            'Errno'                 => '1.17',
            'ExtUtils::Manifest'    => '1.62',
            'ExtUtils::Typemaps'    => '3.18',
            'ExtUtils::Typemaps::Cmd'=> '3.18',
            'ExtUtils::Typemaps::InputMap'=> '3.18',
            'ExtUtils::Typemaps::OutputMap'=> '3.18',
            'ExtUtils::Typemaps::Type'=> '3.18',
            'Fatal'                 => '2.13',
            'File::Find'            => '1.23',
            'Hash::Util'            => '0.13',
            'IO::Compress::Adapter::Bzip2'=> '2.058',
            'IO::Compress::Adapter::Deflate'=> '2.058',
            'IO::Compress::Adapter::Identity'=> '2.058',
            'IO::Compress::Base'    => '2.058',
            'IO::Compress::Base::Common'=> '2.058',
            'IO::Compress::Bzip2'   => '2.058',
            'IO::Compress::Deflate' => '2.058',
            'IO::Compress::Gzip'    => '2.058',
            'IO::Compress::Gzip::Constants'=> '2.058',
            'IO::Compress::RawDeflate'=> '2.058',
            'IO::Compress::Zip'     => '2.058',
            'IO::Compress::Zip::Constants'=> '2.058',
            'IO::Compress::Zlib::Constants'=> '2.058',
            'IO::Compress::Zlib::Extra'=> '2.058',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.058',
            'IO::Uncompress::Adapter::Identity'=> '2.058',
            'IO::Uncompress::Adapter::Inflate'=> '2.058',
            'IO::Uncompress::AnyInflate'=> '2.058',
            'IO::Uncompress::AnyUncompress'=> '2.058',
            'IO::Uncompress::Base'  => '2.058',
            'IO::Uncompress::Bunzip2'=> '2.058',
            'IO::Uncompress::Gunzip'=> '2.058',
            'IO::Uncompress::Inflate'=> '2.058',
            'IO::Uncompress::RawInflate'=> '2.058',
            'IO::Uncompress::Unzip' => '2.058',
            'Module::CoreList'      => '2.78',
            'Module::CoreList::TieHashDelta'=> '2.77',
            'Module::Pluggable'     => '4.5',
            'Module::Pluggable::Object'=> '4.5',
            'Opcode'                => '1.25',
            'Sys::Hostname'         => '1.17',
            'Term::UI'              => '0.32',
            'Thread::Queue'         => '3.01',
            'Tie::Hash::NamedCapture'=> '0.09',
            'Unicode::Collate'      => '0.93',
            'Unicode::Collate::CJK::Korean'=> '0.93',
            'Unicode::Collate::Locale'=> '0.93',
            'Unicode::Normalize'    => '1.16',
            'Unicode::UCD'          => '0.47',
            'XS::APItest'           => '0.46',
            '_charnames'            => '1.33',
            'autodie'               => '2.13',
            'autodie::exception'    => '2.13',
            'autodie::exception::system'=> '2.13',
            'autodie::hints'        => '2.13',
            'charnames'             => '1.33',
            're'                    => '0.23',
        },
        removed => {
        }
    },
    5.017007 => {
        delta_from => 5.017006,
        changed => {
            'B'                     => '1.41',
            'CPANPLUS::Dist::Build' => '0.68',
            'CPANPLUS::Dist::Build::Constants'=> '0.68',
            'Compress::Raw::Bzip2'  => '2.059',
            'Compress::Raw::Zlib'   => '2.059',
            'Compress::Zlib'        => '2.059',
            'Cwd'                   => '3.39_03',
            'Data::Dumper'          => '2.139',
            'Devel::Peek'           => '1.11',
            'Digest::SHA'           => '5.80',
            'DynaLoader'            => '1.18',
            'English'               => '1.06',
            'Errno'                 => '1.18',
            'ExtUtils::Command::MM' => '6.64',
            'ExtUtils::Liblist'     => '6.64',
            'ExtUtils::Liblist::Kid'=> '6.64',
            'ExtUtils::MM'          => '6.64',
            'ExtUtils::MM_AIX'      => '6.64',
            'ExtUtils::MM_Any'      => '6.64',
            'ExtUtils::MM_BeOS'     => '6.64',
            'ExtUtils::MM_Cygwin'   => '6.64',
            'ExtUtils::MM_DOS'      => '6.64',
            'ExtUtils::MM_Darwin'   => '6.64',
            'ExtUtils::MM_MacOS'    => '6.64',
            'ExtUtils::MM_NW5'      => '6.64',
            'ExtUtils::MM_OS2'      => '6.64',
            'ExtUtils::MM_QNX'      => '6.64',
            'ExtUtils::MM_UWIN'     => '6.64',
            'ExtUtils::MM_Unix'     => '6.64',
            'ExtUtils::MM_VMS'      => '6.64',
            'ExtUtils::MM_VOS'      => '6.64',
            'ExtUtils::MM_Win32'    => '6.64',
            'ExtUtils::MM_Win95'    => '6.64',
            'ExtUtils::MY'          => '6.64',
            'ExtUtils::MakeMaker'   => '6.64',
            'ExtUtils::MakeMaker::Config'=> '6.64',
            'ExtUtils::Mkbootstrap' => '6.64',
            'ExtUtils::Mksymlists'  => '6.64',
            'ExtUtils::testlib'     => '6.64',
            'File::DosGlob'         => '1.09',
            'File::Glob'            => '1.19',
            'GDBM_File'             => '1.15',
            'IO::Compress::Adapter::Bzip2'=> '2.059',
            'IO::Compress::Adapter::Deflate'=> '2.059',
            'IO::Compress::Adapter::Identity'=> '2.059',
            'IO::Compress::Base'    => '2.059',
            'IO::Compress::Base::Common'=> '2.059',
            'IO::Compress::Bzip2'   => '2.059',
            'IO::Compress::Deflate' => '2.059',
            'IO::Compress::Gzip'    => '2.059',
            'IO::Compress::Gzip::Constants'=> '2.059',
            'IO::Compress::RawDeflate'=> '2.059',
            'IO::Compress::Zip'     => '2.059',
            'IO::Compress::Zip::Constants'=> '2.059',
            'IO::Compress::Zlib::Constants'=> '2.059',
            'IO::Compress::Zlib::Extra'=> '2.059',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.059',
            'IO::Uncompress::Adapter::Identity'=> '2.059',
            'IO::Uncompress::Adapter::Inflate'=> '2.059',
            'IO::Uncompress::AnyInflate'=> '2.059',
            'IO::Uncompress::AnyUncompress'=> '2.059',
            'IO::Uncompress::Base'  => '2.059',
            'IO::Uncompress::Bunzip2'=> '2.059',
            'IO::Uncompress::Gunzip'=> '2.059',
            'IO::Uncompress::Inflate'=> '2.059',
            'IO::Uncompress::RawInflate'=> '2.059',
            'IO::Uncompress::Unzip' => '2.059',
            'List::Util'            => '1.26',
            'List::Util::XS'        => '1.26',
            'Locale::Codes'         => '3.24',
            'Locale::Codes::Constants'=> '3.24',
            'Locale::Codes::Country'=> '3.24',
            'Locale::Codes::Country_Codes'=> '3.24',
            'Locale::Codes::Country_Retired'=> '3.24',
            'Locale::Codes::Currency'=> '3.24',
            'Locale::Codes::Currency_Codes'=> '3.24',
            'Locale::Codes::Currency_Retired'=> '3.24',
            'Locale::Codes::LangExt'=> '3.24',
            'Locale::Codes::LangExt_Codes'=> '3.24',
            'Locale::Codes::LangExt_Retired'=> '3.24',
            'Locale::Codes::LangFam'=> '3.24',
            'Locale::Codes::LangFam_Codes'=> '3.24',
            'Locale::Codes::LangFam_Retired'=> '3.24',
            'Locale::Codes::LangVar'=> '3.24',
            'Locale::Codes::LangVar_Codes'=> '3.24',
            'Locale::Codes::LangVar_Retired'=> '3.24',
            'Locale::Codes::Language'=> '3.24',
            'Locale::Codes::Language_Codes'=> '3.24',
            'Locale::Codes::Language_Retired'=> '3.24',
            'Locale::Codes::Script' => '3.24',
            'Locale::Codes::Script_Codes'=> '3.24',
            'Locale::Codes::Script_Retired'=> '3.24',
            'Locale::Country'       => '3.24',
            'Locale::Currency'      => '3.24',
            'Locale::Language'      => '3.24',
            'Locale::Maketext'      => '1.23',
            'Locale::Script'        => '3.24',
            'Module::CoreList'      => '2.79',
            'Module::CoreList::TieHashDelta'=> '2.79',
            'POSIX'                 => '1.32',
            'Scalar::Util'          => '1.26',
            'Socket'                => '2.006_001',
            'Storable'              => '2.40',
            'Term::ReadLine'        => '1.11',
            'Unicode::Collate'      => '0.96',
            'Unicode::Collate::CJK::Stroke'=> '0.94',
            'Unicode::Collate::CJK::Zhuyin'=> '0.94',
            'Unicode::Collate::Locale'=> '0.96',
            'XS::APItest'           => '0.48',
            'XS::Typemap'           => '0.09',
            '_charnames'            => '1.34',
            'charnames'             => '1.34',
            'feature'               => '1.32',
            'mro'                   => '1.10',
            'sigtrap'               => '1.07',
            'sort'                  => '2.02',
        },
        removed => {
        }
    },
    5.017008 => {
        delta_from => 5.017007,
        changed => {
            'Archive::Extract'      => '0.62',
            'B'                     => '1.42',
            'B::Concise'            => '0.95',
            'Compress::Raw::Bzip2'  => '2.060',
            'Compress::Raw::Zlib'   => '2.060',
            'Compress::Zlib'        => '2.060',
            'Cwd'                   => '3.40',
            'Data::Dumper'          => '2.141',
            'Digest::SHA'           => '5.81',
            'ExtUtils::Install'     => '1.59',
            'File::Fetch'           => '0.38',
            'File::Path'            => '2.09',
            'File::Spec'            => '3.40',
            'File::Spec::Cygwin'    => '3.40',
            'File::Spec::Epoc'      => '3.40',
            'File::Spec::Functions' => '3.40',
            'File::Spec::Mac'       => '3.40',
            'File::Spec::OS2'       => '3.40',
            'File::Spec::Unix'      => '3.40',
            'File::Spec::VMS'       => '3.40',
            'File::Spec::Win32'     => '3.40',
            'HTTP::Tiny'            => '0.025',
            'Hash::Util'            => '0.14',
            'I18N::LangTags'        => '0.39',
            'I18N::LangTags::List'  => '0.39',
            'I18N::Langinfo'        => '0.09',
            'IO'                    => '1.26',
            'IO::Compress::Adapter::Bzip2'=> '2.060',
            'IO::Compress::Adapter::Deflate'=> '2.060',
            'IO::Compress::Adapter::Identity'=> '2.060',
            'IO::Compress::Base'    => '2.060',
            'IO::Compress::Base::Common'=> '2.060',
            'IO::Compress::Bzip2'   => '2.060',
            'IO::Compress::Deflate' => '2.060',
            'IO::Compress::Gzip'    => '2.060',
            'IO::Compress::Gzip::Constants'=> '2.060',
            'IO::Compress::RawDeflate'=> '2.060',
            'IO::Compress::Zip'     => '2.060',
            'IO::Compress::Zip::Constants'=> '2.060',
            'IO::Compress::Zlib::Constants'=> '2.060',
            'IO::Compress::Zlib::Extra'=> '2.060',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.060',
            'IO::Uncompress::Adapter::Identity'=> '2.060',
            'IO::Uncompress::Adapter::Inflate'=> '2.060',
            'IO::Uncompress::AnyInflate'=> '2.060',
            'IO::Uncompress::AnyUncompress'=> '2.060',
            'IO::Uncompress::Base'  => '2.060',
            'IO::Uncompress::Bunzip2'=> '2.060',
            'IO::Uncompress::Gunzip'=> '2.060',
            'IO::Uncompress::Inflate'=> '2.060',
            'IO::Uncompress::RawInflate'=> '2.060',
            'IO::Uncompress::Unzip' => '2.060',
            'List::Util'            => '1.27',
            'List::Util::XS'        => '1.27',
            'Module::CoreList'      => '2.80',
            'Module::CoreList::TieHashDelta'=> '2.80',
            'Pod::Html'             => '1.17',
            'Pod::LaTeX'            => '0.61',
            'Pod::Man'              => '2.27',
            'Pod::Text'             => '3.17',
            'Pod::Text::Color'      => '2.07',
            'Pod::Text::Overstrike' => '2.05',
            'Pod::Text::Termcap'    => '2.07',
            'Safe'                  => '2.34',
            'Scalar::Util'          => '1.27',
            'Socket'                => '2.009',
            'Term::ANSIColor'       => '4.02',
            'Test'                  => '1.26',
            'Unicode::Collate'      => '0.97',
            'XS::APItest'           => '0.51',
            'XS::Typemap'           => '0.10',
            '_charnames'            => '1.35',
            'charnames'             => '1.35',
            'constant'              => '1.25',
            'diagnostics'           => '1.31',
            'threads::shared'       => '1.43',
            'warnings'              => '1.16',
        },
        removed => {
        }
    },
    5.017009 => {
        delta_from => 5.017008,
        changed => {
            'App::Cpan'             => '1.60_02',
            'App::Prove'            => '3.26',
            'App::Prove::State'     => '3.26',
            'App::Prove::State::Result'=> '3.26',
            'App::Prove::State::Result::Test'=> '3.26',
            'Archive::Extract'      => '0.68',
            'Attribute::Handlers'   => '0.94',
            'B::Lint'               => '1.17',
            'B::Lint::Debug'        => '1.17',
            'Benchmark'             => '1.14',
            'CPAN'                  => '2.00',
            'CPAN::Distribution'    => '2.00',
            'CPAN::FirstTime'       => '5.5304',
            'CPAN::Nox'             => '5.5001',
            'CPANPLUS'              => '0.9135',
            'CPANPLUS::Backend'     => '0.9135',
            'CPANPLUS::Backend::RV' => '0.9135',
            'CPANPLUS::Config'      => '0.9135',
            'CPANPLUS::Config::HomeEnv'=> '0.9135',
            'CPANPLUS::Configure'   => '0.9135',
            'CPANPLUS::Configure::Setup'=> '0.9135',
            'CPANPLUS::Dist'        => '0.9135',
            'CPANPLUS::Dist::Autobundle'=> '0.9135',
            'CPANPLUS::Dist::Base'  => '0.9135',
            'CPANPLUS::Dist::Build' => '0.70',
            'CPANPLUS::Dist::Build::Constants'=> '0.70',
            'CPANPLUS::Dist::MM'    => '0.9135',
            'CPANPLUS::Dist::Sample'=> '0.9135',
            'CPANPLUS::Error'       => '0.9135',
            'CPANPLUS::Internals'   => '0.9135',
            'CPANPLUS::Internals::Constants'=> '0.9135',
            'CPANPLUS::Internals::Constants::Report'=> '0.9135',
            'CPANPLUS::Internals::Extract'=> '0.9135',
            'CPANPLUS::Internals::Fetch'=> '0.9135',
            'CPANPLUS::Internals::Report'=> '0.9135',
            'CPANPLUS::Internals::Search'=> '0.9135',
            'CPANPLUS::Internals::Source'=> '0.9135',
            'CPANPLUS::Internals::Source::Memory'=> '0.9135',
            'CPANPLUS::Internals::Source::SQLite'=> '0.9135',
            'CPANPLUS::Internals::Source::SQLite::Tie'=> '0.9135',
            'CPANPLUS::Internals::Utils'=> '0.9135',
            'CPANPLUS::Internals::Utils::Autoflush'=> '0.9135',
            'CPANPLUS::Module'      => '0.9135',
            'CPANPLUS::Module::Author'=> '0.9135',
            'CPANPLUS::Module::Author::Fake'=> '0.9135',
            'CPANPLUS::Module::Checksums'=> '0.9135',
            'CPANPLUS::Module::Fake'=> '0.9135',
            'CPANPLUS::Module::Signature'=> '0.9135',
            'CPANPLUS::Selfupdate'  => '0.9135',
            'CPANPLUS::Shell'       => '0.9135',
            'CPANPLUS::Shell::Classic'=> '0.9135',
            'CPANPLUS::Shell::Default'=> '0.9135',
            'CPANPLUS::Shell::Default::Plugins::CustomSource'=> '0.9135',
            'CPANPLUS::Shell::Default::Plugins::Remote'=> '0.9135',
            'CPANPLUS::Shell::Default::Plugins::Source'=> '0.9135',
            'Config'                => '5.017009',
            'Config::Perl::V'       => '0.17',
            'DBM_Filter'            => '0.05',
            'Data::Dumper'          => '2.142',
            'Digest::SHA'           => '5.82',
            'Encode'                => '2.48',
            'ExtUtils::Installed'   => '1.999003',
            'ExtUtils::Manifest'    => '1.63',
            'ExtUtils::ParseXS::Utilities'=> '3.19',
            'ExtUtils::Typemaps'    => '3.19',
            'File::CheckTree'       => '4.42',
            'File::DosGlob'         => '1.10',
            'File::Temp'            => '0.22_90',
            'Filter::Simple'        => '0.89',
            'IO'                    => '1.27',
            'Log::Message'          => '0.06',
            'Log::Message::Config'  => '0.06',
            'Log::Message::Handlers'=> '0.06',
            'Log::Message::Item'    => '0.06',
            'Log::Message::Simple'  => '0.10',
            'Math::BigInt'          => '1.999',
            'Module::CoreList'      => '2.82',
            'Module::CoreList::TieHashDelta'=> '2.82',
            'Module::Load'          => '0.24',
            'Module::Pluggable'     => '4.6',
            'Module::Pluggable::Object'=> '4.6',
            'OS2::DLL'              => '1.05',
            'OS2::ExtAttr'          => '0.03',
            'OS2::Process'          => '1.08',
            'Object::Accessor'      => '0.46',
            'PerlIO::scalar'        => '0.16',
            'Pod::Checker'          => '1.60',
            'Pod::Find'             => '1.60',
            'Pod::Html'             => '1.18',
            'Pod::InputObjects'     => '1.60',
            'Pod::ParseUtils'       => '1.60',
            'Pod::Parser'           => '1.60',
            'Pod::Perldoc'          => '3.19',
            'Pod::Perldoc::BaseTo'  => '3.19',
            'Pod::Perldoc::GetOptsOO'=> '3.19',
            'Pod::Perldoc::ToANSI'  => '3.19',
            'Pod::Perldoc::ToChecker'=> '3.19',
            'Pod::Perldoc::ToMan'   => '3.19',
            'Pod::Perldoc::ToNroff' => '3.19',
            'Pod::Perldoc::ToPod'   => '3.19',
            'Pod::Perldoc::ToRtf'   => '3.19',
            'Pod::Perldoc::ToTerm'  => '3.19',
            'Pod::Perldoc::ToText'  => '3.19',
            'Pod::Perldoc::ToTk'    => '3.19',
            'Pod::Perldoc::ToXml'   => '3.19',
            'Pod::PlainText'        => '2.06',
            'Pod::Select'           => '1.60',
            'Pod::Usage'            => '1.61',
            'SelfLoader'            => '1.21',
            'TAP::Base'             => '3.26',
            'TAP::Formatter::Base'  => '3.26',
            'TAP::Formatter::Color' => '3.26',
            'TAP::Formatter::Console'=> '3.26',
            'TAP::Formatter::Console::ParallelSession'=> '3.26',
            'TAP::Formatter::Console::Session'=> '3.26',
            'TAP::Formatter::File'  => '3.26',
            'TAP::Formatter::File::Session'=> '3.26',
            'TAP::Formatter::Session'=> '3.26',
            'TAP::Harness'          => '3.26',
            'TAP::Object'           => '3.26',
            'TAP::Parser'           => '3.26',
            'TAP::Parser::Aggregator'=> '3.26',
            'TAP::Parser::Grammar'  => '3.26',
            'TAP::Parser::Iterator' => '3.26',
            'TAP::Parser::Iterator::Array'=> '3.26',
            'TAP::Parser::Iterator::Process'=> '3.26',
            'TAP::Parser::Iterator::Stream'=> '3.26',
            'TAP::Parser::IteratorFactory'=> '3.26',
            'TAP::Parser::Multiplexer'=> '3.26',
            'TAP::Parser::Result'   => '3.26',
            'TAP::Parser::Result::Bailout'=> '3.26',
            'TAP::Parser::Result::Comment'=> '3.26',
            'TAP::Parser::Result::Plan'=> '3.26',
            'TAP::Parser::Result::Pragma'=> '3.26',
            'TAP::Parser::Result::Test'=> '3.26',
            'TAP::Parser::Result::Unknown'=> '3.26',
            'TAP::Parser::Result::Version'=> '3.26',
            'TAP::Parser::Result::YAML'=> '3.26',
            'TAP::Parser::ResultFactory'=> '3.26',
            'TAP::Parser::Scheduler'=> '3.26',
            'TAP::Parser::Scheduler::Job'=> '3.26',
            'TAP::Parser::Scheduler::Spinner'=> '3.26',
            'TAP::Parser::Source'   => '3.26',
            'TAP::Parser::SourceHandler'=> '3.26',
            'TAP::Parser::SourceHandler::Executable'=> '3.26',
            'TAP::Parser::SourceHandler::File'=> '3.26',
            'TAP::Parser::SourceHandler::Handle'=> '3.26',
            'TAP::Parser::SourceHandler::Perl'=> '3.26',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.26',
            'TAP::Parser::Utils'    => '3.26',
            'TAP::Parser::YAMLish::Reader'=> '3.26',
            'TAP::Parser::YAMLish::Writer'=> '3.26',
            'Term::UI'              => '0.34',
            'Test::Harness'         => '3.26',
            'Text::Soundex'         => '3.04',
            'Thread::Queue'         => '3.02',
            'Unicode::UCD'          => '0.50',
            'Win32'                 => '0.46',
            'Win32API::File'        => '0.1201',
            '_charnames'            => '1.36',
            'arybase'               => '0.06',
            'bigint'                => '0.32',
            'bignum'                => '0.32',
            'charnames'             => '1.36',
            'filetest'              => '1.03',
            'locale'                => '1.02',
            'overload'              => '1.21',
            'warnings'              => '1.17',
        },
        removed => {
        }
    },
    5.017010 => {
        delta_from => 5.017009,
        changed => {
            'Benchmark'             => '1.15',
            'Config'                => '5.017009',
            'Data::Dumper'          => '2.145',
            'Digest::SHA'           => '5.84',
            'Encode'                => '2.49',
            'ExtUtils::Command::MM' => '6.65_01',
            'ExtUtils::Liblist'     => '6.65_01',
            'ExtUtils::Liblist::Kid'=> '6.65_01',
            'ExtUtils::MM'          => '6.65_01',
            'ExtUtils::MM_AIX'      => '6.65_01',
            'ExtUtils::MM_Any'      => '6.65_01',
            'ExtUtils::MM_BeOS'     => '6.65_01',
            'ExtUtils::MM_Cygwin'   => '6.65_01',
            'ExtUtils::MM_DOS'      => '6.65_01',
            'ExtUtils::MM_Darwin'   => '6.65_01',
            'ExtUtils::MM_MacOS'    => '6.65_01',
            'ExtUtils::MM_NW5'      => '6.65_01',
            'ExtUtils::MM_OS2'      => '6.65_01',
            'ExtUtils::MM_QNX'      => '6.65_01',
            'ExtUtils::MM_UWIN'     => '6.65_01',
            'ExtUtils::MM_Unix'     => '6.65_01',
            'ExtUtils::MM_VMS'      => '6.65_01',
            'ExtUtils::MM_VOS'      => '6.65_01',
            'ExtUtils::MM_Win32'    => '6.65_01',
            'ExtUtils::MM_Win95'    => '6.65_01',
            'ExtUtils::MY'          => '6.65_01',
            'ExtUtils::MakeMaker'   => '6.65_01',
            'ExtUtils::MakeMaker::Config'=> '6.65_01',
            'ExtUtils::Mkbootstrap' => '6.65_01',
            'ExtUtils::Mksymlists'  => '6.65_01',
            'ExtUtils::testlib'     => '6.65_01',
            'File::Copy'            => '2.26',
            'File::Temp'            => '0.23',
            'Getopt::Long'          => '2.39',
            'Hash::Util'            => '0.15',
            'I18N::Langinfo'        => '0.10',
            'IPC::Cmd'              => '0.80',
            'JSON::PP'              => '2.27202',
            'Locale::Codes'         => '3.25',
            'Locale::Codes::Constants'=> '3.25',
            'Locale::Codes::Country'=> '3.25',
            'Locale::Codes::Country_Codes'=> '3.25',
            'Locale::Codes::Country_Retired'=> '3.25',
            'Locale::Codes::Currency'=> '3.25',
            'Locale::Codes::Currency_Codes'=> '3.25',
            'Locale::Codes::Currency_Retired'=> '3.25',
            'Locale::Codes::LangExt'=> '3.25',
            'Locale::Codes::LangExt_Codes'=> '3.25',
            'Locale::Codes::LangExt_Retired'=> '3.25',
            'Locale::Codes::LangFam'=> '3.25',
            'Locale::Codes::LangFam_Codes'=> '3.25',
            'Locale::Codes::LangFam_Retired'=> '3.25',
            'Locale::Codes::LangVar'=> '3.25',
            'Locale::Codes::LangVar_Codes'=> '3.25',
            'Locale::Codes::LangVar_Retired'=> '3.25',
            'Locale::Codes::Language'=> '3.25',
            'Locale::Codes::Language_Codes'=> '3.25',
            'Locale::Codes::Language_Retired'=> '3.25',
            'Locale::Codes::Script' => '3.25',
            'Locale::Codes::Script_Codes'=> '3.25',
            'Locale::Codes::Script_Retired'=> '3.25',
            'Locale::Country'       => '3.25',
            'Locale::Currency'      => '3.25',
            'Locale::Language'      => '3.25',
            'Locale::Script'        => '3.25',
            'Math::BigFloat'        => '1.998',
            'Math::BigFloat::Trace' => '0.32',
            'Math::BigInt'          => '1.9991',
            'Math::BigInt::CalcEmu' => '1.998',
            'Math::BigInt::Trace'   => '0.32',
            'Math::BigRat'          => '0.2604',
            'Module::CoreList'      => '2.84',
            'Module::CoreList::TieHashDelta'=> '2.84',
            'Module::Pluggable'     => '4.7',
            'Net::Ping'             => '2.41',
            'Perl::OSType'          => '1.003',
            'Pod::Simple'           => '3.26',
            'Pod::Simple::BlackBox' => '3.26',
            'Pod::Simple::Checker'  => '3.26',
            'Pod::Simple::Debug'    => '3.26',
            'Pod::Simple::DumpAsText'=> '3.26',
            'Pod::Simple::DumpAsXML'=> '3.26',
            'Pod::Simple::HTML'     => '3.26',
            'Pod::Simple::HTMLBatch'=> '3.26',
            'Pod::Simple::LinkSection'=> '3.26',
            'Pod::Simple::Methody'  => '3.26',
            'Pod::Simple::Progress' => '3.26',
            'Pod::Simple::PullParser'=> '3.26',
            'Pod::Simple::PullParserEndToken'=> '3.26',
            'Pod::Simple::PullParserStartToken'=> '3.26',
            'Pod::Simple::PullParserTextToken'=> '3.26',
            'Pod::Simple::PullParserToken'=> '3.26',
            'Pod::Simple::RTF'      => '3.26',
            'Pod::Simple::Search'   => '3.26',
            'Pod::Simple::SimpleTree'=> '3.26',
            'Pod::Simple::Text'     => '3.26',
            'Pod::Simple::TextContent'=> '3.26',
            'Pod::Simple::TiedOutFH'=> '3.26',
            'Pod::Simple::Transcode'=> '3.26',
            'Pod::Simple::TranscodeDumb'=> '3.26',
            'Pod::Simple::TranscodeSmart'=> '3.26',
            'Pod::Simple::XHTML'    => '3.26',
            'Pod::Simple::XMLOutStream'=> '3.26',
            'Safe'                  => '2.35',
            'Term::ReadLine'        => '1.12',
            'Text::ParseWords'      => '3.28',
            'Tie::File'             => '0.99',
            'Unicode::UCD'          => '0.51',
            'Win32'                 => '0.47',
            'bigint'                => '0.33',
            'bignum'                => '0.33',
            'bigrat'                => '0.33',
            'constant'              => '1.27',
            'perlfaq'               => '5.0150042',
            'version'               => '0.9902',
        },
        removed => {
        }
    },
    5.017011 => {
        delta_from => 5.017010,
        changed => {
            'App::Cpan'             => '1.61',
            'B::Deparse'            => '1.20',
            'Config'                => '5.017009',
            'Exporter'              => '5.68',
            'Exporter::Heavy'       => '5.68',
            'ExtUtils::CBuilder'    => '0.280210',
            'ExtUtils::Command::MM' => '6.66',
            'ExtUtils::Liblist'     => '6.66',
            'ExtUtils::Liblist::Kid'=> '6.66',
            'ExtUtils::MM'          => '6.66',
            'ExtUtils::MM_AIX'      => '6.66',
            'ExtUtils::MM_Any'      => '6.66',
            'ExtUtils::MM_BeOS'     => '6.66',
            'ExtUtils::MM_Cygwin'   => '6.66',
            'ExtUtils::MM_DOS'      => '6.66',
            'ExtUtils::MM_Darwin'   => '6.66',
            'ExtUtils::MM_MacOS'    => '6.66',
            'ExtUtils::MM_NW5'      => '6.66',
            'ExtUtils::MM_OS2'      => '6.66',
            'ExtUtils::MM_QNX'      => '6.66',
            'ExtUtils::MM_UWIN'     => '6.66',
            'ExtUtils::MM_Unix'     => '6.66',
            'ExtUtils::MM_VMS'      => '6.66',
            'ExtUtils::MM_VOS'      => '6.66',
            'ExtUtils::MM_Win32'    => '6.66',
            'ExtUtils::MM_Win95'    => '6.66',
            'ExtUtils::MY'          => '6.66',
            'ExtUtils::MakeMaker'   => '6.66',
            'ExtUtils::MakeMaker::Config'=> '6.66',
            'ExtUtils::Mkbootstrap' => '6.66',
            'ExtUtils::Mksymlists'  => '6.66',
            'ExtUtils::testlib'     => '6.66',
            'File::Glob'            => '1.20',
            'IO'                    => '1.28',
            'Module::CoreList'      => '2.87',
            'Module::CoreList::TieHashDelta'=> '2.87',
            'Storable'              => '2.41',
            'bigint'                => '0.34',
            'mro'                   => '1.11',
            'overload'              => '1.22',
            'warnings'              => '1.18',
        },
        removed => {
        }
    },
    5.018000 => {
        delta_from => 5.017011,
        changed => {
            'Carp'                  => '1.29',
            'Carp::Heavy'           => '1.29',
            'Config'                => '5.018000',
            'Hash::Util'            => '0.16',
            'IO::Handle'            => '1.34',
            'IO::Socket'            => '1.36',
            'Module::CoreList'      => '2.89',
            'Module::CoreList::TieHashDelta'=> '2.89',
            'Pod::Simple'           => '3.28',
            'Pod::Simple::BlackBox' => '3.28',
            'Pod::Simple::Checker'  => '3.28',
            'Pod::Simple::Debug'    => '3.28',
            'Pod::Simple::DumpAsText'=> '3.28',
            'Pod::Simple::DumpAsXML'=> '3.28',
            'Pod::Simple::HTML'     => '3.28',
            'Pod::Simple::HTMLBatch'=> '3.28',
            'Pod::Simple::LinkSection'=> '3.28',
            'Pod::Simple::Methody'  => '3.28',
            'Pod::Simple::Progress' => '3.28',
            'Pod::Simple::PullParser'=> '3.28',
            'Pod::Simple::PullParserEndToken'=> '3.28',
            'Pod::Simple::PullParserStartToken'=> '3.28',
            'Pod::Simple::PullParserTextToken'=> '3.28',
            'Pod::Simple::PullParserToken'=> '3.28',
            'Pod::Simple::RTF'      => '3.28',
            'Pod::Simple::Search'   => '3.28',
            'Pod::Simple::SimpleTree'=> '3.28',
            'Pod::Simple::Text'     => '3.28',
            'Pod::Simple::TextContent'=> '3.28',
            'Pod::Simple::TiedOutFH'=> '3.28',
            'Pod::Simple::Transcode'=> '3.28',
            'Pod::Simple::TranscodeDumb'=> '3.28',
            'Pod::Simple::TranscodeSmart'=> '3.28',
            'Pod::Simple::XHTML'    => '3.28',
            'Pod::Simple::XMLOutStream'=> '3.28',
        },
        removed => {
        }
    },
    5.018001 => {
        delta_from => 5.018000,
        changed => {
            'B'                     => '1.42_01',
            'Config'                => '5.018001',
            'Digest::SHA'           => '5.84_01',
            'Module::CoreList'      => '2.96',
            'Module::CoreList::TieHashDelta'=> '2.96',
            'Module::CoreList::Utils'=> '2.96',
        },
        removed => {
           'VMS::Filespec'         => 1,
        }
    },
    5.018002 => {
        delta_from => 5.018001,
        changed => {
            'B'                     => '1.42_02',
            'B::Concise'            => '0.95_01',
            'Config'                => '5.018002',
            'File::Glob'            => '1.20_01',
            'Module::CoreList'      => '3.03',
            'Module::CoreList::TieHashDelta'=> '3.03',
            'Module::CoreList::Utils'=> '3.03',
        },
    },
    5.018003 => {
        delta_from => 5.018002,
        changed => {
            'Config'                => '5.018003',
            'Digest::SHA'           => '5.84_02',
            'Module::CoreList'      => '3.12',
            'Module::CoreList::TieHashDelta'=> '3.12',
            'Module::CoreList::Utils'=> '3.12',
        },
    },
    5.018004 => {
        delta_from => 5.018003,
        changed => {
            'Config'                => '5.018004',
            'Module::CoreList'      => '3.13',
            'Module::CoreList::TieHashDelta'=> '3.13',
            'Module::CoreList::Utils'=> '3.13',
        },
    },
    5.019000 => {
        delta_from => 5.018000,
        changed => {
            'Config'                => '5.019000',
            'Getopt::Std'           => '1.08',
            'Module::CoreList'      => '2.91',
            'Module::CoreList::TieHashDelta'=> '2.91',
            'Storable'              => '2.42',
            'feature'               => '1.33',
            'utf8'                  => '1.11',
        },
        removed => {
           'Archive::Extract'      => 1,
           'B::Lint'               => 1,
           'B::Lint::Debug'        => 1,
           'CPANPLUS'              => 1,
           'CPANPLUS::Backend'     => 1,
           'CPANPLUS::Backend::RV' => 1,
           'CPANPLUS::Config'      => 1,
           'CPANPLUS::Config::HomeEnv'=> 1,
           'CPANPLUS::Configure'   => 1,
           'CPANPLUS::Configure::Setup'=> 1,
           'CPANPLUS::Dist'        => 1,
           'CPANPLUS::Dist::Autobundle'=> 1,
           'CPANPLUS::Dist::Base'  => 1,
           'CPANPLUS::Dist::Build' => 1,
           'CPANPLUS::Dist::Build::Constants'=> 1,
           'CPANPLUS::Dist::MM'    => 1,
           'CPANPLUS::Dist::Sample'=> 1,
           'CPANPLUS::Error'       => 1,
           'CPANPLUS::Internals'   => 1,
           'CPANPLUS::Internals::Constants'=> 1,
           'CPANPLUS::Internals::Constants::Report'=> 1,
           'CPANPLUS::Internals::Extract'=> 1,
           'CPANPLUS::Internals::Fetch'=> 1,
           'CPANPLUS::Internals::Report'=> 1,
           'CPANPLUS::Internals::Search'=> 1,
           'CPANPLUS::Internals::Source'=> 1,
           'CPANPLUS::Internals::Source::Memory'=> 1,
           'CPANPLUS::Internals::Source::SQLite'=> 1,
           'CPANPLUS::Internals::Source::SQLite::Tie'=> 1,
           'CPANPLUS::Internals::Utils'=> 1,
           'CPANPLUS::Internals::Utils::Autoflush'=> 1,
           'CPANPLUS::Module'      => 1,
           'CPANPLUS::Module::Author'=> 1,
           'CPANPLUS::Module::Author::Fake'=> 1,
           'CPANPLUS::Module::Checksums'=> 1,
           'CPANPLUS::Module::Fake'=> 1,
           'CPANPLUS::Module::Signature'=> 1,
           'CPANPLUS::Selfupdate'  => 1,
           'CPANPLUS::Shell'       => 1,
           'CPANPLUS::Shell::Classic'=> 1,
           'CPANPLUS::Shell::Default'=> 1,
           'CPANPLUS::Shell::Default::Plugins::CustomSource'=> 1,
           'CPANPLUS::Shell::Default::Plugins::Remote'=> 1,
           'CPANPLUS::Shell::Default::Plugins::Source'=> 1,
           'Devel::InnerPackage'   => 1,
           'File::CheckTree'       => 1,
           'Log::Message'          => 1,
           'Log::Message::Config'  => 1,
           'Log::Message::Handlers'=> 1,
           'Log::Message::Item'    => 1,
           'Log::Message::Simple'  => 1,
           'Module::Pluggable'     => 1,
           'Module::Pluggable::Object'=> 1,
           'Object::Accessor'      => 1,
           'Pod::LaTeX'            => 1,
           'Term::UI'              => 1,
           'Term::UI::History'     => 1,
           'Text::Soundex'         => 1,
        }
    },
    5.019001 => {
        delta_from => 5.019000,
        changed => {
            'App::Prove'            => '3.28',
            'App::Prove::State'     => '3.28',
            'App::Prove::State::Result'=> '3.28',
            'App::Prove::State::Result::Test'=> '3.28',
            'Archive::Tar'          => '1.92',
            'Archive::Tar::Constant'=> '1.92',
            'Archive::Tar::File'    => '1.92',
            'Attribute::Handlers'   => '0.95',
            'B'                     => '1.43',
            'B::Concise'            => '0.96',
            'B::Deparse'            => '1.21',
            'B::Showlex'            => '1.04',
            'Benchmark'             => '1.16',
            'CPAN::Meta'            => '2.131560',
            'CPAN::Meta::Converter' => '2.131560',
            'CPAN::Meta::Feature'   => '2.131560',
            'CPAN::Meta::History'   => '2.131560',
            'CPAN::Meta::Prereqs'   => '2.131560',
            'CPAN::Meta::Spec'      => '2.131560',
            'CPAN::Meta::Validator' => '2.131560',
            'Carp'                  => '1.30',
            'Carp::Heavy'           => '1.30',
            'Compress::Raw::Bzip2'  => '2.061',
            'Compress::Raw::Zlib'   => '2.061',
            'Compress::Zlib'        => '2.061',
            'Config'                => '5.019001',
            'Config::Perl::V'       => '0.18',
            'Cwd'                   => '3.41',
            'DB'                    => '1.06',
            'DB_File'               => '1.828',
            'Data::Dumper'          => '2.146',
            'Encode'                => '2.51',
            'Encode::CN::HZ'        => '2.06',
            'Encode::GSM0338'       => '2.03',
            'Encode::Unicode::UTF7' => '2.07',
            'ExtUtils::CBuilder::Base'=> '0.280210',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280210',
            'ExtUtils::Command::MM' => '6.68',
            'ExtUtils::Install'     => '1.60',
            'ExtUtils::Liblist'     => '6.68',
            'ExtUtils::Liblist::Kid'=> '6.68',
            'ExtUtils::MM'          => '6.68',
            'ExtUtils::MM_AIX'      => '6.68',
            'ExtUtils::MM_Any'      => '6.68',
            'ExtUtils::MM_BeOS'     => '6.68',
            'ExtUtils::MM_Cygwin'   => '6.68',
            'ExtUtils::MM_DOS'      => '6.68',
            'ExtUtils::MM_Darwin'   => '6.68',
            'ExtUtils::MM_MacOS'    => '6.68',
            'ExtUtils::MM_NW5'      => '6.68',
            'ExtUtils::MM_OS2'      => '6.68',
            'ExtUtils::MM_QNX'      => '6.68',
            'ExtUtils::MM_UWIN'     => '6.68',
            'ExtUtils::MM_Unix'     => '6.68',
            'ExtUtils::MM_VMS'      => '6.68',
            'ExtUtils::MM_VOS'      => '6.68',
            'ExtUtils::MM_Win32'    => '6.68',
            'ExtUtils::MM_Win95'    => '6.68',
            'ExtUtils::MY'          => '6.68',
            'ExtUtils::MakeMaker'   => '6.68',
            'ExtUtils::MakeMaker::Config'=> '6.68',
            'ExtUtils::Mkbootstrap' => '6.68',
            'ExtUtils::Mksymlists'  => '6.68',
            'ExtUtils::ParseXS'     => '3.19',
            'ExtUtils::testlib'     => '6.68',
            'Fatal'                 => '2.19',
            'File::Copy'            => '2.27',
            'File::DosGlob'         => '1.11',
            'File::Fetch'           => '0.42',
            'File::Find'            => '1.24',
            'File::Spec'            => '3.41',
            'File::Spec::Cygwin'    => '3.41',
            'File::Spec::Epoc'      => '3.41',
            'File::Spec::Mac'       => '3.41',
            'File::Spec::OS2'       => '3.41',
            'File::Spec::Unix'      => '3.41',
            'File::Spec::VMS'       => '3.41',
            'File::Spec::Win32'     => '3.41',
            'File::Temp'            => '0.2301',
            'Filter::Simple'        => '0.90',
            'Filter::Util::Call'    => '1.49',
            'Getopt::Long'          => '2.4',
            'HTTP::Tiny'            => '0.031',
            'Hash::Util::FieldHash' => '1.11',
            'IO::Compress::Adapter::Bzip2'=> '2.061',
            'IO::Compress::Adapter::Deflate'=> '2.061',
            'IO::Compress::Adapter::Identity'=> '2.061',
            'IO::Compress::Base'    => '2.061',
            'IO::Compress::Base::Common'=> '2.061',
            'IO::Compress::Bzip2'   => '2.061',
            'IO::Compress::Deflate' => '2.061',
            'IO::Compress::Gzip'    => '2.061',
            'IO::Compress::Gzip::Constants'=> '2.061',
            'IO::Compress::RawDeflate'=> '2.061',
            'IO::Compress::Zip'     => '2.061',
            'IO::Compress::Zip::Constants'=> '2.061',
            'IO::Compress::Zlib::Constants'=> '2.061',
            'IO::Compress::Zlib::Extra'=> '2.061',
            'IO::Handle'            => '1.35',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.061',
            'IO::Uncompress::Adapter::Identity'=> '2.061',
            'IO::Uncompress::Adapter::Inflate'=> '2.061',
            'IO::Uncompress::AnyInflate'=> '2.061',
            'IO::Uncompress::AnyUncompress'=> '2.061',
            'IO::Uncompress::Base'  => '2.061',
            'IO::Uncompress::Bunzip2'=> '2.061',
            'IO::Uncompress::Gunzip'=> '2.061',
            'IO::Uncompress::Inflate'=> '2.061',
            'IO::Uncompress::RawInflate'=> '2.061',
            'IO::Uncompress::Unzip' => '2.061',
            'IPC::Open3'            => '1.14',
            'Locale::Codes'         => '3.26',
            'Locale::Codes::Constants'=> '3.26',
            'Locale::Codes::Country'=> '3.26',
            'Locale::Codes::Country_Codes'=> '3.26',
            'Locale::Codes::Country_Retired'=> '3.26',
            'Locale::Codes::Currency'=> '3.26',
            'Locale::Codes::Currency_Codes'=> '3.26',
            'Locale::Codes::Currency_Retired'=> '3.26',
            'Locale::Codes::LangExt'=> '3.26',
            'Locale::Codes::LangExt_Codes'=> '3.26',
            'Locale::Codes::LangExt_Retired'=> '3.26',
            'Locale::Codes::LangFam'=> '3.26',
            'Locale::Codes::LangFam_Codes'=> '3.26',
            'Locale::Codes::LangFam_Retired'=> '3.26',
            'Locale::Codes::LangVar'=> '3.26',
            'Locale::Codes::LangVar_Codes'=> '3.26',
            'Locale::Codes::LangVar_Retired'=> '3.26',
            'Locale::Codes::Language'=> '3.26',
            'Locale::Codes::Language_Codes'=> '3.26',
            'Locale::Codes::Language_Retired'=> '3.26',
            'Locale::Codes::Script' => '3.26',
            'Locale::Codes::Script_Codes'=> '3.26',
            'Locale::Codes::Script_Retired'=> '3.26',
            'Locale::Country'       => '3.26',
            'Locale::Currency'      => '3.26',
            'Locale::Language'      => '3.26',
            'Locale::Maketext'      => '1.24',
            'Locale::Script'        => '3.26',
            'Math::BigFloat'        => '1.999',
            'Math::BigInt'          => '1.9992',
            'Math::BigInt::Calc'    => '1.998',
            'Math::BigInt::CalcEmu' => '1.9991',
            'Math::BigRat'          => '0.2606',
            'Module::Build'         => '0.4005',
            'Module::Build::Base'   => '0.4005',
            'Module::Build::Compat' => '0.4005',
            'Module::Build::Config' => '0.4005',
            'Module::Build::Cookbook'=> '0.4005',
            'Module::Build::Dumper' => '0.4005',
            'Module::Build::ModuleInfo'=> '0.4005',
            'Module::Build::Notes'  => '0.4005',
            'Module::Build::PPMMaker'=> '0.4005',
            'Module::Build::Platform::Amiga'=> '0.4005',
            'Module::Build::Platform::Default'=> '0.4005',
            'Module::Build::Platform::EBCDIC'=> '0.4005',
            'Module::Build::Platform::MPEiX'=> '0.4005',
            'Module::Build::Platform::MacOS'=> '0.4005',
            'Module::Build::Platform::RiscOS'=> '0.4005',
            'Module::Build::Platform::Unix'=> '0.4005',
            'Module::Build::Platform::VMS'=> '0.4005',
            'Module::Build::Platform::VOS'=> '0.4005',
            'Module::Build::Platform::Windows'=> '0.4005',
            'Module::Build::Platform::aix'=> '0.4005',
            'Module::Build::Platform::cygwin'=> '0.4005',
            'Module::Build::Platform::darwin'=> '0.4005',
            'Module::Build::Platform::os2'=> '0.4005',
            'Module::Build::PodParser'=> '0.4005',
            'Module::CoreList'      => '2.92',
            'Module::CoreList::TieHashDelta'=> '2.92',
            'Module::CoreList::Utils'=> '2.92',
            'Module::Metadata'      => '1.000014',
            'Net::Ping'             => '2.42',
            'OS2::Process'          => '1.09',
            'POSIX'                 => '1.33',
            'Pod::Find'             => '1.61',
            'Pod::Html'             => '1.19',
            'Pod::InputObjects'     => '1.61',
            'Pod::ParseUtils'       => '1.61',
            'Pod::Parser'           => '1.61',
            'Pod::Perldoc'          => '3.20',
            'Pod::Perldoc::BaseTo'  => '3.20',
            'Pod::Perldoc::GetOptsOO'=> '3.20',
            'Pod::Perldoc::ToANSI'  => '3.20',
            'Pod::Perldoc::ToChecker'=> '3.20',
            'Pod::Perldoc::ToMan'   => '3.20',
            'Pod::Perldoc::ToNroff' => '3.20',
            'Pod::Perldoc::ToPod'   => '3.20',
            'Pod::Perldoc::ToRtf'   => '3.20',
            'Pod::Perldoc::ToTerm'  => '3.20',
            'Pod::Perldoc::ToText'  => '3.20',
            'Pod::Perldoc::ToTk'    => '3.20',
            'Pod::Perldoc::ToXml'   => '3.20',
            'Pod::Select'           => '1.61',
            'Pod::Usage'            => '1.63',
            'Safe'                  => '2.36',
            'Storable'              => '2.43',
            'Sys::Hostname'         => '1.18',
            'Sys::Syslog'           => '0.33',
            'TAP::Base'             => '3.28',
            'TAP::Formatter::Base'  => '3.28',
            'TAP::Formatter::Color' => '3.28',
            'TAP::Formatter::Console'=> '3.28',
            'TAP::Formatter::Console::ParallelSession'=> '3.28',
            'TAP::Formatter::Console::Session'=> '3.28',
            'TAP::Formatter::File'  => '3.28',
            'TAP::Formatter::File::Session'=> '3.28',
            'TAP::Formatter::Session'=> '3.28',
            'TAP::Harness'          => '3.28',
            'TAP::Object'           => '3.28',
            'TAP::Parser'           => '3.28',
            'TAP::Parser::Aggregator'=> '3.28',
            'TAP::Parser::Grammar'  => '3.28',
            'TAP::Parser::Iterator' => '3.28',
            'TAP::Parser::Iterator::Array'=> '3.28',
            'TAP::Parser::Iterator::Process'=> '3.28',
            'TAP::Parser::Iterator::Stream'=> '3.28',
            'TAP::Parser::IteratorFactory'=> '3.28',
            'TAP::Parser::Multiplexer'=> '3.28',
            'TAP::Parser::Result'   => '3.28',
            'TAP::Parser::Result::Bailout'=> '3.28',
            'TAP::Parser::Result::Comment'=> '3.28',
            'TAP::Parser::Result::Plan'=> '3.28',
            'TAP::Parser::Result::Pragma'=> '3.28',
            'TAP::Parser::Result::Test'=> '3.28',
            'TAP::Parser::Result::Unknown'=> '3.28',
            'TAP::Parser::Result::Version'=> '3.28',
            'TAP::Parser::Result::YAML'=> '3.28',
            'TAP::Parser::ResultFactory'=> '3.28',
            'TAP::Parser::Scheduler'=> '3.28',
            'TAP::Parser::Scheduler::Job'=> '3.28',
            'TAP::Parser::Scheduler::Spinner'=> '3.28',
            'TAP::Parser::Source'   => '3.28',
            'TAP::Parser::SourceHandler'=> '3.28',
            'TAP::Parser::SourceHandler::Executable'=> '3.28',
            'TAP::Parser::SourceHandler::File'=> '3.28',
            'TAP::Parser::SourceHandler::Handle'=> '3.28',
            'TAP::Parser::SourceHandler::Perl'=> '3.28',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.28',
            'TAP::Parser::Utils'    => '3.28',
            'TAP::Parser::YAMLish::Reader'=> '3.28',
            'TAP::Parser::YAMLish::Writer'=> '3.28',
            'Term::ReadLine'        => '1.13',
            'Test::Harness'         => '3.28',
            'Text::Tabs'            => '2013.0523',
            'Text::Wrap'            => '2013.0523',
            'Thread'                => '3.04',
            'Tie::File'             => '1.00',
            'Time::Piece'           => '1.2002',
            'Unicode::Collate'      => '0.98',
            'Unicode::UCD'          => '0.53',
            'XS::APItest'           => '0.53',
            '_charnames'            => '1.37',
            'autodie'               => '2.19',
            'autodie::exception'    => '2.19',
            'autodie::exception::system'=> '2.19',
            'autodie::hints'        => '2.19',
            'autodie::skip'         => '2.19',
            'bigint'                => '0.35',
            'charnames'             => '1.38',
            'encoding'              => '2.12',
            'inc::latest'           => '0.4005',
            'mro'                   => '1.12',
            'perlfaq'               => '5.0150043',
            're'                    => '0.25',
            'threads'               => '1.87',
            'threads::shared'       => '1.44',
            'utf8'                  => '1.12',
        },
        removed => {
        }
    },
    5.019002 => {
        delta_from => 5.019001,
        changed => {
            'B'                     => '1.44',
            'B::Concise'            => '0.98',
            'B::Deparse'            => '1.22',
            'Benchmark'             => '1.17',
            'Class::Struct'         => '0.65',
            'Config'                => '5.019002',
            'DB'                    => '1.07',
            'DBM_Filter'            => '0.06',
            'DBM_Filter::compress'  => '0.03',
            'DBM_Filter::encode'    => '0.03',
            'DBM_Filter::int32'     => '0.03',
            'DBM_Filter::null'      => '0.03',
            'DBM_Filter::utf8'      => '0.03',
            'DB_File'               => '1.829',
            'Data::Dumper'          => '2.147',
            'Devel::Peek'           => '1.12',
            'Digest::MD5'           => '2.53',
            'Digest::SHA'           => '5.85',
            'English'               => '1.07',
            'Errno'                 => '1.19',
            'ExtUtils::Embed'       => '1.31',
            'ExtUtils::Miniperl'    => '1',
            'ExtUtils::ParseXS'     => '3.21',
            'ExtUtils::ParseXS::Constants'=> '3.21',
            'ExtUtils::ParseXS::CountLines'=> '3.21',
            'ExtUtils::ParseXS::Eval'=> '3.19',
            'ExtUtils::ParseXS::Utilities'=> '3.21',
            'ExtUtils::Typemaps'    => '3.21',
            'ExtUtils::Typemaps::Cmd'=> '3.21',
            'ExtUtils::Typemaps::InputMap'=> '3.21',
            'ExtUtils::Typemaps::OutputMap'=> '3.21',
            'ExtUtils::Typemaps::Type'=> '3.21',
            'ExtUtils::XSSymSet'    => '1.3',
            'Fatal'                 => '2.20',
            'File::Basename'        => '2.85',
            'File::Spec::VMS'       => '3.43',
            'File::Spec::Win32'     => '3.42',
            'Getopt::Long'          => '2.41',
            'Getopt::Std'           => '1.09',
            'HTTP::Tiny'            => '0.034',
            'Hash::Util::FieldHash' => '1.12',
            'I18N::Langinfo'        => '0.11',
            'IO::Socket::INET'      => '1.34',
            'IO::Socket::UNIX'      => '1.25',
            'IPC::Cmd'              => '0.82',
            'MIME::Base64'          => '3.14',
            'Module::CoreList'      => '2.94',
            'Module::CoreList::TieHashDelta'=> '2.94',
            'Module::CoreList::Utils'=> '2.94',
            'POSIX'                 => '1.34',
            'Params::Check'         => '0.38',
            'Parse::CPAN::Meta'     => '1.4405',
            'Pod::Functions'        => '1.07',
            'Pod::Html'             => '1.2',
            'Safe'                  => '2.37',
            'Socket'                => '2.010',
            'Storable'              => '2.45',
            'Text::ParseWords'      => '3.29',
            'Tie::Array'            => '1.06',
            'Tie::Hash'             => '1.05',
            'Tie::Scalar'           => '1.03',
            'Time::Piece'           => '1.21',
            'Time::Seconds'         => '1.21',
            'XS::APItest'           => '0.54',
            'autodie'               => '2.20',
            'autodie::exception'    => '2.20',
            'autodie::exception::system'=> '2.20',
            'autodie::hints'        => '2.20',
            'autodie::skip'         => '2.20',
            'base'                  => '2.19',
            'deprecate'             => '0.03',
            'if'                    => '0.0603',
            'integer'               => '1.01',
            'strict'                => '1.08',
            'subs'                  => '1.02',
            'vmsish'                => '1.04',
        },
        removed => {
        }
    },
    5.019003 => {
        delta_from => 5.019002,
        changed => {
            'B'                     => '1.45',
            'CPAN::Meta'            => '2.132140',
            'CPAN::Meta::Converter' => '2.132140',
            'CPAN::Meta::Feature'   => '2.132140',
            'CPAN::Meta::History'   => '2.132140',
            'CPAN::Meta::Prereqs'   => '2.132140',
            'CPAN::Meta::Spec'      => '2.132140',
            'CPAN::Meta::Validator' => '2.132140',
            'Carp'                  => '1.31',
            'Carp::Heavy'           => '1.31',
            'Compress::Raw::Bzip2'  => '2.062',
            'Compress::Raw::Zlib'   => '2.062',
            'Compress::Zlib'        => '2.062',
            'Config'                => '5.019003',
            'Config::Perl::V'       => '0.19',
            'Cwd'                   => '3.44',
            'Data::Dumper'          => '2.148',
            'Devel::PPPort'         => '3.21',
            'Devel::Peek'           => '1.13',
            'DynaLoader'            => '1.19',
            'Encode'                => '2.52',
            'Encode::Alias'         => '2.17',
            'Encode::Encoding'      => '2.06',
            'Encode::GSM0338'       => '2.04',
            'Encode::MIME::Header'  => '2.14',
            'Encode::Unicode'       => '2.08',
            'English'               => '1.08',
            'Exporter'              => '5.69',
            'Exporter::Heavy'       => '5.69',
            'ExtUtils::Command::MM' => '6.72',
            'ExtUtils::Liblist'     => '6.72',
            'ExtUtils::Liblist::Kid'=> '6.72',
            'ExtUtils::MM'          => '6.72',
            'ExtUtils::MM_AIX'      => '6.72',
            'ExtUtils::MM_Any'      => '6.72',
            'ExtUtils::MM_BeOS'     => '6.72',
            'ExtUtils::MM_Cygwin'   => '6.72',
            'ExtUtils::MM_DOS'      => '6.72',
            'ExtUtils::MM_Darwin'   => '6.72',
            'ExtUtils::MM_MacOS'    => '6.72',
            'ExtUtils::MM_NW5'      => '6.72',
            'ExtUtils::MM_OS2'      => '6.72',
            'ExtUtils::MM_QNX'      => '6.72',
            'ExtUtils::MM_UWIN'     => '6.72',
            'ExtUtils::MM_Unix'     => '6.72',
            'ExtUtils::MM_VMS'      => '6.72',
            'ExtUtils::MM_VOS'      => '6.72',
            'ExtUtils::MM_Win32'    => '6.72',
            'ExtUtils::MM_Win95'    => '6.72',
            'ExtUtils::MY'          => '6.72',
            'ExtUtils::MakeMaker'   => '6.72',
            'ExtUtils::MakeMaker::Config'=> '6.72',
            'ExtUtils::Mkbootstrap' => '6.72',
            'ExtUtils::Mksymlists'  => '6.72',
            'ExtUtils::ParseXS::Eval'=> '3.21',
            'ExtUtils::testlib'     => '6.72',
            'File::Spec'            => '3.44',
            'File::Spec::Cygwin'    => '3.44',
            'File::Spec::Epoc'      => '3.44',
            'File::Spec::Functions' => '3.44',
            'File::Spec::Mac'       => '3.44',
            'File::Spec::OS2'       => '3.44',
            'File::Spec::Unix'      => '3.44',
            'File::Spec::VMS'       => '3.44',
            'File::Spec::Win32'     => '3.44',
            'Getopt::Std'           => '1.10',
            'IO::Compress::Adapter::Bzip2'=> '2.062',
            'IO::Compress::Adapter::Deflate'=> '2.062',
            'IO::Compress::Adapter::Identity'=> '2.062',
            'IO::Compress::Base'    => '2.062',
            'IO::Compress::Base::Common'=> '2.062',
            'IO::Compress::Bzip2'   => '2.062',
            'IO::Compress::Deflate' => '2.062',
            'IO::Compress::Gzip'    => '2.062',
            'IO::Compress::Gzip::Constants'=> '2.062',
            'IO::Compress::RawDeflate'=> '2.062',
            'IO::Compress::Zip'     => '2.062',
            'IO::Compress::Zip::Constants'=> '2.062',
            'IO::Compress::Zlib::Constants'=> '2.062',
            'IO::Compress::Zlib::Extra'=> '2.062',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.062',
            'IO::Uncompress::Adapter::Identity'=> '2.062',
            'IO::Uncompress::Adapter::Inflate'=> '2.062',
            'IO::Uncompress::AnyInflate'=> '2.062',
            'IO::Uncompress::AnyUncompress'=> '2.062',
            'IO::Uncompress::Base'  => '2.062',
            'IO::Uncompress::Bunzip2'=> '2.062',
            'IO::Uncompress::Gunzip'=> '2.062',
            'IO::Uncompress::Inflate'=> '2.062',
            'IO::Uncompress::RawInflate'=> '2.062',
            'IO::Uncompress::Unzip' => '2.062',
            'IPC::Cmd'              => '0.84',
            'IPC::Msg'              => '2.04',
            'IPC::Open3'            => '1.15',
            'IPC::Semaphore'        => '2.04',
            'IPC::SharedMem'        => '2.04',
            'IPC::SysV'             => '2.04',
            'List::Util'            => '1.31',
            'List::Util::XS'        => '1.31',
            'Math::BigFloat::Trace' => '0.36',
            'Math::BigInt::Trace'   => '0.36',
            'Module::Build'         => '0.4007',
            'Module::Build::Base'   => '0.4007',
            'Module::Build::Compat' => '0.4007',
            'Module::Build::Config' => '0.4007',
            'Module::Build::Cookbook'=> '0.4007',
            'Module::Build::Dumper' => '0.4007',
            'Module::Build::ModuleInfo'=> '0.4007',
            'Module::Build::Notes'  => '0.4007',
            'Module::Build::PPMMaker'=> '0.4007',
            'Module::Build::Platform::Default'=> '0.4007',
            'Module::Build::Platform::MacOS'=> '0.4007',
            'Module::Build::Platform::Unix'=> '0.4007',
            'Module::Build::Platform::VMS'=> '0.4007',
            'Module::Build::Platform::VOS'=> '0.4007',
            'Module::Build::Platform::Windows'=> '0.4007',
            'Module::Build::Platform::aix'=> '0.4007',
            'Module::Build::Platform::cygwin'=> '0.4007',
            'Module::Build::Platform::darwin'=> '0.4007',
            'Module::Build::Platform::os2'=> '0.4007',
            'Module::Build::PodParser'=> '0.4007',
            'Module::CoreList'      => '2.97',
            'Module::CoreList::TieHashDelta'=> '2.97',
            'Module::CoreList::Utils'=> '2.97',
            'Net::Cmd'              => '2.30',
            'Net::Config'           => '1.12',
            'Net::Domain'           => '2.22',
            'Net::FTP'              => '2.78',
            'Net::FTP::dataconn'    => '0.12',
            'Net::NNTP'             => '2.25',
            'Net::Netrc'            => '2.14',
            'Net::POP3'             => '2.30',
            'Net::SMTP'             => '2.32',
            'PerlIO'                => '1.08',
            'Pod::Functions'        => '1.08',
            'Scalar::Util'          => '1.31',
            'Socket'                => '2.011',
            'Storable'              => '2.46',
            'Time::HiRes'           => '1.9726',
            'Time::Piece'           => '1.22',
            'Time::Seconds'         => '1.22',
            'XS::APItest'           => '0.55',
            'bigint'                => '0.36',
            'bignum'                => '0.36',
            'bigrat'                => '0.36',
            'constant'              => '1.28',
            'diagnostics'           => '1.32',
            'inc::latest'           => '0.4007',
            'mro'                   => '1.13',
            'parent'                => '0.226',
            'utf8'                  => '1.13',
            'version'               => '0.9903',
        },
        removed => {
           'Module::Build::Platform::Amiga'=> 1,
           'Module::Build::Platform::EBCDIC'=> 1,
           'Module::Build::Platform::MPEiX'=> 1,
           'Module::Build::Platform::RiscOS'=> 1,
        }
    },
    5.019004 => {
        delta_from => 5.019003,
        changed => {
            'B'                     => '1.46',
            'B::Concise'            => '0.99',
            'B::Deparse'            => '1.23',
            'CPAN'                  => '2.03',
            'CPAN::Meta'            => '2.132620',
            'CPAN::Meta::Converter' => '2.132620',
            'CPAN::Meta::Feature'   => '2.132620',
            'CPAN::Meta::History'   => '2.132620',
            'CPAN::Meta::Prereqs'   => '2.132620',
            'CPAN::Meta::Requirements'=> '2.123',
            'CPAN::Meta::Spec'      => '2.132620',
            'CPAN::Meta::Validator' => '2.132620',
            'Carp'                  => '1.32',
            'Carp::Heavy'           => '1.32',
            'Config'                => '5.019004',
            'Data::Dumper'          => '2.149',
            'Devel::Peek'           => '1.14',
            'DynaLoader'            => '1.20',
            'Encode'                => '2.55',
            'Encode::Alias'         => '2.18',
            'Encode::CN::HZ'        => '2.07',
            'Encode::Encoder'       => '2.03',
            'Encode::Encoding'      => '2.07',
            'Encode::GSM0338'       => '2.05',
            'Encode::Guess'         => '2.06',
            'Encode::JP::JIS7'      => '2.05',
            'Encode::KR::2022_KR'   => '2.03',
            'Encode::MIME::Header'  => '2.15',
            'Encode::MIME::Header::ISO_2022_JP'=> '1.04',
            'Encode::Unicode'       => '2.09',
            'Encode::Unicode::UTF7' => '2.08',
            'Errno'                 => '1.20',
            'Exporter'              => '5.70',
            'Exporter::Heavy'       => '5.70',
            'ExtUtils::CBuilder'    => '0.280212',
            'ExtUtils::CBuilder::Base'=> '0.280212',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280212',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280212',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280212',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280212',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280212',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280212',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280212',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280212',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280212',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280212',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280212',
            'ExtUtils::Command'     => '1.18',
            'ExtUtils::Command::MM' => '6.76',
            'ExtUtils::Liblist'     => '6.76',
            'ExtUtils::Liblist::Kid'=> '6.76',
            'ExtUtils::MM'          => '6.76',
            'ExtUtils::MM_AIX'      => '6.76',
            'ExtUtils::MM_Any'      => '6.76',
            'ExtUtils::MM_BeOS'     => '6.76',
            'ExtUtils::MM_Cygwin'   => '6.76',
            'ExtUtils::MM_DOS'      => '6.76',
            'ExtUtils::MM_Darwin'   => '6.76',
            'ExtUtils::MM_MacOS'    => '6.76',
            'ExtUtils::MM_NW5'      => '6.76',
            'ExtUtils::MM_OS2'      => '6.76',
            'ExtUtils::MM_QNX'      => '6.76',
            'ExtUtils::MM_UWIN'     => '6.76',
            'ExtUtils::MM_Unix'     => '6.76',
            'ExtUtils::MM_VMS'      => '6.76',
            'ExtUtils::MM_VOS'      => '6.76',
            'ExtUtils::MM_Win32'    => '6.76',
            'ExtUtils::MM_Win95'    => '6.76',
            'ExtUtils::MY'          => '6.76',
            'ExtUtils::MakeMaker'   => '6.76',
            'ExtUtils::MakeMaker::Config'=> '6.76',
            'ExtUtils::Mkbootstrap' => '6.76',
            'ExtUtils::Mksymlists'  => '6.76',
            'ExtUtils::ParseXS'     => '3.23',
            'ExtUtils::ParseXS::Constants'=> '3.23',
            'ExtUtils::ParseXS::CountLines'=> '3.23',
            'ExtUtils::ParseXS::Eval'=> '3.23',
            'ExtUtils::ParseXS::Utilities'=> '3.23',
            'ExtUtils::Typemaps'    => '3.23',
            'ExtUtils::Typemaps::Cmd'=> '3.23',
            'ExtUtils::Typemaps::InputMap'=> '3.23',
            'ExtUtils::Typemaps::OutputMap'=> '3.23',
            'ExtUtils::Typemaps::Type'=> '3.23',
            'ExtUtils::testlib'     => '6.76',
            'Fatal'                 => '2.21',
            'File::Copy'            => '2.28',
            'File::Find'            => '1.25',
            'File::Glob'            => '1.21',
            'FileCache'             => '1.09',
            'HTTP::Tiny'            => '0.035',
            'Hash::Util::FieldHash' => '1.13',
            'I18N::LangTags'        => '0.40',
            'IO'                    => '1.29',
            'IO::Socket'            => '1.37',
            'IPC::Open3'            => '1.16',
            'JSON::PP'              => '2.27202_01',
            'List::Util'            => '1.32',
            'List::Util::XS'        => '1.32',
            'Locale::Codes'         => '3.27',
            'Locale::Codes::Constants'=> '3.27',
            'Locale::Codes::Country'=> '3.27',
            'Locale::Codes::Country_Codes'=> '3.27',
            'Locale::Codes::Country_Retired'=> '3.27',
            'Locale::Codes::Currency'=> '3.27',
            'Locale::Codes::Currency_Codes'=> '3.27',
            'Locale::Codes::Currency_Retired'=> '3.27',
            'Locale::Codes::LangExt'=> '3.27',
            'Locale::Codes::LangExt_Codes'=> '3.27',
            'Locale::Codes::LangExt_Retired'=> '3.27',
            'Locale::Codes::LangFam'=> '3.27',
            'Locale::Codes::LangFam_Codes'=> '3.27',
            'Locale::Codes::LangFam_Retired'=> '3.27',
            'Locale::Codes::LangVar'=> '3.27',
            'Locale::Codes::LangVar_Codes'=> '3.27',
            'Locale::Codes::LangVar_Retired'=> '3.27',
            'Locale::Codes::Language'=> '3.27',
            'Locale::Codes::Language_Codes'=> '3.27',
            'Locale::Codes::Language_Retired'=> '3.27',
            'Locale::Codes::Script' => '3.27',
            'Locale::Codes::Script_Codes'=> '3.27',
            'Locale::Codes::Script_Retired'=> '3.27',
            'Locale::Country'       => '3.27',
            'Locale::Currency'      => '3.27',
            'Locale::Language'      => '3.27',
            'Locale::Script'        => '3.27',
            'Math::BigFloat'        => '1.9991',
            'Math::BigInt'          => '1.9993',
            'Math::BigInt::FastCalc'=> '0.31',
            'Module::CoreList'      => '2.99',
            'Module::CoreList::TieHashDelta'=> '2.99',
            'Module::CoreList::Utils'=> '2.99',
            'Module::Load::Conditional'=> '0.58',
            'Module::Metadata'      => '1.000018',
            'Opcode'                => '1.26',
            'POSIX'                 => '1.35',
            'Parse::CPAN::Meta'     => '1.4407',
            'Perl::OSType'          => '1.005',
            'Pod::Html'             => '1.21',
            'Scalar::Util'          => '1.32',
            'Socket'                => '2.012',
            'Storable'              => '2.47',
            'Term::ReadLine'        => '1.14',
            'Test::Builder'         => '0.98_06',
            'Test::Builder::Module' => '0.98_06',
            'Test::More'            => '0.98_06',
            'Test::Simple'          => '0.98_06',
            'Time::Piece'           => '1.23',
            'Time::Seconds'         => '1.23',
            'Unicode::Collate'      => '0.99',
            'Unicode::UCD'          => '0.54',
            'XS::APItest'           => '0.56',
            'XS::Typemap'           => '0.11',
            '_charnames'            => '1.39',
            'autodie'               => '2.21',
            'autodie::exception'    => '2.21',
            'autodie::exception::system'=> '2.21',
            'autodie::hints'        => '2.21',
            'autodie::skip'         => '2.21',
            'charnames'             => '1.39',
            'diagnostics'           => '1.33',
            'mro'                   => '1.14',
            'parent'                => '0.228',
            'perlfaq'               => '5.0150044',
            're'                    => '0.26',
            'version'               => '0.9904',
            'warnings'              => '1.19',
        },
        removed => {
        }
    },
    5.019005 => {
        delta_from => 5.019004,
        changed => {
            'App::Prove'            => '3.29',
            'App::Prove::State'     => '3.29',
            'App::Prove::State::Result'=> '3.29',
            'App::Prove::State::Result::Test'=> '3.29',
            'CPAN::Meta'            => '2.132830',
            'CPAN::Meta::Converter' => '2.132830',
            'CPAN::Meta::Feature'   => '2.132830',
            'CPAN::Meta::History'   => '2.132830',
            'CPAN::Meta::Prereqs'   => '2.132830',
            'CPAN::Meta::Requirements'=> '2.125',
            'CPAN::Meta::Spec'      => '2.132830',
            'CPAN::Meta::Validator' => '2.132830',
            'CPAN::Meta::YAML'      => '0.010',
            'Config'                => '5.019005',
            'Cwd'                   => '3.45',
            'ExtUtils::Command::MM' => '6.80',
            'ExtUtils::Install'     => '1.61',
            'ExtUtils::Liblist'     => '6.80',
            'ExtUtils::Liblist::Kid'=> '6.80',
            'ExtUtils::MM'          => '6.80',
            'ExtUtils::MM_AIX'      => '6.80',
            'ExtUtils::MM_Any'      => '6.80',
            'ExtUtils::MM_BeOS'     => '6.80',
            'ExtUtils::MM_Cygwin'   => '6.80',
            'ExtUtils::MM_DOS'      => '6.80',
            'ExtUtils::MM_Darwin'   => '6.80',
            'ExtUtils::MM_MacOS'    => '6.80',
            'ExtUtils::MM_NW5'      => '6.80',
            'ExtUtils::MM_OS2'      => '6.80',
            'ExtUtils::MM_QNX'      => '6.80',
            'ExtUtils::MM_UWIN'     => '6.80',
            'ExtUtils::MM_Unix'     => '6.80',
            'ExtUtils::MM_VMS'      => '6.80',
            'ExtUtils::MM_VOS'      => '6.80',
            'ExtUtils::MM_Win32'    => '6.80',
            'ExtUtils::MM_Win95'    => '6.80',
            'ExtUtils::MY'          => '6.80',
            'ExtUtils::MakeMaker'   => '6.80',
            'ExtUtils::MakeMaker::Config'=> '6.80',
            'ExtUtils::Mkbootstrap' => '6.80',
            'ExtUtils::Mksymlists'  => '6.80',
            'ExtUtils::testlib'     => '6.80',
            'Fatal'                 => '2.22',
            'File::Fetch'           => '0.44',
            'File::Glob'            => '1.22',
            'File::Spec'            => '3.45',
            'File::Spec::Cygwin'    => '3.45',
            'File::Spec::Epoc'      => '3.45',
            'File::Spec::Functions' => '3.45',
            'File::Spec::Mac'       => '3.45',
            'File::Spec::OS2'       => '3.45',
            'File::Spec::Unix'      => '3.45',
            'File::Spec::VMS'       => '3.45',
            'File::Spec::Win32'     => '3.45',
            'File::Temp'            => '0.2304',
            'Getopt::Long'          => '2.42',
            'HTTP::Tiny'            => '0.036',
            'IPC::Cmd'              => '0.84_01',
            'JSON::PP'              => '2.27203',
            'List::Util'            => '1.35',
            'List::Util::XS'        => '1.35',
            'Module::CoreList'      => '3.00',
            'Module::CoreList::TieHashDelta'=> '3.00',
            'Module::CoreList::Utils'=> '3.00',
            'Module::Metadata'      => '1.000019',
            'Parse::CPAN::Meta'     => '1.4409',
            'Perl::OSType'          => '1.006',
            'PerlIO::scalar'        => '0.17',
            'Pod::Man'              => '2.28',
            'Pod::Text'             => '3.18',
            'Pod::Text::Termcap'    => '2.08',
            'Scalar::Util'          => '1.35',
            'TAP::Base'             => '3.29',
            'TAP::Formatter::Base'  => '3.29',
            'TAP::Formatter::Color' => '3.29',
            'TAP::Formatter::Console'=> '3.29',
            'TAP::Formatter::Console::ParallelSession'=> '3.29',
            'TAP::Formatter::Console::Session'=> '3.29',
            'TAP::Formatter::File'  => '3.29',
            'TAP::Formatter::File::Session'=> '3.29',
            'TAP::Formatter::Session'=> '3.29',
            'TAP::Harness'          => '3.29',
            'TAP::Harness::Env'     => '3.29',
            'TAP::Object'           => '3.29',
            'TAP::Parser'           => '3.29',
            'TAP::Parser::Aggregator'=> '3.29',
            'TAP::Parser::Grammar'  => '3.29',
            'TAP::Parser::Iterator' => '3.29',
            'TAP::Parser::Iterator::Array'=> '3.29',
            'TAP::Parser::Iterator::Process'=> '3.29',
            'TAP::Parser::Iterator::Stream'=> '3.29',
            'TAP::Parser::IteratorFactory'=> '3.29',
            'TAP::Parser::Multiplexer'=> '3.29',
            'TAP::Parser::Result'   => '3.29',
            'TAP::Parser::Result::Bailout'=> '3.29',
            'TAP::Parser::Result::Comment'=> '3.29',
            'TAP::Parser::Result::Plan'=> '3.29',
            'TAP::Parser::Result::Pragma'=> '3.29',
            'TAP::Parser::Result::Test'=> '3.29',
            'TAP::Parser::Result::Unknown'=> '3.29',
            'TAP::Parser::Result::Version'=> '3.29',
            'TAP::Parser::Result::YAML'=> '3.29',
            'TAP::Parser::ResultFactory'=> '3.29',
            'TAP::Parser::Scheduler'=> '3.29',
            'TAP::Parser::Scheduler::Job'=> '3.29',
            'TAP::Parser::Scheduler::Spinner'=> '3.29',
            'TAP::Parser::Source'   => '3.29',
            'TAP::Parser::SourceHandler'=> '3.29',
            'TAP::Parser::SourceHandler::Executable'=> '3.29',
            'TAP::Parser::SourceHandler::File'=> '3.29',
            'TAP::Parser::SourceHandler::Handle'=> '3.29',
            'TAP::Parser::SourceHandler::Perl'=> '3.29',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.29',
            'TAP::Parser::YAMLish::Reader'=> '3.29',
            'TAP::Parser::YAMLish::Writer'=> '3.29',
            'Test::Builder'         => '0.99',
            'Test::Builder::Module' => '0.99',
            'Test::Builder::Tester' => '1.23_002',
            'Test::Builder::Tester::Color'=> '1.23_002',
            'Test::Harness'         => '3.29',
            'Test::More'            => '0.99',
            'Test::Simple'          => '0.99',
            'Unicode'               => '6.3.0',
            'Unicode::Normalize'    => '1.17',
            'Unicode::UCD'          => '0.55',
            'attributes'            => '0.22',
            'autodie'               => '2.22',
            'autodie::exception'    => '2.22',
            'autodie::exception::system'=> '2.22',
            'autodie::hints'        => '2.22',
            'autodie::skip'         => '2.22',
            'feature'               => '1.34',
            'threads'               => '1.89',
            'warnings'              => '1.20',
        },
        removed => {
            'TAP::Parser::Utils'    => 1,
        }
    },
    5.019006 => {
        delta_from => 5.019005,
        changed => {
            'App::Prove'            => '3.30',
            'App::Prove::State'     => '3.30',
            'App::Prove::State::Result'=> '3.30',
            'App::Prove::State::Result::Test'=> '3.30',
            'Archive::Tar'          => '1.96',
            'Archive::Tar::Constant'=> '1.96',
            'Archive::Tar::File'    => '1.96',
            'AutoLoader'            => '5.74',
            'B'                     => '1.47',
            'B::Concise'            => '0.991',
            'B::Debug'              => '1.19',
            'B::Deparse'            => '1.24',
            'Benchmark'             => '1.18',
            'Compress::Raw::Bzip2'  => '2.063',
            'Compress::Raw::Zlib'   => '2.063',
            'Compress::Zlib'        => '2.063',
            'Config'                => '5.019006',
            'DB_File'               => '1.831',
            'Devel::Peek'           => '1.15',
            'DynaLoader'            => '1.21',
            'Errno'                 => '1.20_01',
            'ExtUtils::Command::MM' => '6.82',
            'ExtUtils::Liblist'     => '6.82',
            'ExtUtils::Liblist::Kid'=> '6.82',
            'ExtUtils::MM'          => '6.82',
            'ExtUtils::MM_AIX'      => '6.82',
            'ExtUtils::MM_Any'      => '6.82',
            'ExtUtils::MM_BeOS'     => '6.82',
            'ExtUtils::MM_Cygwin'   => '6.82',
            'ExtUtils::MM_DOS'      => '6.82',
            'ExtUtils::MM_Darwin'   => '6.82',
            'ExtUtils::MM_MacOS'    => '6.82',
            'ExtUtils::MM_NW5'      => '6.82',
            'ExtUtils::MM_OS2'      => '6.82',
            'ExtUtils::MM_QNX'      => '6.82',
            'ExtUtils::MM_UWIN'     => '6.82',
            'ExtUtils::MM_Unix'     => '6.82',
            'ExtUtils::MM_VMS'      => '6.82',
            'ExtUtils::MM_VOS'      => '6.82',
            'ExtUtils::MM_Win32'    => '6.82',
            'ExtUtils::MM_Win95'    => '6.82',
            'ExtUtils::MY'          => '6.82',
            'ExtUtils::MakeMaker'   => '6.82',
            'ExtUtils::MakeMaker::Config'=> '6.82',
            'ExtUtils::Mkbootstrap' => '6.82',
            'ExtUtils::Mksymlists'  => '6.82',
            'ExtUtils::testlib'     => '6.82',
            'File::DosGlob'         => '1.12',
            'File::Find'            => '1.26',
            'File::Glob'            => '1.23',
            'HTTP::Tiny'            => '0.038',
            'IO'                    => '1.30',
            'IO::Compress::Adapter::Bzip2'=> '2.063',
            'IO::Compress::Adapter::Deflate'=> '2.063',
            'IO::Compress::Adapter::Identity'=> '2.063',
            'IO::Compress::Base'    => '2.063',
            'IO::Compress::Base::Common'=> '2.063',
            'IO::Compress::Bzip2'   => '2.063',
            'IO::Compress::Deflate' => '2.063',
            'IO::Compress::Gzip'    => '2.063',
            'IO::Compress::Gzip::Constants'=> '2.063',
            'IO::Compress::RawDeflate'=> '2.063',
            'IO::Compress::Zip'     => '2.063',
            'IO::Compress::Zip::Constants'=> '2.063',
            'IO::Compress::Zlib::Constants'=> '2.063',
            'IO::Compress::Zlib::Extra'=> '2.063',
            'IO::Select'            => '1.22',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.063',
            'IO::Uncompress::Adapter::Identity'=> '2.063',
            'IO::Uncompress::Adapter::Inflate'=> '2.063',
            'IO::Uncompress::AnyInflate'=> '2.063',
            'IO::Uncompress::AnyUncompress'=> '2.063',
            'IO::Uncompress::Base'  => '2.063',
            'IO::Uncompress::Bunzip2'=> '2.063',
            'IO::Uncompress::Gunzip'=> '2.063',
            'IO::Uncompress::Inflate'=> '2.063',
            'IO::Uncompress::RawInflate'=> '2.063',
            'IO::Uncompress::Unzip' => '2.063',
            'IPC::Cmd'              => '0.90',
            'Locale::Maketext'      => '1.25',
            'Module::Build'         => '0.4202',
            'Module::Build::Base'   => '0.4202',
            'Module::Build::Compat' => '0.4202',
            'Module::Build::Config' => '0.4202',
            'Module::Build::Cookbook'=> '0.4202',
            'Module::Build::Dumper' => '0.4202',
            'Module::Build::ModuleInfo'=> '0.4202',
            'Module::Build::Notes'  => '0.4202',
            'Module::Build::PPMMaker'=> '0.4202',
            'Module::Build::Platform::Default'=> '0.4202',
            'Module::Build::Platform::MacOS'=> '0.4202',
            'Module::Build::Platform::Unix'=> '0.4202',
            'Module::Build::Platform::VMS'=> '0.4202',
            'Module::Build::Platform::VOS'=> '0.4202',
            'Module::Build::Platform::Windows'=> '0.4202',
            'Module::Build::Platform::aix'=> '0.4202',
            'Module::Build::Platform::cygwin'=> '0.4202',
            'Module::Build::Platform::darwin'=> '0.4202',
            'Module::Build::Platform::os2'=> '0.4202',
            'Module::Build::PodParser'=> '0.4202',
            'Module::CoreList'      => '3.01',
            'Module::CoreList::TieHashDelta'=> '3.01',
            'Module::CoreList::Utils'=> '3.01',
            'Opcode'                => '1.27',
            'POSIX'                 => '1.36',
            'Package::Constants'    => '0.04',
            'PerlIO::scalar'        => '0.18',
            'PerlIO::via'           => '0.13',
            'SDBM_File'             => '1.10',
            'Socket'                => '2.013',
            'TAP::Base'             => '3.30',
            'TAP::Formatter::Base'  => '3.30',
            'TAP::Formatter::Color' => '3.30',
            'TAP::Formatter::Console'=> '3.30',
            'TAP::Formatter::Console::ParallelSession'=> '3.30',
            'TAP::Formatter::Console::Session'=> '3.30',
            'TAP::Formatter::File'  => '3.30',
            'TAP::Formatter::File::Session'=> '3.30',
            'TAP::Formatter::Session'=> '3.30',
            'TAP::Harness'          => '3.30',
            'TAP::Harness::Env'     => '3.30',
            'TAP::Object'           => '3.30',
            'TAP::Parser'           => '3.30',
            'TAP::Parser::Aggregator'=> '3.30',
            'TAP::Parser::Grammar'  => '3.30',
            'TAP::Parser::Iterator' => '3.30',
            'TAP::Parser::Iterator::Array'=> '3.30',
            'TAP::Parser::Iterator::Process'=> '3.30',
            'TAP::Parser::Iterator::Stream'=> '3.30',
            'TAP::Parser::IteratorFactory'=> '3.30',
            'TAP::Parser::Multiplexer'=> '3.30',
            'TAP::Parser::Result'   => '3.30',
            'TAP::Parser::Result::Bailout'=> '3.30',
            'TAP::Parser::Result::Comment'=> '3.30',
            'TAP::Parser::Result::Plan'=> '3.30',
            'TAP::Parser::Result::Pragma'=> '3.30',
            'TAP::Parser::Result::Test'=> '3.30',
            'TAP::Parser::Result::Unknown'=> '3.30',
            'TAP::Parser::Result::Version'=> '3.30',
            'TAP::Parser::Result::YAML'=> '3.30',
            'TAP::Parser::ResultFactory'=> '3.30',
            'TAP::Parser::Scheduler'=> '3.30',
            'TAP::Parser::Scheduler::Job'=> '3.30',
            'TAP::Parser::Scheduler::Spinner'=> '3.30',
            'TAP::Parser::Source'   => '3.30',
            'TAP::Parser::SourceHandler'=> '3.30',
            'TAP::Parser::SourceHandler::Executable'=> '3.30',
            'TAP::Parser::SourceHandler::File'=> '3.30',
            'TAP::Parser::SourceHandler::Handle'=> '3.30',
            'TAP::Parser::SourceHandler::Perl'=> '3.30',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.30',
            'TAP::Parser::YAMLish::Reader'=> '3.30',
            'TAP::Parser::YAMLish::Writer'=> '3.30',
            'Term::Cap'             => '1.15',
            'Test::Builder'         => '1.001002',
            'Test::Builder::Module' => '1.001002',
            'Test::Harness'         => '3.30',
            'Test::More'            => '1.001002',
            'Test::Simple'          => '1.001002',
            'Tie::StdHandle'        => '4.4',
            'Unicode::Collate'      => '1.02',
            'Unicode::Collate::CJK::Korean'=> '1.02',
            'Unicode::Collate::Locale'=> '1.02',
            'XS::APItest'           => '0.57',
            'XS::Typemap'           => '0.12',
            'arybase'               => '0.07',
            'bignum'                => '0.37',
            'constant'              => '1.29',
            'fields'                => '2.17',
            'inc::latest'           => '0.4202',
            'threads'               => '1.90',
            'threads::shared'       => '1.45',
        },
        removed => {
        }
    },
    5.019007 => {
        delta_from => 5.019006,
        changed => {
            'CGI'                   => '3.64',
            'CGI::Apache'           => '1.02',
            'CGI::Carp'             => '3.64',
            'CGI::Cookie'           => '1.31',
            'CGI::Fast'             => '1.10',
            'CGI::Pretty'           => '3.64',
            'CGI::Push'             => '1.06',
            'CGI::Switch'           => '1.02',
            'CGI::Util'             => '3.64',
            'CPAN::Meta'            => '2.133380',
            'CPAN::Meta::Converter' => '2.133380',
            'CPAN::Meta::Feature'   => '2.133380',
            'CPAN::Meta::History'   => '2.133380',
            'CPAN::Meta::Prereqs'   => '2.133380',
            'CPAN::Meta::Spec'      => '2.133380',
            'CPAN::Meta::Validator' => '2.133380',
            'Config'                => '5.019007',
            'Data::Dumper'          => '2.150',
            'DynaLoader'            => '1.22',
            'ExtUtils::Command::MM' => '6.84',
            'ExtUtils::Liblist'     => '6.84',
            'ExtUtils::Liblist::Kid'=> '6.84',
            'ExtUtils::MM'          => '6.84',
            'ExtUtils::MM_AIX'      => '6.84',
            'ExtUtils::MM_Any'      => '6.84',
            'ExtUtils::MM_BeOS'     => '6.84',
            'ExtUtils::MM_Cygwin'   => '6.84',
            'ExtUtils::MM_DOS'      => '6.84',
            'ExtUtils::MM_Darwin'   => '6.84',
            'ExtUtils::MM_MacOS'    => '6.84',
            'ExtUtils::MM_NW5'      => '6.84',
            'ExtUtils::MM_OS2'      => '6.84',
            'ExtUtils::MM_QNX'      => '6.84',
            'ExtUtils::MM_UWIN'     => '6.84',
            'ExtUtils::MM_Unix'     => '6.84',
            'ExtUtils::MM_VMS'      => '6.84',
            'ExtUtils::MM_VOS'      => '6.84',
            'ExtUtils::MM_Win32'    => '6.84',
            'ExtUtils::MM_Win95'    => '6.84',
            'ExtUtils::MY'          => '6.84',
            'ExtUtils::MakeMaker'   => '6.84',
            'ExtUtils::MakeMaker::Config'=> '6.84',
            'ExtUtils::Mkbootstrap' => '6.84',
            'ExtUtils::Mksymlists'  => '6.84',
            'ExtUtils::testlib'     => '6.84',
            'File::Fetch'           => '0.46',
            'HTTP::Tiny'            => '0.039',
            'Locale::Codes'         => '3.28',
            'Locale::Codes::Constants'=> '3.28',
            'Locale::Codes::Country'=> '3.28',
            'Locale::Codes::Country_Codes'=> '3.28',
            'Locale::Codes::Country_Retired'=> '3.28',
            'Locale::Codes::Currency'=> '3.28',
            'Locale::Codes::Currency_Codes'=> '3.28',
            'Locale::Codes::Currency_Retired'=> '3.28',
            'Locale::Codes::LangExt'=> '3.28',
            'Locale::Codes::LangExt_Codes'=> '3.28',
            'Locale::Codes::LangExt_Retired'=> '3.28',
            'Locale::Codes::LangFam'=> '3.28',
            'Locale::Codes::LangFam_Codes'=> '3.28',
            'Locale::Codes::LangFam_Retired'=> '3.28',
            'Locale::Codes::LangVar'=> '3.28',
            'Locale::Codes::LangVar_Codes'=> '3.28',
            'Locale::Codes::LangVar_Retired'=> '3.28',
            'Locale::Codes::Language'=> '3.28',
            'Locale::Codes::Language_Codes'=> '3.28',
            'Locale::Codes::Language_Retired'=> '3.28',
            'Locale::Codes::Script' => '3.28',
            'Locale::Codes::Script_Codes'=> '3.28',
            'Locale::Codes::Script_Retired'=> '3.28',
            'Locale::Country'       => '3.28',
            'Locale::Currency'      => '3.28',
            'Locale::Language'      => '3.28',
            'Locale::Script'        => '3.28',
            'Module::Build'         => '0.4203',
            'Module::Build::Base'   => '0.4203',
            'Module::Build::Compat' => '0.4203',
            'Module::Build::Config' => '0.4203',
            'Module::Build::Cookbook'=> '0.4203',
            'Module::Build::Dumper' => '0.4203',
            'Module::Build::ModuleInfo'=> '0.4203',
            'Module::Build::Notes'  => '0.4203',
            'Module::Build::PPMMaker'=> '0.4203',
            'Module::Build::Platform::Default'=> '0.4203',
            'Module::Build::Platform::MacOS'=> '0.4203',
            'Module::Build::Platform::Unix'=> '0.4203',
            'Module::Build::Platform::VMS'=> '0.4203',
            'Module::Build::Platform::VOS'=> '0.4203',
            'Module::Build::Platform::Windows'=> '0.4203',
            'Module::Build::Platform::aix'=> '0.4203',
            'Module::Build::Platform::cygwin'=> '0.4203',
            'Module::Build::Platform::darwin'=> '0.4203',
            'Module::Build::Platform::os2'=> '0.4203',
            'Module::Build::PodParser'=> '0.4203',
            'Module::CoreList'      => '3.02',
            'Module::CoreList::TieHashDelta'=> '3.02',
            'Module::CoreList::Utils'=> '3.02',
            'POSIX'                 => '1.37',
            'PerlIO::encoding'      => '0.17',
            'PerlIO::via'           => '0.14',
            'SDBM_File'             => '1.11',
            'Storable'              => '2.48',
            'Time::Piece'           => '1.24',
            'Time::Seconds'         => '1.24',
            'Unicode::Collate'      => '1.04',
            'Win32'                 => '0.48',
            'XS::APItest'           => '0.58',
            'base'                  => '2.20',
            'constant'              => '1.30',
            'inc::latest'           => '0.4203',
            'threads'               => '1.91',
        },
        removed => {
        }
    },
    5.019008 => {
        delta_from => 5.019007,
        changed => {
            'Config'                => '5.019008',
            'DynaLoader'            => '1.24',
            'Encode'                => '2.57',
            'Errno'                 => '1.20_02',
            'ExtUtils::CBuilder'    => '0.280213',
            'ExtUtils::CBuilder::Base'=> '0.280213',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280213',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280213',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280213',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280213',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280213',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280213',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280213',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280213',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280213',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280213',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280213',
            'ExtUtils::Command::MM' => '6.86',
            'ExtUtils::Liblist'     => '6.86',
            'ExtUtils::Liblist::Kid'=> '6.86',
            'ExtUtils::MM'          => '6.86',
            'ExtUtils::MM_AIX'      => '6.86',
            'ExtUtils::MM_Any'      => '6.86',
            'ExtUtils::MM_BeOS'     => '6.86',
            'ExtUtils::MM_Cygwin'   => '6.86',
            'ExtUtils::MM_DOS'      => '6.86',
            'ExtUtils::MM_Darwin'   => '6.86',
            'ExtUtils::MM_MacOS'    => '6.86',
            'ExtUtils::MM_NW5'      => '6.86',
            'ExtUtils::MM_OS2'      => '6.86',
            'ExtUtils::MM_QNX'      => '6.86',
            'ExtUtils::MM_UWIN'     => '6.86',
            'ExtUtils::MM_Unix'     => '6.86',
            'ExtUtils::MM_VMS'      => '6.86',
            'ExtUtils::MM_VOS'      => '6.86',
            'ExtUtils::MM_Win32'    => '6.86',
            'ExtUtils::MM_Win95'    => '6.86',
            'ExtUtils::MY'          => '6.86',
            'ExtUtils::MakeMaker'   => '6.86',
            'ExtUtils::MakeMaker::Config'=> '6.86',
            'ExtUtils::Mkbootstrap' => '6.86',
            'ExtUtils::Mksymlists'  => '6.86',
            'ExtUtils::testlib'     => '6.86',
            'File::Copy'            => '2.29',
            'Hash::Util::FieldHash' => '1.14',
            'IO::Socket::IP'        => '0.26',
            'IO::Socket::UNIX'      => '1.26',
            'List::Util'            => '1.36',
            'List::Util::XS'        => '1.36',
            'Module::Build'         => '0.4204',
            'Module::Build::Base'   => '0.4204',
            'Module::Build::Compat' => '0.4204',
            'Module::Build::Config' => '0.4204',
            'Module::Build::Cookbook'=> '0.4204',
            'Module::Build::Dumper' => '0.4204',
            'Module::Build::ModuleInfo'=> '0.4204',
            'Module::Build::Notes'  => '0.4204',
            'Module::Build::PPMMaker'=> '0.4204',
            'Module::Build::Platform::Default'=> '0.4204',
            'Module::Build::Platform::MacOS'=> '0.4204',
            'Module::Build::Platform::Unix'=> '0.4204',
            'Module::Build::Platform::VMS'=> '0.4204',
            'Module::Build::Platform::VOS'=> '0.4204',
            'Module::Build::Platform::Windows'=> '0.4204',
            'Module::Build::Platform::aix'=> '0.4204',
            'Module::Build::Platform::cygwin'=> '0.4204',
            'Module::Build::Platform::darwin'=> '0.4204',
            'Module::Build::Platform::os2'=> '0.4204',
            'Module::Build::PodParser'=> '0.4204',
            'Module::CoreList'      => '3.04',
            'Module::CoreList::TieHashDelta'=> '3.04',
            'Module::CoreList::Utils'=> '3.04',
            'Module::Load'          => '0.28',
            'Module::Load::Conditional'=> '0.60',
            'Net::Config'           => '1.13',
            'Net::FTP::A'           => '1.19',
            'POSIX'                 => '1.38_01',
            'Perl::OSType'          => '1.007',
            'PerlIO::encoding'      => '0.18',
            'Pod::Perldoc'          => '3.21',
            'Pod::Perldoc::BaseTo'  => '3.21',
            'Pod::Perldoc::GetOptsOO'=> '3.21',
            'Pod::Perldoc::ToANSI'  => '3.21',
            'Pod::Perldoc::ToChecker'=> '3.21',
            'Pod::Perldoc::ToMan'   => '3.21',
            'Pod::Perldoc::ToNroff' => '3.21',
            'Pod::Perldoc::ToPod'   => '3.21',
            'Pod::Perldoc::ToRtf'   => '3.21',
            'Pod::Perldoc::ToTerm'  => '3.21',
            'Pod::Perldoc::ToText'  => '3.21',
            'Pod::Perldoc::ToTk'    => '3.21',
            'Pod::Perldoc::ToXml'   => '3.21',
            'Scalar::Util'          => '1.36',
            'Time::Piece'           => '1.27',
            'Time::Seconds'         => '1.27',
            'Unicode::UCD'          => '0.57',
            'XS::APItest'           => '0.59',
            'XSLoader'              => '0.17',
            'base'                  => '2.21',
            'constant'              => '1.31',
            'inc::latest'           => '0.4204',
            'threads::shared'       => '1.46',
            'version'               => '0.9907',
            'version::regex'        => '0.9907',
            'version::vpp'          => '0.9907',
            'warnings'              => '1.21',
        },
        removed => {
        }
    },
    5.019009 => {
        delta_from => 5.019008,
        changed => {
            'B'                     => '1.48',
            'B::Concise'            => '0.992',
            'B::Deparse'            => '1.25',
            'CGI'                   => '3.65',
            'CPAN::Meta::YAML'      => '0.011',
            'Compress::Raw::Bzip2'  => '2.064',
            'Compress::Raw::Zlib'   => '2.065',
            'Compress::Zlib'        => '2.064',
            'Config'                => '5.019009',
            'Config::Perl::V'       => '0.20',
            'Cwd'                   => '3.47',
            'Devel::Peek'           => '1.16',
            'Digest::SHA'           => '5.87',
            'DynaLoader'            => '1.25',
            'English'               => '1.09',
            'ExtUtils::CBuilder'    => '0.280216',
            'ExtUtils::CBuilder::Base'=> '0.280216',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280216',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280216',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280216',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280216',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280216',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280216',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280216',
            'ExtUtils::CBuilder::Platform::android'=> '0.280216',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280216',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280216',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280216',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280216',
            'ExtUtils::Command::MM' => '6.88',
            'ExtUtils::Embed'       => '1.32',
            'ExtUtils::Install'     => '1.62',
            'ExtUtils::Installed'   => '1.999004',
            'ExtUtils::Liblist'     => '6.88',
            'ExtUtils::Liblist::Kid'=> '6.88',
            'ExtUtils::MM'          => '6.88',
            'ExtUtils::MM_AIX'      => '6.88',
            'ExtUtils::MM_Any'      => '6.88',
            'ExtUtils::MM_BeOS'     => '6.88',
            'ExtUtils::MM_Cygwin'   => '6.88',
            'ExtUtils::MM_DOS'      => '6.88',
            'ExtUtils::MM_Darwin'   => '6.88',
            'ExtUtils::MM_MacOS'    => '6.88',
            'ExtUtils::MM_NW5'      => '6.88',
            'ExtUtils::MM_OS2'      => '6.88',
            'ExtUtils::MM_QNX'      => '6.88',
            'ExtUtils::MM_UWIN'     => '6.88',
            'ExtUtils::MM_Unix'     => '6.88',
            'ExtUtils::MM_VMS'      => '6.88',
            'ExtUtils::MM_VOS'      => '6.88',
            'ExtUtils::MM_Win32'    => '6.88',
            'ExtUtils::MM_Win95'    => '6.88',
            'ExtUtils::MY'          => '6.88',
            'ExtUtils::MakeMaker'   => '6.88',
            'ExtUtils::MakeMaker::Config'=> '6.88',
            'ExtUtils::Mkbootstrap' => '6.88',
            'ExtUtils::Mksymlists'  => '6.88',
            'ExtUtils::Packlist'    => '1.47',
            'ExtUtils::testlib'     => '6.88',
            'Fatal'                 => '2.23',
            'File::Fetch'           => '0.48',
            'File::Spec'            => '3.47',
            'File::Spec::Cygwin'    => '3.47',
            'File::Spec::Epoc'      => '3.47',
            'File::Spec::Functions' => '3.47',
            'File::Spec::Mac'       => '3.47',
            'File::Spec::OS2'       => '3.47',
            'File::Spec::Unix'      => '3.47',
            'File::Spec::VMS'       => '3.47',
            'File::Spec::Win32'     => '3.47',
            'HTTP::Tiny'            => '0.042',
            'IO::Compress::Adapter::Bzip2'=> '2.064',
            'IO::Compress::Adapter::Deflate'=> '2.064',
            'IO::Compress::Adapter::Identity'=> '2.064',
            'IO::Compress::Base'    => '2.064',
            'IO::Compress::Base::Common'=> '2.064',
            'IO::Compress::Bzip2'   => '2.064',
            'IO::Compress::Deflate' => '2.064',
            'IO::Compress::Gzip'    => '2.064',
            'IO::Compress::Gzip::Constants'=> '2.064',
            'IO::Compress::RawDeflate'=> '2.064',
            'IO::Compress::Zip'     => '2.064',
            'IO::Compress::Zip::Constants'=> '2.064',
            'IO::Compress::Zlib::Constants'=> '2.064',
            'IO::Compress::Zlib::Extra'=> '2.064',
            'IO::Socket::INET'      => '1.35',
            'IO::Socket::IP'        => '0.28',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.064',
            'IO::Uncompress::Adapter::Identity'=> '2.064',
            'IO::Uncompress::Adapter::Inflate'=> '2.064',
            'IO::Uncompress::AnyInflate'=> '2.064',
            'IO::Uncompress::AnyUncompress'=> '2.064',
            'IO::Uncompress::Base'  => '2.064',
            'IO::Uncompress::Bunzip2'=> '2.064',
            'IO::Uncompress::Gunzip'=> '2.064',
            'IO::Uncompress::Inflate'=> '2.064',
            'IO::Uncompress::RawInflate'=> '2.064',
            'IO::Uncompress::Unzip' => '2.064',
            'IPC::Cmd'              => '0.92',
            'List::Util'            => '1.38',
            'List::Util::XS'        => '1.38',
            'Locale::Codes'         => '3.29',
            'Locale::Codes::Constants'=> '3.29',
            'Locale::Codes::Country'=> '3.29',
            'Locale::Codes::Country_Codes'=> '3.29',
            'Locale::Codes::Country_Retired'=> '3.29',
            'Locale::Codes::Currency'=> '3.29',
            'Locale::Codes::Currency_Codes'=> '3.29',
            'Locale::Codes::Currency_Retired'=> '3.29',
            'Locale::Codes::LangExt'=> '3.29',
            'Locale::Codes::LangExt_Codes'=> '3.29',
            'Locale::Codes::LangExt_Retired'=> '3.29',
            'Locale::Codes::LangFam'=> '3.29',
            'Locale::Codes::LangFam_Codes'=> '3.29',
            'Locale::Codes::LangFam_Retired'=> '3.29',
            'Locale::Codes::LangVar'=> '3.29',
            'Locale::Codes::LangVar_Codes'=> '3.29',
            'Locale::Codes::LangVar_Retired'=> '3.29',
            'Locale::Codes::Language'=> '3.29',
            'Locale::Codes::Language_Codes'=> '3.29',
            'Locale::Codes::Language_Retired'=> '3.29',
            'Locale::Codes::Script' => '3.29',
            'Locale::Codes::Script_Codes'=> '3.29',
            'Locale::Codes::Script_Retired'=> '3.29',
            'Locale::Country'       => '3.29',
            'Locale::Currency'      => '3.29',
            'Locale::Language'      => '3.29',
            'Locale::Script'        => '3.29',
            'Module::Build'         => '0.4205',
            'Module::Build::Base'   => '0.4205',
            'Module::Build::Compat' => '0.4205',
            'Module::Build::Config' => '0.4205',
            'Module::Build::Cookbook'=> '0.4205',
            'Module::Build::Dumper' => '0.4205',
            'Module::Build::ModuleInfo'=> '0.4205',
            'Module::Build::Notes'  => '0.4205',
            'Module::Build::PPMMaker'=> '0.4205',
            'Module::Build::Platform::Default'=> '0.4205',
            'Module::Build::Platform::MacOS'=> '0.4205',
            'Module::Build::Platform::Unix'=> '0.4205',
            'Module::Build::Platform::VMS'=> '0.4205',
            'Module::Build::Platform::VOS'=> '0.4205',
            'Module::Build::Platform::Windows'=> '0.4205',
            'Module::Build::Platform::aix'=> '0.4205',
            'Module::Build::Platform::cygwin'=> '0.4205',
            'Module::Build::Platform::darwin'=> '0.4205',
            'Module::Build::Platform::os2'=> '0.4205',
            'Module::Build::PodParser'=> '0.4205',
            'Module::CoreList'      => '3.06',
            'Module::CoreList::TieHashDelta'=> '3.06',
            'Module::CoreList::Utils'=> '3.06',
            'Module::Load'          => '0.30',
            'Module::Load::Conditional'=> '0.62',
            'Net::Domain'           => '2.23',
            'Net::FTP'              => '2.79',
            'Net::NNTP'             => '2.26',
            'Net::POP3'             => '2.31',
            'Net::Ping'             => '2.43',
            'Net::SMTP'             => '2.33',
            'POSIX'                 => '1.38_02',
            'Parse::CPAN::Meta'     => '1.4413',
            'Pod::Escapes'          => '1.06',
            'Pod::Find'             => '1.62',
            'Pod::InputObjects'     => '1.62',
            'Pod::ParseUtils'       => '1.62',
            'Pod::Parser'           => '1.62',
            'Pod::Select'           => '1.62',
            'Scalar::Util'          => '1.38',
            'autodie'               => '2.23',
            'autodie::exception'    => '2.23',
            'autodie::exception::system'=> '2.23',
            'autodie::hints'        => '2.23',
            'autodie::skip'         => '2.23',
            'diagnostics'           => '1.34',
            'feature'               => '1.35',
            'inc::latest'           => '0.4205',
            'locale'                => '1.03',
            'mro'                   => '1.15',
            'threads'               => '1.92',
            'version'               => '0.9908',
            'version::regex'        => '0.9908',
            'version::vpp'          => '0.9908',
            'warnings'              => '1.22',
        },
        removed => {
        }
    },
    5.01901 => {
        delta_from => 5.019009,
        changed => {
            'App::Cpan'             => '1.62',
            'Attribute::Handlers'   => '0.96',
            'B::Deparse'            => '1.26',
            'CPAN'                  => '2.04',
            'CPAN::Bundle'          => '5.5001',
            'CPAN::Complete'        => '5.5001',
            'CPAN::Distribution'    => '2.01',
            'CPAN::Distroprefs'     => '6.0001',
            'CPAN::FirstTime'       => '5.5305',
            'CPAN::Meta'            => '2.140640',
            'CPAN::Meta::Converter' => '2.140640',
            'CPAN::Meta::Feature'   => '2.140640',
            'CPAN::Meta::History'   => '2.140640',
            'CPAN::Meta::Prereqs'   => '2.140640',
            'CPAN::Meta::Spec'      => '2.140640',
            'CPAN::Meta::Validator' => '2.140640',
            'CPAN::Meta::YAML'      => '0.012',
            'CPAN::Queue'           => '5.5002',
            'CPAN::Shell'           => '5.5003',
            'CPAN::Tarzip'          => '5.5012',
            'CPAN::Version'         => '5.5003',
            'Carp'                  => '1.33',
            'Carp::Heavy'           => '1.33',
            'Config'                => '5.019010',
            'Data::Dumper'          => '2.151',
            'Devel::PPPort'         => '3.22',
            'Digest::SHA'           => '5.88',
            'ExtUtils::Command::MM' => '6.92',
            'ExtUtils::Install'     => '1.63',
            'ExtUtils::Installed'   => '1.999005',
            'ExtUtils::Liblist'     => '6.92',
            'ExtUtils::Liblist::Kid'=> '6.92',
            'ExtUtils::MM'          => '6.92',
            'ExtUtils::MM_AIX'      => '6.92',
            'ExtUtils::MM_Any'      => '6.92',
            'ExtUtils::MM_BeOS'     => '6.92',
            'ExtUtils::MM_Cygwin'   => '6.92',
            'ExtUtils::MM_DOS'      => '6.92',
            'ExtUtils::MM_Darwin'   => '6.92',
            'ExtUtils::MM_MacOS'    => '6.92',
            'ExtUtils::MM_NW5'      => '6.92',
            'ExtUtils::MM_OS2'      => '6.92',
            'ExtUtils::MM_QNX'      => '6.92',
            'ExtUtils::MM_UWIN'     => '6.92',
            'ExtUtils::MM_Unix'     => '6.92',
            'ExtUtils::MM_VMS'      => '6.92',
            'ExtUtils::MM_VOS'      => '6.92',
            'ExtUtils::MM_Win32'    => '6.92',
            'ExtUtils::MM_Win95'    => '6.92',
            'ExtUtils::MY'          => '6.92',
            'ExtUtils::MakeMaker'   => '6.92',
            'ExtUtils::MakeMaker::Config'=> '6.92',
            'ExtUtils::Mkbootstrap' => '6.92',
            'ExtUtils::Mksymlists'  => '6.92',
            'ExtUtils::Packlist'    => '1.48',
            'ExtUtils::ParseXS'     => '3.24',
            'ExtUtils::ParseXS::Constants'=> '3.24',
            'ExtUtils::ParseXS::CountLines'=> '3.24',
            'ExtUtils::ParseXS::Eval'=> '3.24',
            'ExtUtils::ParseXS::Utilities'=> '3.24',
            'ExtUtils::Typemaps'    => '3.24',
            'ExtUtils::Typemaps::Cmd'=> '3.24',
            'ExtUtils::Typemaps::InputMap'=> '3.24',
            'ExtUtils::Typemaps::OutputMap'=> '3.24',
            'ExtUtils::Typemaps::Type'=> '3.24',
            'ExtUtils::testlib'     => '6.92',
            'File::Find'            => '1.27',
            'Filter::Simple'        => '0.91',
            'HTTP::Tiny'            => '0.043',
            'Hash::Util::FieldHash' => '1.15',
            'IO'                    => '1.31',
            'IO::Socket::IP'        => '0.29',
            'Locale::Codes'         => '3.30',
            'Locale::Codes::Constants'=> '3.30',
            'Locale::Codes::Country'=> '3.30',
            'Locale::Codes::Country_Codes'=> '3.30',
            'Locale::Codes::Country_Retired'=> '3.30',
            'Locale::Codes::Currency'=> '3.30',
            'Locale::Codes::Currency_Codes'=> '3.30',
            'Locale::Codes::Currency_Retired'=> '3.30',
            'Locale::Codes::LangExt'=> '3.30',
            'Locale::Codes::LangExt_Codes'=> '3.30',
            'Locale::Codes::LangExt_Retired'=> '3.30',
            'Locale::Codes::LangFam'=> '3.30',
            'Locale::Codes::LangFam_Codes'=> '3.30',
            'Locale::Codes::LangFam_Retired'=> '3.30',
            'Locale::Codes::LangVar'=> '3.30',
            'Locale::Codes::LangVar_Codes'=> '3.30',
            'Locale::Codes::LangVar_Retired'=> '3.30',
            'Locale::Codes::Language'=> '3.30',
            'Locale::Codes::Language_Codes'=> '3.30',
            'Locale::Codes::Language_Retired'=> '3.30',
            'Locale::Codes::Script' => '3.30',
            'Locale::Codes::Script_Codes'=> '3.30',
            'Locale::Codes::Script_Retired'=> '3.30',
            'Locale::Country'       => '3.30',
            'Locale::Currency'      => '3.30',
            'Locale::Language'      => '3.30',
            'Locale::Script'        => '3.30',
            'Module::CoreList'      => '3.09',
            'Module::CoreList::TieHashDelta'=> '3.09',
            'Module::CoreList::Utils'=> '3.09',
            'Module::Load'          => '0.32',
            'POSIX'                 => '1.38_03',
            'Parse::CPAN::Meta'     => '1.4414',
            'Pod::Perldoc'          => '3.23',
            'Pod::Perldoc::BaseTo'  => '3.23',
            'Pod::Perldoc::GetOptsOO'=> '3.23',
            'Pod::Perldoc::ToANSI'  => '3.23',
            'Pod::Perldoc::ToChecker'=> '3.23',
            'Pod::Perldoc::ToMan'   => '3.23',
            'Pod::Perldoc::ToNroff' => '3.23',
            'Pod::Perldoc::ToPod'   => '3.23',
            'Pod::Perldoc::ToRtf'   => '3.23',
            'Pod::Perldoc::ToTerm'  => '3.23',
            'Pod::Perldoc::ToText'  => '3.23',
            'Pod::Perldoc::ToTk'    => '3.23',
            'Pod::Perldoc::ToXml'   => '3.23',
            'Thread::Queue'         => '3.05',
            'XS::APItest'           => '0.60',
            'XS::Typemap'           => '0.13',
            'autouse'               => '1.08',
            'base'                  => '2.22',
            'charnames'             => '1.40',
            'feature'               => '1.36',
            'mro'                   => '1.16',
            'threads'               => '1.93',
            'warnings'              => '1.23',
            'warnings::register'    => '1.03',
        },
        removed => {
        }
    },
    5.019011 => {
        delta_from => 5.01901,
        changed => {
            'CPAN'                  => '2.05',
            'CPAN::Distribution'    => '2.02',
            'CPAN::FirstTime'       => '5.5306',
            'CPAN::Shell'           => '5.5004',
            'Carp'                  => '1.3301',
            'Carp::Heavy'           => '1.3301',
            'Config'                => '5.019011',
            'ExtUtils::Command::MM' => '6.94',
            'ExtUtils::Install'     => '1.67',
            'ExtUtils::Liblist'     => '6.94',
            'ExtUtils::Liblist::Kid'=> '6.94',
            'ExtUtils::MM'          => '6.94',
            'ExtUtils::MM_AIX'      => '6.94',
            'ExtUtils::MM_Any'      => '6.94',
            'ExtUtils::MM_BeOS'     => '6.94',
            'ExtUtils::MM_Cygwin'   => '6.94',
            'ExtUtils::MM_DOS'      => '6.94',
            'ExtUtils::MM_Darwin'   => '6.94',
            'ExtUtils::MM_MacOS'    => '6.94',
            'ExtUtils::MM_NW5'      => '6.94',
            'ExtUtils::MM_OS2'      => '6.94',
            'ExtUtils::MM_QNX'      => '6.94',
            'ExtUtils::MM_UWIN'     => '6.94',
            'ExtUtils::MM_Unix'     => '6.94',
            'ExtUtils::MM_VMS'      => '6.94',
            'ExtUtils::MM_VOS'      => '6.94',
            'ExtUtils::MM_Win32'    => '6.94',
            'ExtUtils::MM_Win95'    => '6.94',
            'ExtUtils::MY'          => '6.94',
            'ExtUtils::MakeMaker'   => '6.94',
            'ExtUtils::MakeMaker::Config'=> '6.94',
            'ExtUtils::Mkbootstrap' => '6.94',
            'ExtUtils::Mksymlists'  => '6.94',
            'ExtUtils::testlib'     => '6.94',
            'Module::CoreList'      => '3.10',
            'Module::CoreList::TieHashDelta'=> '3.10',
            'Module::CoreList::Utils'=> '3.10',
            'PerlIO'                => '1.09',
            'Storable'              => '2.49',
            'Win32'                 => '0.49',
            'experimental'          => '0.007',
        },
        removed => {
        }
    },
    5.020000 => {
        delta_from => 5.019011,
        changed => {
            'Config'                => '5.02',
            'Devel::PPPort'         => '3.21',
            'Encode'                => '2.60',
            'Errno'                 => '1.20_03',
            'ExtUtils::Command::MM' => '6.98',
            'ExtUtils::Liblist'     => '6.98',
            'ExtUtils::Liblist::Kid'=> '6.98',
            'ExtUtils::MM'          => '6.98',
            'ExtUtils::MM_AIX'      => '6.98',
            'ExtUtils::MM_Any'      => '6.98',
            'ExtUtils::MM_BeOS'     => '6.98',
            'ExtUtils::MM_Cygwin'   => '6.98',
            'ExtUtils::MM_DOS'      => '6.98',
            'ExtUtils::MM_Darwin'   => '6.98',
            'ExtUtils::MM_MacOS'    => '6.98',
            'ExtUtils::MM_NW5'      => '6.98',
            'ExtUtils::MM_OS2'      => '6.98',
            'ExtUtils::MM_QNX'      => '6.98',
            'ExtUtils::MM_UWIN'     => '6.98',
            'ExtUtils::MM_Unix'     => '6.98',
            'ExtUtils::MM_VMS'      => '6.98',
            'ExtUtils::MM_VOS'      => '6.98',
            'ExtUtils::MM_Win32'    => '6.98',
            'ExtUtils::MM_Win95'    => '6.98',
            'ExtUtils::MY'          => '6.98',
            'ExtUtils::MakeMaker'   => '6.98',
            'ExtUtils::MakeMaker::Config'=> '6.98',
            'ExtUtils::Miniperl'    => '1.01',
            'ExtUtils::Mkbootstrap' => '6.98',
            'ExtUtils::Mksymlists'  => '6.98',
            'ExtUtils::testlib'     => '6.98',
            'Pod::Functions::Functions'=> '1.08',
        },
        removed => {
        }
    },
    5.021000 => {
        delta_from => 5.020000,
        changed => {
            'Module::CoreList'      => '5.021001',
            'Module::CoreList::TieHashDelta'=> '5.021001',
            'Module::CoreList::Utils'=> '5.021001',
            'feature'               => '1.37',
        },
        removed => {
            'CGI'                   => 1,
            'CGI::Apache'           => 1,
            'CGI::Carp'             => 1,
            'CGI::Cookie'           => 1,
            'CGI::Fast'             => 1,
            'CGI::Pretty'           => 1,
            'CGI::Push'             => 1,
            'CGI::Switch'           => 1,
            'CGI::Util'             => 1,
            'Module::Build'         => 1,
            'Module::Build::Base'   => 1,
            'Module::Build::Compat' => 1,
            'Module::Build::Config' => 1,
            'Module::Build::ConfigData'=> 1,
            'Module::Build::Cookbook'=> 1,
            'Module::Build::Dumper' => 1,
            'Module::Build::ModuleInfo'=> 1,
            'Module::Build::Notes'  => 1,
            'Module::Build::PPMMaker'=> 1,
            'Module::Build::Platform::Default'=> 1,
            'Module::Build::Platform::MacOS'=> 1,
            'Module::Build::Platform::Unix'=> 1,
            'Module::Build::Platform::VMS'=> 1,
            'Module::Build::Platform::VOS'=> 1,
            'Module::Build::Platform::Windows'=> 1,
            'Module::Build::Platform::aix'=> 1,
            'Module::Build::Platform::cygwin'=> 1,
            'Module::Build::Platform::darwin'=> 1,
            'Module::Build::Platform::os2'=> 1,
            'Module::Build::PodParser'=> 1,
            'Module::Build::Version'=> 1,
            'Module::Build::YAML'   => 1,
            'Package::Constants'    => 1,
            'inc::latest'           => 1,
        }
    },
    5.021001 => {
        delta_from => 5.021000,
        changed => {
            'App::Prove'            => '3.32',
            'App::Prove::State'     => '3.32',
            'App::Prove::State::Result'=> '3.32',
            'App::Prove::State::Result::Test'=> '3.32',
            'Archive::Tar'          => '2.00',
            'Archive::Tar::Constant'=> '2.00',
            'Archive::Tar::File'    => '2.00',
            'B'                     => '1.49',
            'B::Deparse'            => '1.27',
            'Benchmark'             => '1.19',
            'CPAN::Meta'            => '2.141520',
            'CPAN::Meta::Converter' => '2.141520',
            'CPAN::Meta::Feature'   => '2.141520',
            'CPAN::Meta::History'   => '2.141520',
            'CPAN::Meta::Prereqs'   => '2.141520',
            'CPAN::Meta::Spec'      => '2.141520',
            'CPAN::Meta::Validator' => '2.141520',
            'Carp'                  => '1.34',
            'Carp::Heavy'           => '1.34',
            'Config'                => '5.021001',
            'Cwd'                   => '3.48',
            'Data::Dumper'          => '2.152',
            'Devel::PPPort'         => '3.24',
            'Devel::Peek'           => '1.17',
            'Digest::SHA'           => '5.92',
            'DynaLoader'            => '1.26',
            'Encode'                => '2.62',
            'Errno'                 => '1.20_04',
            'Exporter'              => '5.71',
            'Exporter::Heavy'       => '5.71',
            'ExtUtils::Install'     => '1.68',
            'ExtUtils::Miniperl'    => '1.02',
            'ExtUtils::ParseXS'     => '3.25',
            'ExtUtils::ParseXS::Constants'=> '3.25',
            'ExtUtils::ParseXS::CountLines'=> '3.25',
            'ExtUtils::ParseXS::Eval'=> '3.25',
            'ExtUtils::ParseXS::Utilities'=> '3.25',
            'ExtUtils::Typemaps'    => '3.25',
            'ExtUtils::Typemaps::Cmd'=> '3.25',
            'ExtUtils::Typemaps::InputMap'=> '3.25',
            'ExtUtils::Typemaps::OutputMap'=> '3.25',
            'ExtUtils::Typemaps::Type'=> '3.25',
            'Fatal'                 => '2.25',
            'File::Spec'            => '3.48',
            'File::Spec::Cygwin'    => '3.48',
            'File::Spec::Epoc'      => '3.48',
            'File::Spec::Functions' => '3.48',
            'File::Spec::Mac'       => '3.48',
            'File::Spec::OS2'       => '3.48',
            'File::Spec::Unix'      => '3.48',
            'File::Spec::VMS'       => '3.48',
            'File::Spec::Win32'     => '3.48',
            'Hash::Util'            => '0.17',
            'IO'                    => '1.32',
            'List::Util'            => '1.39',
            'List::Util::XS'        => '1.39',
            'Locale::Codes'         => '3.31',
            'Locale::Codes::Constants'=> '3.31',
            'Locale::Codes::Country'=> '3.31',
            'Locale::Codes::Country_Codes'=> '3.31',
            'Locale::Codes::Country_Retired'=> '3.31',
            'Locale::Codes::Currency'=> '3.31',
            'Locale::Codes::Currency_Codes'=> '3.31',
            'Locale::Codes::Currency_Retired'=> '3.31',
            'Locale::Codes::LangExt'=> '3.31',
            'Locale::Codes::LangExt_Codes'=> '3.31',
            'Locale::Codes::LangExt_Retired'=> '3.31',
            'Locale::Codes::LangFam'=> '3.31',
            'Locale::Codes::LangFam_Codes'=> '3.31',
            'Locale::Codes::LangFam_Retired'=> '3.31',
            'Locale::Codes::LangVar'=> '3.31',
            'Locale::Codes::LangVar_Codes'=> '3.31',
            'Locale::Codes::LangVar_Retired'=> '3.31',
            'Locale::Codes::Language'=> '3.31',
            'Locale::Codes::Language_Codes'=> '3.31',
            'Locale::Codes::Language_Retired'=> '3.31',
            'Locale::Codes::Script' => '3.31',
            'Locale::Codes::Script_Codes'=> '3.31',
            'Locale::Codes::Script_Retired'=> '3.31',
            'Locale::Country'       => '3.31',
            'Locale::Currency'      => '3.31',
            'Locale::Language'      => '3.31',
            'Locale::Script'        => '3.31',
            'Math::BigFloat'        => '1.9994',
            'Math::BigInt'          => '1.9995',
            'Math::BigInt::Calc'    => '1.9994',
            'Math::BigInt::CalcEmu' => '1.9994',
            'Math::BigRat'          => '0.2608',
            'Module::CoreList'      => '5.021001_01',
            'Module::CoreList::TieHashDelta'=> '5.021001_01',
            'Module::CoreList::Utils'=> '5.021001_01',
            'Module::Metadata'      => '1.000024',
            'NDBM_File'             => '1.13',
            'Net::Config'           => '1.14',
            'Net::SMTP'             => '2.34',
            'Net::Time'             => '2.11',
            'OS2::Process'          => '1.10',
            'POSIX'                 => '1.40',
            'PerlIO::encoding'      => '0.19',
            'PerlIO::mmap'          => '0.013',
            'PerlIO::scalar'        => '0.19',
            'PerlIO::via'           => '0.15',
            'Pod::Html'             => '1.22',
            'Scalar::Util'          => '1.39',
            'SelfLoader'            => '1.22',
            'Socket'                => '2.014',
            'Storable'              => '2.51',
            'TAP::Base'             => '3.32',
            'TAP::Formatter::Base'  => '3.32',
            'TAP::Formatter::Color' => '3.32',
            'TAP::Formatter::Console'=> '3.32',
            'TAP::Formatter::Console::ParallelSession'=> '3.32',
            'TAP::Formatter::Console::Session'=> '3.32',
            'TAP::Formatter::File'  => '3.32',
            'TAP::Formatter::File::Session'=> '3.32',
            'TAP::Formatter::Session'=> '3.32',
            'TAP::Harness'          => '3.32',
            'TAP::Harness::Env'     => '3.32',
            'TAP::Object'           => '3.32',
            'TAP::Parser'           => '3.32',
            'TAP::Parser::Aggregator'=> '3.32',
            'TAP::Parser::Grammar'  => '3.32',
            'TAP::Parser::Iterator' => '3.32',
            'TAP::Parser::Iterator::Array'=> '3.32',
            'TAP::Parser::Iterator::Process'=> '3.32',
            'TAP::Parser::Iterator::Stream'=> '3.32',
            'TAP::Parser::IteratorFactory'=> '3.32',
            'TAP::Parser::Multiplexer'=> '3.32',
            'TAP::Parser::Result'   => '3.32',
            'TAP::Parser::Result::Bailout'=> '3.32',
            'TAP::Parser::Result::Comment'=> '3.32',
            'TAP::Parser::Result::Plan'=> '3.32',
            'TAP::Parser::Result::Pragma'=> '3.32',
            'TAP::Parser::Result::Test'=> '3.32',
            'TAP::Parser::Result::Unknown'=> '3.32',
            'TAP::Parser::Result::Version'=> '3.32',
            'TAP::Parser::Result::YAML'=> '3.32',
            'TAP::Parser::ResultFactory'=> '3.32',
            'TAP::Parser::Scheduler'=> '3.32',
            'TAP::Parser::Scheduler::Job'=> '3.32',
            'TAP::Parser::Scheduler::Spinner'=> '3.32',
            'TAP::Parser::Source'   => '3.32',
            'TAP::Parser::SourceHandler'=> '3.32',
            'TAP::Parser::SourceHandler::Executable'=> '3.32',
            'TAP::Parser::SourceHandler::File'=> '3.32',
            'TAP::Parser::SourceHandler::Handle'=> '3.32',
            'TAP::Parser::SourceHandler::Perl'=> '3.32',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.32',
            'TAP::Parser::YAMLish::Reader'=> '3.32',
            'TAP::Parser::YAMLish::Writer'=> '3.32',
            'Term::ANSIColor'       => '4.03',
            'Test::Builder'         => '1.001003',
            'Test::Builder::Module' => '1.001003',
            'Test::Builder::Tester' => '1.23_003',
            'Test::Harness'         => '3.32',
            'Test::More'            => '1.001003',
            'Test::Simple'          => '1.001003',
            'Tie::File'             => '1.01',
            'Unicode'               => '7.0.0',
            'Unicode::Collate'      => '1.07',
            'Unicode::Normalize'    => '1.18',
            'Unicode::UCD'          => '0.58',
            'XS::APItest'           => '0.61',
            '_charnames'            => '1.41',
            'autodie'               => '2.25',
            'autodie::Scope::Guard' => '2.25',
            'autodie::Scope::GuardStack'=> '2.25',
            'autodie::ScopeUtil'    => '2.25',
            'autodie::exception'    => '2.25',
            'autodie::exception::system'=> '2.25',
            'autodie::hints'        => '2.25',
            'autodie::skip'         => '2.25',
            'charnames'             => '1.41',
            'locale'                => '1.04',
            'threads'               => '1.94',
            'utf8'                  => '1.14',
            'warnings'              => '1.24',
        },
        removed => {
        }
    },
    5.021002 => {
        delta_from => 5.021001,
        changed => {
            'B'                     => '1.50',
            'Config'                => '5.021002',
            'Cwd'                   => '3.49',
            'Devel::Peek'           => '1.18',
            'ExtUtils::Manifest'    => '1.64',
            'File::Copy'            => '2.30',
            'File::Spec'            => '3.49',
            'File::Spec::Cygwin'    => '3.49',
            'File::Spec::Epoc'      => '3.49',
            'File::Spec::Functions' => '3.49',
            'File::Spec::Mac'       => '3.49',
            'File::Spec::OS2'       => '3.49',
            'File::Spec::Unix'      => '3.49',
            'File::Spec::VMS'       => '3.49',
            'File::Spec::Win32'     => '3.49',
            'Filter::Simple'        => '0.92',
            'Hash::Util'            => '0.18',
            'IO'                    => '1.33',
            'IO::Socket::IP'        => '0.31',
            'IPC::Open3'            => '1.17',
            'Math::BigFloat'        => '1.9996',
            'Math::BigInt'          => '1.9996',
            'Math::BigInt::Calc'    => '1.9996',
            'Math::BigInt::CalcEmu' => '1.9996',
            'Module::CoreList'      => '5.021002',
            'Module::CoreList::TieHashDelta'=> '5.021002',
            'Module::CoreList::Utils'=> '5.021002',
            'POSIX'                 => '1.41',
            'Pod::Usage'            => '1.64',
            'XS::APItest'           => '0.62',
            'arybase'               => '0.08',
            'experimental'          => '0.008',
            'threads'               => '1.95',
            'warnings'              => '1.26',
        },
        removed => {
        }
    },
    5.021003 => {
        delta_from => 5.021002,
        changed => {
            'B::Debug'              => '1.21',
            'CPAN::Meta'            => '2.142060',
            'CPAN::Meta::Converter' => '2.142060',
            'CPAN::Meta::Feature'   => '2.142060',
            'CPAN::Meta::History'   => '2.142060',
            'CPAN::Meta::Merge'     => '2.142060',
            'CPAN::Meta::Prereqs'   => '2.142060',
            'CPAN::Meta::Requirements'=> '2.126',
            'CPAN::Meta::Spec'      => '2.142060',
            'CPAN::Meta::Validator' => '2.142060',
            'Config'                => '5.021003',
            'Config::Perl::V'       => '0.22',
            'ExtUtils::CBuilder'    => '0.280217',
            'ExtUtils::CBuilder::Base'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280217',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280217',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280217',
            'ExtUtils::CBuilder::Platform::android'=> '0.280217',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280217',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280217',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280217',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280217',
            'ExtUtils::Manifest'    => '1.65',
            'HTTP::Tiny'            => '0.047',
            'IPC::Open3'            => '1.18',
            'Module::CoreList'      => '5.021003',
            'Module::CoreList::TieHashDelta'=> '5.021003',
            'Module::CoreList::Utils'=> '5.021003',
            'Opcode'                => '1.28',
            'POSIX'                 => '1.42',
            'Safe'                  => '2.38',
            'Socket'                => '2.015',
            'Sys::Hostname'         => '1.19',
            'UNIVERSAL'             => '1.12',
            'XS::APItest'           => '0.63',
            'perlfaq'               => '5.0150045',
        },
        removed => {
        }
    },
    5.020001 => {
        delta_from => 5.020000,
        changed => {
            'Config'                => '5.020001',
            'Config::Perl::V'       => '0.22',
            'Cwd'                   => '3.48',
            'Exporter'              => '5.71',
            'Exporter::Heavy'       => '5.71',
            'ExtUtils::CBuilder'    => '0.280217',
            'ExtUtils::CBuilder::Base'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280217',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280217',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280217',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280217',
            'ExtUtils::CBuilder::Platform::android'=> '0.280217',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280217',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280217',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280217',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280217',
            'File::Copy'            => '2.30',
            'File::Spec'            => '3.48',
            'File::Spec::Cygwin'    => '3.48',
            'File::Spec::Epoc'      => '3.48',
            'File::Spec::Functions' => '3.48',
            'File::Spec::Mac'       => '3.48',
            'File::Spec::OS2'       => '3.48',
            'File::Spec::Unix'      => '3.48',
            'File::Spec::VMS'       => '3.48',
            'File::Spec::Win32'     => '3.48',
            'Module::CoreList'      => '5.020001',
            'Module::CoreList::TieHashDelta'=> '5.020001',
            'Module::CoreList::Utils'=> '5.020001',
            'PerlIO::via'           => '0.15',
            'Unicode::UCD'          => '0.58',
            'XS::APItest'           => '0.60_01',
            'utf8'                  => '1.13_01',
            'version'               => '0.9909',
            'version::regex'        => '0.9909',
            'version::vpp'          => '0.9909',
        },
        removed => {
        }
    },
    5.021004 => {
        delta_from => 5.021003,
        changed => {
            'App::Prove'            => '3.33',
            'App::Prove::State'     => '3.33',
            'App::Prove::State::Result'=> '3.33',
            'App::Prove::State::Result::Test'=> '3.33',
            'Archive::Tar'          => '2.02',
            'Archive::Tar::Constant'=> '2.02',
            'Archive::Tar::File'    => '2.02',
            'Attribute::Handlers'   => '0.97',
            'B'                     => '1.51',
            'B::Concise'            => '0.993',
            'B::Deparse'            => '1.28',
            'B::Op_private'         => '5.021004',
            'CPAN::Meta::Requirements'=> '2.128',
            'Config'                => '5.021004',
            'Cwd'                   => '3.50',
            'Data::Dumper'          => '2.154',
            'ExtUtils::CBuilder'    => '0.280219',
            'ExtUtils::CBuilder::Base'=> '0.280219',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280219',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280219',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280219',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280219',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280219',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280219',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280219',
            'ExtUtils::CBuilder::Platform::android'=> '0.280219',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280219',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280219',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280219',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280219',
            'ExtUtils::Install'     => '2.04',
            'ExtUtils::Installed'   => '2.04',
            'ExtUtils::Liblist::Kid'=> '6.98_01',
            'ExtUtils::Manifest'    => '1.68',
            'ExtUtils::Packlist'    => '2.04',
            'File::Find'            => '1.28',
            'File::Spec'            => '3.50',
            'File::Spec::Cygwin'    => '3.50',
            'File::Spec::Epoc'      => '3.50',
            'File::Spec::Functions' => '3.50',
            'File::Spec::Mac'       => '3.50',
            'File::Spec::OS2'       => '3.50',
            'File::Spec::Unix'      => '3.50',
            'File::Spec::VMS'       => '3.50',
            'File::Spec::Win32'     => '3.50',
            'Getopt::Std'           => '1.11',
            'HTTP::Tiny'            => '0.049',
            'IO'                    => '1.34',
            'IO::Socket::IP'        => '0.32',
            'List::Util'            => '1.41',
            'List::Util::XS'        => '1.41',
            'Locale::Codes'         => '3.32',
            'Locale::Codes::Constants'=> '3.32',
            'Locale::Codes::Country'=> '3.32',
            'Locale::Codes::Country_Codes'=> '3.32',
            'Locale::Codes::Country_Retired'=> '3.32',
            'Locale::Codes::Currency'=> '3.32',
            'Locale::Codes::Currency_Codes'=> '3.32',
            'Locale::Codes::Currency_Retired'=> '3.32',
            'Locale::Codes::LangExt'=> '3.32',
            'Locale::Codes::LangExt_Codes'=> '3.32',
            'Locale::Codes::LangExt_Retired'=> '3.32',
            'Locale::Codes::LangFam'=> '3.32',
            'Locale::Codes::LangFam_Codes'=> '3.32',
            'Locale::Codes::LangFam_Retired'=> '3.32',
            'Locale::Codes::LangVar'=> '3.32',
            'Locale::Codes::LangVar_Codes'=> '3.32',
            'Locale::Codes::LangVar_Retired'=> '3.32',
            'Locale::Codes::Language'=> '3.32',
            'Locale::Codes::Language_Codes'=> '3.32',
            'Locale::Codes::Language_Retired'=> '3.32',
            'Locale::Codes::Script' => '3.32',
            'Locale::Codes::Script_Codes'=> '3.32',
            'Locale::Codes::Script_Retired'=> '3.32',
            'Locale::Country'       => '3.32',
            'Locale::Currency'      => '3.32',
            'Locale::Language'      => '3.32',
            'Locale::Script'        => '3.32',
            'Math::BigFloat'        => '1.9997',
            'Math::BigInt'          => '1.9997',
            'Math::BigInt::Calc'    => '1.9997',
            'Math::BigInt::CalcEmu' => '1.9997',
            'Module::CoreList'      => '5.20140920',
            'Module::CoreList::TieHashDelta'=> '5.20140920',
            'Module::CoreList::Utils'=> '5.20140920',
            'POSIX'                 => '1.43',
            'Pod::Perldoc'          => '3.24',
            'Pod::Perldoc::BaseTo'  => '3.24',
            'Pod::Perldoc::GetOptsOO'=> '3.24',
            'Pod::Perldoc::ToANSI'  => '3.24',
            'Pod::Perldoc::ToChecker'=> '3.24',
            'Pod::Perldoc::ToMan'   => '3.24',
            'Pod::Perldoc::ToNroff' => '3.24',
            'Pod::Perldoc::ToPod'   => '3.24',
            'Pod::Perldoc::ToRtf'   => '3.24',
            'Pod::Perldoc::ToTerm'  => '3.24',
            'Pod::Perldoc::ToText'  => '3.24',
            'Pod::Perldoc::ToTk'    => '3.24',
            'Pod::Perldoc::ToXml'   => '3.24',
            'Scalar::Util'          => '1.41',
            'Sub::Util'             => '1.41',
            'TAP::Base'             => '3.33',
            'TAP::Formatter::Base'  => '3.33',
            'TAP::Formatter::Color' => '3.33',
            'TAP::Formatter::Console'=> '3.33',
            'TAP::Formatter::Console::ParallelSession'=> '3.33',
            'TAP::Formatter::Console::Session'=> '3.33',
            'TAP::Formatter::File'  => '3.33',
            'TAP::Formatter::File::Session'=> '3.33',
            'TAP::Formatter::Session'=> '3.33',
            'TAP::Harness'          => '3.33',
            'TAP::Harness::Env'     => '3.33',
            'TAP::Object'           => '3.33',
            'TAP::Parser'           => '3.33',
            'TAP::Parser::Aggregator'=> '3.33',
            'TAP::Parser::Grammar'  => '3.33',
            'TAP::Parser::Iterator' => '3.33',
            'TAP::Parser::Iterator::Array'=> '3.33',
            'TAP::Parser::Iterator::Process'=> '3.33',
            'TAP::Parser::Iterator::Stream'=> '3.33',
            'TAP::Parser::IteratorFactory'=> '3.33',
            'TAP::Parser::Multiplexer'=> '3.33',
            'TAP::Parser::Result'   => '3.33',
            'TAP::Parser::Result::Bailout'=> '3.33',
            'TAP::Parser::Result::Comment'=> '3.33',
            'TAP::Parser::Result::Plan'=> '3.33',
            'TAP::Parser::Result::Pragma'=> '3.33',
            'TAP::Parser::Result::Test'=> '3.33',
            'TAP::Parser::Result::Unknown'=> '3.33',
            'TAP::Parser::Result::Version'=> '3.33',
            'TAP::Parser::Result::YAML'=> '3.33',
            'TAP::Parser::ResultFactory'=> '3.33',
            'TAP::Parser::Scheduler'=> '3.33',
            'TAP::Parser::Scheduler::Job'=> '3.33',
            'TAP::Parser::Scheduler::Spinner'=> '3.33',
            'TAP::Parser::Source'   => '3.33',
            'TAP::Parser::SourceHandler'=> '3.33',
            'TAP::Parser::SourceHandler::Executable'=> '3.33',
            'TAP::Parser::SourceHandler::File'=> '3.33',
            'TAP::Parser::SourceHandler::Handle'=> '3.33',
            'TAP::Parser::SourceHandler::Perl'=> '3.33',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.33',
            'TAP::Parser::YAMLish::Reader'=> '3.33',
            'TAP::Parser::YAMLish::Writer'=> '3.33',
            'Term::ReadLine'        => '1.15',
            'Test::Builder'         => '1.001006',
            'Test::Builder::Module' => '1.001006',
            'Test::Builder::Tester' => '1.24',
            'Test::Builder::Tester::Color'=> '1.24',
            'Test::Harness'         => '3.33',
            'Test::More'            => '1.001006',
            'Test::Simple'          => '1.001006',
            'Time::Piece'           => '1.29',
            'Time::Seconds'         => '1.29',
            'XS::APItest'           => '0.64',
            '_charnames'            => '1.42',
            'attributes'            => '0.23',
            'bigint'                => '0.37',
            'bignum'                => '0.38',
            'bigrat'                => '0.37',
            'constant'              => '1.32',
            'experimental'          => '0.010',
            'overload'              => '1.23',
            'threads'               => '1.96',
            'version'               => '0.9909',
            'version::regex'        => '0.9909',
            'version::vpp'          => '0.9909',
        },
        removed => {
        }
    },
    5.021005 => {
        delta_from => 5.021004,
        changed => {
            'B'                     => '1.52',
            'B::Concise'            => '0.994',
            'B::Debug'              => '1.22',
            'B::Deparse'            => '1.29',
            'B::Op_private'         => '5.021005',
            'CPAN::Meta'            => '2.142690',
            'CPAN::Meta::Converter' => '2.142690',
            'CPAN::Meta::Feature'   => '2.142690',
            'CPAN::Meta::History'   => '2.142690',
            'CPAN::Meta::Merge'     => '2.142690',
            'CPAN::Meta::Prereqs'   => '2.142690',
            'CPAN::Meta::Spec'      => '2.142690',
            'CPAN::Meta::Validator' => '2.142690',
            'Compress::Raw::Bzip2'  => '2.066',
            'Compress::Raw::Zlib'   => '2.066',
            'Compress::Zlib'        => '2.066',
            'Config'                => '5.021005',
            'Cwd'                   => '3.51',
            'DynaLoader'            => '1.27',
            'Errno'                 => '1.21',
            'ExtUtils::CBuilder'    => '0.280220',
            'ExtUtils::CBuilder::Base'=> '0.280220',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280220',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280220',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280220',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280220',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280220',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280220',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280220',
            'ExtUtils::CBuilder::Platform::android'=> '0.280220',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280220',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280220',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280220',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280220',
            'ExtUtils::Miniperl'    => '1.03',
            'Fcntl'                 => '1.13',
            'File::Find'            => '1.29',
            'File::Spec'            => '3.51',
            'File::Spec::Cygwin'    => '3.51',
            'File::Spec::Epoc'      => '3.51',
            'File::Spec::Functions' => '3.51',
            'File::Spec::Mac'       => '3.51',
            'File::Spec::OS2'       => '3.51',
            'File::Spec::Unix'      => '3.51',
            'File::Spec::VMS'       => '3.51',
            'File::Spec::Win32'     => '3.51',
            'HTTP::Tiny'            => '0.050',
            'IO::Compress::Adapter::Bzip2'=> '2.066',
            'IO::Compress::Adapter::Deflate'=> '2.066',
            'IO::Compress::Adapter::Identity'=> '2.066',
            'IO::Compress::Base'    => '2.066',
            'IO::Compress::Base::Common'=> '2.066',
            'IO::Compress::Bzip2'   => '2.066',
            'IO::Compress::Deflate' => '2.066',
            'IO::Compress::Gzip'    => '2.066',
            'IO::Compress::Gzip::Constants'=> '2.066',
            'IO::Compress::RawDeflate'=> '2.066',
            'IO::Compress::Zip'     => '2.066',
            'IO::Compress::Zip::Constants'=> '2.066',
            'IO::Compress::Zlib::Constants'=> '2.066',
            'IO::Compress::Zlib::Extra'=> '2.066',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.066',
            'IO::Uncompress::Adapter::Identity'=> '2.066',
            'IO::Uncompress::Adapter::Inflate'=> '2.066',
            'IO::Uncompress::AnyInflate'=> '2.066',
            'IO::Uncompress::AnyUncompress'=> '2.066',
            'IO::Uncompress::Base'  => '2.066',
            'IO::Uncompress::Bunzip2'=> '2.066',
            'IO::Uncompress::Gunzip'=> '2.066',
            'IO::Uncompress::Inflate'=> '2.066',
            'IO::Uncompress::RawInflate'=> '2.066',
            'IO::Uncompress::Unzip' => '2.066',
            'JSON::PP'              => '2.27300',
            'Module::CoreList'      => '5.20141020',
            'Module::CoreList::TieHashDelta'=> '5.20141020',
            'Module::CoreList::Utils'=> '5.20141020',
            'Net::Cmd'              => '3.02',
            'Net::Config'           => '3.02',
            'Net::Domain'           => '3.02',
            'Net::FTP'              => '3.02',
            'Net::FTP::A'           => '3.02',
            'Net::FTP::E'           => '3.02',
            'Net::FTP::I'           => '3.02',
            'Net::FTP::L'           => '3.02',
            'Net::FTP::dataconn'    => '3.02',
            'Net::NNTP'             => '3.02',
            'Net::Netrc'            => '3.02',
            'Net::POP3'             => '3.02',
            'Net::SMTP'             => '3.02',
            'Net::Time'             => '3.02',
            'Opcode'                => '1.29',
            'POSIX'                 => '1.45',
            'Socket'                => '2.016',
            'Test::Builder'         => '1.001008',
            'Test::Builder::Module' => '1.001008',
            'Test::More'            => '1.001008',
            'Test::Simple'          => '1.001008',
            'XS::APItest'           => '0.65',
            'XSLoader'              => '0.18',
            'attributes'            => '0.24',
            'experimental'          => '0.012',
            'feature'               => '1.38',
            'perlfaq'               => '5.0150046',
            're'                    => '0.27',
            'threads::shared'       => '1.47',
            'warnings'              => '1.28',
            'warnings::register'    => '1.04',
        },
        removed => {
        }
    },
    5.021006 => {
        delta_from => 5.021005,
        changed => {
            'App::Prove'            => '3.34',
            'App::Prove::State'     => '3.34',
            'App::Prove::State::Result'=> '3.34',
            'App::Prove::State::Result::Test'=> '3.34',
            'B'                     => '1.53',
            'B::Concise'            => '0.995',
            'B::Deparse'            => '1.30',
            'B::Op_private'         => '5.021006',
            'CPAN::Meta'            => '2.143240',
            'CPAN::Meta::Converter' => '2.143240',
            'CPAN::Meta::Feature'   => '2.143240',
            'CPAN::Meta::History'   => '2.143240',
            'CPAN::Meta::Merge'     => '2.143240',
            'CPAN::Meta::Prereqs'   => '2.143240',
            'CPAN::Meta::Requirements'=> '2.130',
            'CPAN::Meta::Spec'      => '2.143240',
            'CPAN::Meta::Validator' => '2.143240',
            'Config'                => '5.021006',
            'Devel::Peek'           => '1.19',
            'Digest::SHA'           => '5.93',
            'DynaLoader'            => '1.28',
            'Encode'                => '2.64',
            'Exporter'              => '5.72',
            'Exporter::Heavy'       => '5.72',
            'ExtUtils::Command::MM' => '7.02',
            'ExtUtils::Liblist'     => '7.02',
            'ExtUtils::Liblist::Kid'=> '7.02',
            'ExtUtils::MM'          => '7.02',
            'ExtUtils::MM_AIX'      => '7.02',
            'ExtUtils::MM_Any'      => '7.02',
            'ExtUtils::MM_BeOS'     => '7.02',
            'ExtUtils::MM_Cygwin'   => '7.02',
            'ExtUtils::MM_DOS'      => '7.02',
            'ExtUtils::MM_Darwin'   => '7.02',
            'ExtUtils::MM_MacOS'    => '7.02',
            'ExtUtils::MM_NW5'      => '7.02',
            'ExtUtils::MM_OS2'      => '7.02',
            'ExtUtils::MM_QNX'      => '7.02',
            'ExtUtils::MM_UWIN'     => '7.02',
            'ExtUtils::MM_Unix'     => '7.02',
            'ExtUtils::MM_VMS'      => '7.02',
            'ExtUtils::MM_VOS'      => '7.02',
            'ExtUtils::MM_Win32'    => '7.02',
            'ExtUtils::MM_Win95'    => '7.02',
            'ExtUtils::MY'          => '7.02',
            'ExtUtils::MakeMaker'   => '7.02',
            'ExtUtils::MakeMaker::Config'=> '7.02',
            'ExtUtils::MakeMaker::Locale'=> '7.02',
            'ExtUtils::MakeMaker::version'=> '7.02',
            'ExtUtils::MakeMaker::version::regex'=> '7.02',
            'ExtUtils::MakeMaker::version::vpp'=> '7.02',
            'ExtUtils::Manifest'    => '1.69',
            'ExtUtils::Mkbootstrap' => '7.02',
            'ExtUtils::Mksymlists'  => '7.02',
            'ExtUtils::ParseXS'     => '3.26',
            'ExtUtils::ParseXS::Constants'=> '3.26',
            'ExtUtils::ParseXS::CountLines'=> '3.26',
            'ExtUtils::ParseXS::Eval'=> '3.26',
            'ExtUtils::ParseXS::Utilities'=> '3.26',
            'ExtUtils::testlib'     => '7.02',
            'File::Spec::VMS'       => '3.52',
            'HTTP::Tiny'            => '0.051',
            'I18N::Langinfo'        => '0.12',
            'IO::Socket'            => '1.38',
            'Module::CoreList'      => '5.20141120',
            'Module::CoreList::TieHashDelta'=> '5.20141120',
            'Module::CoreList::Utils'=> '5.20141120',
            'POSIX'                 => '1.46',
            'PerlIO::encoding'      => '0.20',
            'PerlIO::scalar'        => '0.20',
            'TAP::Base'             => '3.34',
            'TAP::Formatter::Base'  => '3.34',
            'TAP::Formatter::Color' => '3.34',
            'TAP::Formatter::Console'=> '3.34',
            'TAP::Formatter::Console::ParallelSession'=> '3.34',
            'TAP::Formatter::Console::Session'=> '3.34',
            'TAP::Formatter::File'  => '3.34',
            'TAP::Formatter::File::Session'=> '3.34',
            'TAP::Formatter::Session'=> '3.34',
            'TAP::Harness'          => '3.34',
            'TAP::Harness::Env'     => '3.34',
            'TAP::Object'           => '3.34',
            'TAP::Parser'           => '3.34',
            'TAP::Parser::Aggregator'=> '3.34',
            'TAP::Parser::Grammar'  => '3.34',
            'TAP::Parser::Iterator' => '3.34',
            'TAP::Parser::Iterator::Array'=> '3.34',
            'TAP::Parser::Iterator::Process'=> '3.34',
            'TAP::Parser::Iterator::Stream'=> '3.34',
            'TAP::Parser::IteratorFactory'=> '3.34',
            'TAP::Parser::Multiplexer'=> '3.34',
            'TAP::Parser::Result'   => '3.34',
            'TAP::Parser::Result::Bailout'=> '3.34',
            'TAP::Parser::Result::Comment'=> '3.34',
            'TAP::Parser::Result::Plan'=> '3.34',
            'TAP::Parser::Result::Pragma'=> '3.34',
            'TAP::Parser::Result::Test'=> '3.34',
            'TAP::Parser::Result::Unknown'=> '3.34',
            'TAP::Parser::Result::Version'=> '3.34',
            'TAP::Parser::Result::YAML'=> '3.34',
            'TAP::Parser::ResultFactory'=> '3.34',
            'TAP::Parser::Scheduler'=> '3.34',
            'TAP::Parser::Scheduler::Job'=> '3.34',
            'TAP::Parser::Scheduler::Spinner'=> '3.34',
            'TAP::Parser::Source'   => '3.34',
            'TAP::Parser::SourceHandler'=> '3.34',
            'TAP::Parser::SourceHandler::Executable'=> '3.34',
            'TAP::Parser::SourceHandler::File'=> '3.34',
            'TAP::Parser::SourceHandler::Handle'=> '3.34',
            'TAP::Parser::SourceHandler::Perl'=> '3.34',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.34',
            'TAP::Parser::YAMLish::Reader'=> '3.34',
            'TAP::Parser::YAMLish::Writer'=> '3.34',
            'Test::Builder'         => '1.301001_075',
            'Test::Builder::Module' => '1.301001_075',
            'Test::Builder::Tester' => '1.301001_075',
            'Test::Builder::Tester::Color'=> '1.301001_075',
            'Test::Harness'         => '3.34',
            'Test::More'            => '1.301001_075',
            'Test::More::DeepCheck' => undef,
            'Test::More::DeepCheck::Strict'=> undef,
            'Test::More::DeepCheck::Tolerant'=> undef,
            'Test::More::Tools'     => undef,
            'Test::MostlyLike'      => undef,
            'Test::Simple'          => '1.301001_075',
            'Test::Stream'          => '1.301001_075',
            'Test::Stream::ArrayBase'=> undef,
            'Test::Stream::ArrayBase::Meta'=> undef,
            'Test::Stream::Carp'    => undef,
            'Test::Stream::Context' => undef,
            'Test::Stream::Event'   => undef,
            'Test::Stream::Event::Bail'=> undef,
            'Test::Stream::Event::Child'=> undef,
            'Test::Stream::Event::Diag'=> undef,
            'Test::Stream::Event::Finish'=> undef,
            'Test::Stream::Event::Note'=> undef,
            'Test::Stream::Event::Ok'=> undef,
            'Test::Stream::Event::Plan'=> undef,
            'Test::Stream::Event::Subtest'=> undef,
            'Test::Stream::ExitMagic'=> undef,
            'Test::Stream::ExitMagic::Context'=> undef,
            'Test::Stream::Exporter'=> undef,
            'Test::Stream::Exporter::Meta'=> undef,
            'Test::Stream::IOSets'  => undef,
            'Test::Stream::Meta'    => undef,
            'Test::Stream::PackageUtil'=> undef,
            'Test::Stream::Tester'  => undef,
            'Test::Stream::Tester::Checks'=> undef,
            'Test::Stream::Tester::Checks::Event'=> undef,
            'Test::Stream::Tester::Events'=> undef,
            'Test::Stream::Tester::Events::Event'=> undef,
            'Test::Stream::Tester::Grab'=> undef,
            'Test::Stream::Threads' => undef,
            'Test::Stream::Toolset' => undef,
            'Test::Stream::Util'    => undef,
            'Test::Tester'          => '1.301001_075',
            'Test::Tester::Capture' => undef,
            'Test::use::ok'         => '1.301001_075',
            'Unicode::UCD'          => '0.59',
            'XS::APItest'           => '0.68',
            'XSLoader'              => '0.19',
            'experimental'          => '0.013',
            'locale'                => '1.05',
            'ok'                    => '1.301001_075',
            'overload'              => '1.24',
            're'                    => '0.28',
            'warnings'              => '1.29',
        },
        removed => {
        }
    },
    5.021007 => {
        delta_from => 5.021006,
        changed => {
            'Archive::Tar'          => '2.04',
            'Archive::Tar::Constant'=> '2.04',
            'Archive::Tar::File'    => '2.04',
            'B'                     => '1.54',
            'B::Concise'            => '0.996',
            'B::Deparse'            => '1.31',
            'B::Op_private'         => '5.021007',
            'B::Showlex'            => '1.05',
            'Compress::Raw::Bzip2'  => '2.067',
            'Compress::Raw::Zlib'   => '2.067',
            'Compress::Zlib'        => '2.067',
            'Config'                => '5.021007',
            'Cwd'                   => '3.54',
            'DB_File'               => '1.834',
            'Data::Dumper'          => '2.155',
            'Devel::PPPort'         => '3.25',
            'Devel::Peek'           => '1.20',
            'DynaLoader'            => '1.29',
            'Encode'                => '2.67',
            'Errno'                 => '1.22',
            'ExtUtils::CBuilder'    => '0.280221',
            'ExtUtils::CBuilder::Base'=> '0.280221',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280221',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280221',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280221',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280221',
            'ExtUtils::CBuilder::Platform::android'=> '0.280221',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280221',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280221',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280221',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280221',
            'ExtUtils::Command::MM' => '7.04',
            'ExtUtils::Liblist'     => '7.04',
            'ExtUtils::Liblist::Kid'=> '7.04',
            'ExtUtils::MM'          => '7.04',
            'ExtUtils::MM_AIX'      => '7.04',
            'ExtUtils::MM_Any'      => '7.04',
            'ExtUtils::MM_BeOS'     => '7.04',
            'ExtUtils::MM_Cygwin'   => '7.04',
            'ExtUtils::MM_DOS'      => '7.04',
            'ExtUtils::MM_Darwin'   => '7.04',
            'ExtUtils::MM_MacOS'    => '7.04',
            'ExtUtils::MM_NW5'      => '7.04',
            'ExtUtils::MM_OS2'      => '7.04',
            'ExtUtils::MM_QNX'      => '7.04',
            'ExtUtils::MM_UWIN'     => '7.04',
            'ExtUtils::MM_Unix'     => '7.04',
            'ExtUtils::MM_VMS'      => '7.04',
            'ExtUtils::MM_VOS'      => '7.04',
            'ExtUtils::MM_Win32'    => '7.04',
            'ExtUtils::MM_Win95'    => '7.04',
            'ExtUtils::MY'          => '7.04',
            'ExtUtils::MakeMaker'   => '7.04',
            'ExtUtils::MakeMaker::Config'=> '7.04',
            'ExtUtils::MakeMaker::Locale'=> '7.04',
            'ExtUtils::MakeMaker::version'=> '7.04',
            'ExtUtils::MakeMaker::version::regex'=> '7.04',
            'ExtUtils::MakeMaker::version::vpp'=> '7.04',
            'ExtUtils::Mkbootstrap' => '7.04',
            'ExtUtils::Mksymlists'  => '7.04',
            'ExtUtils::ParseXS'     => '3.27',
            'ExtUtils::ParseXS::Constants'=> '3.27',
            'ExtUtils::ParseXS::CountLines'=> '3.27',
            'ExtUtils::ParseXS::Eval'=> '3.27',
            'ExtUtils::ParseXS::Utilities'=> '3.27',
            'ExtUtils::testlib'     => '7.04',
            'File::Spec'            => '3.53',
            'File::Spec::Cygwin'    => '3.54',
            'File::Spec::Epoc'      => '3.54',
            'File::Spec::Functions' => '3.54',
            'File::Spec::Mac'       => '3.54',
            'File::Spec::OS2'       => '3.54',
            'File::Spec::Unix'      => '3.54',
            'File::Spec::VMS'       => '3.54',
            'File::Spec::Win32'     => '3.54',
            'Filter::Util::Call'    => '1.51',
            'HTTP::Tiny'            => '0.053',
            'IO'                    => '1.35',
            'IO::Compress::Adapter::Bzip2'=> '2.067',
            'IO::Compress::Adapter::Deflate'=> '2.067',
            'IO::Compress::Adapter::Identity'=> '2.067',
            'IO::Compress::Base'    => '2.067',
            'IO::Compress::Base::Common'=> '2.067',
            'IO::Compress::Bzip2'   => '2.067',
            'IO::Compress::Deflate' => '2.067',
            'IO::Compress::Gzip'    => '2.067',
            'IO::Compress::Gzip::Constants'=> '2.067',
            'IO::Compress::RawDeflate'=> '2.067',
            'IO::Compress::Zip'     => '2.067',
            'IO::Compress::Zip::Constants'=> '2.067',
            'IO::Compress::Zlib::Constants'=> '2.067',
            'IO::Compress::Zlib::Extra'=> '2.067',
            'IO::Socket::IP'        => '0.34',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.067',
            'IO::Uncompress::Adapter::Identity'=> '2.067',
            'IO::Uncompress::Adapter::Inflate'=> '2.067',
            'IO::Uncompress::AnyInflate'=> '2.067',
            'IO::Uncompress::AnyUncompress'=> '2.067',
            'IO::Uncompress::Base'  => '2.067',
            'IO::Uncompress::Bunzip2'=> '2.067',
            'IO::Uncompress::Gunzip'=> '2.067',
            'IO::Uncompress::Inflate'=> '2.067',
            'IO::Uncompress::RawInflate'=> '2.067',
            'IO::Uncompress::Unzip' => '2.067',
            'Locale::Codes'         => '3.33',
            'Locale::Codes::Constants'=> '3.33',
            'Locale::Codes::Country'=> '3.33',
            'Locale::Codes::Country_Codes'=> '3.33',
            'Locale::Codes::Country_Retired'=> '3.33',
            'Locale::Codes::Currency'=> '3.33',
            'Locale::Codes::Currency_Codes'=> '3.33',
            'Locale::Codes::Currency_Retired'=> '3.33',
            'Locale::Codes::LangExt'=> '3.33',
            'Locale::Codes::LangExt_Codes'=> '3.33',
            'Locale::Codes::LangExt_Retired'=> '3.33',
            'Locale::Codes::LangFam'=> '3.33',
            'Locale::Codes::LangFam_Codes'=> '3.33',
            'Locale::Codes::LangFam_Retired'=> '3.33',
            'Locale::Codes::LangVar'=> '3.33',
            'Locale::Codes::LangVar_Codes'=> '3.33',
            'Locale::Codes::LangVar_Retired'=> '3.33',
            'Locale::Codes::Language'=> '3.33',
            'Locale::Codes::Language_Codes'=> '3.33',
            'Locale::Codes::Language_Retired'=> '3.33',
            'Locale::Codes::Script' => '3.33',
            'Locale::Codes::Script_Codes'=> '3.33',
            'Locale::Codes::Script_Retired'=> '3.33',
            'Locale::Country'       => '3.33',
            'Locale::Currency'      => '3.33',
            'Locale::Language'      => '3.33',
            'Locale::Maketext'      => '1.26',
            'Locale::Script'        => '3.33',
            'Module::CoreList'      => '5.20141220',
            'Module::CoreList::TieHashDelta'=> '5.20141220',
            'Module::CoreList::Utils'=> '5.20141220',
            'NDBM_File'             => '1.14',
            'Net::Cmd'              => '3.04',
            'Net::Config'           => '3.04',
            'Net::Domain'           => '3.04',
            'Net::FTP'              => '3.04',
            'Net::FTP::A'           => '3.04',
            'Net::FTP::E'           => '3.04',
            'Net::FTP::I'           => '3.04',
            'Net::FTP::L'           => '3.04',
            'Net::FTP::dataconn'    => '3.04',
            'Net::NNTP'             => '3.04',
            'Net::Netrc'            => '3.04',
            'Net::POP3'             => '3.04',
            'Net::SMTP'             => '3.04',
            'Net::Time'             => '3.04',
            'Opcode'                => '1.30',
            'POSIX'                 => '1.48',
            'PerlIO::scalar'        => '0.21',
            'Pod::Escapes'          => '1.07',
            'SDBM_File'             => '1.12',
            'Storable'              => '2.52',
            'Sys::Hostname'         => '1.20',
            'Test::Builder'         => '1.301001_090',
            'Test::Builder::Module' => '1.301001_090',
            'Test::Builder::Tester' => '1.301001_090',
            'Test::Builder::Tester::Color'=> '1.301001_090',
            'Test::CanFork'         => undef,
            'Test::CanThread'       => undef,
            'Test::More'            => '1.301001_090',
            'Test::Simple'          => '1.301001_090',
            'Test::Stream'          => '1.301001_090',
            'Test::Stream::API'     => undef,
            'Test::Stream::ForceExit'=> undef,
            'Test::Stream::Subtest' => undef,
            'Test::Tester'          => '1.301001_090',
            'Test::use::ok'         => '1.301001_090',
            'Unicode::Collate'      => '1.09',
            'Unicode::Collate::CJK::Big5'=> '1.09',
            'Unicode::Collate::CJK::GB2312'=> '1.09',
            'Unicode::Collate::CJK::JISX0208'=> '1.09',
            'Unicode::Collate::CJK::Korean'=> '1.09',
            'Unicode::Collate::CJK::Pinyin'=> '1.09',
            'Unicode::Collate::CJK::Stroke'=> '1.09',
            'Unicode::Collate::CJK::Zhuyin'=> '1.09',
            'Unicode::Collate::Locale'=> '1.09',
            'XS::APItest'           => '0.69',
            'XSLoader'              => '0.20',
            '_charnames'            => '1.43',
            'arybase'               => '0.09',
            'charnames'             => '1.43',
            'feature'               => '1.39',
            'mro'                   => '1.17',
            'ok'                    => '1.301001_090',
            'strict'                => '1.09',
            'threads'               => '1.96_001',
        },
        removed => {
        }
    },
    5.021008 => {
        delta_from => 5.021007,
        changed => {
            'App::Prove'            => '3.35',
            'App::Prove::State'     => '3.35',
            'App::Prove::State::Result'=> '3.35',
            'App::Prove::State::Result::Test'=> '3.35',
            'B'                     => '1.55',
            'B::Deparse'            => '1.32',
            'B::Op_private'         => '5.021008',
            'CPAN::Meta::Requirements'=> '2.131',
            'Compress::Raw::Bzip2'  => '2.068',
            'Compress::Raw::Zlib'   => '2.068',
            'Compress::Zlib'        => '2.068',
            'Config'                => '5.021008',
            'DB_File'               => '1.835',
            'Data::Dumper'          => '2.156',
            'Devel::PPPort'         => '3.28',
            'Devel::Peek'           => '1.21',
            'Digest::MD5'           => '2.54',
            'Digest::SHA'           => '5.95',
            'DynaLoader'            => '1.30',
            'ExtUtils::Command'     => '1.20',
            'ExtUtils::Manifest'    => '1.70',
            'Fatal'                 => '2.26',
            'File::Glob'            => '1.24',
            'Filter::Util::Call'    => '1.54',
            'Getopt::Long'          => '2.43',
            'IO::Compress::Adapter::Bzip2'=> '2.068',
            'IO::Compress::Adapter::Deflate'=> '2.068',
            'IO::Compress::Adapter::Identity'=> '2.068',
            'IO::Compress::Base'    => '2.068',
            'IO::Compress::Base::Common'=> '2.068',
            'IO::Compress::Bzip2'   => '2.068',
            'IO::Compress::Deflate' => '2.068',
            'IO::Compress::Gzip'    => '2.068',
            'IO::Compress::Gzip::Constants'=> '2.068',
            'IO::Compress::RawDeflate'=> '2.068',
            'IO::Compress::Zip'     => '2.068',
            'IO::Compress::Zip::Constants'=> '2.068',
            'IO::Compress::Zlib::Constants'=> '2.068',
            'IO::Compress::Zlib::Extra'=> '2.068',
            'IO::Socket::IP'        => '0.36',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.068',
            'IO::Uncompress::Adapter::Identity'=> '2.068',
            'IO::Uncompress::Adapter::Inflate'=> '2.068',
            'IO::Uncompress::AnyInflate'=> '2.068',
            'IO::Uncompress::AnyUncompress'=> '2.068',
            'IO::Uncompress::Base'  => '2.068',
            'IO::Uncompress::Bunzip2'=> '2.068',
            'IO::Uncompress::Gunzip'=> '2.068',
            'IO::Uncompress::Inflate'=> '2.068',
            'IO::Uncompress::RawInflate'=> '2.068',
            'IO::Uncompress::Unzip' => '2.068',
            'MIME::Base64'          => '3.15',
            'Module::CoreList'      => '5.20150220',
            'Module::CoreList::TieHashDelta'=> '5.20150220',
            'Module::CoreList::Utils'=> '5.20150220',
            'Module::Load::Conditional'=> '0.64',
            'Module::Metadata'      => '1.000026',
            'Net::Cmd'              => '3.05',
            'Net::Config'           => '3.05',
            'Net::Domain'           => '3.05',
            'Net::FTP'              => '3.05',
            'Net::FTP::A'           => '3.05',
            'Net::FTP::E'           => '3.05',
            'Net::FTP::I'           => '3.05',
            'Net::FTP::L'           => '3.05',
            'Net::FTP::dataconn'    => '3.05',
            'Net::NNTP'             => '3.05',
            'Net::Netrc'            => '3.05',
            'Net::POP3'             => '3.05',
            'Net::SMTP'             => '3.05',
            'Net::Time'             => '3.05',
            'Opcode'                => '1.31',
            'POSIX'                 => '1.49',
            'PerlIO::encoding'      => '0.21',
            'Pod::Simple'           => '3.29',
            'Pod::Simple::BlackBox' => '3.29',
            'Pod::Simple::Checker'  => '3.29',
            'Pod::Simple::Debug'    => '3.29',
            'Pod::Simple::DumpAsText'=> '3.29',
            'Pod::Simple::DumpAsXML'=> '3.29',
            'Pod::Simple::HTML'     => '3.29',
            'Pod::Simple::HTMLBatch'=> '3.29',
            'Pod::Simple::LinkSection'=> '3.29',
            'Pod::Simple::Methody'  => '3.29',
            'Pod::Simple::Progress' => '3.29',
            'Pod::Simple::PullParser'=> '3.29',
            'Pod::Simple::PullParserEndToken'=> '3.29',
            'Pod::Simple::PullParserStartToken'=> '3.29',
            'Pod::Simple::PullParserTextToken'=> '3.29',
            'Pod::Simple::PullParserToken'=> '3.29',
            'Pod::Simple::RTF'      => '3.29',
            'Pod::Simple::Search'   => '3.29',
            'Pod::Simple::SimpleTree'=> '3.29',
            'Pod::Simple::Text'     => '3.29',
            'Pod::Simple::TextContent'=> '3.29',
            'Pod::Simple::TiedOutFH'=> '3.29',
            'Pod::Simple::Transcode'=> '3.29',
            'Pod::Simple::TranscodeDumb'=> '3.29',
            'Pod::Simple::TranscodeSmart'=> '3.29',
            'Pod::Simple::XHTML'    => '3.29',
            'Pod::Simple::XMLOutStream'=> '3.29',
            'SDBM_File'             => '1.13',
            'Safe'                  => '2.39',
            'TAP::Base'             => '3.35',
            'TAP::Formatter::Base'  => '3.35',
            'TAP::Formatter::Color' => '3.35',
            'TAP::Formatter::Console'=> '3.35',
            'TAP::Formatter::Console::ParallelSession'=> '3.35',
            'TAP::Formatter::Console::Session'=> '3.35',
            'TAP::Formatter::File'  => '3.35',
            'TAP::Formatter::File::Session'=> '3.35',
            'TAP::Formatter::Session'=> '3.35',
            'TAP::Harness'          => '3.35',
            'TAP::Harness::Env'     => '3.35',
            'TAP::Object'           => '3.35',
            'TAP::Parser'           => '3.35',
            'TAP::Parser::Aggregator'=> '3.35',
            'TAP::Parser::Grammar'  => '3.35',
            'TAP::Parser::Iterator' => '3.35',
            'TAP::Parser::Iterator::Array'=> '3.35',
            'TAP::Parser::Iterator::Process'=> '3.35',
            'TAP::Parser::Iterator::Stream'=> '3.35',
            'TAP::Parser::IteratorFactory'=> '3.35',
            'TAP::Parser::Multiplexer'=> '3.35',
            'TAP::Parser::Result'   => '3.35',
            'TAP::Parser::Result::Bailout'=> '3.35',
            'TAP::Parser::Result::Comment'=> '3.35',
            'TAP::Parser::Result::Plan'=> '3.35',
            'TAP::Parser::Result::Pragma'=> '3.35',
            'TAP::Parser::Result::Test'=> '3.35',
            'TAP::Parser::Result::Unknown'=> '3.35',
            'TAP::Parser::Result::Version'=> '3.35',
            'TAP::Parser::Result::YAML'=> '3.35',
            'TAP::Parser::ResultFactory'=> '3.35',
            'TAP::Parser::Scheduler'=> '3.35',
            'TAP::Parser::Scheduler::Job'=> '3.35',
            'TAP::Parser::Scheduler::Spinner'=> '3.35',
            'TAP::Parser::Source'   => '3.35',
            'TAP::Parser::SourceHandler'=> '3.35',
            'TAP::Parser::SourceHandler::Executable'=> '3.35',
            'TAP::Parser::SourceHandler::File'=> '3.35',
            'TAP::Parser::SourceHandler::Handle'=> '3.35',
            'TAP::Parser::SourceHandler::Perl'=> '3.35',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.35',
            'TAP::Parser::YAMLish::Reader'=> '3.35',
            'TAP::Parser::YAMLish::Writer'=> '3.35',
            'Test::Builder'         => '1.301001_097',
            'Test::Builder::Module' => '1.301001_097',
            'Test::Builder::Tester' => '1.301001_097',
            'Test::Builder::Tester::Color'=> '1.301001_097',
            'Test::Harness'         => '3.35',
            'Test::More'            => '1.301001_097',
            'Test::Simple'          => '1.301001_097',
            'Test::Stream'          => '1.301001_097',
            'Test::Stream::Block'   => undef,
            'Test::Tester'          => '1.301001_097',
            'Test::Tester::CaptureRunner'=> undef,
            'Test::Tester::Delegate'=> undef,
            'Test::use::ok'         => '1.301001_097',
            'Unicode::Collate'      => '1.10',
            'Unicode::Collate::CJK::Big5'=> '1.10',
            'Unicode::Collate::CJK::GB2312'=> '1.10',
            'Unicode::Collate::CJK::JISX0208'=> '1.10',
            'Unicode::Collate::CJK::Korean'=> '1.10',
            'Unicode::Collate::CJK::Pinyin'=> '1.10',
            'Unicode::Collate::CJK::Stroke'=> '1.10',
            'Unicode::Collate::CJK::Zhuyin'=> '1.10',
            'Unicode::Collate::Locale'=> '1.10',
            'VMS::DCLsym'           => '1.06',
            'XS::APItest'           => '0.70',
            'arybase'               => '0.10',
            'attributes'            => '0.25',
            'autodie'               => '2.26',
            'autodie::Scope::Guard' => '2.26',
            'autodie::Scope::GuardStack'=> '2.26',
            'autodie::ScopeUtil'    => '2.26',
            'autodie::exception'    => '2.26',
            'autodie::exception::system'=> '2.26',
            'autodie::hints'        => '2.26',
            'autodie::skip'         => '2.26',
            'ok'                    => '1.301001_097',
            're'                    => '0.30',
            'warnings'              => '1.30',
        },
        removed => {
        }
    },
    5.020002 => {
        delta_from => 5.020001,
        changed => {
            'CPAN::Author'          => '5.5002',
            'CPAN::CacheMgr'        => '5.5002',
            'CPAN::FTP'             => '5.5006',
            'CPAN::HTTP::Client'    => '1.9601',
            'CPAN::HandleConfig'    => '5.5005',
            'CPAN::Index'           => '1.9601',
            'CPAN::LWP::UserAgent'  => '1.9601',
            'CPAN::Mirrors'         => '1.9601',
            'Config'                => '5.020002',
            'Cwd'                   => '3.48_01',
            'Data::Dumper'          => '2.151_01',
            'Errno'                 => '1.20_05',
            'File::Spec'            => '3.48_01',
            'File::Spec::Cygwin'    => '3.48_01',
            'File::Spec::Epoc'      => '3.48_01',
            'File::Spec::Functions' => '3.48_01',
            'File::Spec::Mac'       => '3.48_01',
            'File::Spec::OS2'       => '3.48_01',
            'File::Spec::Unix'      => '3.48_01',
            'File::Spec::VMS'       => '3.48_01',
            'File::Spec::Win32'     => '3.48_01',
            'IO::Socket'            => '1.38',
            'Module::CoreList'      => '5.20150214',
            'Module::CoreList::TieHashDelta'=> '5.20150214',
            'Module::CoreList::Utils'=> '5.20150214',
            'PerlIO::scalar'        => '0.18_01',
            'Pod::PlainText'        => '2.07',
            'Storable'              => '2.49_01',
            'VMS::DCLsym'           => '1.05_01',
            'VMS::Stdio'            => '2.41',
            'attributes'            => '0.23',
            'feature'               => '1.36_01',
        },
        removed => {
        }
    },
    5.021009 => {
        delta_from => 5.021008,
        changed => {
            'B'                     => '1.56',
            'B::Debug'              => '1.23',
            'B::Deparse'            => '1.33',
            'B::Op_private'         => '5.021009',
            'Benchmark'             => '1.20',
            'CPAN::Author'          => '5.5002',
            'CPAN::CacheMgr'        => '5.5002',
            'CPAN::FTP'             => '5.5006',
            'CPAN::HTTP::Client'    => '1.9601',
            'CPAN::HandleConfig'    => '5.5005',
            'CPAN::Index'           => '1.9601',
            'CPAN::LWP::UserAgent'  => '1.9601',
            'CPAN::Meta::Requirements'=> '2.132',
            'CPAN::Mirrors'         => '1.9601',
            'Carp'                  => '1.35',
            'Carp::Heavy'           => '1.35',
            'Config'                => '5.021009',
            'Config::Perl::V'       => '0.23',
            'Data::Dumper'          => '2.157',
            'Devel::Peek'           => '1.22',
            'DynaLoader'            => '1.31',
            'Encode'                => '2.70',
            'Encode::MIME::Header'  => '2.16',
            'Errno'                 => '1.23',
            'ExtUtils::Miniperl'    => '1.04',
            'HTTP::Tiny'            => '0.054',
            'Module::CoreList'      => '5.20150220',
            'Module::CoreList::TieHashDelta'=> '5.20150220',
            'Module::CoreList::Utils'=> '5.20150220',
            'Opcode'                => '1.32',
            'POSIX'                 => '1.51',
            'Perl::OSType'          => '1.008',
            'PerlIO::scalar'        => '0.22',
            'Pod::Find'             => '1.63',
            'Pod::InputObjects'     => '1.63',
            'Pod::ParseUtils'       => '1.63',
            'Pod::Parser'           => '1.63',
            'Pod::Perldoc'          => '3.25',
            'Pod::Perldoc::BaseTo'  => '3.25',
            'Pod::Perldoc::GetOptsOO'=> '3.25',
            'Pod::Perldoc::ToANSI'  => '3.25',
            'Pod::Perldoc::ToChecker'=> '3.25',
            'Pod::Perldoc::ToMan'   => '3.25',
            'Pod::Perldoc::ToNroff' => '3.25',
            'Pod::Perldoc::ToPod'   => '3.25',
            'Pod::Perldoc::ToRtf'   => '3.25',
            'Pod::Perldoc::ToTerm'  => '3.25',
            'Pod::Perldoc::ToText'  => '3.25',
            'Pod::Perldoc::ToTk'    => '3.25',
            'Pod::Perldoc::ToXml'   => '3.25',
            'Pod::PlainText'        => '2.07',
            'Pod::Select'           => '1.63',
            'Socket'                => '2.018',
            'Storable'              => '2.53',
            'Test::Builder'         => '1.301001_098',
            'Test::Builder::Module' => '1.301001_098',
            'Test::Builder::Tester' => '1.301001_098',
            'Test::Builder::Tester::Color'=> '1.301001_098',
            'Test::More'            => '1.301001_098',
            'Test::Simple'          => '1.301001_098',
            'Test::Stream'          => '1.301001_098',
            'Test::Tester'          => '1.301001_098',
            'Test::use::ok'         => '1.301001_098',
            'Unicode::Collate'      => '1.11',
            'Unicode::Collate::CJK::Big5'=> '1.11',
            'Unicode::Collate::CJK::GB2312'=> '1.11',
            'Unicode::Collate::CJK::JISX0208'=> '1.11',
            'Unicode::Collate::CJK::Korean'=> '1.11',
            'Unicode::Collate::CJK::Pinyin'=> '1.11',
            'Unicode::Collate::CJK::Stroke'=> '1.11',
            'Unicode::Collate::CJK::Zhuyin'=> '1.11',
            'Unicode::Collate::Locale'=> '1.11',
            'Unicode::UCD'          => '0.61',
            'VMS::Stdio'            => '2.41',
            'Win32'                 => '0.51',
            'Win32API::File'        => '0.1202',
            'attributes'            => '0.26',
            'bigint'                => '0.39',
            'bignum'                => '0.39',
            'bigrat'                => '0.39',
            'constant'              => '1.33',
            'encoding'              => '2.13',
            'feature'               => '1.40',
            'ok'                    => '1.301001_098',
            'overload'              => '1.25',
            'perlfaq'               => '5.021009',
            're'                    => '0.31',
            'threads::shared'       => '1.48',
            'warnings'              => '1.31',
        },
        removed => {
        }
    },
    5.021010 => {
        delta_from => 5.021009,
        changed => {
            'App::Cpan'             => '1.63',
            'B'                     => '1.57',
            'B::Deparse'            => '1.34',
            'B::Op_private'         => '5.021010',
            'Benchmark'             => '1.2',
            'CPAN'                  => '2.10',
            'CPAN::Distribution'    => '2.04',
            'CPAN::FirstTime'       => '5.5307',
            'CPAN::HTTP::Credentials'=> '1.9601',
            'CPAN::HandleConfig'    => '5.5006',
            'CPAN::Meta'            => '2.150001',
            'CPAN::Meta::Converter' => '2.150001',
            'CPAN::Meta::Feature'   => '2.150001',
            'CPAN::Meta::History'   => '2.150001',
            'CPAN::Meta::Merge'     => '2.150001',
            'CPAN::Meta::Prereqs'   => '2.150001',
            'CPAN::Meta::Spec'      => '2.150001',
            'CPAN::Meta::Validator' => '2.150001',
            'CPAN::Module'          => '5.5002',
            'CPAN::Plugin'          => '0.95',
            'CPAN::Plugin::Specfile'=> '0.01',
            'CPAN::Shell'           => '5.5005',
            'Carp'                  => '1.36',
            'Carp::Heavy'           => '1.36',
            'Config'                => '5.02101',
            'Cwd'                   => '3.55',
            'DB'                    => '1.08',
            'Data::Dumper'          => '2.158',
            'Devel::PPPort'         => '3.31',
            'DynaLoader'            => '1.32',
            'Encode'                => '2.72',
            'Encode::Alias'         => '2.19',
            'File::Spec'            => '3.55',
            'File::Spec::Cygwin'    => '3.55',
            'File::Spec::Epoc'      => '3.55',
            'File::Spec::Functions' => '3.55',
            'File::Spec::Mac'       => '3.55',
            'File::Spec::OS2'       => '3.55',
            'File::Spec::Unix'      => '3.55',
            'File::Spec::VMS'       => '3.55',
            'File::Spec::Win32'     => '3.55',
            'Getopt::Long'          => '2.45',
            'Locale::Codes'         => '3.34',
            'Locale::Codes::Constants'=> '3.34',
            'Locale::Codes::Country'=> '3.34',
            'Locale::Codes::Country_Codes'=> '3.34',
            'Locale::Codes::Country_Retired'=> '3.34',
            'Locale::Codes::Currency'=> '3.34',
            'Locale::Codes::Currency_Codes'=> '3.34',
            'Locale::Codes::Currency_Retired'=> '3.34',
            'Locale::Codes::LangExt'=> '3.34',
            'Locale::Codes::LangExt_Codes'=> '3.34',
            'Locale::Codes::LangExt_Retired'=> '3.34',
            'Locale::Codes::LangFam'=> '3.34',
            'Locale::Codes::LangFam_Codes'=> '3.34',
            'Locale::Codes::LangFam_Retired'=> '3.34',
            'Locale::Codes::LangVar'=> '3.34',
            'Locale::Codes::LangVar_Codes'=> '3.34',
            'Locale::Codes::LangVar_Retired'=> '3.34',
            'Locale::Codes::Language'=> '3.34',
            'Locale::Codes::Language_Codes'=> '3.34',
            'Locale::Codes::Language_Retired'=> '3.34',
            'Locale::Codes::Script' => '3.34',
            'Locale::Codes::Script_Codes'=> '3.34',
            'Locale::Codes::Script_Retired'=> '3.34',
            'Locale::Country'       => '3.34',
            'Locale::Currency'      => '3.34',
            'Locale::Language'      => '3.34',
            'Locale::Script'        => '3.34',
            'Module::CoreList'      => '5.20150320',
            'Module::CoreList::TieHashDelta'=> '5.20150320',
            'Module::CoreList::Utils'=> '5.20150320',
            'POSIX'                 => '1.52',
            'Pod::Functions'        => '1.09',
            'Pod::Functions::Functions'=> '1.09',
            'Term::Complete'        => '1.403',
            'Test::Builder'         => '1.001014',
            'Test::Builder::IO::Scalar'=> '2.113',
            'Test::Builder::Module' => '1.001014',
            'Test::Builder::Tester' => '1.28',
            'Test::Builder::Tester::Color'=> '1.290001',
            'Test::More'            => '1.001014',
            'Test::Simple'          => '1.001014',
            'Test::Tester'          => '0.114',
            'Test::use::ok'         => '0.16',
            'Text::Balanced'        => '2.03',
            'Text::ParseWords'      => '3.30',
            'Unicode::Collate'      => '1.12',
            'Unicode::Collate::CJK::Big5'=> '1.12',
            'Unicode::Collate::CJK::GB2312'=> '1.12',
            'Unicode::Collate::CJK::JISX0208'=> '1.12',
            'Unicode::Collate::CJK::Korean'=> '1.12',
            'Unicode::Collate::CJK::Pinyin'=> '1.12',
            'Unicode::Collate::CJK::Stroke'=> '1.12',
            'Unicode::Collate::CJK::Zhuyin'=> '1.12',
            'Unicode::Collate::Locale'=> '1.12',
            'XS::APItest'           => '0.71',
            'encoding'              => '2.14',
            'locale'                => '1.06',
            'meta_notation'         => undef,
            'ok'                    => '0.16',
            'parent'                => '0.232',
            're'                    => '0.32',
            'sigtrap'               => '1.08',
            'threads'               => '2.01',
            'utf8'                  => '1.15',
        },
        removed => {
            'Test::CanFork'         => 1,
            'Test::CanThread'       => 1,
            'Test::More::DeepCheck' => 1,
            'Test::More::DeepCheck::Strict'=> 1,
            'Test::More::DeepCheck::Tolerant'=> 1,
            'Test::More::Tools'     => 1,
            'Test::MostlyLike'      => 1,
            'Test::Stream'          => 1,
            'Test::Stream::API'     => 1,
            'Test::Stream::ArrayBase'=> 1,
            'Test::Stream::ArrayBase::Meta'=> 1,
            'Test::Stream::Block'   => 1,
            'Test::Stream::Carp'    => 1,
            'Test::Stream::Context' => 1,
            'Test::Stream::Event'   => 1,
            'Test::Stream::Event::Bail'=> 1,
            'Test::Stream::Event::Child'=> 1,
            'Test::Stream::Event::Diag'=> 1,
            'Test::Stream::Event::Finish'=> 1,
            'Test::Stream::Event::Note'=> 1,
            'Test::Stream::Event::Ok'=> 1,
            'Test::Stream::Event::Plan'=> 1,
            'Test::Stream::Event::Subtest'=> 1,
            'Test::Stream::ExitMagic'=> 1,
            'Test::Stream::ExitMagic::Context'=> 1,
            'Test::Stream::Exporter'=> 1,
            'Test::Stream::Exporter::Meta'=> 1,
            'Test::Stream::ForceExit'=> 1,
            'Test::Stream::IOSets'  => 1,
            'Test::Stream::Meta'    => 1,
            'Test::Stream::PackageUtil'=> 1,
            'Test::Stream::Subtest' => 1,
            'Test::Stream::Tester'  => 1,
            'Test::Stream::Tester::Checks'=> 1,
            'Test::Stream::Tester::Checks::Event'=> 1,
            'Test::Stream::Tester::Events'=> 1,
            'Test::Stream::Tester::Events::Event'=> 1,
            'Test::Stream::Tester::Grab'=> 1,
            'Test::Stream::Threads' => 1,
            'Test::Stream::Toolset' => 1,
            'Test::Stream::Util'    => 1,
        }
    },
    5.021011 => {
        delta_from => 5.021010,
        changed => {
            'B'                     => '1.58',
            'B::Deparse'            => '1.35',
            'B::Op_private'         => '5.021011',
            'CPAN'                  => '2.11',
            'Config'                => '5.021011',
            'Config::Perl::V'       => '0.24',
            'Cwd'                   => '3.56',
            'ExtUtils::Miniperl'    => '1.05',
            'ExtUtils::ParseXS'     => '3.28',
            'ExtUtils::ParseXS::Constants'=> '3.28',
            'ExtUtils::ParseXS::CountLines'=> '3.28',
            'ExtUtils::ParseXS::Eval'=> '3.28',
            'ExtUtils::ParseXS::Utilities'=> '3.28',
            'ExtUtils::Typemaps'    => '3.28',
            'ExtUtils::Typemaps::Cmd'=> '3.28',
            'ExtUtils::Typemaps::InputMap'=> '3.28',
            'ExtUtils::Typemaps::OutputMap'=> '3.28',
            'ExtUtils::Typemaps::Type'=> '3.28',
            'File::Spec'            => '3.56',
            'File::Spec::Cygwin'    => '3.56',
            'File::Spec::Epoc'      => '3.56',
            'File::Spec::Functions' => '3.56',
            'File::Spec::Mac'       => '3.56',
            'File::Spec::OS2'       => '3.56',
            'File::Spec::Unix'      => '3.56',
            'File::Spec::VMS'       => '3.56',
            'File::Spec::Win32'     => '3.56',
            'IO::Socket::IP'        => '0.37',
            'Module::CoreList'      => '5.20150420',
            'Module::CoreList::TieHashDelta'=> '5.20150420',
            'Module::CoreList::Utils'=> '5.20150420',
            'PerlIO::mmap'          => '0.014',
            'XS::APItest'           => '0.72',
            'attributes'            => '0.27',
            'if'                    => '0.0604',
            'utf8'                  => '1.16',
            'warnings'              => '1.32',
        },
        removed => {
        }
    },
    5.022000 => {
        delta_from => 5.021011,
        changed => {
            'B::Op_private'         => '5.022000',
            'Config'                => '5.022',
            'ExtUtils::Command::MM' => '7.04_01',
            'ExtUtils::Liblist'     => '7.04_01',
            'ExtUtils::Liblist::Kid'=> '7.04_01',
            'ExtUtils::MM'          => '7.04_01',
            'ExtUtils::MM_AIX'      => '7.04_01',
            'ExtUtils::MM_Any'      => '7.04_01',
            'ExtUtils::MM_BeOS'     => '7.04_01',
            'ExtUtils::MM_Cygwin'   => '7.04_01',
            'ExtUtils::MM_DOS'      => '7.04_01',
            'ExtUtils::MM_Darwin'   => '7.04_01',
            'ExtUtils::MM_MacOS'    => '7.04_01',
            'ExtUtils::MM_NW5'      => '7.04_01',
            'ExtUtils::MM_OS2'      => '7.04_01',
            'ExtUtils::MM_QNX'      => '7.04_01',
            'ExtUtils::MM_UWIN'     => '7.04_01',
            'ExtUtils::MM_Unix'     => '7.04_01',
            'ExtUtils::MM_VMS'      => '7.04_01',
            'ExtUtils::MM_VOS'      => '7.04_01',
            'ExtUtils::MM_Win32'    => '7.04_01',
            'ExtUtils::MM_Win95'    => '7.04_01',
            'ExtUtils::MY'          => '7.04_01',
            'ExtUtils::MakeMaker'   => '7.04_01',
            'ExtUtils::MakeMaker::Config'=> '7.04_01',
            'ExtUtils::MakeMaker::Locale'=> '7.04_01',
            'ExtUtils::MakeMaker::version'=> '7.04_01',
            'ExtUtils::MakeMaker::version::regex'=> '7.04_01',
            'ExtUtils::MakeMaker::version::vpp'=> '7.04_01',
            'ExtUtils::Mkbootstrap' => '7.04_01',
            'ExtUtils::Mksymlists'  => '7.04_01',
            'ExtUtils::testlib'     => '7.04_01',
            'Module::CoreList'      => '5.20150520',
            'Module::CoreList::TieHashDelta'=> '5.20150520',
            'Module::CoreList::Utils'=> '5.20150520',
            'POSIX'                 => '1.53',
            'PerlIO::via::QuotedPrint'=> '0.08',
            'overload'              => '1.26',
            'utf8'                  => '1.17',
        },
        removed => {
        }
    },
    5.023000 => {
        delta_from => 5.022000,
        changed => {
            'B::Op_private'         => '5.023000',
            'CPAN::Meta'            => '2.150005',
            'CPAN::Meta::Converter' => '2.150005',
            'CPAN::Meta::Feature'   => '2.150005',
            'CPAN::Meta::History'   => '2.150005',
            'CPAN::Meta::Merge'     => '2.150005',
            'CPAN::Meta::Prereqs'   => '2.150005',
            'CPAN::Meta::Requirements'=> '2.133',
            'CPAN::Meta::Spec'      => '2.150005',
            'CPAN::Meta::Validator' => '2.150005',
            'CPAN::Meta::YAML'      => '0.016',
            'Config'                => '5.023',
            'Encode'                => '2.73',
            'ExtUtils::CBuilder'    => '0.280223',
            'ExtUtils::CBuilder::Base'=> '0.280223',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280223',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280223',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280223',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280223',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280223',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280223',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280223',
            'ExtUtils::CBuilder::Platform::android'=> '0.280223',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280223',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280223',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280223',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280223',
            'Fatal'                 => '2.27',
            'Getopt::Long'          => '2.46',
            'HTTP::Tiny'            => '0.056',
            'List::Util'            => '1.42_01',
            'List::Util::XS'        => '1.42_01',
            'Locale::Codes'         => '3.35',
            'Locale::Codes::Constants'=> '3.35',
            'Locale::Codes::Country'=> '3.35',
            'Locale::Codes::Country_Codes'=> '3.35',
            'Locale::Codes::Country_Retired'=> '3.35',
            'Locale::Codes::Currency'=> '3.35',
            'Locale::Codes::Currency_Codes'=> '3.35',
            'Locale::Codes::Currency_Retired'=> '3.35',
            'Locale::Codes::LangExt'=> '3.35',
            'Locale::Codes::LangExt_Codes'=> '3.35',
            'Locale::Codes::LangExt_Retired'=> '3.35',
            'Locale::Codes::LangFam'=> '3.35',
            'Locale::Codes::LangFam_Codes'=> '3.35',
            'Locale::Codes::LangFam_Retired'=> '3.35',
            'Locale::Codes::LangVar'=> '3.35',
            'Locale::Codes::LangVar_Codes'=> '3.35',
            'Locale::Codes::LangVar_Retired'=> '3.35',
            'Locale::Codes::Language'=> '3.35',
            'Locale::Codes::Language_Codes'=> '3.35',
            'Locale::Codes::Language_Retired'=> '3.35',
            'Locale::Codes::Script' => '3.35',
            'Locale::Codes::Script_Codes'=> '3.35',
            'Locale::Codes::Script_Retired'=> '3.35',
            'Locale::Country'       => '3.35',
            'Locale::Currency'      => '3.35',
            'Locale::Language'      => '3.35',
            'Locale::Script'        => '3.35',
            'Math::BigFloat'        => '1.999701',
            'Math::BigInt'          => '1.999701',
            'Math::BigInt::Calc'    => '1.999701',
            'Math::BigInt::CalcEmu' => '1.999701',
            'Math::BigRat'          => '0.260801',
            'Module::CoreList'      => '5.20150620',
            'Module::CoreList::TieHashDelta'=> '5.20150620',
            'Module::CoreList::Utils'=> '5.20150620',
            'Module::Metadata'      => '1.000027',
            'Net::Cmd'              => '3.06',
            'Net::Config'           => '3.06',
            'Net::Domain'           => '3.06',
            'Net::FTP'              => '3.06',
            'Net::FTP::A'           => '3.06',
            'Net::FTP::E'           => '3.06',
            'Net::FTP::I'           => '3.06',
            'Net::FTP::L'           => '3.06',
            'Net::FTP::dataconn'    => '3.06',
            'Net::NNTP'             => '3.06',
            'Net::Netrc'            => '3.06',
            'Net::POP3'             => '3.06',
            'Net::SMTP'             => '3.06',
            'Net::Time'             => '3.06',
            'POSIX'                 => '1.54',
            'Parse::CPAN::Meta'     => '1.4417',
            'Pod::Simple'           => '3.30',
            'Pod::Simple::BlackBox' => '3.30',
            'Pod::Simple::Checker'  => '3.30',
            'Pod::Simple::Debug'    => '3.30',
            'Pod::Simple::DumpAsText'=> '3.30',
            'Pod::Simple::DumpAsXML'=> '3.30',
            'Pod::Simple::HTML'     => '3.30',
            'Pod::Simple::HTMLBatch'=> '3.30',
            'Pod::Simple::LinkSection'=> '3.30',
            'Pod::Simple::Methody'  => '3.30',
            'Pod::Simple::Progress' => '3.30',
            'Pod::Simple::PullParser'=> '3.30',
            'Pod::Simple::PullParserEndToken'=> '3.30',
            'Pod::Simple::PullParserStartToken'=> '3.30',
            'Pod::Simple::PullParserTextToken'=> '3.30',
            'Pod::Simple::PullParserToken'=> '3.30',
            'Pod::Simple::RTF'      => '3.30',
            'Pod::Simple::Search'   => '3.30',
            'Pod::Simple::SimpleTree'=> '3.30',
            'Pod::Simple::Text'     => '3.30',
            'Pod::Simple::TextContent'=> '3.30',
            'Pod::Simple::TiedOutFH'=> '3.30',
            'Pod::Simple::Transcode'=> '3.30',
            'Pod::Simple::TranscodeDumb'=> '3.30',
            'Pod::Simple::TranscodeSmart'=> '3.30',
            'Pod::Simple::XHTML'    => '3.30',
            'Pod::Simple::XMLOutStream'=> '3.30',
            'Pod::Usage'            => '1.67',
            'Scalar::Util'          => '1.42_01',
            'Socket'                => '2.019',
            'Sub::Util'             => '1.42_01',
            'Time::Piece'           => '1.30',
            'Time::Seconds'         => '1.30',
            'UNIVERSAL'             => '1.13',
            'Unicode'               => '8.0.0',
            'XS::APItest'           => '0.73',
            'autodie'               => '2.27',
            'autodie::Scope::Guard' => '2.27',
            'autodie::Scope::GuardStack'=> '2.27',
            'autodie::Util'         => '2.27',
            'autodie::exception'    => '2.27',
            'autodie::exception::system'=> '2.27',
            'autodie::hints'        => '2.27',
            'autodie::skip'         => '2.27',
            'encoding'              => '2.15',
            'feature'               => '1.41',
            'parent'                => '0.234',
            'threads'               => '2.02',
        },
        removed => {
        }
    },
    5.023001 => {
        delta_from => 5.023000,
        changed => {
            'B::Op_private'         => '5.023001',
            'Config'                => '5.023001',
            'DynaLoader'            => '1.33',
            'Encode'                => '2.75',
            'Encode::MIME::Header'  => '2.17',
            'Encode::Unicode'       => '2.13',
            'Fatal'                 => '2.29',
            'File::Path'            => '2.11',
            'Getopt::Long'          => '2.47',
            'I18N::Langinfo'        => '0.13',
            'IPC::Open3'            => '1.19',
            'Module::CoreList'      => '5.20150720',
            'Module::CoreList::TieHashDelta'=> '5.20150720',
            'Module::CoreList::Utils'=> '5.20150720',
            'Net::Cmd'              => '3.07',
            'Net::Config'           => '3.07',
            'Net::Domain'           => '3.07',
            'Net::FTP'              => '3.07',
            'Net::FTP::A'           => '3.07',
            'Net::FTP::E'           => '3.07',
            'Net::FTP::I'           => '3.07',
            'Net::FTP::L'           => '3.07',
            'Net::FTP::dataconn'    => '3.07',
            'Net::NNTP'             => '3.07',
            'Net::Netrc'            => '3.07',
            'Net::POP3'             => '3.07',
            'Net::SMTP'             => '3.07',
            'Net::Time'             => '3.07',
            'Opcode'                => '1.33',
            'POSIX'                 => '1.55',
            'PerlIO::scalar'        => '0.23',
            'Socket'                => '2.020',
            'Storable'              => '2.54',
            'Unicode::Collate'      => '1.14',
            'Unicode::Collate::CJK::Big5'=> '1.14',
            'Unicode::Collate::CJK::GB2312'=> '1.14',
            'Unicode::Collate::CJK::JISX0208'=> '1.14',
            'Unicode::Collate::CJK::Korean'=> '1.14',
            'Unicode::Collate::CJK::Pinyin'=> '1.14',
            'Unicode::Collate::CJK::Stroke'=> '1.14',
            'Unicode::Collate::CJK::Zhuyin'=> '1.14',
            'Unicode::Collate::Locale'=> '1.14',
            'Unicode::Normalize'    => '1.19',
            'XS::APItest'           => '0.74',
            'XS::Typemap'           => '0.14',
            'autodie'               => '2.29',
            'autodie::Scope::Guard' => '2.29',
            'autodie::Scope::GuardStack'=> '2.29',
            'autodie::Util'         => '2.29',
            'autodie::exception'    => '2.29',
            'autodie::exception::system'=> '2.29',
            'autodie::hints'        => '2.29',
            'autodie::skip'         => '2.29',
            'encoding'              => '2.16',
            'feature'               => '1.42',
            'warnings'              => '1.33',
        },
        removed => {
            'autodie::ScopeUtil'    => 1,
        }
    },
    5.023002 => {
        delta_from => 5.023001,
        changed => {
            'Attribute::Handlers'   => '0.99',
            'B::Op_private'         => '5.023002',
            'CPAN::Meta::YAML'      => '0.017',
            'Config'                => '5.023002',
            'Cwd'                   => '3.57',
            'Encode'                => '2.76',
            'ExtUtils::ParseXS'     => '3.29',
            'ExtUtils::ParseXS::Constants'=> '3.29',
            'ExtUtils::ParseXS::CountLines'=> '3.29',
            'ExtUtils::ParseXS::Eval'=> '3.29',
            'ExtUtils::ParseXS::Utilities'=> '3.29',
            'ExtUtils::Typemaps'    => '3.29',
            'File::Find'            => '1.30',
            'File::Spec'            => '3.57',
            'File::Spec::Cygwin'    => '3.57',
            'File::Spec::Epoc'      => '3.57',
            'File::Spec::Functions' => '3.57',
            'File::Spec::Mac'       => '3.57',
            'File::Spec::OS2'       => '3.57',
            'File::Spec::Unix'      => '3.57',
            'File::Spec::VMS'       => '3.57',
            'File::Spec::Win32'     => '3.57',
            'Filter::Util::Call'    => '1.55',
            'Hash::Util'            => '0.19',
            'Module::CoreList'      => '5.20150820',
            'Module::CoreList::TieHashDelta'=> '5.20150820',
            'Module::CoreList::Utils'=> '5.20150820',
            'POSIX'                 => '1.56',
            'Term::Cap'             => '1.17',
            'Unicode::UCD'          => '0.62',
            'perlfaq'               => '5.021010',
        },
        removed => {
        }
    },
    5.020003 => {
        delta_from => 5.020002,
        changed => {
            'Config'                => '5.020003',
            'Errno'                 => '1.20_06',
            'Module::CoreList'      => '5.20150912',
            'Module::CoreList::TieHashDelta'=> '5.20150912',
            'Module::CoreList::Utils'=> '5.20150912',
        },
        removed => {
        }
    },
    5.023003 => {
        delta_from => 5.023002,
        changed => {
            'Amiga::ARexx'          => '0.02',
            'Amiga::Exec'           => '0.01',
            'B'                     => '1.59',
            'B::Op_private'         => '5.023003',
            'Carp'                  => '1.37',
            'Carp::Heavy'           => '1.37',
            'Compress::Raw::Zlib'   => '2.068_01',
            'Config'                => '5.023003',
            'Cwd'                   => '3.58',
            'DynaLoader'            => '1.34',
            'Encode'                => '2.77',
            'Encode::Unicode'       => '2.14',
            'English'               => '1.10',
            'Errno'                 => '1.24',
            'ExtUtils::Command'     => '7.10',
            'ExtUtils::Command::MM' => '7.10',
            'ExtUtils::Liblist'     => '7.10',
            'ExtUtils::Liblist::Kid'=> '7.10',
            'ExtUtils::MM'          => '7.10',
            'ExtUtils::MM_AIX'      => '7.10',
            'ExtUtils::MM_Any'      => '7.10',
            'ExtUtils::MM_BeOS'     => '7.10',
            'ExtUtils::MM_Cygwin'   => '7.10',
            'ExtUtils::MM_DOS'      => '7.10',
            'ExtUtils::MM_Darwin'   => '7.10',
            'ExtUtils::MM_MacOS'    => '7.10',
            'ExtUtils::MM_NW5'      => '7.10',
            'ExtUtils::MM_OS2'      => '7.10',
            'ExtUtils::MM_QNX'      => '7.10',
            'ExtUtils::MM_UWIN'     => '7.10',
            'ExtUtils::MM_Unix'     => '7.10',
            'ExtUtils::MM_VMS'      => '7.10',
            'ExtUtils::MM_VOS'      => '7.10',
            'ExtUtils::MM_Win32'    => '7.10',
            'ExtUtils::MM_Win95'    => '7.10',
            'ExtUtils::MY'          => '7.10',
            'ExtUtils::MakeMaker'   => '7.10',
            'ExtUtils::MakeMaker::Config'=> '7.10',
            'ExtUtils::MakeMaker::Locale'=> '7.10',
            'ExtUtils::MakeMaker::version'=> '7.10',
            'ExtUtils::MakeMaker::version::regex'=> '7.10',
            'ExtUtils::MakeMaker::version::vpp'=> '7.10',
            'ExtUtils::Mkbootstrap' => '7.10',
            'ExtUtils::Mksymlists'  => '7.10',
            'ExtUtils::ParseXS'     => '3.30',
            'ExtUtils::ParseXS::Constants'=> '3.30',
            'ExtUtils::ParseXS::CountLines'=> '3.30',
            'ExtUtils::ParseXS::Eval'=> '3.30',
            'ExtUtils::ParseXS::Utilities'=> '3.30',
            'ExtUtils::Typemaps'    => '3.30',
            'ExtUtils::Typemaps::Cmd'=> '3.30',
            'ExtUtils::Typemaps::InputMap'=> '3.30',
            'ExtUtils::Typemaps::OutputMap'=> '3.30',
            'ExtUtils::Typemaps::Type'=> '3.30',
            'ExtUtils::testlib'     => '7.10',
            'File::Find'            => '1.31',
            'File::Glob'            => '1.25',
            'File::Spec'            => '3.58',
            'File::Spec::AmigaOS'   => '3.58',
            'File::Spec::Cygwin'    => '3.58',
            'File::Spec::Epoc'      => '3.58',
            'File::Spec::Functions' => '3.58',
            'File::Spec::Mac'       => '3.58',
            'File::Spec::OS2'       => '3.58',
            'File::Spec::Unix'      => '3.58',
            'File::Spec::VMS'       => '3.58',
            'File::Spec::Win32'     => '3.58',
            'Hash::Util::FieldHash' => '1.17',
            'Locale::Codes'         => '3.36',
            'Locale::Codes::Constants'=> '3.36',
            'Locale::Codes::Country'=> '3.36',
            'Locale::Codes::Country_Codes'=> '3.36',
            'Locale::Codes::Country_Retired'=> '3.36',
            'Locale::Codes::Currency'=> '3.36',
            'Locale::Codes::Currency_Codes'=> '3.36',
            'Locale::Codes::Currency_Retired'=> '3.36',
            'Locale::Codes::LangExt'=> '3.36',
            'Locale::Codes::LangExt_Codes'=> '3.36',
            'Locale::Codes::LangExt_Retired'=> '3.36',
            'Locale::Codes::LangFam'=> '3.36',
            'Locale::Codes::LangFam_Codes'=> '3.36',
            'Locale::Codes::LangFam_Retired'=> '3.36',
            'Locale::Codes::LangVar'=> '3.36',
            'Locale::Codes::LangVar_Codes'=> '3.36',
            'Locale::Codes::LangVar_Retired'=> '3.36',
            'Locale::Codes::Language'=> '3.36',
            'Locale::Codes::Language_Codes'=> '3.36',
            'Locale::Codes::Language_Retired'=> '3.36',
            'Locale::Codes::Script' => '3.36',
            'Locale::Codes::Script_Codes'=> '3.36',
            'Locale::Codes::Script_Retired'=> '3.36',
            'Locale::Country'       => '3.36',
            'Locale::Currency'      => '3.36',
            'Locale::Language'      => '3.36',
            'Locale::Script'        => '3.36',
            'Math::BigFloat::Trace' => '0.40',
            'Math::BigInt::Trace'   => '0.40',
            'Module::CoreList'      => '5.20150920',
            'Module::CoreList::TieHashDelta'=> '5.20150920',
            'Module::CoreList::Utils'=> '5.20150920',
            'OS2::DLL'              => '1.06',
            'OS2::ExtAttr'          => '0.04',
            'OS2::Process'          => '1.11',
            'OS2::REXX'             => '1.05',
            'POSIX'                 => '1.57',
            'Pod::Perldoc'          => '3.25_01',
            'Socket'                => '2.020_01',
            'Test'                  => '1.27',
            'Thread::Queue'         => '3.06',
            'Time::HiRes'           => '1.9727_02',
            'Unicode::UCD'          => '0.63',
            'Win32'                 => '0.52',
            'XS::APItest'           => '0.75',
            'bigint'                => '0.40',
            'bignum'                => '0.40',
            'bigrat'                => '0.40',
            'encoding'              => '2.17',
            'experimental'          => '0.014',
            'if'                    => '0.0605',
            'locale'                => '1.07',
            'mro'                   => '1.18',
            'threads'               => '2.03',
        },
        removed => {
        }
    },
    5.023004 => {
        delta_from => 5.023003,
        changed => {
            'B'                     => '1.60',
            'B::Op_private'         => '5.023004',
            'Compress::Raw::Bzip2'  => '2.069',
            'Compress::Raw::Zlib'   => '2.069',
            'Compress::Zlib'        => '2.069',
            'Config'                => '5.023004',
            'Devel::PPPort'         => '3.32',
            'DynaLoader'            => '1.35',
            'Encode'                => '2.78',
            'ExtUtils::CBuilder'    => '0.280224',
            'ExtUtils::CBuilder::Base'=> '0.280224',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280224',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280224',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280224',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280224',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280224',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280224',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280224',
            'ExtUtils::CBuilder::Platform::android'=> '0.280224',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280224',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280224',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280224',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280224',
            'File::Path'            => '2.12',
            'IO'                    => '1.36',
            'IO::Compress::Adapter::Bzip2'=> '2.069',
            'IO::Compress::Adapter::Deflate'=> '2.069',
            'IO::Compress::Adapter::Identity'=> '2.069',
            'IO::Compress::Base'    => '2.069',
            'IO::Compress::Base::Common'=> '2.069',
            'IO::Compress::Bzip2'   => '2.069',
            'IO::Compress::Deflate' => '2.069',
            'IO::Compress::Gzip'    => '2.069',
            'IO::Compress::Gzip::Constants'=> '2.069',
            'IO::Compress::RawDeflate'=> '2.069',
            'IO::Compress::Zip'     => '2.069',
            'IO::Compress::Zip::Constants'=> '2.069',
            'IO::Compress::Zlib::Constants'=> '2.069',
            'IO::Compress::Zlib::Extra'=> '2.069',
            'IO::Poll'              => '0.10',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.069',
            'IO::Uncompress::Adapter::Identity'=> '2.069',
            'IO::Uncompress::Adapter::Inflate'=> '2.069',
            'IO::Uncompress::AnyInflate'=> '2.069',
            'IO::Uncompress::AnyUncompress'=> '2.069',
            'IO::Uncompress::Base'  => '2.069',
            'IO::Uncompress::Bunzip2'=> '2.069',
            'IO::Uncompress::Gunzip'=> '2.069',
            'IO::Uncompress::Inflate'=> '2.069',
            'IO::Uncompress::RawInflate'=> '2.069',
            'IO::Uncompress::Unzip' => '2.069',
            'Math::BigFloat'        => '1.999704',
            'Math::BigFloat::Trace' => '0.41',
            'Math::BigInt'          => '1.999704',
            'Math::BigInt::Calc'    => '1.999704',
            'Math::BigInt::CalcEmu' => '1.999704',
            'Math::BigInt::FastCalc'=> '0.34',
            'Math::BigInt::Trace'   => '0.41',
            'Module::CoreList'      => '5.20151020',
            'Module::CoreList::TieHashDelta'=> '5.20151020',
            'Module::CoreList::Utils'=> '5.20151020',
            'Module::Metadata'      => '1.000029',
            'POSIX'                 => '1.58',
            'Perl::OSType'          => '1.009',
            'PerlIO::encoding'      => '0.22',
            'Socket'                => '2.020_02',
            'Unicode::Normalize'    => '1.21',
            'XS::APItest'           => '0.76',
            'bigint'                => '0.41',
            'bignum'                => '0.41',
            'bigrat'                => '0.41',
            'experimental'          => '0.016',
            'if'                    => '0.0606',
            'warnings'              => '1.35',
        },
        removed => {
        }
    },
    5.023005 => {
        delta_from => 5.023004,
        changed => {
            'B'                     => '1.61',
            'B::Op_private'         => '5.023005',
            'Carp'                  => '1.38',
            'Carp::Heavy'           => '1.38',
            'Config'                => '5.023005',
            'Config::Perl::V'       => '0.25',
            'Cwd'                   => '3.59',
            'Devel::Peek'           => '1.23',
            'Dumpvalue'             => '1.18',
            'DynaLoader'            => '1.36',
            'File::Find'            => '1.32',
            'File::Spec'            => '3.59',
            'File::Spec::AmigaOS'   => '3.59',
            'File::Spec::Cygwin'    => '3.59',
            'File::Spec::Epoc'      => '3.59',
            'File::Spec::Functions' => '3.59',
            'File::Spec::Mac'       => '3.59',
            'File::Spec::OS2'       => '3.59',
            'File::Spec::Unix'      => '3.59',
            'File::Spec::VMS'       => '3.59',
            'File::Spec::Win32'     => '3.59',
            'Getopt::Long'          => '2.48',
            'Hash::Util::FieldHash' => '1.18',
            'IPC::Open3'            => '1.20',
            'Math::BigFloat'        => '1.999710',
            'Math::BigInt'          => '1.999710',
            'Math::BigInt::Calc'    => '1.999710',
            'Math::BigInt::CalcEmu' => '1.999710',
            'Math::BigInt::FastCalc'=> '0.37',
            'Module::CoreList'      => '5.20151120',
            'Module::CoreList::TieHashDelta'=> '5.20151120',
            'Module::CoreList::Utils'=> '5.20151120',
            'Module::Metadata'      => '1.000030',
            'POSIX'                 => '1.59',
            'PerlIO::encoding'      => '0.23',
            'PerlIO::mmap'          => '0.015',
            'PerlIO::scalar'        => '0.24',
            'PerlIO::via'           => '0.16',
            'Pod::Simple'           => '3.32',
            'Pod::Simple::BlackBox' => '3.32',
            'Pod::Simple::Checker'  => '3.32',
            'Pod::Simple::Debug'    => '3.32',
            'Pod::Simple::DumpAsText'=> '3.32',
            'Pod::Simple::DumpAsXML'=> '3.32',
            'Pod::Simple::HTML'     => '3.32',
            'Pod::Simple::HTMLBatch'=> '3.32',
            'Pod::Simple::LinkSection'=> '3.32',
            'Pod::Simple::Methody'  => '3.32',
            'Pod::Simple::Progress' => '3.32',
            'Pod::Simple::PullParser'=> '3.32',
            'Pod::Simple::PullParserEndToken'=> '3.32',
            'Pod::Simple::PullParserStartToken'=> '3.32',
            'Pod::Simple::PullParserTextToken'=> '3.32',
            'Pod::Simple::PullParserToken'=> '3.32',
            'Pod::Simple::RTF'      => '3.32',
            'Pod::Simple::Search'   => '3.32',
            'Pod::Simple::SimpleTree'=> '3.32',
            'Pod::Simple::Text'     => '3.32',
            'Pod::Simple::TextContent'=> '3.32',
            'Pod::Simple::TiedOutFH'=> '3.32',
            'Pod::Simple::Transcode'=> '3.32',
            'Pod::Simple::TranscodeDumb'=> '3.32',
            'Pod::Simple::TranscodeSmart'=> '3.32',
            'Pod::Simple::XHTML'    => '3.32',
            'Pod::Simple::XMLOutStream'=> '3.32',
            'Thread::Queue'         => '3.07',
            'Tie::Scalar'           => '1.04',
            'Time::HiRes'           => '1.9728',
            'Time::Piece'           => '1.31',
            'Time::Seconds'         => '1.31',
            'Unicode::Normalize'    => '1.23',
            'XSLoader'              => '0.21',
            'arybase'               => '0.11',
            'base'                  => '2.22_01',
            'fields'                => '2.22_01',
            'threads'               => '2.04',
            'threads::shared'       => '1.49',
        },
        removed => {
            'ExtUtils::MakeMaker::version::vpp'=> 1,
            'version::vpp'          => 1,
        }
    },
    5.022001 => {
        delta_from => 5.022,
        changed => {
            'B::Op_private'         => '5.022001',
            'Config'                => '5.022001',
            'Module::CoreList'      => '5.20151213',
            'Module::CoreList::TieHashDelta'=> '5.20151213',
            'Module::CoreList::Utils'=> '5.20151213',
            'POSIX'                 => '1.53_01',
            'PerlIO::scalar'        => '0.23',
            'Storable'              => '2.53_01',
            'Win32'                 => '0.52',
            'warnings'              => '1.34',
        },
        removed => {
        }
    },
    5.023006 => {
        delta_from => 5.023005,
        changed => {
            'B::Deparse'            => '1.36',
            'B::Op_private'         => '5.023006',
            'Benchmark'             => '1.21',
            'CPAN::Meta::Requirements'=> '2.140',
            'CPAN::Meta::YAML'      => '0.018',
            'Config'                => '5.023006',
            'Cwd'                   => '3.60',
            'Data::Dumper'          => '2.159',
            'DynaLoader'            => '1.37',
            'File::Spec'            => '3.60',
            'File::Spec::AmigaOS'   => '3.60',
            'File::Spec::Cygwin'    => '3.60',
            'File::Spec::Epoc'      => '3.60',
            'File::Spec::Functions' => '3.60',
            'File::Spec::Mac'       => '3.60',
            'File::Spec::OS2'       => '3.60',
            'File::Spec::Unix'      => '3.60',
            'File::Spec::VMS'       => '3.60',
            'File::Spec::Win32'     => '3.60',
            'Hash::Util::FieldHash' => '1.19',
            'Locale::Codes'         => '3.37',
            'Locale::Codes::Constants'=> '3.37',
            'Locale::Codes::Country'=> '3.37',
            'Locale::Codes::Country_Codes'=> '3.37',
            'Locale::Codes::Country_Retired'=> '3.37',
            'Locale::Codes::Currency'=> '3.37',
            'Locale::Codes::Currency_Codes'=> '3.37',
            'Locale::Codes::Currency_Retired'=> '3.37',
            'Locale::Codes::LangExt'=> '3.37',
            'Locale::Codes::LangExt_Codes'=> '3.37',
            'Locale::Codes::LangExt_Retired'=> '3.37',
            'Locale::Codes::LangFam'=> '3.37',
            'Locale::Codes::LangFam_Codes'=> '3.37',
            'Locale::Codes::LangFam_Retired'=> '3.37',
            'Locale::Codes::LangVar'=> '3.37',
            'Locale::Codes::LangVar_Codes'=> '3.37',
            'Locale::Codes::LangVar_Retired'=> '3.37',
            'Locale::Codes::Language'=> '3.37',
            'Locale::Codes::Language_Codes'=> '3.37',
            'Locale::Codes::Language_Retired'=> '3.37',
            'Locale::Codes::Script' => '3.37',
            'Locale::Codes::Script_Codes'=> '3.37',
            'Locale::Codes::Script_Retired'=> '3.37',
            'Locale::Country'       => '3.37',
            'Locale::Currency'      => '3.37',
            'Locale::Language'      => '3.37',
            'Locale::Script'        => '3.37',
            'Math::BigInt::FastCalc'=> '0.38',
            'Module::CoreList'      => '5.20151220',
            'Module::CoreList::TieHashDelta'=> '5.20151220',
            'Module::CoreList::Utils'=> '5.20151220',
            'Module::Metadata'      => '1.000031',
            'Opcode'                => '1.34',
            'PerlIO::mmap'          => '0.016',
            'Pod::Perldoc'          => '3.25_02',
            'SDBM_File'             => '1.14',
            'Term::ANSIColor'       => '4.04',
            'Test'                  => '1.28',
            'Unicode::Normalize'    => '1.24',
            'XS::APItest'           => '0.77',
            'base'                  => '2.23',
            'encoding::warnings'    => '0.12',
            'fields'                => '2.23',
            'locale'                => '1.08',
            'strict'                => '1.10',
            'threads'               => '2.05',
            'threads::shared'       => '1.50',
            'utf8'                  => '1.18',
        },
        removed => {
        }
    },
    5.023007 => {
        delta_from => 5.023006,
        changed => {
            'App::Prove'            => '3.36',
            'App::Prove::State'     => '3.36',
            'App::Prove::State::Result'=> '3.36',
            'App::Prove::State::Result::Test'=> '3.36',
            'B'                     => '1.62',
            'B::Deparse'            => '1.37',
            'B::Op_private'         => '5.023007',
            'Benchmark'             => '1.22',
            'Config'                => '5.023007',
            'Cwd'                   => '3.62',
            'Data::Dumper'          => '2.160',
            'ExtUtils::ParseXS'     => '3.31',
            'ExtUtils::ParseXS::Constants'=> '3.31',
            'ExtUtils::ParseXS::CountLines'=> '3.31',
            'ExtUtils::ParseXS::Eval'=> '3.31',
            'ExtUtils::ParseXS::Utilities'=> '3.31',
            'ExtUtils::Typemaps'    => '3.31',
            'ExtUtils::Typemaps::Cmd'=> '3.31',
            'ExtUtils::Typemaps::InputMap'=> '3.31',
            'ExtUtils::Typemaps::OutputMap'=> '3.31',
            'ExtUtils::Typemaps::Type'=> '3.31',
            'File::Find'            => '1.33',
            'File::Spec'            => '3.62',
            'File::Spec::AmigaOS'   => '3.62',
            'File::Spec::Cygwin'    => '3.62',
            'File::Spec::Epoc'      => '3.62',
            'File::Spec::Functions' => '3.62',
            'File::Spec::Mac'       => '3.62',
            'File::Spec::OS2'       => '3.62',
            'File::Spec::Unix'      => '3.62',
            'File::Spec::VMS'       => '3.62',
            'File::Spec::Win32'     => '3.62',
            'Math::BigFloat'        => '1.999715',
            'Math::BigFloat::Trace' => '0.42',
            'Math::BigInt'          => '1.999715',
            'Math::BigInt::Calc'    => '1.999715',
            'Math::BigInt::CalcEmu' => '1.999715',
            'Math::BigInt::FastCalc'=> '0.40',
            'Math::BigInt::Trace'   => '0.42',
            'Math::BigRat'          => '0.260802',
            'Module::CoreList'      => '5.20160120',
            'Module::CoreList::TieHashDelta'=> '5.20160120',
            'Module::CoreList::Utils'=> '5.20160120',
            'Net::Cmd'              => '3.08',
            'Net::Config'           => '3.08',
            'Net::Domain'           => '3.08',
            'Net::FTP'              => '3.08',
            'Net::FTP::A'           => '3.08',
            'Net::FTP::E'           => '3.08',
            'Net::FTP::I'           => '3.08',
            'Net::FTP::L'           => '3.08',
            'Net::FTP::dataconn'    => '3.08',
            'Net::NNTP'             => '3.08',
            'Net::Netrc'            => '3.08',
            'Net::POP3'             => '3.08',
            'Net::SMTP'             => '3.08',
            'Net::Time'             => '3.08',
            'Pod::Man'              => '4.04',
            'Pod::ParseLink'        => '4.04',
            'Pod::Text'             => '4.04',
            'Pod::Text::Color'      => '4.04',
            'Pod::Text::Overstrike' => '4.04',
            'Pod::Text::Termcap'    => '4.04',
            'Pod::Usage'            => '1.68',
            'TAP::Base'             => '3.36',
            'TAP::Formatter::Base'  => '3.36',
            'TAP::Formatter::Color' => '3.36',
            'TAP::Formatter::Console'=> '3.36',
            'TAP::Formatter::Console::ParallelSession'=> '3.36',
            'TAP::Formatter::Console::Session'=> '3.36',
            'TAP::Formatter::File'  => '3.36',
            'TAP::Formatter::File::Session'=> '3.36',
            'TAP::Formatter::Session'=> '3.36',
            'TAP::Harness'          => '3.36',
            'TAP::Harness::Env'     => '3.36',
            'TAP::Object'           => '3.36',
            'TAP::Parser'           => '3.36',
            'TAP::Parser::Aggregator'=> '3.36',
            'TAP::Parser::Grammar'  => '3.36',
            'TAP::Parser::Iterator' => '3.36',
            'TAP::Parser::Iterator::Array'=> '3.36',
            'TAP::Parser::Iterator::Process'=> '3.36',
            'TAP::Parser::Iterator::Stream'=> '3.36',
            'TAP::Parser::IteratorFactory'=> '3.36',
            'TAP::Parser::Multiplexer'=> '3.36',
            'TAP::Parser::Result'   => '3.36',
            'TAP::Parser::Result::Bailout'=> '3.36',
            'TAP::Parser::Result::Comment'=> '3.36',
            'TAP::Parser::Result::Plan'=> '3.36',
            'TAP::Parser::Result::Pragma'=> '3.36',
            'TAP::Parser::Result::Test'=> '3.36',
            'TAP::Parser::Result::Unknown'=> '3.36',
            'TAP::Parser::Result::Version'=> '3.36',
            'TAP::Parser::Result::YAML'=> '3.36',
            'TAP::Parser::ResultFactory'=> '3.36',
            'TAP::Parser::Scheduler'=> '3.36',
            'TAP::Parser::Scheduler::Job'=> '3.36',
            'TAP::Parser::Scheduler::Spinner'=> '3.36',
            'TAP::Parser::Source'   => '3.36',
            'TAP::Parser::SourceHandler'=> '3.36',
            'TAP::Parser::SourceHandler::Executable'=> '3.36',
            'TAP::Parser::SourceHandler::File'=> '3.36',
            'TAP::Parser::SourceHandler::Handle'=> '3.36',
            'TAP::Parser::SourceHandler::Perl'=> '3.36',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.36',
            'TAP::Parser::YAMLish::Reader'=> '3.36',
            'TAP::Parser::YAMLish::Writer'=> '3.36',
            'Test::Harness'         => '3.36',
            'Unicode::Normalize'    => '1.25',
            'Unicode::UCD'          => '0.64',
            'XS::APItest'           => '0.78',
            'bigint'                => '0.42',
            'bignum'                => '0.42',
            'bigrat'                => '0.42',
            'utf8'                  => '1.19',
        },
        removed => {
        }
    },
    5.023008 => {
        delta_from => 5.023007,
        changed => {
            'B::Op_private'         => '5.023008',
            'Config'                => '5.023008',
            'Cwd'                   => '3.63',
            'DynaLoader'            => '1.38',
            'Encode'                => '2.80',
            'Encode::Alias'         => '2.20',
            'Encode::MIME::Header'  => '2.19',
            'Encode::Unicode'       => '2.15',
            'ExtUtils::CBuilder'    => '0.280225',
            'ExtUtils::CBuilder::Base'=> '0.280225',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280225',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280225',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280225',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280225',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280225',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280225',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280225',
            'ExtUtils::CBuilder::Platform::android'=> '0.280225',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280225',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280225',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280225',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280225',
            'ExtUtils::Command::MM' => '7.10_01',
            'ExtUtils::Liblist'     => '7.10_01',
            'ExtUtils::Liblist::Kid'=> '7.10_01',
            'ExtUtils::MM'          => '7.10_01',
            'ExtUtils::MM_AIX'      => '7.10_01',
            'ExtUtils::MM_Any'      => '7.10_01',
            'ExtUtils::MM_BeOS'     => '7.10_01',
            'ExtUtils::MM_Cygwin'   => '7.10_01',
            'ExtUtils::MM_DOS'      => '7.10_01',
            'ExtUtils::MM_Darwin'   => '7.10_01',
            'ExtUtils::MM_MacOS'    => '7.10_01',
            'ExtUtils::MM_NW5'      => '7.10_01',
            'ExtUtils::MM_OS2'      => '7.10_01',
            'ExtUtils::MM_QNX'      => '7.10_01',
            'ExtUtils::MM_UWIN'     => '7.10_01',
            'ExtUtils::MM_Unix'     => '7.10_01',
            'ExtUtils::MM_VMS'      => '7.10_01',
            'ExtUtils::MM_VOS'      => '7.10_01',
            'ExtUtils::MM_Win32'    => '7.10_01',
            'ExtUtils::MM_Win95'    => '7.10_01',
            'ExtUtils::MY'          => '7.10_01',
            'ExtUtils::MakeMaker'   => '7.10_01',
            'ExtUtils::MakeMaker::Config'=> '7.10_01',
            'ExtUtils::MakeMaker::version'=> '7.10_01',
            'ExtUtils::MakeMaker::version::regex'=> '7.10_01',
            'ExtUtils::Mkbootstrap' => '7.10_01',
            'ExtUtils::Mksymlists'  => '7.10_01',
            'ExtUtils::testlib'     => '7.10_01',
            'File::Spec'            => '3.63',
            'File::Spec::AmigaOS'   => '3.63',
            'File::Spec::Cygwin'    => '3.63',
            'File::Spec::Epoc'      => '3.63',
            'File::Spec::Functions' => '3.63',
            'File::Spec::Mac'       => '3.63',
            'File::Spec::OS2'       => '3.63',
            'File::Spec::Unix'      => '3.63',
            'File::Spec::VMS'       => '3.63',
            'File::Spec::Win32'     => '3.63',
            'IPC::Msg'              => '2.05',
            'IPC::Semaphore'        => '2.05',
            'IPC::SharedMem'        => '2.05',
            'IPC::SysV'             => '2.05',
            'Module::CoreList'      => '5.20160121',
            'Module::CoreList::TieHashDelta'=> '5.20160121',
            'Module::CoreList::Utils'=> '5.20160121',
            'ODBM_File'             => '1.13',
            'POSIX'                 => '1.63',
            'PerlIO::encoding'      => '0.24',
            'Pod::Man'              => '4.06',
            'Pod::ParseLink'        => '4.06',
            'Pod::Text'             => '4.06',
            'Pod::Text::Color'      => '4.06',
            'Pod::Text::Overstrike' => '4.06',
            'Pod::Text::Termcap'    => '4.06',
            'Storable'              => '2.55',
            'Time::HiRes'           => '1.9730',
            'XS::APItest'           => '0.79',
        },
        removed => {
        }
    },
    5.023009 => {
        delta_from => 5.023008,
        changed => {
            'Amiga::ARexx'          => '0.04',
            'Amiga::Exec'           => '0.02',
            'B::Op_private'         => '5.023009',
            'Carp'                  => '1.40',
            'Carp::Heavy'           => '1.40',
            'Config'                => '5.023009',
            'Errno'                 => '1.25',
            'ExtUtils::Embed'       => '1.33',
            'File::Find'            => '1.34',
            'File::Glob'            => '1.26',
            'File::Spec::AmigaOS'   => ';.64',
            'IPC::Msg'              => '2.06_01',
            'IPC::Semaphore'        => '2.06_01',
            'IPC::SharedMem'        => '2.06_01',
            'IPC::SysV'             => '2.06_01',
            'List::Util'            => '1.42_02',
            'List::Util::XS'        => '1.42_02',
            'Module::CoreList'      => '5.20160320',
            'Module::CoreList::TieHashDelta'=> '5.20160320',
            'Module::CoreList::Utils'=> '5.20160320',
            'POSIX'                 => '1.64',
            'Pod::Functions'        => '1.10',
            'Pod::Functions::Functions'=> '1.10',
            'Scalar::Util'          => '1.42_02',
            'SelfLoader'            => '1.23',
            'Socket'                => '2.020_03',
            'Storable'              => '2.56',
            'Sub::Util'             => '1.42_02',
            'Thread::Queue'         => '3.08',
            'Tie::File'             => '1.02',
            'Time::HiRes'           => '1.9732',
            'Win32API::File'        => '0.1203',
            'Win32API::File::inc::ExtUtils::Myconst2perl'=> '1',
            'XS::APItest'           => '0.80',
            'autouse'               => '1.11',
            'bytes'                 => '1.05',
            'strict'                => '1.11',
            'threads'               => '2.06',
            'version'               => '0.9916',
            'version::regex'        => '0.9916',
            'warnings'              => '1.36',
        },
        removed => {
            'Win32API::File::ExtUtils::Myconst2perl'=> 1,
        }
    },
    5.022002 => {
        delta_from => 5.022001,
        changed => {
            'B::Op_private'         => '5.022002',
            'Config'                => '5.022002',
            'Cwd'                   => '3.56_01',
            'File::Spec'            => '3.56_01',
            'File::Spec::Cygwin'    => '3.56_01',
            'File::Spec::Epoc'      => '3.56_01',
            'File::Spec::Functions' => '3.56_01',
            'File::Spec::Mac'       => '3.56_01',
            'File::Spec::OS2'       => '3.56_01',
            'File::Spec::Unix'      => '3.56_01',
            'File::Spec::VMS'       => '3.56_01',
            'File::Spec::Win32'     => '3.56_01',
            'Module::CoreList'      => '5.20160429',
            'Module::CoreList::TieHashDelta'=> '5.20160429',
            'Module::CoreList::Utils'=> '5.20160429',
            'XS::APItest'           => '0.72_01',
        },
        removed => {
        }
    },
    5.024000 => {
        delta_from => 5.023009,
        changed => {
            'B::Op_private'         => '5.024000',
            'Config'                => '5.024',
            'File::Copy'            => '2.31',
            'File::Path'            => '2.12_01',
            'File::Spec::AmigaOS'   => '3.64',
            'IO::Handle'            => '1.36',
            'Module::CoreList'      => '5.20160506',
            'Module::CoreList::TieHashDelta'=> '5.20160506',
            'Module::CoreList::Utils'=> '5.20160506',
            'ODBM_File'             => '1.14',
            'POSIX'                 => '1.65',
            'Pod::Man'              => '4.07',
            'Pod::ParseLink'        => '4.07',
            'Pod::Text'             => '4.07',
            'Pod::Text::Color'      => '4.07',
            'Pod::Text::Overstrike' => '4.07',
            'Pod::Text::Termcap'    => '4.07',
            'Thread::Queue'         => '3.09',
            'Time::HiRes'           => '1.9733',
            'threads'               => '2.07',
            'threads::shared'       => '1.51',
            'locale'                => '1.09',
        },
        removed => {
        }
    },
    5.025000 => {
        delta_from => 5.024,
        changed => {
            'B::Op_private'         => '5.025000',
            'Config'                => '5.025',
            'Module::CoreList'      => '5.20160507',
            'Module::CoreList::TieHashDelta'=> '5.20160507',
            'Module::CoreList::Utils'=> '5.20160507',
            'feature'               => '1.43',
        },
        removed => {
        }
    },
    5.025001 => {
        delta_from => 5.025,
        changed => {
            'Archive::Tar'          => '2.08',
            'Archive::Tar::Constant'=> '2.08',
            'Archive::Tar::File'    => '2.08',
            'B::Op_private'         => '5.025001',
            'Carp'                  => '1.41',
            'Carp::Heavy'           => '1.41',
            'Config'                => '5.025001',
            'Config::Perl::V'       => '0.26',
            'DB_File'               => '1.838',
            'Digest::MD5'           => '2.55',
            'IPC::Cmd'              => '0.94',
            'IPC::Msg'              => '2.07',
            'IPC::Semaphore'        => '2.07',
            'IPC::SharedMem'        => '2.07',
            'IPC::SysV'             => '2.07',
            'List::Util'            => '1.45_01',
            'List::Util::XS'        => '1.45_01',
            'Locale::Codes'         => '3.38',
            'Locale::Codes::Constants'=> '3.38',
            'Locale::Codes::Country'=> '3.38',
            'Locale::Codes::Country_Codes'=> '3.38',
            'Locale::Codes::Country_Retired'=> '3.38',
            'Locale::Codes::Currency'=> '3.38',
            'Locale::Codes::Currency_Codes'=> '3.38',
            'Locale::Codes::Currency_Retired'=> '3.38',
            'Locale::Codes::LangExt'=> '3.38',
            'Locale::Codes::LangExt_Codes'=> '3.38',
            'Locale::Codes::LangExt_Retired'=> '3.38',
            'Locale::Codes::LangFam'=> '3.38',
            'Locale::Codes::LangFam_Codes'=> '3.38',
            'Locale::Codes::LangFam_Retired'=> '3.38',
            'Locale::Codes::LangVar'=> '3.38',
            'Locale::Codes::LangVar_Codes'=> '3.38',
            'Locale::Codes::LangVar_Retired'=> '3.38',
            'Locale::Codes::Language'=> '3.38',
            'Locale::Codes::Language_Codes'=> '3.38',
            'Locale::Codes::Language_Retired'=> '3.38',
            'Locale::Codes::Script' => '3.38',
            'Locale::Codes::Script_Codes'=> '3.38',
            'Locale::Codes::Script_Retired'=> '3.38',
            'Locale::Country'       => '3.38',
            'Locale::Currency'      => '3.38',
            'Locale::Language'      => '3.38',
            'Locale::Maketext'      => '1.27',
            'Locale::Script'        => '3.38',
            'Module::CoreList'      => '5.20160520',
            'Module::CoreList::TieHashDelta'=> '5.20160520',
            'Module::CoreList::Utils'=> '5.20160520',
            'Module::Metadata'      => '1.000032',
            'POSIX'                 => '1.69',
            'Scalar::Util'          => '1.45_01',
            'Sub::Util'             => '1.45_01',
            'Sys::Syslog'           => '0.34',
            'Term::ANSIColor'       => '4.05',
            'Test2'                 => '1.302015',
            'Test2::API'            => '1.302015',
            'Test2::API::Breakage'  => '1.302015',
            'Test2::API::Context'   => '1.302015',
            'Test2::API::Instance'  => '1.302015',
            'Test2::API::Stack'     => '1.302015',
            'Test2::Event'          => '1.302015',
            'Test2::Event::Bail'    => '1.302015',
            'Test2::Event::Diag'    => '1.302015',
            'Test2::Event::Exception'=> '1.302015',
            'Test2::Event::Note'    => '1.302015',
            'Test2::Event::Ok'      => '1.302015',
            'Test2::Event::Plan'    => '1.302015',
            'Test2::Event::Skip'    => '1.302015',
            'Test2::Event::Subtest' => '1.302015',
            'Test2::Event::Waiting' => '1.302015',
            'Test2::Formatter'      => '1.302015',
            'Test2::Formatter::TAP' => '1.302015',
            'Test2::Hub'            => '1.302015',
            'Test2::Hub::Interceptor'=> '1.302015',
            'Test2::Hub::Interceptor::Terminator'=> '1.302015',
            'Test2::Hub::Subtest'   => '1.302015',
            'Test2::IPC'            => '1.302015',
            'Test2::IPC::Driver'    => '1.302015',
            'Test2::IPC::Driver::Files'=> '1.302015',
            'Test2::Util'           => '1.302015',
            'Test2::Util::ExternalMeta'=> '1.302015',
            'Test2::Util::HashBase' => '1.302015',
            'Test2::Util::Trace'    => '1.302015',
            'Test::Builder'         => '1.302015',
            'Test::Builder::Formatter'=> '1.302015',
            'Test::Builder::Module' => '1.302015',
            'Test::Builder::Tester' => '1.302015',
            'Test::Builder::Tester::Color'=> '1.302015',
            'Test::Builder::TodoDiag'=> '1.302015',
            'Test::More'            => '1.302015',
            'Test::Simple'          => '1.302015',
            'Test::Tester'          => '1.302015',
            'Test::Tester::Capture' => '1.302015',
            'Test::Tester::CaptureRunner'=> '1.302015',
            'Test::Tester::Delegate'=> '1.302015',
            'Test::use::ok'         => '1.302015',
            'XS::APItest'           => '0.81',
            '_charnames'            => '1.44',
            'charnames'             => '1.44',
            'ok'                    => '1.302015',
            'perlfaq'               => '5.021011',
            're'                    => '0.33',
            'threads'               => '2.08',
            'threads::shared'       => '1.52',
        },
        removed => {
        }
    },
    5.025002 => {
        delta_from => 5.025001,
        changed => {
            'App::Cpan'             => '1.64',
            'B::Op_private'         => '5.025002',
            'CPAN'                  => '2.14',
            'CPAN::Distribution'    => '2.12',
            'CPAN::FTP'             => '5.5007',
            'CPAN::FirstTime'       => '5.5309',
            'CPAN::HandleConfig'    => '5.5007',
            'CPAN::Index'           => '2.12',
            'CPAN::Mirrors'         => '2.12',
            'CPAN::Plugin'          => '0.96',
            'CPAN::Shell'           => '5.5006',
            'Config'                => '5.025002',
            'Cwd'                   => '3.64',
            'Devel::Peek'           => '1.24',
            'DynaLoader'            => '1.39',
            'ExtUtils::Command'     => '7.18',
            'ExtUtils::Command::MM' => '7.18',
            'ExtUtils::Liblist'     => '7.18',
            'ExtUtils::Liblist::Kid'=> '7.18',
            'ExtUtils::MM'          => '7.18',
            'ExtUtils::MM_AIX'      => '7.18',
            'ExtUtils::MM_Any'      => '7.18',
            'ExtUtils::MM_BeOS'     => '7.18',
            'ExtUtils::MM_Cygwin'   => '7.18',
            'ExtUtils::MM_DOS'      => '7.18',
            'ExtUtils::MM_Darwin'   => '7.18',
            'ExtUtils::MM_MacOS'    => '7.18',
            'ExtUtils::MM_NW5'      => '7.18',
            'ExtUtils::MM_OS2'      => '7.18',
            'ExtUtils::MM_QNX'      => '7.18',
            'ExtUtils::MM_UWIN'     => '7.18',
            'ExtUtils::MM_Unix'     => '7.18',
            'ExtUtils::MM_VMS'      => '7.18',
            'ExtUtils::MM_VOS'      => '7.18',
            'ExtUtils::MM_Win32'    => '7.18',
            'ExtUtils::MM_Win95'    => '7.18',
            'ExtUtils::MY'          => '7.18',
            'ExtUtils::MakeMaker'   => '7.18',
            'ExtUtils::MakeMaker::Config'=> '7.18',
            'ExtUtils::MakeMaker::Locale'=> '7.18',
            'ExtUtils::MakeMaker::version'=> '7.18',
            'ExtUtils::MakeMaker::version::regex'=> '7.18',
            'ExtUtils::Miniperl'    => '1.06',
            'ExtUtils::Mkbootstrap' => '7.18',
            'ExtUtils::Mksymlists'  => '7.18',
            'ExtUtils::ParseXS'     => '3.32',
            'ExtUtils::ParseXS::Constants'=> '3.32',
            'ExtUtils::ParseXS::CountLines'=> '3.32',
            'ExtUtils::ParseXS::Eval'=> '3.32',
            'ExtUtils::ParseXS::Utilities'=> '3.32',
            'ExtUtils::Typemaps'    => '3.32',
            'ExtUtils::Typemaps::Cmd'=> '3.32',
            'ExtUtils::Typemaps::InputMap'=> '3.32',
            'ExtUtils::Typemaps::OutputMap'=> '3.32',
            'ExtUtils::Typemaps::Type'=> '3.32',
            'ExtUtils::testlib'     => '7.18',
            'File::Copy'            => '2.32',
            'File::Glob'            => '1.27',
            'File::Spec'            => '3.64',
            'File::Spec::Cygwin'    => '3.64',
            'File::Spec::Epoc'      => '3.64',
            'File::Spec::Functions' => '3.64',
            'File::Spec::Mac'       => '3.64',
            'File::Spec::OS2'       => '3.64',
            'File::Spec::Unix'      => '3.64',
            'File::Spec::VMS'       => '3.64',
            'File::Spec::Win32'     => '3.64',
            'FileHandle'            => '2.03',
            'Getopt::Long'          => '2.49',
            'HTTP::Tiny'            => '0.058',
            'JSON::PP'              => '2.27400',
            'Locale::Codes'         => '3.39',
            'Locale::Codes::Constants'=> '3.39',
            'Locale::Codes::Country'=> '3.39',
            'Locale::Codes::Country_Codes'=> '3.39',
            'Locale::Codes::Country_Retired'=> '3.39',
            'Locale::Codes::Currency'=> '3.39',
            'Locale::Codes::Currency_Codes'=> '3.39',
            'Locale::Codes::Currency_Retired'=> '3.39',
            'Locale::Codes::LangExt'=> '3.39',
            'Locale::Codes::LangExt_Codes'=> '3.39',
            'Locale::Codes::LangExt_Retired'=> '3.39',
            'Locale::Codes::LangFam'=> '3.39',
            'Locale::Codes::LangFam_Codes'=> '3.39',
            'Locale::Codes::LangFam_Retired'=> '3.39',
            'Locale::Codes::LangVar'=> '3.39',
            'Locale::Codes::LangVar_Codes'=> '3.39',
            'Locale::Codes::LangVar_Retired'=> '3.39',
            'Locale::Codes::Language'=> '3.39',
            'Locale::Codes::Language_Codes'=> '3.39',
            'Locale::Codes::Language_Retired'=> '3.39',
            'Locale::Codes::Script' => '3.39',
            'Locale::Codes::Script_Codes'=> '3.39',
            'Locale::Codes::Script_Retired'=> '3.39',
            'Locale::Country'       => '3.39',
            'Locale::Currency'      => '3.39',
            'Locale::Language'      => '3.39',
            'Locale::Script'        => '3.39',
            'Module::CoreList'      => '5.20160620',
            'Module::CoreList::TieHashDelta'=> '5.20160620',
            'Module::CoreList::Utils'=> '5.20160620',
            'Opcode'                => '1.35',
            'POSIX'                 => '1.70',
            'Pod::Checker'          => '1.73',
            'Pod::Functions'        => '1.11',
            'Pod::Functions::Functions'=> '1.11',
            'Pod::Usage'            => '1.69',
            'Test2'                 => '1.302026',
            'Test2::API'            => '1.302026',
            'Test2::API::Breakage'  => '1.302026',
            'Test2::API::Context'   => '1.302026',
            'Test2::API::Instance'  => '1.302026',
            'Test2::API::Stack'     => '1.302026',
            'Test2::Event'          => '1.302026',
            'Test2::Event::Bail'    => '1.302026',
            'Test2::Event::Diag'    => '1.302026',
            'Test2::Event::Exception'=> '1.302026',
            'Test2::Event::Generic' => '1.302026',
            'Test2::Event::Note'    => '1.302026',
            'Test2::Event::Ok'      => '1.302026',
            'Test2::Event::Plan'    => '1.302026',
            'Test2::Event::Skip'    => '1.302026',
            'Test2::Event::Subtest' => '1.302026',
            'Test2::Event::Waiting' => '1.302026',
            'Test2::Formatter'      => '1.302026',
            'Test2::Formatter::TAP' => '1.302026',
            'Test2::Hub'            => '1.302026',
            'Test2::Hub::Interceptor'=> '1.302026',
            'Test2::Hub::Interceptor::Terminator'=> '1.302026',
            'Test2::Hub::Subtest'   => '1.302026',
            'Test2::IPC'            => '1.302026',
            'Test2::IPC::Driver'    => '1.302026',
            'Test2::IPC::Driver::Files'=> '1.302026',
            'Test2::Util'           => '1.302026',
            'Test2::Util::ExternalMeta'=> '1.302026',
            'Test2::Util::HashBase' => '1.302026',
            'Test2::Util::Trace'    => '1.302026',
            'Test::Builder'         => '1.302026',
            'Test::Builder::Formatter'=> '1.302026',
            'Test::Builder::Module' => '1.302026',
            'Test::Builder::Tester' => '1.302026',
            'Test::Builder::Tester::Color'=> '1.302026',
            'Test::Builder::TodoDiag'=> '1.302026',
            'Test::More'            => '1.302026',
            'Test::Simple'          => '1.302026',
            'Test::Tester'          => '1.302026',
            'Test::Tester::Capture' => '1.302026',
            'Test::Tester::CaptureRunner'=> '1.302026',
            'Test::Tester::Delegate'=> '1.302026',
            'Test::use::ok'         => '1.302026',
            'Thread::Queue'         => '3.11',
            'Time::HiRes'           => '1.9734',
            'Unicode::UCD'          => '0.65',
            'VMS::DCLsym'           => '1.07',
            'XS::APItest'           => '0.82',
            'diagnostics'           => '1.35',
            'feature'               => '1.44',
            'ok'                    => '1.302026',
            'threads'               => '2.09',
        },
        removed => {
        }
    },
    5.025003 => {
        delta_from => 5.025002,
        changed => {
            'B::Op_private'         => '5.025003',
            'Config'                => '5.025003',
            'Data::Dumper'          => '2.161',
            'Devel::PPPort'         => '3.35',
            'Encode'                => '2.84',
            'Encode::MIME::Header'  => '2.23',
            'Encode::MIME::Header::ISO_2022_JP'=> '1.07',
            'ExtUtils::ParseXS'     => '3.33',
            'ExtUtils::ParseXS::Constants'=> '3.33',
            'ExtUtils::ParseXS::CountLines'=> '3.33',
            'ExtUtils::ParseXS::Eval'=> '3.33',
            'ExtUtils::ParseXS::Utilities'=> '3.33',
            'ExtUtils::Typemaps'    => '3.33',
            'ExtUtils::Typemaps::Cmd'=> '3.33',
            'ExtUtils::Typemaps::InputMap'=> '3.33',
            'ExtUtils::Typemaps::OutputMap'=> '3.33',
            'ExtUtils::Typemaps::Type'=> '3.33',
            'Hash::Util'            => '0.20',
            'Math::BigFloat'        => '1.999726',
            'Math::BigFloat::Trace' => '0.43',
            'Math::BigInt'          => '1.999726',
            'Math::BigInt::Calc'    => '1.999726',
            'Math::BigInt::CalcEmu' => '1.999726',
            'Math::BigInt::FastCalc'=> '0.42',
            'Math::BigInt::Trace'   => '0.43',
            'Math::BigRat'          => '0.260804',
            'Module::CoreList'      => '5.20160720',
            'Module::CoreList::TieHashDelta'=> '5.20160720',
            'Module::CoreList::Utils'=> '5.20160720',
            'Net::Cmd'              => '3.09',
            'Net::Config'           => '3.09',
            'Net::Domain'           => '3.09',
            'Net::FTP'              => '3.09',
            'Net::FTP::A'           => '3.09',
            'Net::FTP::E'           => '3.09',
            'Net::FTP::I'           => '3.09',
            'Net::FTP::L'           => '3.09',
            'Net::FTP::dataconn'    => '3.09',
            'Net::NNTP'             => '3.09',
            'Net::Netrc'            => '3.09',
            'Net::POP3'             => '3.09',
            'Net::SMTP'             => '3.09',
            'Net::Time'             => '3.09',
            'Parse::CPAN::Meta'     => '1.4422',
            'Perl::OSType'          => '1.010',
            'Test2'                 => '1.302045',
            'Test2::API'            => '1.302045',
            'Test2::API::Breakage'  => '1.302045',
            'Test2::API::Context'   => '1.302045',
            'Test2::API::Instance'  => '1.302045',
            'Test2::API::Stack'     => '1.302045',
            'Test2::Event'          => '1.302045',
            'Test2::Event::Bail'    => '1.302045',
            'Test2::Event::Diag'    => '1.302045',
            'Test2::Event::Exception'=> '1.302045',
            'Test2::Event::Generic' => '1.302045',
            'Test2::Event::Info'    => '1.302045',
            'Test2::Event::Note'    => '1.302045',
            'Test2::Event::Ok'      => '1.302045',
            'Test2::Event::Plan'    => '1.302045',
            'Test2::Event::Skip'    => '1.302045',
            'Test2::Event::Subtest' => '1.302045',
            'Test2::Event::Waiting' => '1.302045',
            'Test2::Formatter'      => '1.302045',
            'Test2::Formatter::TAP' => '1.302045',
            'Test2::Hub'            => '1.302045',
            'Test2::Hub::Interceptor'=> '1.302045',
            'Test2::Hub::Interceptor::Terminator'=> '1.302045',
            'Test2::Hub::Subtest'   => '1.302045',
            'Test2::IPC'            => '1.302045',
            'Test2::IPC::Driver'    => '1.302045',
            'Test2::IPC::Driver::Files'=> '1.302045',
            'Test2::Util'           => '1.302045',
            'Test2::Util::ExternalMeta'=> '1.302045',
            'Test2::Util::HashBase' => '1.302045',
            'Test2::Util::Trace'    => '1.302045',
            'Test::Builder'         => '1.302045',
            'Test::Builder::Formatter'=> '1.302045',
            'Test::Builder::Module' => '1.302045',
            'Test::Builder::Tester' => '1.302045',
            'Test::Builder::Tester::Color'=> '1.302045',
            'Test::Builder::TodoDiag'=> '1.302045',
            'Test::More'            => '1.302045',
            'Test::Simple'          => '1.302045',
            'Test::Tester'          => '1.302045',
            'Test::Tester::Capture' => '1.302045',
            'Test::Tester::CaptureRunner'=> '1.302045',
            'Test::Tester::Delegate'=> '1.302045',
            'Test::use::ok'         => '1.302045',
            'Time::HiRes'           => '1.9739',
            'Unicode'               => '9.0.0',
            'Unicode::UCD'          => '0.66',
            'XSLoader'              => '0.22',
            'bigint'                => '0.43',
            'bignum'                => '0.43',
            'bigrat'                => '0.43',
            'encoding'              => '2.17_01',
            'encoding::warnings'    => '0.13',
            'feature'               => '1.45',
            'ok'                    => '1.302045',
            'version'               => '0.9917',
            'version::regex'        => '0.9917',
            'warnings'              => '1.37',
        },
        removed => {
        }
    },
    5.025004 => {
        delta_from => 5.025003,
        changed => {
            'App::Cpan'             => '1.64_01',
            'App::Prove'            => '3.36_01',
            'App::Prove::State'     => '3.36_01',
            'App::Prove::State::Result'=> '3.36_01',
            'App::Prove::State::Result::Test'=> '3.36_01',
            'Archive::Tar'          => '2.10',
            'Archive::Tar::Constant'=> '2.10',
            'Archive::Tar::File'    => '2.10',
            'B'                     => '1.63',
            'B::Concise'            => '0.998',
            'B::Deparse'            => '1.38',
            'B::Op_private'         => '5.025004',
            'CPAN'                  => '2.14_01',
            'CPAN::Meta'            => '2.150010',
            'CPAN::Meta::Converter' => '2.150010',
            'CPAN::Meta::Feature'   => '2.150010',
            'CPAN::Meta::History'   => '2.150010',
            'CPAN::Meta::Merge'     => '2.150010',
            'CPAN::Meta::Prereqs'   => '2.150010',
            'CPAN::Meta::Spec'      => '2.150010',
            'CPAN::Meta::Validator' => '2.150010',
            'Carp'                  => '1.42',
            'Carp::Heavy'           => '1.42',
            'Compress::Zlib'        => '2.069_01',
            'Config'                => '5.025004',
            'Config::Perl::V'       => '0.27',
            'Cwd'                   => '3.65',
            'Digest'                => '1.17_01',
            'Digest::SHA'           => '5.96',
            'Encode'                => '2.86',
            'Errno'                 => '1.26',
            'ExtUtils::Command'     => '7.24',
            'ExtUtils::Command::MM' => '7.24',
            'ExtUtils::Liblist'     => '7.24',
            'ExtUtils::Liblist::Kid'=> '7.24',
            'ExtUtils::MM'          => '7.24',
            'ExtUtils::MM_AIX'      => '7.24',
            'ExtUtils::MM_Any'      => '7.24',
            'ExtUtils::MM_BeOS'     => '7.24',
            'ExtUtils::MM_Cygwin'   => '7.24',
            'ExtUtils::MM_DOS'      => '7.24',
            'ExtUtils::MM_Darwin'   => '7.24',
            'ExtUtils::MM_MacOS'    => '7.24',
            'ExtUtils::MM_NW5'      => '7.24',
            'ExtUtils::MM_OS2'      => '7.24',
            'ExtUtils::MM_QNX'      => '7.24',
            'ExtUtils::MM_UWIN'     => '7.24',
            'ExtUtils::MM_Unix'     => '7.24',
            'ExtUtils::MM_VMS'      => '7.24',
            'ExtUtils::MM_VOS'      => '7.24',
            'ExtUtils::MM_Win32'    => '7.24',
            'ExtUtils::MM_Win95'    => '7.24',
            'ExtUtils::MY'          => '7.24',
            'ExtUtils::MakeMaker'   => '7.24',
            'ExtUtils::MakeMaker::Config'=> '7.24',
            'ExtUtils::MakeMaker::Locale'=> '7.24',
            'ExtUtils::MakeMaker::version'=> '7.24',
            'ExtUtils::MakeMaker::version::regex'=> '7.24',
            'ExtUtils::Mkbootstrap' => '7.24',
            'ExtUtils::Mksymlists'  => '7.24',
            'ExtUtils::testlib'     => '7.24',
            'File::Fetch'           => '0.52',
            'File::Spec'            => '3.65',
            'File::Spec::AmigaOS'   => '3.65',
            'File::Spec::Cygwin'    => '3.65',
            'File::Spec::Epoc'      => '3.65',
            'File::Spec::Functions' => '3.65',
            'File::Spec::Mac'       => '3.65',
            'File::Spec::OS2'       => '3.65',
            'File::Spec::Unix'      => '3.65',
            'File::Spec::VMS'       => '3.65',
            'File::Spec::Win32'     => '3.65',
            'HTTP::Tiny'            => '0.064',
            'Hash::Util'            => '0.21',
            'I18N::LangTags'        => '0.41',
            'I18N::LangTags::Detect'=> '1.06',
            'IO'                    => '1.37',
            'IO::Compress::Adapter::Bzip2'=> '2.069_01',
            'IO::Compress::Adapter::Deflate'=> '2.069_01',
            'IO::Compress::Adapter::Identity'=> '2.069_01',
            'IO::Compress::Base'    => '2.069_01',
            'IO::Compress::Base::Common'=> '2.069_01',
            'IO::Compress::Bzip2'   => '2.069_01',
            'IO::Compress::Deflate' => '2.069_01',
            'IO::Compress::Gzip'    => '2.069_01',
            'IO::Compress::Gzip::Constants'=> '2.069_01',
            'IO::Compress::RawDeflate'=> '2.069_01',
            'IO::Compress::Zip'     => '2.069_01',
            'IO::Compress::Zip::Constants'=> '2.069_01',
            'IO::Compress::Zlib::Constants'=> '2.069_01',
            'IO::Compress::Zlib::Extra'=> '2.069_01',
            'IO::Socket::IP'        => '0.38',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.069_01',
            'IO::Uncompress::Adapter::Identity'=> '2.069_01',
            'IO::Uncompress::Adapter::Inflate'=> '2.069_01',
            'IO::Uncompress::AnyInflate'=> '2.069_01',
            'IO::Uncompress::AnyUncompress'=> '2.069_01',
            'IO::Uncompress::Base'  => '2.069_01',
            'IO::Uncompress::Bunzip2'=> '2.069_01',
            'IO::Uncompress::Gunzip'=> '2.069_01',
            'IO::Uncompress::Inflate'=> '2.069_01',
            'IO::Uncompress::RawInflate'=> '2.069_01',
            'IO::Uncompress::Unzip' => '2.069_01',
            'IPC::Cmd'              => '0.96',
            'JSON::PP'              => '2.27400_01',
            'Locale::Maketext'      => '1.28',
            'Locale::Maketext::Simple'=> '0.21_01',
            'Math::BigFloat::Trace' => '0.43_01',
            'Math::BigInt::Trace'   => '0.43_01',
            'Memoize'               => '1.03_01',
            'Module::CoreList'      => '5.20160820',
            'Module::CoreList::TieHashDelta'=> '5.20160820',
            'Module::CoreList::Utils'=> '5.20160820',
            'Module::Load::Conditional'=> '0.68',
            'Module::Metadata'      => '1.000033',
            'NEXT'                  => '0.67',
            'Net::Cmd'              => '3.10',
            'Net::Config'           => '3.10',
            'Net::Domain'           => '3.10',
            'Net::FTP'              => '3.10',
            'Net::FTP::A'           => '3.10',
            'Net::FTP::E'           => '3.10',
            'Net::FTP::I'           => '3.10',
            'Net::FTP::L'           => '3.10',
            'Net::FTP::dataconn'    => '3.10',
            'Net::NNTP'             => '3.10',
            'Net::Netrc'            => '3.10',
            'Net::POP3'             => '3.10',
            'Net::Ping'             => '2.44',
            'Net::SMTP'             => '3.10',
            'Net::Time'             => '3.10',
            'Opcode'                => '1.37',
            'POSIX'                 => '1.71',
            'Parse::CPAN::Meta'     => '2.150010',
            'Pod::Html'             => '1.2201',
            'Pod::Perldoc'          => '3.27',
            'Pod::Perldoc::BaseTo'  => '3.27',
            'Pod::Perldoc::GetOptsOO'=> '3.27',
            'Pod::Perldoc::ToANSI'  => '3.27',
            'Pod::Perldoc::ToChecker'=> '3.27',
            'Pod::Perldoc::ToMan'   => '3.27',
            'Pod::Perldoc::ToNroff' => '3.27',
            'Pod::Perldoc::ToPod'   => '3.27',
            'Pod::Perldoc::ToRtf'   => '3.27',
            'Pod::Perldoc::ToTerm'  => '3.27',
            'Pod::Perldoc::ToText'  => '3.27',
            'Pod::Perldoc::ToTk'    => '3.27',
            'Pod::Perldoc::ToXml'   => '3.27',
            'Storable'              => '2.57',
            'Sys::Syslog'           => '0.34_01',
            'TAP::Base'             => '3.36_01',
            'TAP::Formatter::Base'  => '3.36_01',
            'TAP::Formatter::Color' => '3.36_01',
            'TAP::Formatter::Console'=> '3.36_01',
            'TAP::Formatter::Console::ParallelSession'=> '3.36_01',
            'TAP::Formatter::Console::Session'=> '3.36_01',
            'TAP::Formatter::File'  => '3.36_01',
            'TAP::Formatter::File::Session'=> '3.36_01',
            'TAP::Formatter::Session'=> '3.36_01',
            'TAP::Harness'          => '3.36_01',
            'TAP::Harness::Env'     => '3.36_01',
            'TAP::Object'           => '3.36_01',
            'TAP::Parser'           => '3.36_01',
            'TAP::Parser::Aggregator'=> '3.36_01',
            'TAP::Parser::Grammar'  => '3.36_01',
            'TAP::Parser::Iterator' => '3.36_01',
            'TAP::Parser::Iterator::Array'=> '3.36_01',
            'TAP::Parser::Iterator::Process'=> '3.36_01',
            'TAP::Parser::Iterator::Stream'=> '3.36_01',
            'TAP::Parser::IteratorFactory'=> '3.36_01',
            'TAP::Parser::Multiplexer'=> '3.36_01',
            'TAP::Parser::Result'   => '3.36_01',
            'TAP::Parser::Result::Bailout'=> '3.36_01',
            'TAP::Parser::Result::Comment'=> '3.36_01',
            'TAP::Parser::Result::Plan'=> '3.36_01',
            'TAP::Parser::Result::Pragma'=> '3.36_01',
            'TAP::Parser::Result::Test'=> '3.36_01',
            'TAP::Parser::Result::Unknown'=> '3.36_01',
            'TAP::Parser::Result::Version'=> '3.36_01',
            'TAP::Parser::Result::YAML'=> '3.36_01',
            'TAP::Parser::ResultFactory'=> '3.36_01',
            'TAP::Parser::Scheduler'=> '3.36_01',
            'TAP::Parser::Scheduler::Job'=> '3.36_01',
            'TAP::Parser::Scheduler::Spinner'=> '3.36_01',
            'TAP::Parser::Source'   => '3.36_01',
            'TAP::Parser::SourceHandler'=> '3.36_01',
            'TAP::Parser::SourceHandler::Executable'=> '3.36_01',
            'TAP::Parser::SourceHandler::File'=> '3.36_01',
            'TAP::Parser::SourceHandler::Handle'=> '3.36_01',
            'TAP::Parser::SourceHandler::Perl'=> '3.36_01',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.36_01',
            'TAP::Parser::YAMLish::Reader'=> '3.36_01',
            'TAP::Parser::YAMLish::Writer'=> '3.36_01',
            'Test'                  => '1.29',
            'Test2'                 => '1.302052',
            'Test2::API'            => '1.302052',
            'Test2::API::Breakage'  => '1.302052',
            'Test2::API::Context'   => '1.302052',
            'Test2::API::Instance'  => '1.302052',
            'Test2::API::Stack'     => '1.302052',
            'Test2::Event'          => '1.302052',
            'Test2::Event::Bail'    => '1.302052',
            'Test2::Event::Diag'    => '1.302052',
            'Test2::Event::Exception'=> '1.302052',
            'Test2::Event::Generic' => '1.302052',
            'Test2::Event::Info'    => '1.302052',
            'Test2::Event::Note'    => '1.302052',
            'Test2::Event::Ok'      => '1.302052',
            'Test2::Event::Plan'    => '1.302052',
            'Test2::Event::Skip'    => '1.302052',
            'Test2::Event::Subtest' => '1.302052',
            'Test2::Event::Waiting' => '1.302052',
            'Test2::Formatter'      => '1.302052',
            'Test2::Formatter::TAP' => '1.302052',
            'Test2::Hub'            => '1.302052',
            'Test2::Hub::Interceptor'=> '1.302052',
            'Test2::Hub::Interceptor::Terminator'=> '1.302052',
            'Test2::Hub::Subtest'   => '1.302052',
            'Test2::IPC'            => '1.302052',
            'Test2::IPC::Driver'    => '1.302052',
            'Test2::IPC::Driver::Files'=> '1.302052',
            'Test2::Util'           => '1.302052',
            'Test2::Util::ExternalMeta'=> '1.302052',
            'Test2::Util::HashBase' => '1.302052',
            'Test2::Util::Trace'    => '1.302052',
            'Test::Builder'         => '1.302052',
            'Test::Builder::Formatter'=> '1.302052',
            'Test::Builder::Module' => '1.302052',
            'Test::Builder::Tester' => '1.302052',
            'Test::Builder::Tester::Color'=> '1.302052',
            'Test::Builder::TodoDiag'=> '1.302052',
            'Test::Harness'         => '3.36_01',
            'Test::More'            => '1.302052',
            'Test::Simple'          => '1.302052',
            'Test::Tester'          => '1.302052',
            'Test::Tester::Capture' => '1.302052',
            'Test::Tester::CaptureRunner'=> '1.302052',
            'Test::Tester::Delegate'=> '1.302052',
            'Test::use::ok'         => '1.302052',
            'Tie::Hash::NamedCapture'=> '0.10',
            'Time::Local'           => '1.24',
            'XS::APItest'           => '0.83',
            'arybase'               => '0.12',
            'base'                  => '2.24',
            'bigint'                => '0.43_01',
            'bignum'                => '0.43_01',
            'bigrat'                => '0.43_01',
            'encoding'              => '2.18',
            'ok'                    => '1.302052',
        },
        removed => {
        }
    },
    5.025005 => {
        delta_from => 5.025004,
        changed => {
            'B::Op_private'         => '5.025005',
            'Config'                => '5.025005',
            'Filter::Simple'        => '0.93',
            'Locale::Codes'         => '3.40',
            'Locale::Codes::Constants'=> '3.40',
            'Locale::Codes::Country'=> '3.40',
            'Locale::Codes::Country_Codes'=> '3.40',
            'Locale::Codes::Country_Retired'=> '3.40',
            'Locale::Codes::Currency'=> '3.40',
            'Locale::Codes::Currency_Codes'=> '3.40',
            'Locale::Codes::Currency_Retired'=> '3.40',
            'Locale::Codes::LangExt'=> '3.40',
            'Locale::Codes::LangExt_Codes'=> '3.40',
            'Locale::Codes::LangExt_Retired'=> '3.40',
            'Locale::Codes::LangFam'=> '3.40',
            'Locale::Codes::LangFam_Codes'=> '3.40',
            'Locale::Codes::LangFam_Retired'=> '3.40',
            'Locale::Codes::LangVar'=> '3.40',
            'Locale::Codes::LangVar_Codes'=> '3.40',
            'Locale::Codes::LangVar_Retired'=> '3.40',
            'Locale::Codes::Language'=> '3.40',
            'Locale::Codes::Language_Codes'=> '3.40',
            'Locale::Codes::Language_Retired'=> '3.40',
            'Locale::Codes::Script' => '3.40',
            'Locale::Codes::Script_Codes'=> '3.40',
            'Locale::Codes::Script_Retired'=> '3.40',
            'Locale::Country'       => '3.40',
            'Locale::Currency'      => '3.40',
            'Locale::Language'      => '3.40',
            'Locale::Script'        => '3.40',
            'Module::CoreList'      => '5.20160920',
            'Module::CoreList::TieHashDelta'=> '5.20160920',
            'Module::CoreList::Utils'=> '5.20160920',
            'POSIX'                 => '1.72',
            'Sys::Syslog'           => '0.35',
            'Test2'                 => '1.302056',
            'Test2::API'            => '1.302056',
            'Test2::API::Breakage'  => '1.302056',
            'Test2::API::Context'   => '1.302056',
            'Test2::API::Instance'  => '1.302056',
            'Test2::API::Stack'     => '1.302056',
            'Test2::Event'          => '1.302056',
            'Test2::Event::Bail'    => '1.302056',
            'Test2::Event::Diag'    => '1.302056',
            'Test2::Event::Exception'=> '1.302056',
            'Test2::Event::Generic' => '1.302056',
            'Test2::Event::Info'    => '1.302056',
            'Test2::Event::Note'    => '1.302056',
            'Test2::Event::Ok'      => '1.302056',
            'Test2::Event::Plan'    => '1.302056',
            'Test2::Event::Skip'    => '1.302056',
            'Test2::Event::Subtest' => '1.302056',
            'Test2::Event::Waiting' => '1.302056',
            'Test2::Formatter'      => '1.302056',
            'Test2::Formatter::TAP' => '1.302056',
            'Test2::Hub'            => '1.302056',
            'Test2::Hub::Interceptor'=> '1.302056',
            'Test2::Hub::Interceptor::Terminator'=> '1.302056',
            'Test2::Hub::Subtest'   => '1.302056',
            'Test2::IPC'            => '1.302056',
            'Test2::IPC::Driver'    => '1.302056',
            'Test2::IPC::Driver::Files'=> '1.302056',
            'Test2::Util'           => '1.302056',
            'Test2::Util::ExternalMeta'=> '1.302056',
            'Test2::Util::HashBase' => '1.302056',
            'Test2::Util::Trace'    => '1.302056',
            'Test::Builder'         => '1.302056',
            'Test::Builder::Formatter'=> '1.302056',
            'Test::Builder::Module' => '1.302056',
            'Test::Builder::Tester' => '1.302056',
            'Test::Builder::Tester::Color'=> '1.302056',
            'Test::Builder::TodoDiag'=> '1.302056',
            'Test::More'            => '1.302056',
            'Test::Simple'          => '1.302056',
            'Test::Tester'          => '1.302056',
            'Test::Tester::Capture' => '1.302056',
            'Test::Tester::CaptureRunner'=> '1.302056',
            'Test::Tester::Delegate'=> '1.302056',
            'Test::use::ok'         => '1.302056',
            'Thread::Semaphore'     => '2.13',
            'XS::APItest'           => '0.84',
            'XSLoader'              => '0.24',
            'ok'                    => '1.302056',
        },
        removed => {
        }
    },
    5.025006 => {
        delta_from => 5.025005,
        changed => {
            'Archive::Tar'          => '2.14',
            'Archive::Tar::Constant'=> '2.14',
            'Archive::Tar::File'    => '2.14',
            'B'                     => '1.64',
            'B::Concise'            => '0.999',
            'B::Deparse'            => '1.39',
            'B::Op_private'         => '5.025006',
            'Config'                => '5.025006',
            'Data::Dumper'          => '2.162',
            'Devel::Peek'           => '1.25',
            'HTTP::Tiny'            => '0.070',
            'List::Util'            => '1.46',
            'List::Util::XS'        => '1.46',
            'Module::CoreList'      => '5.20161020',
            'Module::CoreList::TieHashDelta'=> '5.20161020',
            'Module::CoreList::Utils'=> '5.20161020',
            'Net::Ping'             => '2.51',
            'OS2::DLL'              => '1.07',
            'Opcode'                => '1.38',
            'POSIX'                 => '1.73',
            'PerlIO::encoding'      => '0.25',
            'Pod::Man'              => '4.08',
            'Pod::ParseLink'        => '4.08',
            'Pod::Text'             => '4.08',
            'Pod::Text::Color'      => '4.08',
            'Pod::Text::Overstrike' => '4.08',
            'Pod::Text::Termcap'    => '4.08',
            'Scalar::Util'          => '1.46',
            'Storable'              => '2.58',
            'Sub::Util'             => '1.46',
            'Test2'                 => '1.302059',
            'Test2::API'            => '1.302059',
            'Test2::API::Breakage'  => '1.302059',
            'Test2::API::Context'   => '1.302059',
            'Test2::API::Instance'  => '1.302059',
            'Test2::API::Stack'     => '1.302059',
            'Test2::Event'          => '1.302059',
            'Test2::Event::Bail'    => '1.302059',
            'Test2::Event::Diag'    => '1.302059',
            'Test2::Event::Exception'=> '1.302059',
            'Test2::Event::Generic' => '1.302059',
            'Test2::Event::Info'    => '1.302059',
            'Test2::Event::Note'    => '1.302059',
            'Test2::Event::Ok'      => '1.302059',
            'Test2::Event::Plan'    => '1.302059',
            'Test2::Event::Skip'    => '1.302059',
            'Test2::Event::Subtest' => '1.302059',
            'Test2::Event::Waiting' => '1.302059',
            'Test2::Formatter'      => '1.302059',
            'Test2::Formatter::TAP' => '1.302059',
            'Test2::Hub'            => '1.302059',
            'Test2::Hub::Interceptor'=> '1.302059',
            'Test2::Hub::Interceptor::Terminator'=> '1.302059',
            'Test2::Hub::Subtest'   => '1.302059',
            'Test2::IPC'            => '1.302059',
            'Test2::IPC::Driver'    => '1.302059',
            'Test2::IPC::Driver::Files'=> '1.302059',
            'Test2::Util'           => '1.302059',
            'Test2::Util::ExternalMeta'=> '1.302059',
            'Test2::Util::HashBase' => '1.302059',
            'Test2::Util::Trace'    => '1.302059',
            'Test::Builder'         => '1.302059',
            'Test::Builder::Formatter'=> '1.302059',
            'Test::Builder::Module' => '1.302059',
            'Test::Builder::Tester' => '1.302059',
            'Test::Builder::Tester::Color'=> '1.302059',
            'Test::Builder::TodoDiag'=> '1.302059',
            'Test::More'            => '1.302059',
            'Test::Simple'          => '1.302059',
            'Test::Tester'          => '1.302059',
            'Test::Tester::Capture' => '1.302059',
            'Test::Tester::CaptureRunner'=> '1.302059',
            'Test::Tester::Delegate'=> '1.302059',
            'Test::use::ok'         => '1.302059',
            'Time::HiRes'           => '1.9740_01',
            'VMS::Stdio'            => '2.42',
            'XS::APItest'           => '0.86',
            'attributes'            => '0.28',
            'mro'                   => '1.19',
            'ok'                    => '1.302059',
            'overload'              => '1.27',
            'parent'                => '0.236',
        },
        removed => {
        }
    },
    5.025007 => {
        delta_from => 5.025006,
        changed => {
            'Archive::Tar'          => '2.18',
            'Archive::Tar::Constant'=> '2.18',
            'Archive::Tar::File'    => '2.18',
            'B'                     => '1.65',
            'B::Op_private'         => '5.025007',
            'Config'                => '5.025007',
            'Cwd'                   => '3.66',
            'Data::Dumper'          => '2.165',
            'Devel::Peek'           => '1.26',
            'DynaLoader'            => '1.40',
            'Errno'                 => '1.27',
            'ExtUtils::ParseXS::Utilities'=> '3.34',
            'File::Spec'            => '3.66',
            'File::Spec::AmigaOS'   => '3.66',
            'File::Spec::Cygwin'    => '3.66',
            'File::Spec::Epoc'      => '3.66',
            'File::Spec::Functions' => '3.66',
            'File::Spec::Mac'       => '3.66',
            'File::Spec::OS2'       => '3.66',
            'File::Spec::Unix'      => '3.66',
            'File::Spec::VMS'       => '3.66',
            'File::Spec::Win32'     => '3.66',
            'Hash::Util'            => '0.22',
            'JSON::PP'              => '2.27400_02',
            'List::Util'            => '1.46_02',
            'List::Util::XS'        => '1.46_02',
            'Math::BigFloat'        => '1.999727',
            'Math::BigInt'          => '1.999727',
            'Math::BigInt::Calc'    => '1.999727',
            'Math::BigInt::CalcEmu' => '1.999727',
            'Math::Complex'         => '1.5901',
            'Module::CoreList'      => '5.20161120',
            'Module::CoreList::TieHashDelta'=> '5.20161120',
            'Module::CoreList::Utils'=> '5.20161120',
            'Net::Ping'             => '2.55',
            'Opcode'                => '1.39',
            'POSIX'                 => '1.75',
            'Pod::Man'              => '4.09',
            'Pod::ParseLink'        => '4.09',
            'Pod::Text'             => '4.09',
            'Pod::Text::Color'      => '4.09',
            'Pod::Text::Overstrike' => '4.09',
            'Pod::Text::Termcap'    => '4.09',
            'Scalar::Util'          => '1.46_02',
            'Storable'              => '2.59',
            'Sub::Util'             => '1.46_02',
            'Term::ANSIColor'       => '4.06',
            'Test2'                 => '1.302062',
            'Test2::API'            => '1.302062',
            'Test2::API::Breakage'  => '1.302062',
            'Test2::API::Context'   => '1.302062',
            'Test2::API::Instance'  => '1.302062',
            'Test2::API::Stack'     => '1.302062',
            'Test2::Event'          => '1.302062',
            'Test2::Event::Bail'    => '1.302062',
            'Test2::Event::Diag'    => '1.302062',
            'Test2::Event::Exception'=> '1.302062',
            'Test2::Event::Generic' => '1.302062',
            'Test2::Event::Info'    => '1.302062',
            'Test2::Event::Note'    => '1.302062',
            'Test2::Event::Ok'      => '1.302062',
            'Test2::Event::Plan'    => '1.302062',
            'Test2::Event::Skip'    => '1.302062',
            'Test2::Event::Subtest' => '1.302062',
            'Test2::Event::Waiting' => '1.302062',
            'Test2::Formatter'      => '1.302062',
            'Test2::Formatter::TAP' => '1.302062',
            'Test2::Hub'            => '1.302062',
            'Test2::Hub::Interceptor'=> '1.302062',
            'Test2::Hub::Interceptor::Terminator'=> '1.302062',
            'Test2::Hub::Subtest'   => '1.302062',
            'Test2::IPC'            => '1.302062',
            'Test2::IPC::Driver'    => '1.302062',
            'Test2::IPC::Driver::Files'=> '1.302062',
            'Test2::Util'           => '1.302062',
            'Test2::Util::ExternalMeta'=> '1.302062',
            'Test2::Util::HashBase' => '1.302062',
            'Test2::Util::Trace'    => '1.302062',
            'Test::Builder'         => '1.302062',
            'Test::Builder::Formatter'=> '1.302062',
            'Test::Builder::Module' => '1.302062',
            'Test::Builder::Tester' => '1.302062',
            'Test::Builder::Tester::Color'=> '1.302062',
            'Test::Builder::TodoDiag'=> '1.302062',
            'Test::More'            => '1.302062',
            'Test::Simple'          => '1.302062',
            'Test::Tester'          => '1.302062',
            'Test::Tester::Capture' => '1.302062',
            'Test::Tester::CaptureRunner'=> '1.302062',
            'Test::Tester::Delegate'=> '1.302062',
            'Test::use::ok'         => '1.302062',
            'Time::HiRes'           => '1.9740_03',
            'Unicode::Collate'      => '1.18',
            'Unicode::Collate::CJK::Big5'=> '1.18',
            'Unicode::Collate::CJK::GB2312'=> '1.18',
            'Unicode::Collate::CJK::JISX0208'=> '1.18',
            'Unicode::Collate::CJK::Korean'=> '1.18',
            'Unicode::Collate::CJK::Pinyin'=> '1.18',
            'Unicode::Collate::CJK::Stroke'=> '1.18',
            'Unicode::Collate::CJK::Zhuyin'=> '1.18',
            'Unicode::Collate::Locale'=> '1.18',
            'Unicode::UCD'          => '0.67',
            'XS::APItest'           => '0.87',
            'XS::Typemap'           => '0.15',
            'mro'                   => '1.20',
            'ok'                    => '1.302062',
            'threads'               => '2.10',
        },
        removed => {
        }
    },
    5.025008 => {
        delta_from => 5.025007,
        changed => {
            'Archive::Tar'          => '2.24',
            'Archive::Tar::Constant'=> '2.24',
            'Archive::Tar::File'    => '2.24',
            'B::Debug'              => '1.24',
            'B::Op_private'         => '5.025008',
            'Config'                => '5.025008',
            'Data::Dumper'          => '2.166',
            'Encode'                => '2.88',
            'Encode::Alias'         => '2.21',
            'Encode::CN::HZ'        => '2.08',
            'Encode::MIME::Header'  => '2.24',
            'Encode::MIME::Name'    => '1.02',
            'Encode::Unicode'       => '2.1501',
            'IO'                    => '1.38',
            'Locale::Codes'         => '3.42',
            'Locale::Codes::Constants'=> '3.42',
            'Locale::Codes::Country'=> '3.42',
            'Locale::Codes::Country_Codes'=> '3.42',
            'Locale::Codes::Country_Retired'=> '3.42',
            'Locale::Codes::Currency'=> '3.42',
            'Locale::Codes::Currency_Codes'=> '3.42',
            'Locale::Codes::Currency_Retired'=> '3.42',
            'Locale::Codes::LangExt'=> '3.42',
            'Locale::Codes::LangExt_Codes'=> '3.42',
            'Locale::Codes::LangExt_Retired'=> '3.42',
            'Locale::Codes::LangFam'=> '3.42',
            'Locale::Codes::LangFam_Codes'=> '3.42',
            'Locale::Codes::LangFam_Retired'=> '3.42',
            'Locale::Codes::LangVar'=> '3.42',
            'Locale::Codes::LangVar_Codes'=> '3.42',
            'Locale::Codes::LangVar_Retired'=> '3.42',
            'Locale::Codes::Language'=> '3.42',
            'Locale::Codes::Language_Codes'=> '3.42',
            'Locale::Codes::Language_Retired'=> '3.42',
            'Locale::Codes::Script' => '3.42',
            'Locale::Codes::Script_Codes'=> '3.42',
            'Locale::Codes::Script_Retired'=> '3.42',
            'Locale::Country'       => '3.42',
            'Locale::Currency'      => '3.42',
            'Locale::Language'      => '3.42',
            'Locale::Script'        => '3.42',
            'Math::BigFloat'        => '1.999806',
            'Math::BigFloat::Trace' => '0.47',
            'Math::BigInt'          => '1.999806',
            'Math::BigInt::Calc'    => '1.999806',
            'Math::BigInt::CalcEmu' => '1.999806',
            'Math::BigInt::FastCalc'=> '0.5005',
            'Math::BigInt::Lib'     => '1.999806',
            'Math::BigInt::Trace'   => '0.47',
            'Math::BigRat'          => '0.2611',
            'Module::CoreList'      => '5.20161220',
            'Module::CoreList::TieHashDelta'=> '5.20161220',
            'Module::CoreList::Utils'=> '5.20161220',
            'POSIX'                 => '1.76',
            'PerlIO::scalar'        => '0.25',
            'Pod::Simple'           => '3.35',
            'Pod::Simple::BlackBox' => '3.35',
            'Pod::Simple::Checker'  => '3.35',
            'Pod::Simple::Debug'    => '3.35',
            'Pod::Simple::DumpAsText'=> '3.35',
            'Pod::Simple::DumpAsXML'=> '3.35',
            'Pod::Simple::HTML'     => '3.35',
            'Pod::Simple::HTMLBatch'=> '3.35',
            'Pod::Simple::LinkSection'=> '3.35',
            'Pod::Simple::Methody'  => '3.35',
            'Pod::Simple::Progress' => '3.35',
            'Pod::Simple::PullParser'=> '3.35',
            'Pod::Simple::PullParserEndToken'=> '3.35',
            'Pod::Simple::PullParserStartToken'=> '3.35',
            'Pod::Simple::PullParserTextToken'=> '3.35',
            'Pod::Simple::PullParserToken'=> '3.35',
            'Pod::Simple::RTF'      => '3.35',
            'Pod::Simple::Search'   => '3.35',
            'Pod::Simple::SimpleTree'=> '3.35',
            'Pod::Simple::Text'     => '3.35',
            'Pod::Simple::TextContent'=> '3.35',
            'Pod::Simple::TiedOutFH'=> '3.35',
            'Pod::Simple::Transcode'=> '3.35',
            'Pod::Simple::TranscodeDumb'=> '3.35',
            'Pod::Simple::TranscodeSmart'=> '3.35',
            'Pod::Simple::XHTML'    => '3.35',
            'Pod::Simple::XMLOutStream'=> '3.35',
            'Test2'                 => '1.302073',
            'Test2::API'            => '1.302073',
            'Test2::API::Breakage'  => '1.302073',
            'Test2::API::Context'   => '1.302073',
            'Test2::API::Instance'  => '1.302073',
            'Test2::API::Stack'     => '1.302073',
            'Test2::Event'          => '1.302073',
            'Test2::Event::Bail'    => '1.302073',
            'Test2::Event::Diag'    => '1.302073',
            'Test2::Event::Encoding'=> '1.302073',
            'Test2::Event::Exception'=> '1.302073',
            'Test2::Event::Generic' => '1.302073',
            'Test2::Event::Info'    => '1.302073',
            'Test2::Event::Note'    => '1.302073',
            'Test2::Event::Ok'      => '1.302073',
            'Test2::Event::Plan'    => '1.302073',
            'Test2::Event::Skip'    => '1.302073',
            'Test2::Event::Subtest' => '1.302073',
            'Test2::Event::TAP::Version'=> '1.302073',
            'Test2::Event::Waiting' => '1.302073',
            'Test2::Formatter'      => '1.302073',
            'Test2::Formatter::TAP' => '1.302073',
            'Test2::Hub'            => '1.302073',
            'Test2::Hub::Interceptor'=> '1.302073',
            'Test2::Hub::Interceptor::Terminator'=> '1.302073',
            'Test2::Hub::Subtest'   => '1.302073',
            'Test2::IPC'            => '1.302073',
            'Test2::IPC::Driver'    => '1.302073',
            'Test2::IPC::Driver::Files'=> '1.302073',
            'Test2::Tools::Tiny'    => '1.302073',
            'Test2::Util'           => '1.302073',
            'Test2::Util::ExternalMeta'=> '1.302073',
            'Test2::Util::HashBase' => '0.002',
            'Test2::Util::Trace'    => '1.302073',
            'Test::Builder'         => '1.302073',
            'Test::Builder::Formatter'=> '1.302073',
            'Test::Builder::Module' => '1.302073',
            'Test::Builder::Tester' => '1.302073',
            'Test::Builder::Tester::Color'=> '1.302073',
            'Test::Builder::TodoDiag'=> '1.302073',
            'Test::More'            => '1.302073',
            'Test::Simple'          => '1.302073',
            'Test::Tester'          => '1.302073',
            'Test::Tester::Capture' => '1.302073',
            'Test::Tester::CaptureRunner'=> '1.302073',
            'Test::Tester::Delegate'=> '1.302073',
            'Test::use::ok'         => '1.302073',
            'Time::HiRes'           => '1.9741',
            'Time::Local'           => '1.25',
            'Unicode::Collate'      => '1.19',
            'Unicode::Collate::CJK::Big5'=> '1.19',
            'Unicode::Collate::CJK::GB2312'=> '1.19',
            'Unicode::Collate::CJK::JISX0208'=> '1.19',
            'Unicode::Collate::CJK::Korean'=> '1.19',
            'Unicode::Collate::CJK::Pinyin'=> '1.19',
            'Unicode::Collate::CJK::Stroke'=> '1.19',
            'Unicode::Collate::CJK::Zhuyin'=> '1.19',
            'Unicode::Collate::Locale'=> '1.19',
            'bigint'                => '0.47',
            'bignum'                => '0.47',
            'bigrat'                => '0.47',
            'encoding'              => '2.19',
            'ok'                    => '1.302073',
        },
        removed => {
        }
    },
    5.022003 => {
        delta_from => 5.022002,
        changed => {
            'App::Cpan'             => '1.63_01',
            'App::Prove'            => '3.35_01',
            'App::Prove::State'     => '3.35_01',
            'App::Prove::State::Result'=> '3.35_01',
            'App::Prove::State::Result::Test'=> '3.35_01',
            'Archive::Tar'          => '2.04_01',
            'Archive::Tar::Constant'=> '2.04_01',
            'Archive::Tar::File'    => '2.04_01',
            'B::Op_private'         => '5.022003',
            'CPAN'                  => '2.11_01',
            'Compress::Zlib'        => '2.068_001',
            'Config'                => '5.022003',
            'Cwd'                   => '3.56_02',
            'Digest'                => '1.17_01',
            'Digest::SHA'           => '5.95_01',
            'Encode'                => '2.72_01',
            'ExtUtils::Command'     => '1.20_01',
            'ExtUtils::Command::MM' => '7.04_02',
            'ExtUtils::Liblist'     => '7.04_02',
            'ExtUtils::Liblist::Kid'=> '7.04_02',
            'ExtUtils::MM'          => '7.04_02',
            'ExtUtils::MM_AIX'      => '7.04_02',
            'ExtUtils::MM_Any'      => '7.04_02',
            'ExtUtils::MM_BeOS'     => '7.04_02',
            'ExtUtils::MM_Cygwin'   => '7.04_02',
            'ExtUtils::MM_DOS'      => '7.04_02',
            'ExtUtils::MM_Darwin'   => '7.04_02',
            'ExtUtils::MM_MacOS'    => '7.04_02',
            'ExtUtils::MM_NW5'      => '7.04_02',
            'ExtUtils::MM_OS2'      => '7.04_02',
            'ExtUtils::MM_QNX'      => '7.04_02',
            'ExtUtils::MM_UWIN'     => '7.04_02',
            'ExtUtils::MM_Unix'     => '7.04_02',
            'ExtUtils::MM_VMS'      => '7.04_02',
            'ExtUtils::MM_VOS'      => '7.04_02',
            'ExtUtils::MM_Win32'    => '7.04_02',
            'ExtUtils::MM_Win95'    => '7.04_02',
            'ExtUtils::MY'          => '7.04_02',
            'ExtUtils::MakeMaker'   => '7.04_02',
            'ExtUtils::MakeMaker::Config'=> '7.04_02',
            'ExtUtils::Mkbootstrap' => '7.04_02',
            'ExtUtils::Mksymlists'  => '7.04_02',
            'ExtUtils::testlib'     => '7.04_02',
            'File::Fetch'           => '0.48_01',
            'File::Spec'            => '3.56_02',
            'File::Spec::Cygwin'    => '3.56_02',
            'File::Spec::Epoc'      => '3.56_02',
            'File::Spec::Functions' => '3.56_02',
            'File::Spec::Mac'       => '3.56_02',
            'File::Spec::OS2'       => '3.56_02',
            'File::Spec::Unix'      => '3.56_02',
            'File::Spec::VMS'       => '3.56_02',
            'File::Spec::Win32'     => '3.56_02',
            'HTTP::Tiny'            => '0.054_01',
            'I18N::LangTags::Detect'=> '1.05_01',
            'IO'                    => '1.35_01',
            'IO::Compress::Adapter::Bzip2'=> '2.068_001',
            'IO::Compress::Adapter::Deflate'=> '2.068_001',
            'IO::Compress::Adapter::Identity'=> '2.068_001',
            'IO::Compress::Base'    => '2.068_001',
            'IO::Compress::Base::Common'=> '2.068_001',
            'IO::Compress::Bzip2'   => '2.068_001',
            'IO::Compress::Deflate' => '2.068_001',
            'IO::Compress::Gzip'    => '2.068_001',
            'IO::Compress::Gzip::Constants'=> '2.068_001',
            'IO::Compress::RawDeflate'=> '2.068_001',
            'IO::Compress::Zip'     => '2.068_001',
            'IO::Compress::Zip::Constants'=> '2.068_001',
            'IO::Compress::Zlib::Constants'=> '2.068_001',
            'IO::Compress::Zlib::Extra'=> '2.068_001',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.068_001',
            'IO::Uncompress::Adapter::Identity'=> '2.068_001',
            'IO::Uncompress::Adapter::Inflate'=> '2.068_001',
            'IO::Uncompress::AnyInflate'=> '2.068_001',
            'IO::Uncompress::AnyUncompress'=> '2.068_001',
            'IO::Uncompress::Base'  => '2.068_001',
            'IO::Uncompress::Bunzip2'=> '2.068_001',
            'IO::Uncompress::Gunzip'=> '2.068_001',
            'IO::Uncompress::Inflate'=> '2.068_001',
            'IO::Uncompress::RawInflate'=> '2.068_001',
            'IO::Uncompress::Unzip' => '2.068_001',
            'IPC::Cmd'              => '0.92_01',
            'JSON::PP'              => '2.27300_01',
            'Locale::Maketext'      => '1.26_01',
            'Locale::Maketext::Simple'=> '0.21_01',
            'Memoize'               => '1.03_01',
            'Module::CoreList'      => '5.20170114_22',
            'Module::CoreList::TieHashDelta'=> '5.20170114_22',
            'Module::CoreList::Utils'=> '5.20170114_22',
            'Module::Metadata::corpus::BOMTest::UTF16BE'=> undef,
            'Module::Metadata::corpus::BOMTest::UTF16LE'=> undef,
            'Module::Metadata::corpus::BOMTest::UTF8'=> '1',
            'Net::Cmd'              => '3.05_01',
            'Net::Config'           => '3.05_01',
            'Net::Domain'           => '3.05_01',
            'Net::FTP'              => '3.05_01',
            'Net::FTP::A'           => '3.05_01',
            'Net::FTP::E'           => '3.05_01',
            'Net::FTP::I'           => '3.05_01',
            'Net::FTP::L'           => '3.05_01',
            'Net::FTP::dataconn'    => '3.05_01',
            'Net::NNTP'             => '3.05_01',
            'Net::Netrc'            => '3.05_01',
            'Net::POP3'             => '3.05_01',
            'Net::Ping'             => '2.43_01',
            'Net::SMTP'             => '3.05_01',
            'Net::Time'             => '3.05_01',
            'Parse::CPAN::Meta'     => '1.4414_001',
            'Pod::Html'             => '1.2201',
            'Pod::Perldoc'          => '3.25_01',
            'Storable'              => '2.53_02',
            'Sys::Syslog'           => '0.33_01',
            'TAP::Base'             => '3.35_01',
            'TAP::Formatter::Base'  => '3.35_01',
            'TAP::Formatter::Color' => '3.35_01',
            'TAP::Formatter::Console'=> '3.35_01',
            'TAP::Formatter::Console::ParallelSession'=> '3.35_01',
            'TAP::Formatter::Console::Session'=> '3.35_01',
            'TAP::Formatter::File'  => '3.35_01',
            'TAP::Formatter::File::Session'=> '3.35_01',
            'TAP::Formatter::Session'=> '3.35_01',
            'TAP::Harness'          => '3.35_01',
            'TAP::Harness::Env'     => '3.35_01',
            'TAP::Object'           => '3.35_01',
            'TAP::Parser'           => '3.35_01',
            'TAP::Parser::Aggregator'=> '3.35_01',
            'TAP::Parser::Grammar'  => '3.35_01',
            'TAP::Parser::Iterator' => '3.35_01',
            'TAP::Parser::Iterator::Array'=> '3.35_01',
            'TAP::Parser::Iterator::Process'=> '3.35_01',
            'TAP::Parser::Iterator::Stream'=> '3.35_01',
            'TAP::Parser::IteratorFactory'=> '3.35_01',
            'TAP::Parser::Multiplexer'=> '3.35_01',
            'TAP::Parser::Result'   => '3.35_01',
            'TAP::Parser::Result::Bailout'=> '3.35_01',
            'TAP::Parser::Result::Comment'=> '3.35_01',
            'TAP::Parser::Result::Plan'=> '3.35_01',
            'TAP::Parser::Result::Pragma'=> '3.35_01',
            'TAP::Parser::Result::Test'=> '3.35_01',
            'TAP::Parser::Result::Unknown'=> '3.35_01',
            'TAP::Parser::Result::Version'=> '3.35_01',
            'TAP::Parser::Result::YAML'=> '3.35_01',
            'TAP::Parser::ResultFactory'=> '3.35_01',
            'TAP::Parser::Scheduler'=> '3.35_01',
            'TAP::Parser::Scheduler::Job'=> '3.35_01',
            'TAP::Parser::Scheduler::Spinner'=> '3.35_01',
            'TAP::Parser::Source'   => '3.35_01',
            'TAP::Parser::SourceHandler'=> '3.35_01',
            'TAP::Parser::SourceHandler::Executable'=> '3.35_01',
            'TAP::Parser::SourceHandler::File'=> '3.35_01',
            'TAP::Parser::SourceHandler::Handle'=> '3.35_01',
            'TAP::Parser::SourceHandler::Perl'=> '3.35_01',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.35_01',
            'TAP::Parser::YAMLish::Reader'=> '3.35_01',
            'TAP::Parser::YAMLish::Writer'=> '3.35_01',
            'Test'                  => '1.26_01',
            'Test::Harness'         => '3.35_01',
            'XSLoader'              => '0.20_01',
            'bigint'                => '0.39_01',
            'bignum'                => '0.39_01',
            'bigrat'                => '0.39_01',
        },
        removed => {
        }
    },
    5.024001 => {
        delta_from => 5.024000,
        changed => {
            'App::Cpan'             => '1.63_01',
            'App::Prove'            => '3.36_01',
            'App::Prove::State'     => '3.36_01',
            'App::Prove::State::Result'=> '3.36_01',
            'App::Prove::State::Result::Test'=> '3.36_01',
            'Archive::Tar'          => '2.04_01',
            'Archive::Tar::Constant'=> '2.04_01',
            'Archive::Tar::File'    => '2.04_01',
            'B::Op_private'         => '5.024001',
            'CPAN'                  => '2.11_01',
            'Compress::Zlib'        => '2.069_001',
            'Config'                => '5.024001',
            'Cwd'                   => '3.63_01',
            'Digest'                => '1.17_01',
            'Digest::SHA'           => '5.95_01',
            'Encode'                => '2.80_01',
            'ExtUtils::Command'     => '7.10_02',
            'ExtUtils::Command::MM' => '7.10_02',
            'ExtUtils::Liblist'     => '7.10_02',
            'ExtUtils::Liblist::Kid'=> '7.10_02',
            'ExtUtils::MM'          => '7.10_02',
            'ExtUtils::MM_AIX'      => '7.10_02',
            'ExtUtils::MM_Any'      => '7.10_02',
            'ExtUtils::MM_BeOS'     => '7.10_02',
            'ExtUtils::MM_Cygwin'   => '7.10_02',
            'ExtUtils::MM_DOS'      => '7.10_02',
            'ExtUtils::MM_Darwin'   => '7.10_02',
            'ExtUtils::MM_MacOS'    => '7.10_02',
            'ExtUtils::MM_NW5'      => '7.10_02',
            'ExtUtils::MM_OS2'      => '7.10_02',
            'ExtUtils::MM_QNX'      => '7.10_02',
            'ExtUtils::MM_UWIN'     => '7.10_02',
            'ExtUtils::MM_Unix'     => '7.10_02',
            'ExtUtils::MM_VMS'      => '7.10_02',
            'ExtUtils::MM_VOS'      => '7.10_02',
            'ExtUtils::MM_Win32'    => '7.10_02',
            'ExtUtils::MM_Win95'    => '7.10_02',
            'ExtUtils::MY'          => '7.10_02',
            'ExtUtils::MakeMaker'   => '7.10_02',
            'ExtUtils::MakeMaker::Config'=> '7.10_02',
            'ExtUtils::Mkbootstrap' => '7.10_02',
            'ExtUtils::Mksymlists'  => '7.10_02',
            'ExtUtils::testlib'     => '7.10_02',
            'File::Fetch'           => '0.48_01',
            'File::Spec'            => '3.63_01',
            'File::Spec::Cygwin'    => '3.63_01',
            'File::Spec::Epoc'      => '3.63_01',
            'File::Spec::Functions' => '3.63_01',
            'File::Spec::Mac'       => '3.63_01',
            'File::Spec::OS2'       => '3.63_01',
            'File::Spec::Unix'      => '3.63_01',
            'File::Spec::VMS'       => '3.63_01',
            'File::Spec::Win32'     => '3.63_01',
            'HTTP::Tiny'            => '0.056_001',
            'I18N::LangTags::Detect'=> '1.05_01',
            'IO'                    => '1.36_01',
            'IO::Compress::Adapter::Bzip2'=> '2.069_001',
            'IO::Compress::Adapter::Deflate'=> '2.069_001',
            'IO::Compress::Adapter::Identity'=> '2.069_001',
            'IO::Compress::Base'    => '2.069_001',
            'IO::Compress::Base::Common'=> '2.069_001',
            'IO::Compress::Bzip2'   => '2.069_001',
            'IO::Compress::Deflate' => '2.069_001',
            'IO::Compress::Gzip'    => '2.069_001',
            'IO::Compress::Gzip::Constants'=> '2.069_001',
            'IO::Compress::RawDeflate'=> '2.069_001',
            'IO::Compress::Zip'     => '2.069_001',
            'IO::Compress::Zip::Constants'=> '2.069_001',
            'IO::Compress::Zlib::Constants'=> '2.069_001',
            'IO::Compress::Zlib::Extra'=> '2.069_001',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.069_001',
            'IO::Uncompress::Adapter::Identity'=> '2.069_001',
            'IO::Uncompress::Adapter::Inflate'=> '2.069_001',
            'IO::Uncompress::AnyInflate'=> '2.069_001',
            'IO::Uncompress::AnyUncompress'=> '2.069_001',
            'IO::Uncompress::Base'  => '2.069_001',
            'IO::Uncompress::Bunzip2'=> '2.069_001',
            'IO::Uncompress::Gunzip'=> '2.069_001',
            'IO::Uncompress::Inflate'=> '2.069_001',
            'IO::Uncompress::RawInflate'=> '2.069_001',
            'IO::Uncompress::Unzip' => '2.069_001',
            'IPC::Cmd'              => '0.92_01',
            'JSON::PP'              => '2.27300_01',
            'Locale::Maketext'      => '1.26_01',
            'Locale::Maketext::Simple'=> '0.21_01',
            'Math::BigFloat::Trace' => '0.42_01',
            'Math::BigInt::Trace'   => '0.42_01',
            'Memoize'               => '1.03_01',
            'Module::CoreList'      => '5.20170114_24',
            'Module::CoreList::TieHashDelta'=> '5.20170114_24',
            'Module::CoreList::Utils'=> '5.20170114_24',
            'Module::Metadata::corpus::BOMTest::UTF16BE'=> undef,
            'Module::Metadata::corpus::BOMTest::UTF16LE'=> undef,
            'Module::Metadata::corpus::BOMTest::UTF8'=> '1',
            'Net::Cmd'              => '3.08_01',
            'Net::Config'           => '3.08_01',
            'Net::Domain'           => '3.08_01',
            'Net::FTP'              => '3.08_01',
            'Net::FTP::A'           => '3.08_01',
            'Net::FTP::E'           => '3.08_01',
            'Net::FTP::I'           => '3.08_01',
            'Net::FTP::L'           => '3.08_01',
            'Net::FTP::dataconn'    => '3.08_01',
            'Net::NNTP'             => '3.08_01',
            'Net::Netrc'            => '3.08_01',
            'Net::POP3'             => '3.08_01',
            'Net::Ping'             => '2.43_01',
            'Net::SMTP'             => '3.08_01',
            'Net::Time'             => '3.08_01',
            'Parse::CPAN::Meta'     => '1.4417_001',
            'Pod::Html'             => '1.2201',
            'Pod::Perldoc'          => '3.25_03',
            'Storable'              => '2.56_01',
            'Sys::Syslog'           => '0.33_01',
            'TAP::Base'             => '3.36_01',
            'TAP::Formatter::Base'  => '3.36_01',
            'TAP::Formatter::Color' => '3.36_01',
            'TAP::Formatter::Console'=> '3.36_01',
            'TAP::Formatter::Console::ParallelSession'=> '3.36_01',
            'TAP::Formatter::Console::Session'=> '3.36_01',
            'TAP::Formatter::File'  => '3.36_01',
            'TAP::Formatter::File::Session'=> '3.36_01',
            'TAP::Formatter::Session'=> '3.36_01',
            'TAP::Harness'          => '3.36_01',
            'TAP::Harness::Env'     => '3.36_01',
            'TAP::Object'           => '3.36_01',
            'TAP::Parser'           => '3.36_01',
            'TAP::Parser::Aggregator'=> '3.36_01',
            'TAP::Parser::Grammar'  => '3.36_01',
            'TAP::Parser::Iterator' => '3.36_01',
            'TAP::Parser::Iterator::Array'=> '3.36_01',
            'TAP::Parser::Iterator::Process'=> '3.36_01',
            'TAP::Parser::Iterator::Stream'=> '3.36_01',
            'TAP::Parser::IteratorFactory'=> '3.36_01',
            'TAP::Parser::Multiplexer'=> '3.36_01',
            'TAP::Parser::Result'   => '3.36_01',
            'TAP::Parser::Result::Bailout'=> '3.36_01',
            'TAP::Parser::Result::Comment'=> '3.36_01',
            'TAP::Parser::Result::Plan'=> '3.36_01',
            'TAP::Parser::Result::Pragma'=> '3.36_01',
            'TAP::Parser::Result::Test'=> '3.36_01',
            'TAP::Parser::Result::Unknown'=> '3.36_01',
            'TAP::Parser::Result::Version'=> '3.36_01',
            'TAP::Parser::Result::YAML'=> '3.36_01',
            'TAP::Parser::ResultFactory'=> '3.36_01',
            'TAP::Parser::Scheduler'=> '3.36_01',
            'TAP::Parser::Scheduler::Job'=> '3.36_01',
            'TAP::Parser::Scheduler::Spinner'=> '3.36_01',
            'TAP::Parser::Source'   => '3.36_01',
            'TAP::Parser::SourceHandler'=> '3.36_01',
            'TAP::Parser::SourceHandler::Executable'=> '3.36_01',
            'TAP::Parser::SourceHandler::File'=> '3.36_01',
            'TAP::Parser::SourceHandler::Handle'=> '3.36_01',
            'TAP::Parser::SourceHandler::Perl'=> '3.36_01',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.36_01',
            'TAP::Parser::YAMLish::Reader'=> '3.36_01',
            'TAP::Parser::YAMLish::Writer'=> '3.36_01',
            'Test'                  => '1.28_01',
            'Test::Harness'         => '3.36_01',
            'XSLoader'              => '0.22',
            'bigint'                => '0.42_01',
            'bignum'                => '0.42_01',
            'bigrat'                => '0.42_01',
        },
        removed => {
        }
    },
    5.025009 => {
        delta_from => 5.025008,
        changed => {
            'App::Cpan'             => '1.66',
            'B::Deparse'            => '1.40',
            'B::Op_private'         => '5.025009',
            'B::Terse'              => '1.07',
            'B::Xref'               => '1.06',
            'CPAN'                  => '2.16',
            'CPAN::Bundle'          => '5.5002',
            'CPAN::Distribution'    => '2.16',
            'CPAN::Exception::RecursiveDependency'=> '5.5001',
            'CPAN::FTP'             => '5.5008',
            'CPAN::FirstTime'       => '5.5310',
            'CPAN::HandleConfig'    => '5.5008',
            'CPAN::Module'          => '5.5003',
            'Compress::Raw::Bzip2'  => '2.070',
            'Compress::Raw::Zlib'   => '2.070',
            'Config'                => '5.025009',
            'DB_File'               => '1.840',
            'Data::Dumper'          => '2.167',
            'Devel::SelfStubber'    => '1.06',
            'DynaLoader'            => '1.41',
            'Errno'                 => '1.28',
            'ExtUtils::Embed'       => '1.34',
            'File::Glob'            => '1.28',
            'I18N::LangTags'        => '0.42',
            'Module::CoreList'      => '5.20170120',
            'Module::CoreList::TieHashDelta'=> '5.20170120',
            'Module::CoreList::Utils'=> '5.20170120',
            'OS2::Process'          => '1.12',
            'PerlIO::scalar'        => '0.26',
            'Pod::Html'             => '1.2202',
            'Storable'              => '2.61',
            'Symbol'                => '1.08',
            'Term::ReadLine'        => '1.16',
            'Test'                  => '1.30',
            'Unicode::UCD'          => '0.68',
            'VMS::DCLsym'           => '1.08',
            'XS::APItest'           => '0.88',
            'XSLoader'              => '0.26',
            'attributes'            => '0.29',
            'diagnostics'           => '1.36',
            'feature'               => '1.46',
            'lib'                   => '0.64',
            'overload'              => '1.28',
            're'                    => '0.34',
            'threads'               => '2.12',
            'threads::shared'       => '1.54',
        },
        removed => {
        }
    },
    5.025010 => {
        delta_from => 5.025009,
        changed => {
            'B'                     => '1.68',
            'B::Op_private'         => '5.025010',
            'CPAN'                  => '2.17',
            'CPAN::Distribution'    => '2.17',
            'Config'                => '5.02501',
            'Getopt::Std'           => '1.12',
            'Module::CoreList'      => '5.20170220',
            'Module::CoreList::TieHashDelta'=> '5.20170220',
            'Module::CoreList::Utils'=> '5.20170220',
            'PerlIO'                => '1.10',
            'Storable'              => '2.62',
            'Thread::Queue'         => '3.12',
            'feature'               => '1.47',
            'open'                  => '1.11',
            'threads'               => '2.13',
        },
        removed => {
        }
    },
    5.025011 => {
        delta_from => 5.025010,
        changed => {
            'App::Prove'            => '3.38',
            'App::Prove::State'     => '3.38',
            'App::Prove::State::Result'=> '3.38',
            'App::Prove::State::Result::Test'=> '3.38',
            'B::Op_private'         => '5.025011',
            'Compress::Raw::Bzip2'  => '2.074',
            'Compress::Raw::Zlib'   => '2.074',
            'Compress::Zlib'        => '2.074',
            'Config'                => '5.025011',
            'Config::Perl::V'       => '0.28',
            'Cwd'                   => '3.67',
            'ExtUtils::ParseXS'     => '3.34',
            'ExtUtils::ParseXS::Constants'=> '3.34',
            'ExtUtils::ParseXS::CountLines'=> '3.34',
            'ExtUtils::ParseXS::Eval'=> '3.34',
            'ExtUtils::Typemaps'    => '3.34',
            'ExtUtils::Typemaps::Cmd'=> '3.34',
            'ExtUtils::Typemaps::InputMap'=> '3.34',
            'ExtUtils::Typemaps::OutputMap'=> '3.34',
            'ExtUtils::Typemaps::Type'=> '3.34',
            'File::Spec'            => '3.67',
            'File::Spec::AmigaOS'   => '3.67',
            'File::Spec::Cygwin'    => '3.67',
            'File::Spec::Epoc'      => '3.67',
            'File::Spec::Functions' => '3.67',
            'File::Spec::Mac'       => '3.67',
            'File::Spec::OS2'       => '3.67',
            'File::Spec::Unix'      => '3.67',
            'File::Spec::VMS'       => '3.67',
            'File::Spec::Win32'     => '3.67',
            'IO::Compress::Adapter::Bzip2'=> '2.074',
            'IO::Compress::Adapter::Deflate'=> '2.074',
            'IO::Compress::Adapter::Identity'=> '2.074',
            'IO::Compress::Base'    => '2.074',
            'IO::Compress::Base::Common'=> '2.074',
            'IO::Compress::Bzip2'   => '2.074',
            'IO::Compress::Deflate' => '2.074',
            'IO::Compress::Gzip'    => '2.074',
            'IO::Compress::Gzip::Constants'=> '2.074',
            'IO::Compress::RawDeflate'=> '2.074',
            'IO::Compress::Zip'     => '2.074',
            'IO::Compress::Zip::Constants'=> '2.074',
            'IO::Compress::Zlib::Constants'=> '2.074',
            'IO::Compress::Zlib::Extra'=> '2.074',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.074',
            'IO::Uncompress::Adapter::Identity'=> '2.074',
            'IO::Uncompress::Adapter::Inflate'=> '2.074',
            'IO::Uncompress::AnyInflate'=> '2.074',
            'IO::Uncompress::AnyUncompress'=> '2.074',
            'IO::Uncompress::Base'  => '2.074',
            'IO::Uncompress::Bunzip2'=> '2.074',
            'IO::Uncompress::Gunzip'=> '2.074',
            'IO::Uncompress::Inflate'=> '2.074',
            'IO::Uncompress::RawInflate'=> '2.074',
            'IO::Uncompress::Unzip' => '2.074',
            'Module::CoreList'      => '5.20170320',
            'Module::CoreList::TieHashDelta'=> '5.20170230',
            'Module::CoreList::Utils'=> '5.20170320',
            'Pod::Perldoc'          => '3.28',
            'Pod::Perldoc::BaseTo'  => '3.28',
            'Pod::Perldoc::GetOptsOO'=> '3.28',
            'Pod::Perldoc::ToANSI'  => '3.28',
            'Pod::Perldoc::ToChecker'=> '3.28',
            'Pod::Perldoc::ToMan'   => '3.28',
            'Pod::Perldoc::ToNroff' => '3.28',
            'Pod::Perldoc::ToPod'   => '3.28',
            'Pod::Perldoc::ToRtf'   => '3.28',
            'Pod::Perldoc::ToTerm'  => '3.28',
            'Pod::Perldoc::ToText'  => '3.28',
            'Pod::Perldoc::ToTk'    => '3.28',
            'Pod::Perldoc::ToXml'   => '3.28',
            'TAP::Base'             => '3.38',
            'TAP::Formatter::Base'  => '3.38',
            'TAP::Formatter::Color' => '3.38',
            'TAP::Formatter::Console'=> '3.38',
            'TAP::Formatter::Console::ParallelSession'=> '3.38',
            'TAP::Formatter::Console::Session'=> '3.38',
            'TAP::Formatter::File'  => '3.38',
            'TAP::Formatter::File::Session'=> '3.38',
            'TAP::Formatter::Session'=> '3.38',
            'TAP::Harness'          => '3.38',
            'TAP::Harness::Env'     => '3.38',
            'TAP::Object'           => '3.38',
            'TAP::Parser'           => '3.38',
            'TAP::Parser::Aggregator'=> '3.38',
            'TAP::Parser::Grammar'  => '3.38',
            'TAP::Parser::Iterator' => '3.38',
            'TAP::Parser::Iterator::Array'=> '3.38',
            'TAP::Parser::Iterator::Process'=> '3.38',
            'TAP::Parser::Iterator::Stream'=> '3.38',
            'TAP::Parser::IteratorFactory'=> '3.38',
            'TAP::Parser::Multiplexer'=> '3.38',
            'TAP::Parser::Result'   => '3.38',
            'TAP::Parser::Result::Bailout'=> '3.38',
            'TAP::Parser::Result::Comment'=> '3.38',
            'TAP::Parser::Result::Plan'=> '3.38',
            'TAP::Parser::Result::Pragma'=> '3.38',
            'TAP::Parser::Result::Test'=> '3.38',
            'TAP::Parser::Result::Unknown'=> '3.38',
            'TAP::Parser::Result::Version'=> '3.38',
            'TAP::Parser::Result::YAML'=> '3.38',
            'TAP::Parser::ResultFactory'=> '3.38',
            'TAP::Parser::Scheduler'=> '3.38',
            'TAP::Parser::Scheduler::Job'=> '3.38',
            'TAP::Parser::Scheduler::Spinner'=> '3.38',
            'TAP::Parser::Source'   => '3.38',
            'TAP::Parser::SourceHandler'=> '3.38',
            'TAP::Parser::SourceHandler::Executable'=> '3.38',
            'TAP::Parser::SourceHandler::File'=> '3.38',
            'TAP::Parser::SourceHandler::Handle'=> '3.38',
            'TAP::Parser::SourceHandler::Perl'=> '3.38',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.38',
            'TAP::Parser::YAMLish::Reader'=> '3.38',
            'TAP::Parser::YAMLish::Writer'=> '3.38',
            'Test::Harness'         => '3.38',
            'VMS::Stdio'            => '2.41',
            'threads'               => '2.15',
            'threads::shared'       => '1.55',
        },
        removed => {
        }
    },
    5.025012 => {
        delta_from => 5.025011,
        changed => {
            'B::Op_private'         => '5.025012',
            'CPAN'                  => '2.18',
            'CPAN::Bundle'          => '5.5003',
            'CPAN::Distribution'    => '2.18',
            'Config'                => '5.025012',
            'DynaLoader'            => '1.42',
            'Module::CoreList'      => '5.20170420',
            'Module::CoreList::TieHashDelta'=> '5.20170420',
            'Module::CoreList::Utils'=> '5.20170420',
            'Safe'                  => '2.40',
            'XSLoader'              => '0.27',
            'base'                  => '2.25',
            'threads::shared'       => '1.56',
        },
        removed => {
        }
    },
    5.026000 => {
        delta_from => 5.025012,
        changed => {
            'B::Op_private'         => '5.026000',
            'Config'                => '5.026',
            'Module::CoreList'      => '5.20170530',
            'Module::CoreList::TieHashDelta'=> '5.20170530',
            'Module::CoreList::Utils'=> '5.20170530',
        },
        removed => {
        }
    },
    5.027000 => {
        delta_from => 5.026000,
        changed => {
            'Attribute::Handlers'   => '1.00',
            'B::Concise'            => '1.000',
            'B::Deparse'            => '1.41',
            'B::Op_private'         => '5.027000',
            'Config'                => '5.027',
            'Module::CoreList'      => '5.20170531',
            'Module::CoreList::TieHashDelta'=> '5.20170531',
            'Module::CoreList::Utils'=> '5.20170531',
            'O'                     => '1.02',
            'attributes'            => '0.3',
            'feature'               => '1.48',
        },
        removed => {
        }
    },
    5.027001 => {
        delta_from => 5.027,
        changed => {
            'App::Prove'            => '3.39',
            'App::Prove::State'     => '3.39',
            'App::Prove::State::Result'=> '3.39',
            'App::Prove::State::Result::Test'=> '3.39',
            'Archive::Tar'          => '2.26',
            'Archive::Tar::Constant'=> '2.26',
            'Archive::Tar::File'    => '2.26',
            'B::Op_private'         => '5.027001',
            'B::Terse'              => '1.08',
            'Config'                => '5.027001',
            'Devel::PPPort'         => '3.36',
            'DirHandle'             => '1.05',
            'ExtUtils::Command'     => '7.30',
            'ExtUtils::Command::MM' => '7.30',
            'ExtUtils::Install'     => '2.14',
            'ExtUtils::Installed'   => '2.14',
            'ExtUtils::Liblist'     => '7.30',
            'ExtUtils::Liblist::Kid'=> '7.30',
            'ExtUtils::MM'          => '7.30',
            'ExtUtils::MM_AIX'      => '7.30',
            'ExtUtils::MM_Any'      => '7.30',
            'ExtUtils::MM_BeOS'     => '7.30',
            'ExtUtils::MM_Cygwin'   => '7.30',
            'ExtUtils::MM_DOS'      => '7.30',
            'ExtUtils::MM_Darwin'   => '7.30',
            'ExtUtils::MM_MacOS'    => '7.30',
            'ExtUtils::MM_NW5'      => '7.30',
            'ExtUtils::MM_OS2'      => '7.30',
            'ExtUtils::MM_QNX'      => '7.30',
            'ExtUtils::MM_UWIN'     => '7.30',
            'ExtUtils::MM_Unix'     => '7.30',
            'ExtUtils::MM_VMS'      => '7.30',
            'ExtUtils::MM_VOS'      => '7.30',
            'ExtUtils::MM_Win32'    => '7.30',
            'ExtUtils::MM_Win95'    => '7.30',
            'ExtUtils::MY'          => '7.30',
            'ExtUtils::MakeMaker'   => '7.30',
            'ExtUtils::MakeMaker::Config'=> '7.30',
            'ExtUtils::MakeMaker::Locale'=> '7.30',
            'ExtUtils::MakeMaker::version'=> '7.30',
            'ExtUtils::MakeMaker::version::regex'=> '7.30',
            'ExtUtils::Mkbootstrap' => '7.30',
            'ExtUtils::Mksymlists'  => '7.30',
            'ExtUtils::Packlist'    => '2.14',
            'ExtUtils::testlib'     => '7.30',
            'File::Path'            => '2.14',
            'Filter::Util::Call'    => '1.57',
            'GDBM_File'             => '1.16',
            'Getopt::Long'          => '2.5',
            'IO::Socket::IP'        => '0.39',
            'IPC::Cmd'              => '0.98',
            'JSON::PP'              => '2.94',
            'JSON::PP::Boolean'     => '2.94',
            'Locale::Codes'         => '3.52',
            'Locale::Codes::Constants'=> '3.52',
            'Locale::Codes::Country'=> '3.52',
            'Locale::Codes::Country_Codes'=> '3.52',
            'Locale::Codes::Country_Retired'=> '3.52',
            'Locale::Codes::Currency'=> '3.52',
            'Locale::Codes::Currency_Codes'=> '3.52',
            'Locale::Codes::Currency_Retired'=> '3.52',
            'Locale::Codes::LangExt'=> '3.52',
            'Locale::Codes::LangExt_Codes'=> '3.52',
            'Locale::Codes::LangExt_Retired'=> '3.52',
            'Locale::Codes::LangFam'=> '3.52',
            'Locale::Codes::LangFam_Codes'=> '3.52',
            'Locale::Codes::LangFam_Retired'=> '3.52',
            'Locale::Codes::LangVar'=> '3.52',
            'Locale::Codes::LangVar_Codes'=> '3.52',
            'Locale::Codes::LangVar_Retired'=> '3.52',
            'Locale::Codes::Language'=> '3.52',
            'Locale::Codes::Language_Codes'=> '3.52',
            'Locale::Codes::Language_Retired'=> '3.52',
            'Locale::Codes::Script' => '3.52',
            'Locale::Codes::Script_Codes'=> '3.52',
            'Locale::Codes::Script_Retired'=> '3.52',
            'Locale::Country'       => '3.52',
            'Locale::Currency'      => '3.52',
            'Locale::Language'      => '3.52',
            'Locale::Script'        => '3.52',
            'Module::CoreList'      => '5.20170621',
            'Module::CoreList::TieHashDelta'=> '5.20170621',
            'Module::CoreList::Utils'=> '5.20170621',
            'PerlIO::scalar'        => '0.27',
            'PerlIO::via'           => '0.17',
            'Storable'              => '2.63',
            'TAP::Base'             => '3.39',
            'TAP::Formatter::Base'  => '3.39',
            'TAP::Formatter::Color' => '3.39',
            'TAP::Formatter::Console'=> '3.39',
            'TAP::Formatter::Console::ParallelSession'=> '3.39',
            'TAP::Formatter::Console::Session'=> '3.39',
            'TAP::Formatter::File'  => '3.39',
            'TAP::Formatter::File::Session'=> '3.39',
            'TAP::Formatter::Session'=> '3.39',
            'TAP::Harness'          => '3.39',
            'TAP::Harness::Env'     => '3.39',
            'TAP::Object'           => '3.39',
            'TAP::Parser'           => '3.39',
            'TAP::Parser::Aggregator'=> '3.39',
            'TAP::Parser::Grammar'  => '3.39',
            'TAP::Parser::Iterator' => '3.39',
            'TAP::Parser::Iterator::Array'=> '3.39',
            'TAP::Parser::Iterator::Process'=> '3.39',
            'TAP::Parser::Iterator::Stream'=> '3.39',
            'TAP::Parser::IteratorFactory'=> '3.39',
            'TAP::Parser::Multiplexer'=> '3.39',
            'TAP::Parser::Result'   => '3.39',
            'TAP::Parser::Result::Bailout'=> '3.39',
            'TAP::Parser::Result::Comment'=> '3.39',
            'TAP::Parser::Result::Plan'=> '3.39',
            'TAP::Parser::Result::Pragma'=> '3.39',
            'TAP::Parser::Result::Test'=> '3.39',
            'TAP::Parser::Result::Unknown'=> '3.39',
            'TAP::Parser::Result::Version'=> '3.39',
            'TAP::Parser::Result::YAML'=> '3.39',
            'TAP::Parser::ResultFactory'=> '3.39',
            'TAP::Parser::Scheduler'=> '3.39',
            'TAP::Parser::Scheduler::Job'=> '3.39',
            'TAP::Parser::Scheduler::Spinner'=> '3.39',
            'TAP::Parser::Source'   => '3.39',
            'TAP::Parser::SourceHandler'=> '3.39',
            'TAP::Parser::SourceHandler::Executable'=> '3.39',
            'TAP::Parser::SourceHandler::File'=> '3.39',
            'TAP::Parser::SourceHandler::Handle'=> '3.39',
            'TAP::Parser::SourceHandler::Perl'=> '3.39',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.39',
            'TAP::Parser::YAMLish::Reader'=> '3.39',
            'TAP::Parser::YAMLish::Writer'=> '3.39',
            'Test::Harness'         => '3.39',
            'XS::APItest'           => '0.89',
            '_charnames'            => '1.45',
            'charnames'             => '1.45',
            'if'                    => '0.0607',
            'mro'                   => '1.21',
            'threads'               => '2.16',
            'threads::shared'       => '1.57',
            'version'               => '0.9918',
            'version::regex'        => '0.9918',
        },
        removed => {
        }
    },
    5.022004 => {
        delta_from => 5.022003,
        changed => {
            'B::Op_private'         => '5.022004',
            'Config'                => '5.022004',
            'Module::CoreList'      => '5.20170715_22',
            'Module::CoreList::TieHashDelta'=> '5.20170715_22',
            'Module::CoreList::Utils'=> '5.20170715_22',
            'base'                  => '2.22_01',
        },
        removed => {
        }
    },
    5.024002 => {
        delta_from => 5.024001,
        changed => {
            'B::Op_private'         => '5.024002',
            'Config'                => '5.024002',
            'Module::CoreList'      => '5.20170715_24',
            'Module::CoreList::TieHashDelta'=> '5.20170715_24',
            'Module::CoreList::Utils'=> '5.20170715_24',
            'base'                  => '2.23_01',
        },
        removed => {
        }
    },
    5.027002 => {
        delta_from => 5.027001,
        changed => {
            'B::Op_private'         => '5.027002',
            'Carp'                  => '1.43',
            'Carp::Heavy'           => '1.43',
            'Config'                => '5.027002',
            'Cwd'                   => '3.68',
            'Encode'                => '2.92',
            'Encode::Alias'         => '2.23',
            'Encode::CN::HZ'        => '2.09',
            'Encode::Encoding'      => '2.08',
            'Encode::GSM0338'       => '2.07',
            'Encode::Guess'         => '2.07',
            'Encode::JP::JIS7'      => '2.07',
            'Encode::KR::2022_KR'   => '2.04',
            'Encode::MIME::Header'  => '2.27',
            'Encode::MIME::Header::ISO_2022_JP'=> '1.09',
            'Encode::Unicode'       => '2.16',
            'Encode::Unicode::UTF7' => '2.10',
            'ExtUtils::CBuilder'    => '0.280228',
            'ExtUtils::CBuilder::Base'=> '0.280228',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280228',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280228',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280228',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280228',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280228',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280228',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280228',
            'ExtUtils::CBuilder::Platform::android'=> '0.280228',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280228',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280228',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280228',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280228',
            'File::Glob'            => '1.29',
            'File::Spec'            => '3.68',
            'File::Spec::AmigaOS'   => '3.68',
            'File::Spec::Cygwin'    => '3.68',
            'File::Spec::Epoc'      => '3.68',
            'File::Spec::Functions' => '3.68',
            'File::Spec::Mac'       => '3.68',
            'File::Spec::OS2'       => '3.68',
            'File::Spec::Unix'      => '3.68',
            'File::Spec::VMS'       => '3.68',
            'File::Spec::Win32'     => '3.68',
            'List::Util'            => '1.48',
            'List::Util::XS'        => '1.48',
            'Math::BigRat'          => '0.2613',
            'Module::CoreList'      => '5.20170720',
            'Module::CoreList::TieHashDelta'=> '5.20170720',
            'Module::CoreList::Utils'=> '5.20170720',
            'Opcode'                => '1.40',
            'POSIX'                 => '1.77',
            'PerlIO::scalar'        => '0.29',
            'Scalar::Util'          => '1.48',
            'Sub::Util'             => '1.48',
            'Time::HiRes'           => '1.9743',
            'Time::Piece'           => '1.3201',
            'Time::Seconds'         => '1.3201',
            'Unicode'               => '10.0.0',
            'XS::APItest'           => '0.90',
            'arybase'               => '0.13',
            'encoding'              => '2.20',
            'feature'               => '1.49',
            're'                    => '0.35',
        },
        removed => {
        }
    },
    5.027003 => {
        delta_from => 5.027002,
        changed => {
            'B'                     => '1.69',
            'B::Concise'            => '1.001',
            'B::Debug'              => '1.25',
            'B::Deparse'            => '1.42',
            'B::Op_private'         => '5.027003',
            'Config'                => '5.027003',
            'Data::Dumper'          => '2.167_02',
            'Devel::Peek'           => '1.27',
            'ExtUtils::Constant'    => '0.24',
            'ExtUtils::Constant::Base'=> '0.06',
            'ExtUtils::Constant::ProxySubs'=> '0.09',
            'ExtUtils::Constant::Utils'=> '0.04',
            'ExtUtils::ParseXS'     => '3.35',
            'ExtUtils::ParseXS::Constants'=> '3.35',
            'ExtUtils::ParseXS::CountLines'=> '3.35',
            'ExtUtils::ParseXS::Eval'=> '3.35',
            'ExtUtils::ParseXS::Utilities'=> '3.35',
            'ExtUtils::Typemaps'    => '3.35',
            'ExtUtils::Typemaps::Cmd'=> '3.35',
            'ExtUtils::Typemaps::InputMap'=> '3.35',
            'ExtUtils::Typemaps::OutputMap'=> '3.35',
            'ExtUtils::Typemaps::Type'=> '3.35',
            'Filter::Simple'        => '0.94',
            'Module::CoreList'      => '5.20170821',
            'Module::CoreList::TieHashDelta'=> '5.20170821',
            'Module::CoreList::Utils'=> '5.20170821',
            'SelfLoader'            => '1.24',
            'Storable'              => '2.64',
            'XS::APItest'           => '0.91',
            'base'                  => '2.26',
            'threads'               => '2.17',
            'utf8'                  => '1.20',
        },
        removed => {
        }
    },
    5.027004 => {
        delta_from => 5.027003,
        changed => {
            'B::Op_private'         => '5.027004',
            'Config'                => '5.027004',
            'File::Glob'            => '1.30',
            'I18N::Langinfo'        => '0.14',
            'Module::CoreList'      => '5.20170920',
            'Module::CoreList::TieHashDelta'=> '5.20170920',
            'Module::CoreList::Utils'=> '5.20170920',
            'Term::ReadLine'        => '1.17',
            'VMS::Stdio'            => '2.42',
            'XS::APItest'           => '0.92',
            'attributes'            => '0.31',
            'sort'                  => '2.03',
            'threads'               => '2.18',
        },
        removed => {
        }
    },
    5.024003 => {
        delta_from => 5.024002,
        changed => {
            'B::Op_private'         => '5.024003',
            'Config'                => '5.024003',
            'Module::CoreList'      => '5.20170922_24',
            'Module::CoreList::TieHashDelta'=> '5.20170922_24',
            'Module::CoreList::Utils'=> '5.20170922_24',
            'POSIX'                 => '1.65_01',
            'Time::HiRes'           => '1.9741',
        },
        removed => {
        }
    },
    5.026001 => {
        delta_from => 5.026000,
        changed => {
            'B::Op_private'         => '5.026001',
            'Config'                => '5.026001',
            'Module::CoreList'      => '5.20170922_26',
            'Module::CoreList::TieHashDelta'=> '5.20170922_26',
            'Module::CoreList::Utils'=> '5.20170922_26',
            '_charnames'            => '1.45',
            'base'                  => '2.26',
            'charnames'             => '1.45',
        },
        removed => {
        }
    },
    5.027005 => {
        delta_from => 5.027004,
        changed => {
            'B'                     => '1.70',
            'B::Concise'            => '1.002',
            'B::Deparse'            => '1.43',
            'B::Op_private'         => '5.027005',
            'B::Xref'               => '1.07',
            'Config'                => '5.027005',
            'Config::Perl::V'       => '0.29',
            'Digest::SHA'           => '5.98',
            'Encode'                => '2.93',
            'Encode::CN::HZ'        => '2.10',
            'Encode::JP::JIS7'      => '2.08',
            'Encode::MIME::Header'  => '2.28',
            'Encode::MIME::Name'    => '1.03',
            'File::Fetch'           => '0.54',
            'File::Path'            => '2.15',
            'List::Util'            => '1.49',
            'List::Util::XS'        => '1.49',
            'Locale::Codes'         => '3.54',
            'Locale::Codes::Constants'=> '3.54',
            'Locale::Codes::Country'=> '3.54',
            'Locale::Codes::Country_Codes'=> '3.54',
            'Locale::Codes::Country_Retired'=> '3.54',
            'Locale::Codes::Currency'=> '3.54',
            'Locale::Codes::Currency_Codes'=> '3.54',
            'Locale::Codes::Currency_Retired'=> '3.54',
            'Locale::Codes::LangExt'=> '3.54',
            'Locale::Codes::LangExt_Codes'=> '3.54',
            'Locale::Codes::LangExt_Retired'=> '3.54',
            'Locale::Codes::LangFam'=> '3.54',
            'Locale::Codes::LangFam_Codes'=> '3.54',
            'Locale::Codes::LangFam_Retired'=> '3.54',
            'Locale::Codes::LangVar'=> '3.54',
            'Locale::Codes::LangVar_Codes'=> '3.54',
            'Locale::Codes::LangVar_Retired'=> '3.54',
            'Locale::Codes::Language'=> '3.54',
            'Locale::Codes::Language_Codes'=> '3.54',
            'Locale::Codes::Language_Retired'=> '3.54',
            'Locale::Codes::Script' => '3.54',
            'Locale::Codes::Script_Codes'=> '3.54',
            'Locale::Codes::Script_Retired'=> '3.54',
            'Locale::Country'       => '3.54',
            'Locale::Currency'      => '3.54',
            'Locale::Language'      => '3.54',
            'Locale::Script'        => '3.54',
            'Math::BigFloat'        => '1.999811',
            'Math::BigInt'          => '1.999811',
            'Math::BigInt::Calc'    => '1.999811',
            'Math::BigInt::CalcEmu' => '1.999811',
            'Math::BigInt::FastCalc'=> '0.5006',
            'Math::BigInt::Lib'     => '1.999811',
            'Module::CoreList'      => '5.20171020',
            'Module::CoreList::TieHashDelta'=> '5.20171020',
            'Module::CoreList::Utils'=> '5.20171020',
            'NEXT'                  => '0.67_01',
            'POSIX'                 => '1.78',
            'Pod::Perldoc'          => '3.2801',
            'Scalar::Util'          => '1.49',
            'Sub::Util'             => '1.49',
            'Sys::Hostname'         => '1.21',
            'Test2'                 => '1.302103',
            'Test2::API'            => '1.302103',
            'Test2::API::Breakage'  => '1.302103',
            'Test2::API::Context'   => '1.302103',
            'Test2::API::Instance'  => '1.302103',
            'Test2::API::Stack'     => '1.302103',
            'Test2::Event'          => '1.302103',
            'Test2::Event::Bail'    => '1.302103',
            'Test2::Event::Diag'    => '1.302103',
            'Test2::Event::Encoding'=> '1.302103',
            'Test2::Event::Exception'=> '1.302103',
            'Test2::Event::Fail'    => '1.302103',
            'Test2::Event::Generic' => '1.302103',
            'Test2::Event::Note'    => '1.302103',
            'Test2::Event::Ok'      => '1.302103',
            'Test2::Event::Pass'    => '1.302103',
            'Test2::Event::Plan'    => '1.302103',
            'Test2::Event::Skip'    => '1.302103',
            'Test2::Event::Subtest' => '1.302103',
            'Test2::Event::TAP::Version'=> '1.302103',
            'Test2::Event::Waiting' => '1.302103',
            'Test2::EventFacet'     => '1.302103',
            'Test2::EventFacet::About'=> '1.302103',
            'Test2::EventFacet::Amnesty'=> '1.302103',
            'Test2::EventFacet::Assert'=> '1.302103',
            'Test2::EventFacet::Control'=> '1.302103',
            'Test2::EventFacet::Error'=> '1.302103',
            'Test2::EventFacet::Info'=> '1.302103',
            'Test2::EventFacet::Meta'=> '1.302103',
            'Test2::EventFacet::Parent'=> '1.302103',
            'Test2::EventFacet::Plan'=> '1.302103',
            'Test2::EventFacet::Trace'=> '1.302103',
            'Test2::Formatter'      => '1.302103',
            'Test2::Formatter::TAP' => '1.302103',
            'Test2::Hub'            => '1.302103',
            'Test2::Hub::Interceptor'=> '1.302103',
            'Test2::Hub::Interceptor::Terminator'=> '1.302103',
            'Test2::Hub::Subtest'   => '1.302103',
            'Test2::IPC'            => '1.302103',
            'Test2::IPC::Driver'    => '1.302103',
            'Test2::IPC::Driver::Files'=> '1.302103',
            'Test2::Tools::Tiny'    => '1.302103',
            'Test2::Util'           => '1.302103',
            'Test2::Util::ExternalMeta'=> '1.302103',
            'Test2::Util::Facets2Legacy'=> '1.302103',
            'Test2::Util::HashBase' => '0.005',
            'Test2::Util::Trace'    => '1.302103',
            'Test::Builder'         => '1.302103',
            'Test::Builder::Formatter'=> '1.302103',
            'Test::Builder::IO::Scalar'=> '2.114',
            'Test::Builder::Module' => '1.302103',
            'Test::Builder::Tester' => '1.302103',
            'Test::Builder::Tester::Color'=> '1.302103',
            'Test::Builder::TodoDiag'=> '1.302103',
            'Test::More'            => '1.302103',
            'Test::Simple'          => '1.302103',
            'Test::Tester'          => '1.302103',
            'Test::Tester::Capture' => '1.302103',
            'Test::Tester::CaptureRunner'=> '1.302103',
            'Test::Tester::Delegate'=> '1.302103',
            'Test::use::ok'         => '1.302103',
            'Time::HiRes'           => '1.9746',
            'Time::Piece'           => '1.3202',
            'Time::Seconds'         => '1.3202',
            'arybase'               => '0.14',
            'encoding'              => '2.21',
            'ok'                    => '1.302103',
        },
        removed => {
            'Test2::Event::Info'    => 1,
        }
    },
    5.027006 => {
        delta_from => 5.027005,
        changed => {
            'Attribute::Handlers'   => '1.01',
            'B'                     => '1.72',
            'B::Concise'            => '1.003',
            'B::Deparse'            => '1.45',
            'B::Op_private'         => '5.027006',
            'Carp'                  => '1.44',
            'Carp::Heavy'           => '1.44',
            'Compress::Raw::Zlib'   => '2.075',
            'Config'                => '5.027006',
            'Config::Extensions'    => '0.02',
            'Cwd'                   => '3.70',
            'DynaLoader'            => '1.44',
            'ExtUtils::CBuilder'    => '0.280229',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280229',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280229',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280229',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280229',
            'ExtUtils::CBuilder::Platform::android'=> '0.280229',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280229',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280229',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280229',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280229',
            'ExtUtils::Embed'       => '1.35',
            'ExtUtils::Miniperl'    => '1.07',
            'ExtUtils::ParseXS'     => '3.36',
            'ExtUtils::ParseXS::Constants'=> '3.36',
            'ExtUtils::ParseXS::CountLines'=> '3.36',
            'ExtUtils::ParseXS::Eval'=> '3.36',
            'ExtUtils::ParseXS::Utilities'=> '3.36',
            'ExtUtils::Typemaps'    => '3.36',
            'ExtUtils::Typemaps::Cmd'=> '3.36',
            'ExtUtils::Typemaps::InputMap'=> '3.36',
            'ExtUtils::Typemaps::OutputMap'=> '3.36',
            'ExtUtils::Typemaps::Type'=> '3.36',
            'ExtUtils::XSSymSet'    => '1.4',
            'File::Copy'            => '2.33',
            'File::Spec'            => '3.69',
            'File::Spec::AmigaOS'   => '3.69',
            'File::Spec::Cygwin'    => '3.69',
            'File::Spec::Epoc'      => '3.69',
            'File::Spec::Functions' => '3.69',
            'File::Spec::Mac'       => '3.69',
            'File::Spec::OS2'       => '3.69',
            'File::Spec::Unix'      => '3.69',
            'File::Spec::VMS'       => '3.69',
            'File::Spec::Win32'     => '3.69',
            'File::stat'            => '1.08',
            'FileCache'             => '1.10',
            'Filter::Simple'        => '0.95',
            'Hash::Util::FieldHash' => '1.20',
            'I18N::LangTags'        => '0.43',
            'I18N::LangTags::Detect'=> '1.07',
            'I18N::LangTags::List'  => '0.40',
            'I18N::Langinfo'        => '0.15',
            'IO::Handle'            => '1.37',
            'IO::Select'            => '1.23',
            'Locale::Maketext'      => '1.29',
            'Module::CoreList'      => '5.20171120',
            'Module::CoreList::TieHashDelta'=> '5.20171120',
            'Module::CoreList::Utils'=> '5.20171120',
            'Net::Cmd'              => '3.11',
            'Net::Config'           => '3.11',
            'Net::Domain'           => '3.11',
            'Net::FTP'              => '3.11',
            'Net::FTP::A'           => '3.11',
            'Net::FTP::E'           => '3.11',
            'Net::FTP::I'           => '3.11',
            'Net::FTP::L'           => '3.11',
            'Net::FTP::dataconn'    => '3.11',
            'Net::NNTP'             => '3.11',
            'Net::Netrc'            => '3.11',
            'Net::POP3'             => '3.11',
            'Net::Ping'             => '2.62',
            'Net::SMTP'             => '3.11',
            'Net::Time'             => '3.11',
            'Net::hostent'          => '1.02',
            'Net::netent'           => '1.01',
            'Net::protoent'         => '1.01',
            'Net::servent'          => '1.02',
            'O'                     => '1.03',
            'ODBM_File'             => '1.15',
            'Opcode'                => '1.41',
            'POSIX'                 => '1.80',
            'Pod::Html'             => '1.2203',
            'SelfLoader'            => '1.25',
            'Socket'                => '2.020_04',
            'Storable'              => '2.65',
            'Test'                  => '1.31',
            'Test2'                 => '1.302111',
            'Test2::API'            => '1.302111',
            'Test2::API::Breakage'  => '1.302111',
            'Test2::API::Context'   => '1.302111',
            'Test2::API::Instance'  => '1.302111',
            'Test2::API::Stack'     => '1.302111',
            'Test2::Event'          => '1.302111',
            'Test2::Event::Bail'    => '1.302111',
            'Test2::Event::Diag'    => '1.302111',
            'Test2::Event::Encoding'=> '1.302111',
            'Test2::Event::Exception'=> '1.302111',
            'Test2::Event::Fail'    => '1.302111',
            'Test2::Event::Generic' => '1.302111',
            'Test2::Event::Note'    => '1.302111',
            'Test2::Event::Ok'      => '1.302111',
            'Test2::Event::Pass'    => '1.302111',
            'Test2::Event::Plan'    => '1.302111',
            'Test2::Event::Skip'    => '1.302111',
            'Test2::Event::Subtest' => '1.302111',
            'Test2::Event::TAP::Version'=> '1.302111',
            'Test2::Event::Waiting' => '1.302111',
            'Test2::EventFacet'     => '1.302111',
            'Test2::EventFacet::About'=> '1.302111',
            'Test2::EventFacet::Amnesty'=> '1.302111',
            'Test2::EventFacet::Assert'=> '1.302111',
            'Test2::EventFacet::Control'=> '1.302111',
            'Test2::EventFacet::Error'=> '1.302111',
            'Test2::EventFacet::Info'=> '1.302111',
            'Test2::EventFacet::Meta'=> '1.302111',
            'Test2::EventFacet::Parent'=> '1.302111',
            'Test2::EventFacet::Plan'=> '1.302111',
            'Test2::EventFacet::Trace'=> '1.302111',
            'Test2::Formatter'      => '1.302111',
            'Test2::Formatter::TAP' => '1.302111',
            'Test2::Hub'            => '1.302111',
            'Test2::Hub::Interceptor'=> '1.302111',
            'Test2::Hub::Interceptor::Terminator'=> '1.302111',
            'Test2::Hub::Subtest'   => '1.302111',
            'Test2::IPC'            => '1.302111',
            'Test2::IPC::Driver'    => '1.302111',
            'Test2::IPC::Driver::Files'=> '1.302111',
            'Test2::Tools::Tiny'    => '1.302111',
            'Test2::Util'           => '1.302111',
            'Test2::Util::ExternalMeta'=> '1.302111',
            'Test2::Util::Facets2Legacy'=> '1.302111',
            'Test2::Util::HashBase' => '1.302111',
            'Test2::Util::Trace'    => '1.302111',
            'Test::Builder'         => '1.302111',
            'Test::Builder::Formatter'=> '1.302111',
            'Test::Builder::Module' => '1.302111',
            'Test::Builder::Tester' => '1.302111',
            'Test::Builder::Tester::Color'=> '1.302111',
            'Test::Builder::TodoDiag'=> '1.302111',
            'Test::More'            => '1.302111',
            'Test::Simple'          => '1.302111',
            'Test::Tester'          => '1.302111',
            'Test::Tester::Capture' => '1.302111',
            'Test::Tester::CaptureRunner'=> '1.302111',
            'Test::Tester::Delegate'=> '1.302111',
            'Test::use::ok'         => '1.302111',
            'Tie::Array'            => '1.07',
            'Tie::StdHandle'        => '4.5',
            'Time::HiRes'           => '1.9747',
            'Time::gmtime'          => '1.04',
            'Time::localtime'       => '1.03',
            'Unicode::Collate'      => '1.23',
            'Unicode::Collate::CJK::Big5'=> '1.23',
            'Unicode::Collate::CJK::GB2312'=> '1.23',
            'Unicode::Collate::CJK::JISX0208'=> '1.23',
            'Unicode::Collate::CJK::Korean'=> '1.23',
            'Unicode::Collate::CJK::Pinyin'=> '1.23',
            'Unicode::Collate::CJK::Stroke'=> '1.23',
            'Unicode::Collate::CJK::Zhuyin'=> '1.23',
            'Unicode::Collate::Locale'=> '1.23',
            'Unicode::Normalize'    => '1.26',
            'User::grent'           => '1.02',
            'User::pwent'           => '1.01',
            'VMS::DCLsym'           => '1.09',
            'VMS::Stdio'            => '2.44',
            'XS::APItest'           => '0.93',
            'XS::Typemap'           => '0.16',
            'XSLoader'              => '0.28',
            'attributes'            => '0.32',
            'base'                  => '2.27',
            'blib'                  => '1.07',
            'experimental'          => '0.017',
            'fields'                => '2.24',
            'ok'                    => '1.302111',
            're'                    => '0.36',
            'sort'                  => '2.04',
            'threads'               => '2.19',
            'warnings'              => '1.38',
        },
        removed => {
        }
    },
    5.027007 => {
        delta_from => 5.027006,
        changed => {
            'App::Cpan'             => '1.67',
            'B'                     => '1.73',
            'B::Debug'              => '1.26',
            'B::Deparse'            => '1.46',
            'B::Op_private'         => '5.027007',
            'CPAN'                  => '2.20',
            'CPAN::Distribution'    => '2.19',
            'CPAN::FTP'             => '5.5011',
            'CPAN::FirstTime'       => '5.5311',
            'CPAN::Shell'           => '5.5007',
            'Carp'                  => '1.45',
            'Carp::Heavy'           => '1.45',
            'Compress::Raw::Zlib'   => '2.076',
            'Config'                => '5.027007',
            'Cwd'                   => '3.71',
            'Data::Dumper'          => '2.169',
            'Devel::PPPort'         => '3.37',
            'Digest::SHA'           => '6.00',
            'DynaLoader'            => '1.45',
            'ExtUtils::CBuilder'    => '0.280230',
            'ExtUtils::CBuilder::Base'=> '0.280230',
            'ExtUtils::CBuilder::Platform::Unix'=> '0.280230',
            'ExtUtils::CBuilder::Platform::VMS'=> '0.280230',
            'ExtUtils::CBuilder::Platform::Windows'=> '0.280230',
            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280230',
            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280230',
            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280230',
            'ExtUtils::CBuilder::Platform::aix'=> '0.280230',
            'ExtUtils::CBuilder::Platform::android'=> '0.280230',
            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280230',
            'ExtUtils::CBuilder::Platform::darwin'=> '0.280230',
            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280230',
            'ExtUtils::CBuilder::Platform::os2'=> '0.280230',
            'ExtUtils::Typemaps'    => '3.37',
            'File::Fetch'           => '0.56',
            'File::Spec'            => '3.71',
            'File::Spec::AmigaOS'   => '3.71',
            'File::Spec::Cygwin'    => '3.71',
            'File::Spec::Epoc'      => '3.71',
            'File::Spec::Functions' => '3.71',
            'File::Spec::Mac'       => '3.71',
            'File::Spec::OS2'       => '3.71',
            'File::Spec::Unix'      => '3.71',
            'File::Spec::VMS'       => '3.71',
            'File::Spec::Win32'     => '3.71',
            'Filter::Util::Call'    => '1.58',
            'GDBM_File'             => '1.17',
            'JSON::PP'              => '2.97000',
            'JSON::PP::Boolean'     => '2.97000',
            'Locale::Codes'         => '3.55',
            'Locale::Codes::Constants'=> '3.55',
            'Locale::Codes::Country'=> '3.55',
            'Locale::Codes::Country_Codes'=> '3.55',
            'Locale::Codes::Country_Retired'=> '3.55',
            'Locale::Codes::Currency'=> '3.55',
            'Locale::Codes::Currency_Codes'=> '3.55',
            'Locale::Codes::Currency_Retired'=> '3.55',
            'Locale::Codes::LangExt'=> '3.55',
            'Locale::Codes::LangExt_Codes'=> '3.55',
            'Locale::Codes::LangExt_Retired'=> '3.55',
            'Locale::Codes::LangFam'=> '3.55',
            'Locale::Codes::LangFam_Codes'=> '3.55',
            'Locale::Codes::LangFam_Retired'=> '3.55',
            'Locale::Codes::LangVar'=> '3.55',
            'Locale::Codes::LangVar_Codes'=> '3.55',
            'Locale::Codes::LangVar_Retired'=> '3.55',
            'Locale::Codes::Language'=> '3.55',
            'Locale::Codes::Language_Codes'=> '3.55',
            'Locale::Codes::Language_Retired'=> '3.55',
            'Locale::Codes::Script' => '3.55',
            'Locale::Codes::Script_Codes'=> '3.55',
            'Locale::Codes::Script_Retired'=> '3.55',
            'Locale::Country'       => '3.55',
            'Locale::Currency'      => '3.55',
            'Locale::Language'      => '3.55',
            'Locale::Script'        => '3.55',
            'Module::CoreList'      => '5.20171220',
            'Module::CoreList::TieHashDelta'=> '5.20171220',
            'Module::CoreList::Utils'=> '5.20171220',
            'Opcode'                => '1.42',
            'POSIX'                 => '1.81',
            'Pod::Functions'        => '1.12',
            'Pod::Functions::Functions'=> '1.12',
            'Pod::Html'             => '1.23',
            'Sys::Hostname'         => '1.22',
            'Test2'                 => '1.302120',
            'Test2::API'            => '1.302120',
            'Test2::API::Breakage'  => '1.302120',
            'Test2::API::Context'   => '1.302120',
            'Test2::API::Instance'  => '1.302120',
            'Test2::API::Stack'     => '1.302120',
            'Test2::Event'          => '1.302120',
            'Test2::Event::Bail'    => '1.302120',
            'Test2::Event::Diag'    => '1.302120',
            'Test2::Event::Encoding'=> '1.302120',
            'Test2::Event::Exception'=> '1.302120',
            'Test2::Event::Fail'    => '1.302120',
            'Test2::Event::Generic' => '1.302120',
            'Test2::Event::Note'    => '1.302120',
            'Test2::Event::Ok'      => '1.302120',
            'Test2::Event::Pass'    => '1.302120',
            'Test2::Event::Plan'    => '1.302120',
            'Test2::Event::Skip'    => '1.302120',
            'Test2::Event::Subtest' => '1.302120',
            'Test2::Event::TAP::Version'=> '1.302120',
            'Test2::Event::Waiting' => '1.302120',
            'Test2::EventFacet'     => '1.302120',
            'Test2::EventFacet::About'=> '1.302120',
            'Test2::EventFacet::Amnesty'=> '1.302120',
            'Test2::EventFacet::Assert'=> '1.302120',
            'Test2::EventFacet::Control'=> '1.302120',
            'Test2::EventFacet::Error'=> '1.302120',
            'Test2::EventFacet::Info'=> '1.302120',
            'Test2::EventFacet::Meta'=> '1.302120',
            'Test2::EventFacet::Parent'=> '1.302120',
            'Test2::EventFacet::Plan'=> '1.302120',
            'Test2::EventFacet::Trace'=> '1.302120',
            'Test2::Formatter'      => '1.302120',
            'Test2::Formatter::TAP' => '1.302120',
            'Test2::Hub'            => '1.302120',
            'Test2::Hub::Interceptor'=> '1.302120',
            'Test2::Hub::Interceptor::Terminator'=> '1.302120',
            'Test2::Hub::Subtest'   => '1.302120',
            'Test2::IPC'            => '1.302120',
            'Test2::IPC::Driver'    => '1.302120',
            'Test2::IPC::Driver::Files'=> '1.302120',
            'Test2::Tools::Tiny'    => '1.302120',
            'Test2::Util'           => '1.302120',
            'Test2::Util::ExternalMeta'=> '1.302120',
            'Test2::Util::Facets2Legacy'=> '1.302120',
            'Test2::Util::HashBase' => '1.302120',
            'Test2::Util::Trace'    => '1.302120',
            'Test::Builder'         => '1.302120',
            'Test::Builder::Formatter'=> '1.302120',
            'Test::Builder::Module' => '1.302120',
            'Test::Builder::Tester' => '1.302120',
            'Test::Builder::Tester::Color'=> '1.302120',
            'Test::Builder::TodoDiag'=> '1.302120',
            'Test::More'            => '1.302120',
            'Test::Simple'          => '1.302120',
            'Test::Tester'          => '1.302120',
            'Test::Tester::Capture' => '1.302120',
            'Test::Tester::CaptureRunner'=> '1.302120',
            'Test::Tester::Delegate'=> '1.302120',
            'Test::use::ok'         => '1.302120',
            'Time::HiRes'           => '1.9748',
            'Time::Piece'           => '1.3203',
            'Time::Seconds'         => '1.3203',
            'Unicode::Collate'      => '1.25',
            'Unicode::Collate::CJK::Big5'=> '1.25',
            'Unicode::Collate::CJK::GB2312'=> '1.25',
            'Unicode::Collate::CJK::JISX0208'=> '1.25',
            'Unicode::Collate::CJK::Korean'=> '1.25',
            'Unicode::Collate::CJK::Pinyin'=> '1.25',
            'Unicode::Collate::CJK::Stroke'=> '1.25',
            'Unicode::Collate::CJK::Zhuyin'=> '1.25',
            'Unicode::Collate::Locale'=> '1.25',
            'Unicode::UCD'          => '0.69',
            'XS::APItest'           => '0.94',
            'XSLoader'              => '0.29',
            'arybase'               => '0.15',
            'autodie::exception'    => '2.29001',
            'autodie::hints'        => '2.29001',
            'experimental'          => '0.019',
            'feature'               => '1.50',
            'ok'                    => '1.302120',
            'overload'              => '1.29',
            'threads'               => '2.21',
            'threads::shared'       => '1.58',
            'warnings'              => '1.39',
        },
        removed => {
        }
    },
    5.027008 => {
        delta_from => 5.027007,
        changed => {
            'B'                     => '1.74',
            'B::Deparse'            => '1.47',
            'B::Op_private'         => '5.027008',
            'Config'                => '5.027008',
            'Cwd'                   => '3.72',
            'Data::Dumper'          => '2.170',
            'Devel::PPPort'         => '3.38',
            'Digest::SHA'           => '6.01',
            'Encode'                => '2.94',
            'Encode::Alias'         => '2.24',
            'ExtUtils::Miniperl'    => '1.08',
            'File::Spec'            => '3.72',
            'File::Spec::AmigaOS'   => '3.72',
            'File::Spec::Cygwin'    => '3.72',
            'File::Spec::Epoc'      => '3.72',
            'File::Spec::Functions' => '3.72',
            'File::Spec::Mac'       => '3.72',
            'File::Spec::OS2'       => '3.72',
            'File::Spec::Unix'      => '3.72',
            'File::Spec::VMS'       => '3.72',
            'File::Spec::Win32'     => '3.72',
            'JSON::PP'              => '2.97001',
            'JSON::PP::Boolean'     => '2.97001',
            'Module::CoreList'      => '5.20180120',
            'Module::CoreList::TieHashDelta'=> '5.20180120',
            'Module::CoreList::Utils'=> '5.20180120',
            'Opcode'                => '1.43',
            'Pod::Functions'        => '1.13',
            'Pod::Functions::Functions'=> '1.13',
            'Pod::Html'             => '1.24',
            'Pod::Man'              => '4.10',
            'Pod::ParseLink'        => '4.10',
            'Pod::Text'             => '4.10',
            'Pod::Text::Color'      => '4.10',
            'Pod::Text::Overstrike' => '4.10',
            'Pod::Text::Termcap'    => '4.10',
            'Socket'                => '2.027',
            'Time::HiRes'           => '1.9752',
            'Unicode::UCD'          => '0.70',
            'XS::APItest'           => '0.95',
            'XSLoader'              => '0.30',
            'autodie::exception'    => '2.29002',
            'feature'               => '1.51',
            'overload'              => '1.30',
            'utf8'                  => '1.21',
            'warnings'              => '1.40',
        },
        removed => {
        }
    },
    5.027009 => {
        delta_from => 5.027008,
        changed => {
            'B::Op_private'         => '5.027009',
            'Carp'                  => '1.46',
            'Carp::Heavy'           => '1.46',
            'Config'                => '5.027009',
            'Cwd'                   => '3.74',
            'Devel::PPPort'         => '3.39',
            'Encode'                => '2.96',
            'Encode::Unicode'       => '2.17',
            'Errno'                 => '1.29',
            'ExtUtils::Command'     => '7.32',
            'ExtUtils::Command::MM' => '7.32',
            'ExtUtils::Liblist'     => '7.32',
            'ExtUtils::Liblist::Kid'=> '7.32',
            'ExtUtils::MM'          => '7.32',
            'ExtUtils::MM_AIX'      => '7.32',
            'ExtUtils::MM_Any'      => '7.32',
            'ExtUtils::MM_BeOS'     => '7.32',
            'ExtUtils::MM_Cygwin'   => '7.32',
            'ExtUtils::MM_DOS'      => '7.32',
            'ExtUtils::MM_Darwin'   => '7.32',
            'ExtUtils::MM_MacOS'    => '7.32',
            'ExtUtils::MM_NW5'      => '7.32',
            'ExtUtils::MM_OS2'      => '7.32',
            'ExtUtils::MM_QNX'      => '7.32',
            'ExtUtils::MM_UWIN'     => '7.32',
            'ExtUtils::MM_Unix'     => '7.32',
            'ExtUtils::MM_VMS'      => '7.32',
            'ExtUtils::MM_VOS'      => '7.32',
            'ExtUtils::MM_Win32'    => '7.32',
            'ExtUtils::MM_Win95'    => '7.32',
            'ExtUtils::MY'          => '7.32',
            'ExtUtils::MakeMaker'   => '7.32',
            'ExtUtils::MakeMaker::Config'=> '7.32',
            'ExtUtils::MakeMaker::Locale'=> '7.32',
            'ExtUtils::MakeMaker::version'=> '7.32',
            'ExtUtils::MakeMaker::version::regex'=> '7.32',
            'ExtUtils::Mkbootstrap' => '7.32',
            'ExtUtils::Mksymlists'  => '7.32',
            'ExtUtils::ParseXS'     => '3.38',
            'ExtUtils::ParseXS::Constants'=> '3.38',
            'ExtUtils::ParseXS::CountLines'=> '3.38',
            'ExtUtils::ParseXS::Eval'=> '3.38',
            'ExtUtils::ParseXS::Utilities'=> '3.38',
            'ExtUtils::Typemaps'    => '3.38',
            'ExtUtils::Typemaps::Cmd'=> '3.38',
            'ExtUtils::Typemaps::InputMap'=> '3.38',
            'ExtUtils::Typemaps::OutputMap'=> '3.38',
            'ExtUtils::Typemaps::Type'=> '3.38',
            'ExtUtils::testlib'     => '7.32',
            'File::Spec'            => '3.74',
            'File::Spec::AmigaOS'   => '3.74',
            'File::Spec::Cygwin'    => '3.74',
            'File::Spec::Epoc'      => '3.74',
            'File::Spec::Functions' => '3.74',
            'File::Spec::Mac'       => '3.74',
            'File::Spec::OS2'       => '3.74',
            'File::Spec::Unix'      => '3.74',
            'File::Spec::VMS'       => '3.74',
            'File::Spec::Win32'     => '3.74',
            'IPC::Cmd'              => '1.00',
            'Math::BigFloat::Trace' => '0.49',
            'Math::BigInt::Trace'   => '0.49',
            'Module::CoreList'      => '5.20180220',
            'Module::CoreList::Utils'=> '5.20180220',
            'POSIX'                 => '1.82',
            'PerlIO::encoding'      => '0.26',
            'Storable'              => '3.06',
            'Storable::Limit'       => undef,
            'Test2'                 => '1.302122',
            'Test2::API'            => '1.302122',
            'Test2::API::Breakage'  => '1.302122',
            'Test2::API::Context'   => '1.302122',
            'Test2::API::Instance'  => '1.302122',
            'Test2::API::Stack'     => '1.302122',
            'Test2::Event'          => '1.302122',
            'Test2::Event::Bail'    => '1.302122',
            'Test2::Event::Diag'    => '1.302122',
            'Test2::Event::Encoding'=> '1.302122',
            'Test2::Event::Exception'=> '1.302122',
            'Test2::Event::Fail'    => '1.302122',
            'Test2::Event::Generic' => '1.302122',
            'Test2::Event::Note'    => '1.302122',
            'Test2::Event::Ok'      => '1.302122',
            'Test2::Event::Pass'    => '1.302122',
            'Test2::Event::Plan'    => '1.302122',
            'Test2::Event::Skip'    => '1.302122',
            'Test2::Event::Subtest' => '1.302122',
            'Test2::Event::TAP::Version'=> '1.302122',
            'Test2::Event::Waiting' => '1.302122',
            'Test2::EventFacet'     => '1.302122',
            'Test2::EventFacet::About'=> '1.302122',
            'Test2::EventFacet::Amnesty'=> '1.302122',
            'Test2::EventFacet::Assert'=> '1.302122',
            'Test2::EventFacet::Control'=> '1.302122',
            'Test2::EventFacet::Error'=> '1.302122',
            'Test2::EventFacet::Info'=> '1.302122',
            'Test2::EventFacet::Meta'=> '1.302122',
            'Test2::EventFacet::Parent'=> '1.302122',
            'Test2::EventFacet::Plan'=> '1.302122',
            'Test2::EventFacet::Render'=> '1.302122',
            'Test2::EventFacet::Trace'=> '1.302122',
            'Test2::Formatter'      => '1.302122',
            'Test2::Formatter::TAP' => '1.302122',
            'Test2::Hub'            => '1.302122',
            'Test2::Hub::Interceptor'=> '1.302122',
            'Test2::Hub::Interceptor::Terminator'=> '1.302122',
            'Test2::Hub::Subtest'   => '1.302122',
            'Test2::IPC'            => '1.302122',
            'Test2::IPC::Driver'    => '1.302122',
            'Test2::IPC::Driver::Files'=> '1.302122',
            'Test2::Tools::Tiny'    => '1.302122',
            'Test2::Util'           => '1.302122',
            'Test2::Util::ExternalMeta'=> '1.302122',
            'Test2::Util::Facets2Legacy'=> '1.302122',
            'Test2::Util::HashBase' => '1.302122',
            'Test2::Util::Trace'    => '1.302122',
            'Test::Builder'         => '1.302122',
            'Test::Builder::Formatter'=> '1.302122',
            'Test::Builder::Module' => '1.302122',
            'Test::Builder::Tester' => '1.302122',
            'Test::Builder::Tester::Color'=> '1.302122',
            'Test::Builder::TodoDiag'=> '1.302122',
            'Test::More'            => '1.302122',
            'Test::Simple'          => '1.302122',
            'Test::Tester'          => '1.302122',
            'Test::Tester::Capture' => '1.302122',
            'Test::Tester::CaptureRunner'=> '1.302122',
            'Test::Tester::Delegate'=> '1.302122',
            'Test::use::ok'         => '1.302122',
            'Time::HiRes'           => '1.9753',
            'XS::APItest'           => '0.96',
            'bigint'                => '0.49',
            'bignum'                => '0.49',
            'bigrat'                => '0.49',
            'encoding'              => '2.22',
            'if'                    => '0.0608',
            'mro'                   => '1.22',
            'ok'                    => '1.302122',
            'threads'               => '2.22',
            'warnings'              => '1.41',
        },
        removed => {
            'Module::CoreList::TieHashDelta'=> 1,
        }
    },
    5.027010 => {
        delta_from => 5.027009,
        changed => {
            'App::Prove'            => '3.42',
            'App::Prove::State'     => '3.42',
            'App::Prove::State::Result'=> '3.42',
            'App::Prove::State::Result::Test'=> '3.42',
            'B::Deparse'            => '1.48',
            'B::Op_private'         => '5.027010',
            'Carp'                  => '1.49',
            'Carp::Heavy'           => '1.49',
            'Config'                => '5.02701',
            'Encode'                => '2.97',
            'ExtUtils::Command'     => '7.34',
            'ExtUtils::Command::MM' => '7.34',
            'ExtUtils::Liblist'     => '7.34',
            'ExtUtils::Liblist::Kid'=> '7.34',
            'ExtUtils::MM'          => '7.34',
            'ExtUtils::MM_AIX'      => '7.34',
            'ExtUtils::MM_Any'      => '7.34',
            'ExtUtils::MM_BeOS'     => '7.34',
            'ExtUtils::MM_Cygwin'   => '7.34',
            'ExtUtils::MM_DOS'      => '7.34',
            'ExtUtils::MM_Darwin'   => '7.34',
            'ExtUtils::MM_MacOS'    => '7.34',
            'ExtUtils::MM_NW5'      => '7.34',
            'ExtUtils::MM_OS2'      => '7.34',
            'ExtUtils::MM_QNX'      => '7.34',
            'ExtUtils::MM_UWIN'     => '7.34',
            'ExtUtils::MM_Unix'     => '7.34',
            'ExtUtils::MM_VMS'      => '7.34',
            'ExtUtils::MM_VOS'      => '7.34',
            'ExtUtils::MM_Win32'    => '7.34',
            'ExtUtils::MM_Win95'    => '7.34',
            'ExtUtils::MY'          => '7.34',
            'ExtUtils::MakeMaker'   => '7.34',
            'ExtUtils::MakeMaker::Config'=> '7.34',
            'ExtUtils::MakeMaker::Locale'=> '7.34',
            'ExtUtils::MakeMaker::version'=> '7.34',
            'ExtUtils::MakeMaker::version::regex'=> '7.34',
            'ExtUtils::Mkbootstrap' => '7.34',
            'ExtUtils::Mksymlists'  => '7.34',
            'ExtUtils::ParseXS'     => '3.39',
            'ExtUtils::ParseXS::Constants'=> '3.39',
            'ExtUtils::ParseXS::CountLines'=> '3.39',
            'ExtUtils::ParseXS::Eval'=> '3.39',
            'ExtUtils::ParseXS::Utilities'=> '3.39',
            'ExtUtils::testlib'     => '7.34',
            'File::Glob'            => '1.31',
            'I18N::Langinfo'        => '0.16',
            'List::Util'            => '1.50',
            'List::Util::XS'        => '1.50',
            'Locale::Codes'         => '3.56',
            'Locale::Codes::Constants'=> '3.56',
            'Locale::Codes::Country'=> '3.56',
            'Locale::Codes::Country_Codes'=> '3.56',
            'Locale::Codes::Country_Retired'=> '3.56',
            'Locale::Codes::Currency'=> '3.56',
            'Locale::Codes::Currency_Codes'=> '3.56',
            'Locale::Codes::Currency_Retired'=> '3.56',
            'Locale::Codes::LangExt'=> '3.56',
            'Locale::Codes::LangExt_Codes'=> '3.56',
            'Locale::Codes::LangExt_Retired'=> '3.56',
            'Locale::Codes::LangFam'=> '3.56',
            'Locale::Codes::LangFam_Codes'=> '3.56',
            'Locale::Codes::LangFam_Retired'=> '3.56',
            'Locale::Codes::LangVar'=> '3.56',
            'Locale::Codes::LangVar_Codes'=> '3.56',
            'Locale::Codes::LangVar_Retired'=> '3.56',
            'Locale::Codes::Language'=> '3.56',
            'Locale::Codes::Language_Codes'=> '3.56',
            'Locale::Codes::Language_Retired'=> '3.56',
            'Locale::Codes::Script' => '3.56',
            'Locale::Codes::Script_Codes'=> '3.56',
            'Locale::Codes::Script_Retired'=> '3.56',
            'Locale::Country'       => '3.56',
            'Locale::Currency'      => '3.56',
            'Locale::Language'      => '3.56',
            'Locale::Script'        => '3.56',
            'Module::CoreList'      => '5.20180221',
            'Module::CoreList::Utils'=> '5.20180221',
            'POSIX'                 => '1.83',
            'Scalar::Util'          => '1.50',
            'Sub::Util'             => '1.50',
            'TAP::Base'             => '3.42',
            'TAP::Formatter::Base'  => '3.42',
            'TAP::Formatter::Color' => '3.42',
            'TAP::Formatter::Console'=> '3.42',
            'TAP::Formatter::Console::ParallelSession'=> '3.42',
            'TAP::Formatter::Console::Session'=> '3.42',
            'TAP::Formatter::File'  => '3.42',
            'TAP::Formatter::File::Session'=> '3.42',
            'TAP::Formatter::Session'=> '3.42',
            'TAP::Harness'          => '3.42',
            'TAP::Harness::Env'     => '3.42',
            'TAP::Object'           => '3.42',
            'TAP::Parser'           => '3.42',
            'TAP::Parser::Aggregator'=> '3.42',
            'TAP::Parser::Grammar'  => '3.42',
            'TAP::Parser::Iterator' => '3.42',
            'TAP::Parser::Iterator::Array'=> '3.42',
            'TAP::Parser::Iterator::Process'=> '3.42',
            'TAP::Parser::Iterator::Stream'=> '3.42',
            'TAP::Parser::IteratorFactory'=> '3.42',
            'TAP::Parser::Multiplexer'=> '3.42',
            'TAP::Parser::Result'   => '3.42',
            'TAP::Parser::Result::Bailout'=> '3.42',
            'TAP::Parser::Result::Comment'=> '3.42',
            'TAP::Parser::Result::Plan'=> '3.42',
            'TAP::Parser::Result::Pragma'=> '3.42',
            'TAP::Parser::Result::Test'=> '3.42',
            'TAP::Parser::Result::Unknown'=> '3.42',
            'TAP::Parser::Result::Version'=> '3.42',
            'TAP::Parser::Result::YAML'=> '3.42',
            'TAP::Parser::ResultFactory'=> '3.42',
            'TAP::Parser::Scheduler'=> '3.42',
            'TAP::Parser::Scheduler::Job'=> '3.42',
            'TAP::Parser::Scheduler::Spinner'=> '3.42',
            'TAP::Parser::Source'   => '3.42',
            'TAP::Parser::SourceHandler'=> '3.42',
            'TAP::Parser::SourceHandler::Executable'=> '3.42',
            'TAP::Parser::SourceHandler::File'=> '3.42',
            'TAP::Parser::SourceHandler::Handle'=> '3.42',
            'TAP::Parser::SourceHandler::Perl'=> '3.42',
            'TAP::Parser::SourceHandler::RawTAP'=> '3.42',
            'TAP::Parser::YAMLish::Reader'=> '3.42',
            'TAP::Parser::YAMLish::Writer'=> '3.42',
            'Test2'                 => '1.302133',
            'Test2::API'            => '1.302133',
            'Test2::API::Breakage'  => '1.302133',
            'Test2::API::Context'   => '1.302133',
            'Test2::API::Instance'  => '1.302133',
            'Test2::API::Stack'     => '1.302133',
            'Test2::Event'          => '1.302133',
            'Test2::Event::Bail'    => '1.302133',
            'Test2::Event::Diag'    => '1.302133',
            'Test2::Event::Encoding'=> '1.302133',
            'Test2::Event::Exception'=> '1.302133',
            'Test2::Event::Fail'    => '1.302133',
            'Test2::Event::Generic' => '1.302133',
            'Test2::Event::Note'    => '1.302133',
            'Test2::Event::Ok'      => '1.302133',
            'Test2::Event::Pass'    => '1.302133',
            'Test2::Event::Plan'    => '1.302133',
            'Test2::Event::Skip'    => '1.302133',
            'Test2::Event::Subtest' => '1.302133',
            'Test2::Event::TAP::Version'=> '1.302133',
            'Test2::Event::V2'      => '1.302133',
            'Test2::Event::Waiting' => '1.302133',
            'Test2::EventFacet'     => '1.302133',
            'Test2::EventFacet::About'=> '1.302133',
            'Test2::EventFacet::Amnesty'=> '1.302133',
            'Test2::EventFacet::Assert'=> '1.302133',
            'Test2::EventFacet::Control'=> '1.302133',
            'Test2::EventFacet::Error'=> '1.302133',
            'Test2::EventFacet::Hub'=> '1.302133',
            'Test2::EventFacet::Info'=> '1.302133',
            'Test2::EventFacet::Meta'=> '1.302133',
            'Test2::EventFacet::Parent'=> '1.302133',
            'Test2::EventFacet::Plan'=> '1.302133',
            'Test2::EventFacet::Render'=> '1.302133',
            'Test2::EventFacet::Trace'=> '1.302133',
            'Test2::Formatter'      => '1.302133',
            'Test2::Formatter::TAP' => '1.302133',
            'Test2::Hub'            => '1.302133',
            'Test2::Hub::Interceptor'=> '1.302133',
            'Test2::Hub::Interceptor::Terminator'=> '1.302133',
            'Test2::Hub::Subtest'   => '1.302133',
            'Test2::IPC'            => '1.302133',
            'Test2::IPC::Driver'    => '1.302133',
            'Test2::IPC::Driver::Files'=> '1.302133',
            'Test2::Tools::Tiny'    => '1.302133',
            'Test2::Util'           => '1.302133',
            'Test2::Util::ExternalMeta'=> '1.302133',
            'Test2::Util::Facets2Legacy'=> '1.302133',
            'Test2::Util::HashBase' => '1.302133',
            'Test2::Util::Trace'    => '1.302133',
            'Test::Builder'         => '1.302133',
            'Test::Builder::Formatter'=> '1.302133',
            'Test::Builder::Module' => '1.302133',
            'Test::Builder::Tester' => '1.302133',
            'Test::Builder::Tester::Color'=> '1.302133',
            'Test::Builder::TodoDiag'=> '1.302133',
            'Test::Harness'         => '3.42',
            'Test::More'            => '1.302133',
            'Test::Simple'          => '1.302133',
            'Test::Tester'          => '1.302133',
            'Test::Tester::Capture' => '1.302133',
            'Test::Tester::CaptureRunner'=> '1.302133',
            'Test::Tester::Delegate'=> '1.302133',
            'Test::use::ok'         => '1.302133',
            'Time::HiRes'           => '1.9757',
            'Time::Piece'           => '1.3204',
            'Time::Seconds'         => '1.3204',
            'attributes'            => '0.33',
            'ok'                    => '1.302133',
            'warnings'              => '1.42',
        },
        removed => {
        }
    },
    5.024004 => {
        delta_from => 5.024003,
        changed => {
            'B::Op_private'         => '5.024004',
            'Config'                => '5.024004',
            'Module::CoreList'      => '5.20180414_24',
            'Module::CoreList::TieHashDelta'=> '5.20180414_24',
            'Module::CoreList::Utils'=> '5.20180414_24',
        },
        removed => {
        }
    },
    5.026002 => {
        delta_from => 5.026001,
        changed => {
            'B::Op_private'         => '5.026002',
            'Config'                => '5.026002',
            'Module::CoreList'      => '5.20180414_26',
            'Module::CoreList::TieHashDelta'=> '5.20180414_26',
            'Module::CoreList::Utils'=> '5.20180414_26',
            'PerlIO::via'           => '0.17',
            'Term::ReadLine'        => '1.17',
            'Unicode::UCD'          => '0.69',
        },
        removed => {
        }
    },
    5.027011 => {
        delta_from => 5.027010,
        changed => {
            'B::Op_private'         => '5.027011',
            'Carp'                  => '1.50',
            'Carp::Heavy'           => '1.50',
            'Config'                => '5.027011',
            'Devel::PPPort'         => '3.40',
            'Exporter'              => '5.73',
            'Exporter::Heavy'       => '5.73',
            'ExtUtils::Constant'    => '0.25',
            'I18N::Langinfo'        => '0.17',
            'IO'                    => '1.39',
            'IO::Dir'               => '1.39',
            'IO::File'              => '1.39',
            'IO::Handle'            => '1.39',
            'IO::Pipe'              => '1.39',
            'IO::Poll'              => '1.39',
            'IO::Seekable'          => '1.39',
            'IO::Select'            => '1.39',
            'IO::Socket'            => '1.39',
            'IO::Socket::INET'      => '1.39',
            'IO::Socket::UNIX'      => '1.39',
            'Module::CoreList'      => '5.20180420',
            'Module::CoreList::Utils'=> '5.20180420',
            'POSIX'                 => '1.84',
            'Time::HiRes'           => '1.9759',
            'XS::APItest'           => '0.97',
            'bytes'                 => '1.06',
            'subs'                  => '1.03',
            'vars'                  => '1.04',
            'version'               => '0.9923',
            'version::regex'        => '0.9923',
        },
        removed => {
        }
    },
    5.028000 => {
        delta_from => 5.027011,
        changed => {
            'Archive::Tar'          => '2.30',
            'Archive::Tar::Constant'=> '2.30',
            'Archive::Tar::File'    => '2.30',
            'B::Op_private'         => '5.028000',
            'Config'                => '5.028',
            'Module::CoreList'      => '5.20180622',
            'Module::CoreList::Utils'=> '5.20180622',
            'Storable'              => '3.08',
            'XS::APItest'           => '0.98',
            'feature'               => '1.52',
        },
        removed => {
        }
    },
    5.029000 => {
        delta_from => 5.028,
        changed => {
            'B::Op_private'         => '5.029000',
            'Config'                => '5.029',
            'Module::CoreList'      => '5.20180626',
            'Module::CoreList::Utils'=> '5.20180626',
            'Unicode::UCD'          => '0.71',
            'XS::APItest'           => '0.99',
            'feature'               => '1.53',
        },
        removed => {
        }
    },
    5.029001 => {
        delta_from => 5.029000,
        changed => {
            'B::Op_private'         => '5.029001',
            'Compress::Raw::Bzip2'  => '2.081',
            'Compress::Raw::Zlib'   => '2.081',
            'Compress::Zlib'        => '2.081',
            'Config'                => '5.029001',
            'Config::Perl::V'       => '0.30',
            'DB_File'               => '1.842',
            'Devel::PPPort'         => '3.42',
            'Digest::SHA'           => '6.02',
            'ExtUtils::Manifest'    => '1.71',
            'File::GlobMapper'      => '1.001',
            'File::Temp'            => '0.2308',
            'IO::Compress::Adapter::Bzip2'=> '2.081',
            'IO::Compress::Adapter::Deflate'=> '2.081',
            'IO::Compress::Adapter::Identity'=> '2.081',
            'IO::Compress::Base'    => '2.081',
            'IO::Compress::Base::Common'=> '2.081',
            'IO::Compress::Bzip2'   => '2.081',
            'IO::Compress::Deflate' => '2.081',
            'IO::Compress::Gzip'    => '2.081',
            'IO::Compress::Gzip::Constants'=> '2.081',
            'IO::Compress::RawDeflate'=> '2.081',
            'IO::Compress::Zip'     => '2.081',
            'IO::Compress::Zip::Constants'=> '2.081',
            'IO::Compress::Zlib::Constants'=> '2.081',
            'IO::Compress::Zlib::Extra'=> '2.081',
            'IO::Uncompress::Adapter::Bunzip2'=> '2.081',
            'IO::Uncompress::Adapter::Identity'=> '2.081',
            'IO::Uncompress::Adapter::Inflate'=> '2.081',
            'IO::Uncompress::AnyInflate'=> '2.081',
            'IO::Uncompress::AnyUncompress'=> '2.081',
            'IO::Uncompress::Base'  => '2.081',
            'IO::Uncompress::Bunzip2'=> '2.081',
            'IO::Uncompress::Gunzip'=> '2.081',
            'IO::Uncompress::Inflate'=> '2.081',
            'IO::Uncompress::RawInflate'=> '2.081',
            'IO::Uncompress::Unzip' => '2.081',
            'IPC::Cmd'              => '1.02',
            'Locale::Codes'         => '3.57',
            'Locale::Codes::Constants'=> '3.57',
            'Locale::Codes::Country'=> '3.57',
            'Locale::Codes::Country_Codes'=> '3.57',
            'Locale::Codes::Country_Retired'=> '3.57',
            'Locale::Codes::Currency'=> '3.57',
            'Locale::Codes::Currency_Codes'=> '3.57',
            'Locale::Codes::Currency_Retired'=> '3.57',
            'Locale::Codes::LangExt'=> '3.57',
            'Locale::Codes::LangExt_Codes'=> '3.57',
            'Locale::Codes::LangExt_Retired'=> '3.57',
            'Locale::Codes::LangFam'=> '3.57',
            'Locale::Codes::LangFam_Codes'=> '3.57',
            'Locale::Codes::LangFam_Retired'=> '3.57',
            'Locale::Codes::LangVar'=> '3.57',
            'Locale::Codes::LangVar_Codes'=> '3.57',
            'Locale::Codes::LangVar_Retired'=> '3.57',
            'Locale::Codes::Language'=> '3.57',
            'Locale::Codes::Language_Codes'=> '3.57',
            'Locale::Codes::Language_Retired'=> '3.57',
            'Locale::Codes::Script' => '3.57',
            'Locale::Codes::Script_Codes'=> '3.57',
            'Locale::Codes::Script_Retired'=> '3.57',
            'Locale::Country'       => '3.57',
            'Locale::Currency'      => '3.57',
            'Locale::Language'      => '3.57',
            'Locale::Script'        => '3.57',
            'Math::BigFloat'        => '1.999813',
            'Math::BigFloat::Trace' => '0.50',
            'Math::BigInt'          => '1.999813',
            'Math::BigInt::Calc'    => '1.999813',
            'Math::BigInt::CalcEmu' => '1.999813',
            'Math::BigInt::FastCalc'=> '0.5007',
            'Math::BigInt::Lib'     => '1.999813',
            'Math::BigInt::Trace'   => '0.50',
            'Math::BigRat'          => '0.2614',
            'Module::CoreList'      => '5.20180720',
            'Module::CoreList::Utils'=> '5.20180720',
            'Pod::Man'              => '4.11',
            'Pod::ParseLink'        => '4.11',
            'Pod::Text'             => '4.11',
            'Pod::Text::Color'      => '4.11',
            'Pod::Text::Overstrike' => '4.11',
            'Pod::Text::Termcap'    => '4.11',
            'Storable'              => '3.11',
            'Test2'                 => '1.302138',
            'Test2::API'            => '1.302138',
            'Test2::API::Breakage'  => '1.302138',
            'Test2::API::Context'   => '1.302138',
            'Test2::API::Instance'  => '1.302138',
            'Test2::API::Stack'     => '1.302138',
            'Test2::Event'          => '1.302138',
            'Test2::Event::Bail'    => '1.302138',
            'Test2::Event::Diag'    => '1.302138',
            'Test2::Event::Encoding'=> '1.302138',
            'Test2::Event::Exception'=> '1.302138',
            'Test2::Event::Fail'    => '1.302138',
            'Test2::Event::Generic' => '1.302138',
            'Test2::Event::Note'    => '1.302138',
            'Test2::Event::Ok'      => '1.302138',
            'Test2::Event::Pass'    => '1.302138',
            'Test2::Event::Plan'    => '1.302138',
            'Test2::Event::Skip'    => '1.302138',
            'Test2::Event::Subtest' => '1.302138',
            'Test2::Event::TAP::Version'=> '1.302138',
            'Test2::Event::V2'      => '1.302138',
            'Test2::Event::Waiting' => '1.302138',
            'Test2::EventFacet'     => '1.302138',
            'Test2::EventFacet::About'=> '1.302138',
            'Test2::EventFacet::Amnesty'=> '1.302138',
            'Test2::EventFacet::Assert'=> '1.302138',
            'Test2::EventFacet::Control'=> '1.302138',
            'Test2::EventFacet::Error'=> '1.302138',
            'Test2::EventFacet::Hub'=> '1.302138',
            'Test2::EventFacet::Info'=> '1.302138',
            'Test2::EventFacet::Meta'=> '1.302138',
            'Test2::EventFacet::Parent'=> '1.302138',
            'Test2::EventFacet::Plan'=> '1.302138',
            'Test2::EventFacet::Render'=> '1.302138',
            'Test2::EventFacet::Trace'=> '1.302138',
            'Test2::Formatter'      => '1.302138',
            'Test2::Formatter::TAP' => '1.302138',
            'Test2::Hub'            => '1.302138',
            'Test2::Hub::Interceptor'=> '1.302138',
            'Test2::Hub::Interceptor::Terminator'=> '1.302138',
            'Test2::Hub::Subtest'   => '1.302138',
            'Test2::IPC'            => '1.302138',
            'Test2::IPC::Driver'    => '1.302138',
            'Test2::IPC::Driver::Files'=> '1.302138',
            'Test2::Tools::Tiny'    => '1.302138',
            'Test2::Util'           => '1.302138',
            'Test2::Util::ExternalMeta'=> '1.302138',
            'Test2::Util::Facets2Legacy'=> '1.302138',
            'Test2::Util::HashBase' => '1.302138',
            'Test2::Util::Trace'    => '1.302138',
            'Test::Builder'         => '1.302138',
            'Test::Builder::Formatter'=> '1.302138',
            'Test::Builder::Module' => '1.302138',
            'Test::Builder::Tester' => '1.302138',
            'Test::Builder::Tester::Color'=> '1.302138',
            'Test::Builder::TodoDiag'=> '1.302138',
            'Test::More'            => '1.302138',
            'Test::Simple'          => '1.302138',
            'Test::Tester'          => '1.302138',
            'Test::Tester::Capture' => '1.302138',
            'Test::Tester::CaptureRunner'=> '1.302138',
            'Test::Tester::Delegate'=> '1.302138',
            'Test::use::ok'         => '1.302138',
            'Thread::Queue'         => '3.13',
            'Time::Local'           => '1.28',
            'bigint'                => '0.50',
            'bignum'                => '0.50',
            'bigrat'                => '0.50',
            'experimental'          => '0.020',
            'ok'                    => '1.302138',
            'parent'                => '0.237',
            'perlfaq'               => '5.20180605',
            'version'               => '0.9924',
            'version::regex'        => '0.9924',
        },
        removed => {
        }
    },
    5.029002 => {
        delta_from => 5.029001,
        changed => {
            'B::Op_private'         => '5.029002',
            'Config'                => '5.029002',
            'Config::Extensions'    => '0.03',
            'Cwd'                   => '3.75',
            'Data::Dumper'          => '2.171',
            'Filter::Util::Call'    => '1.59',
            'HTTP::Tiny'            => '0.076',
            'Module::CoreList'      => '5.20180820',
            'Module::CoreList::Utils'=> '5.20180820',
            'PerlIO::scalar'        => '0.30',
            'Storable'              => '3.12',
            'Test2'                 => '1.302140',
            'Test2::API'            => '1.302140',
            'Test2::API::Breakage'  => '1.302140',
            'Test2::API::Context'   => '1.302140',
            'Test2::API::Instance'  => '1.302140',
            'Test2::API::Stack'     => '1.302140',
            'Test2::Event'          => '1.302140',
            'Test2::Event::Bail'    => '1.302140',
            'Test2::Event::Diag'    => '1.302140',
            'Test2::Event::Encoding'=> '1.302140',
            'Test2::Event::Exception'=> '1.302140',
            'Test2::Event::Fail'    => '1.302140',
            'Test2::Event::Generic' => '1.302140',
            'Test2::Event::Note'    => '1.302140',
            'Test2::Event::Ok'      => '1.302140',
            'Test2::Event::Pass'    => '1.302140',
            'Test2::Event::Plan'    => '1.302140',
            'Test2::Event::Skip'    => '1.302140',
            'Test2::Event::Subtest' => '1.302140',
            'Test2::Event::TAP::Version'=> '1.302140',
            'Test2::Event::V2'      => '1.302140',
            'Test2::Event::Waiting' => '1.302140',
            'Test2::EventFacet'     => '1.302140',
            'Test2::EventFacet::About'=> '1.302140',
            'Test2::EventFacet::Amnesty'=> '1.302140',
            'Test2::EventFacet::Assert'=> '1.302140',
            'Test2::EventFacet::Control'=> '1.302140',
            'Test2::EventFacet::Error'=> '1.302140',
            'Test2::EventFacet::Hub'=> '1.302140',
            'Test2::EventFacet::Info'=> '1.302140',
            'Test2::EventFacet::Meta'=> '1.302140',
            'Test2::EventFacet::Parent'=> '1.302140',
            'Test2::EventFacet::Plan'=> '1.302140',
            'Test2::EventFacet::Render'=> '1.302140',
            'Test2::EventFacet::Trace'=> '1.302140',
            'Test2::Formatter'      => '1.302140',
            'Test2::Formatter::TAP' => '1.302140',
            'Test2::Hub'            => '1.302140',
            'Test2::Hub::Interceptor'=> '1.302140',
            'Test2::Hub::Interceptor::Terminator'=> '1.302140',
            'Test2::Hub::Subtest'   => '1.302140',
            'Test2::IPC'            => '1.302140',
            'Test2::IPC::Driver'    => '1.302140',
            'Test2::IPC::Driver::Files'=> '1.302140',
            'Test2::Tools::Tiny'    => '1.302140',
            'Test2::Util'           => '1.302140',
            'Test2::Util::ExternalMeta'=> '1.302140',
            'Test2::Util::Facets2Legacy'=> '1.302140',
            'Test2::Util::HashBase' => '1.302140',
            'Test2::Util::Trace'    => '1.302140',
            'Test::Builder'         => '1.302140',
            'Test::Builder::Formatter'=> '1.302140',
            'Test::Builder::Module' => '1.302140',
            'Test::Builder::Tester' => '1.302140',
            'Test::Builder::Tester::Color'=> '1.302140',
            'Test::Builder::TodoDiag'=> '1.302140',
            'Test::More'            => '1.302140',
            'Test::Simple'          => '1.302140',
            'Test::Tester'          => '1.302140',
            'Test::Tester::Capture' => '1.302140',
            'Test::Tester::CaptureRunner'=> '1.302140',
            'Test::Tester::Delegate'=> '1.302140',
            'Test::use::ok'         => '1.302140',
            'Time::HiRes'           => '1.9760',
            'Time::Piece'           => '1.33',
            'Time::Seconds'         => '1.33',
            'Unicode'               => '11.0.0',
            'ok'                    => '1.302140',
            'warnings'              => '1.43',
        },
        removed => {
        }
    },
    5.029003 => {
        delta_from => 5.029002,
        changed => {
            'Archive::Tar'          => '2.32',
            'Archive::Tar::Constant'=> '2.32',
            'Archive::Tar::File'    => '2.32',
            'B::Op_private'         => '5.029003',
            'Config'                => '5.029003',
            'Data::Dumper'          => '2.172',
            'Devel::PPPort'         => '3.43',
            'File::Path'            => '2.16',
            'File::Spec'            => '3.75',
            'File::Spec::AmigaOS'   => '3.75',
            'File::Spec::Cygwin'    => '3.75',
            'File::Spec::Epoc'      => '3.75',
            'File::Spec::Functions' => '3.75',
            'File::Spec::Mac'       => '3.75',
            'File::Spec::OS2'       => '3.75',
            'File::Spec::Unix'      => '3.75',
            'File::Spec::VMS'       => '3.75',
            'File::Spec::Win32'     => '3.75',
            'Module::CoreList'      => '5.20180920',
            'Module::CoreList::Utils'=> '5.20180920',
            'POSIX'                 => '1.85',
            'Storable'              => '3.13',
            'User::grent'           => '1.03',
            'perlfaq'               => '5.20180915',
        },
        removed => {
            'Locale::Codes'         => 1,
            'Locale::Codes::Constants'=> 1,
            'Locale::Codes::Country'=> 1,
            'Locale::Codes::Country_Codes'=> 1,
            'Locale::Codes::Country_Retired'=> 1,
            'Locale::Codes::Currency'=> 1,
            'Locale::Codes::Currency_Codes'=> 1,
            'Locale::Codes::Currency_Retired'=> 1,
            'Locale::Codes::LangExt'=> 1,
            'Locale::Codes::LangExt_Codes'=> 1,
            'Locale::Codes::LangExt_Retired'=> 1,
            'Locale::Codes::LangFam'=> 1,
            'Locale::Codes::LangFam_Codes'=> 1,
            'Locale::Codes::LangFam_Retired'=> 1,
            'Locale::Codes::LangVar'=> 1,
            'Locale::Codes::LangVar_Codes'=> 1,
            'Locale::Codes::LangVar_Retired'=> 1,
            'Locale::Codes::Language'=> 1,
            'Locale::Codes::Language_Codes'=> 1,
            'Locale::Codes::Language_Retired'=> 1,
            'Locale::Codes::Script' => 1,
            'Locale::Codes::Script_Codes'=> 1,
            'Locale::Codes::Script_Retired'=> 1,
            'Locale::Country'       => 1,
            'Locale::Currency'      => 1,
            'Locale::Language'      => 1,
            'Locale::Script'        => 1,
        }
    },
    5.029004 => {
        delta_from => 5.029003,
        changed => {
            'App::Cpan'             => '1.671',
            'B'                     => '1.75',
            'B::Concise'            => '1.004',
            'B::Deparse'            => '1.49',
            'B::Op_private'         => '5.029004',
            'B::Terse'              => '1.09',
            'CPAN'                  => '2.21',
            'CPAN::Distribution'    => '2.21',
            'CPAN::Mirrors'         => '2.21',
            'CPAN::Plugin'          => '0.97',
            'CPAN::Shell'           => '5.5008',
            'Config'                => '5.029004',
            'Devel::Peek'           => '1.28',
            'File::Copy'            => '2.34',
            'File::Glob'            => '1.32',
            'Math::BigFloat::Trace' => '0.51',
            'Math::BigInt::Trace'   => '0.51',
            'Module::CoreList'      => '5.20181020',
            'Module::CoreList::Utils'=> '5.20181020',
            'Unicode::UCD'          => '0.72',
            'bigint'                => '0.51',
            'bignum'                => '0.51',
            'bigrat'                => '0.51',
            'bytes'                 => '1.07',
            'feature'               => '1.54',
            'sigtrap'               => '1.09',
            'vars'                  => '1.05',
        },
        removed => {
            'B::Debug'              => 1,
            'arybase'               => 1,
        }
    },
    5.029005 => {
        delta_from => 5.029004,
        changed => {
            'B::Op_private'         => '5.029005',
            'Config'                => '5.029005',
            'Cwd'                   => '3.76',
            'Data::Dumper'          => '2.173',
            'Errno'                 => '1.30',
            'File::Spec'            => '3.76',
            'File::Spec::AmigaOS'   => '3.76',
            'File::Spec::Cygwin'    => '3.76',
            'File::Spec::Epoc'      => '3.76',
            'File::Spec::Functions' => '3.76',
            'File::Spec::Mac'       => '3.76',
            'File::Spec::OS2'       => '3.76',
            'File::Spec::Unix'      => '3.76',
            'File::Spec::VMS'       => '3.76',
            'File::Spec::Win32'     => '3.76',
            'GDBM_File'             => '1.18',
            'Module::CoreList'      => '5.20181120',
            'Module::CoreList::Utils'=> '5.20181120',
            'NDBM_File'             => '1.15',
            'ODBM_File'             => '1.16',
            'SDBM_File'             => '1.15',
            're'                    => '0.37',
        },
        removed => {
        }
    },
    5.026003 => {
        delta_from => 5.026002,
        changed => {
            'Archive::Tar'          => '2.24_01',
            'B::Op_private'         => '5.026003',
            'Config'                => '5.026003',
            'Module::CoreList'      => '5.20181129_26',
            'Module::CoreList::TieHashDelta'=> '5.20181129_26',
            'Module::CoreList::Utils'=> '5.20181129_26',
        },
        removed => {
        }
    },
    5.028001 => {
        delta_from => 5.028,
        changed => {
            'B::Op_private'         => '5.028001',
            'Config'                => '5.028001',
            'Module::CoreList'      => '5.20181129_28',
            'Module::CoreList::Utils'=> '5.20181129_28',
        },
        removed => {
        }
    },
);

sub is_core
{
    shift if defined $_[1] and $_[1] =~ /^\w/ and _looks_like_invocant $_[0];
    my $module = shift;
    my $module_version = @_ > 0 ? shift : undef;
    my $perl_version   = @_ > 0 ? shift : $];

    my $first_release = first_release($module);

    return 0 if !defined($first_release) || $first_release > $perl_version;

    my $final_release = removed_from($module);

    return 0 if defined($final_release) && $perl_version >= $final_release;

    # If a minimum version of the module was specified:
    # Step through all perl releases ($prn)
    # so we can find what version of the module
    # was included in the specified version of perl.
    # On the way if we pass the required module version, we can
    # short-circuit and return true
    if (defined($module_version)) {
        my $module_version_object = eval { version->parse($module_version) };
        if (!defined($module_version_object)) {
            (my $err = $@) =~ s/^Invalid version format\b/Invalid version '$module_version' specified/;
            die $err;
        }
        # The Perl releases aren't a linear sequence, but a tree. We need to build the path
        # of releases from 5 to the specified release, and follow the module's version(s)
        # along that path.
        my @releases = ($perl_version);
        my $rel = $perl_version;
        while (defined($rel)) {
            # XXX: This line is a sign of failure. -- rjbs, 2015-04-15
            my $this_delta = $delta{$rel} || $delta{ sprintf '%0.6f', $rel };
            $rel = $this_delta->{delta_from};
            unshift(@releases, $rel) if defined($rel);
        }
        RELEASE:
        foreach my $prn (@releases) {
            next RELEASE if $prn < $first_release;
            last RELEASE if $prn > $perl_version;
            next unless defined(my $next_module_version
                                   = $delta{$prn}->{changed}->{$module});
            return 1 if eval { version->parse($next_module_version) >= $module_version_object };
        }
        return 0;
    }

    return 1 if !defined($final_release);

    return $perl_version <= $final_release;
}

%version = _undelta(\%delta);

%deprecated = (
    5.011    => {
        changed => { map { $_ => 1 } qw/
            Class::ISA
            Pod::Plainer
            Shell
            Switch
        /},
    },
    5.011001 => { delta_from => 5.011 },
    5.011002 => { delta_from => 5.011001 },
    5.011003 => { delta_from => 5.011002 },
    5.011004 => { delta_from => 5.011003 },
    5.011005 => { delta_from => 5.011004 },

    5.012    => { delta_from => 5.011005 },
    5.012001 => { delta_from => 5.012 },
    5.012002 => { delta_from => 5.012001 },
    5.012003 => { delta_from => 5.012002 },
    5.012004 => { delta_from => 5.012003 },
    5.012005 => { delta_from => 5.012004 },

    5.013    => { delta_from => 5.012005 },
    5.013001 => {
        delta_from => 5.013,
        removed => { map { $_ => 1 } qw/
            Class::ISA
            Pod::Plainer
            Switch
        /},
    },
    5.013002 => { delta_from => 5.013001 },
    5.013003 => { delta_from => 5.013002 },
    5.013004 => { delta_from => 5.013003 },
    5.013005 => { delta_from => 5.013004 },
    5.013006 => { delta_from => 5.013005 },
    5.013007 => { delta_from => 5.013006 },
    5.013008 => { delta_from => 5.013007 },
    5.013009 => { delta_from => 5.013008 },
    5.01301  => { delta_from => 5.013009 },
    5.013011 => { delta_from => 5.01301  },

    5.014    => { delta_from => 5.013011 },
    5.014001 => { delta_from => 5.014    },
    5.014002 => { delta_from => 5.014001 },
    5.014003 => { delta_from => 5.014002 },
    5.014004 => { delta_from => 5.014003 },

    5.015    => {
        delta_from => 5.014004,
        removed => { Shell => 1 },
    },
    5.015001 => { delta_from => 5.015    },
    5.015002 => { delta_from => 5.015001 },
    5.015003 => { delta_from => 5.015002 },
    5.015004 => { delta_from => 5.015003 },
    5.015005 => { delta_from => 5.015004 },
    5.015006 => { delta_from => 5.015005 },
    5.015007 => { delta_from => 5.015006 },
    5.015008 => { delta_from => 5.015007 },
    5.015009 => { delta_from => 5.015008 },

    5.016    => { delta_from => 5.015009 },
    5.016001 => { delta_from => 5.016    },
    5.016002 => { delta_from => 5.016001 },
    5.016003 => { delta_from => 5.016002 },

    5.017    => { delta_from => 5.016003 },
    5.017001 => { delta_from => 5.017    },
    5.017002 => { delta_from => 5.017001 },
    5.017003 => { delta_from => 5.017002 },
    5.017004 => { delta_from => 5.017003 },
    5.017005 => { delta_from => 5.017004 },
    5.017006 => { delta_from => 5.017005 },
    5.017007 => { delta_from => 5.017006 },
    5.017008 => {
        delta_from => 5.017007,
        changed => { 'Pod::LaTeX' => 1 },
    },
    5.017009 => {
        delta_from => 5.017008,
        changed => { map { $_ => 1 } qw/
            Archive::Extract
            B::Lint
            B::Lint::Debug
            CPANPLUS
            CPANPLUS::Backend
            CPANPLUS::Backend::RV
            CPANPLUS::Config
            CPANPLUS::Config::HomeEnv
            CPANPLUS::Configure
            CPANPLUS::Configure::Setup
            CPANPLUS::Dist
            CPANPLUS::Dist::Autobundle
            CPANPLUS::Dist::Base
            CPANPLUS::Dist::Build
            CPANPLUS::Dist::Build::Constants
            CPANPLUS::Dist::MM
            CPANPLUS::Dist::Sample
            CPANPLUS::Error
            CPANPLUS::Internals
            CPANPLUS::Internals::Constants
            CPANPLUS::Internals::Constants::Report
            CPANPLUS::Internals::Extract
            CPANPLUS::Internals::Fetch
            CPANPLUS::Internals::Report
            CPANPLUS::Internals::Search
            CPANPLUS::Internals::Source
            CPANPLUS::Internals::Source::Memory
            CPANPLUS::Internals::Source::SQLite
            CPANPLUS::Internals::Source::SQLite::Tie
            CPANPLUS::Internals::Utils
            CPANPLUS::Internals::Utils::Autoflush
            CPANPLUS::Module
            CPANPLUS::Module::Author
            CPANPLUS::Module::Author::Fake
            CPANPLUS::Module::Checksums
            CPANPLUS::Module::Fake
            CPANPLUS::Module::Signature
            CPANPLUS::Selfupdate
            CPANPLUS::Shell
            CPANPLUS::Shell::Classic
            CPANPLUS::Shell::Default
            CPANPLUS::Shell::Default::Plugins::CustomSource
            CPANPLUS::Shell::Default::Plugins::Remote
            CPANPLUS::Shell::Default::Plugins::Source
            Devel::InnerPackage
            File::CheckTree
            Log::Message
            Log::Message::Config
            Log::Message::Handlers
            Log::Message::Item
            Log::Message::Simple
            Module::Pluggable
            Module::Pluggable::Object
            Object::Accessor
            Term::UI
            Term::UI::History
            Text::Soundex
        /},
    },
    5.01701  => { delta_from => 5.017009 },
    5.017011 => { delta_from => 5.01701  },

    5.018    => { delta_from => 5.017011 },
    5.018001 => {
        delta_from => 5.018,
        changed => {
        },
        removed => {
        }
    },
    5.018002 => {
        delta_from => 5.018001,
        changed => {
        },
        removed => {
        }
    },
    5.018003 => {
        delta_from => 5.018,
        changed => {
        },
        removed => {
        }
    },
    5.018004 => {
        delta_from => 5.018,
        changed => {
        },
        removed => {
        }
    },

    5.019    => {
        delta_from => 5.018,
        changed => { 'Module::Build' => 1 },
        removed => { map { $_ => 1 } qw/
            Archive::Extract
            B::Lint
            B::Lint::Debug
            CPANPLUS
            CPANPLUS::Backend
            CPANPLUS::Backend::RV
            CPANPLUS::Config
            CPANPLUS::Config::HomeEnv
            CPANPLUS::Configure
            CPANPLUS::Configure::Setup
            CPANPLUS::Dist
            CPANPLUS::Dist::Autobundle
            CPANPLUS::Dist::Base
            CPANPLUS::Dist::Build
            CPANPLUS::Dist::Build::Constants
            CPANPLUS::Dist::MM
            CPANPLUS::Dist::Sample
            CPANPLUS::Error
            CPANPLUS::Internals
            CPANPLUS::Internals::Constants
            CPANPLUS::Internals::Constants::Report
            CPANPLUS::Internals::Extract
            CPANPLUS::Internals::Fetch
            CPANPLUS::Internals::Report
            CPANPLUS::Internals::Search
            CPANPLUS::Internals::Source
            CPANPLUS::Internals::Source::Memory
            CPANPLUS::Internals::Source::SQLite
            CPANPLUS::Internals::Source::SQLite::Tie
            CPANPLUS::Internals::Utils
            CPANPLUS::Internals::Utils::Autoflush
            CPANPLUS::Module
            CPANPLUS::Module::Author
            CPANPLUS::Module::Author::Fake
            CPANPLUS::Module::Checksums
            CPANPLUS::Module::Fake
            CPANPLUS::Module::Signature
            CPANPLUS::Selfupdate
            CPANPLUS::Shell
            CPANPLUS::Shell::Classic
            CPANPLUS::Shell::Default
            CPANPLUS::Shell::Default::Plugins::CustomSource
            CPANPLUS::Shell::Default::Plugins::Remote
            CPANPLUS::Shell::Default::Plugins::Source
            Devel::InnerPackage
            File::CheckTree
            Log::Message
            Log::Message::Config
            Log::Message::Handlers
            Log::Message::Item
            Log::Message::Simple
            Module::Pluggable
            Module::Pluggable::Object
            Object::Accessor
            Pod::LaTeX
            Term::UI
            Term::UI::History
            Text::Soundex
        /}
    },
    5.019001 => {
        delta_from => 5.019,
        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 => {
            'Module::Build::Base'   => '1',
            'Module::Build::Compat' => '1',
            'Module::Build::Config' => '1',
            'Module::Build::ConfigData'=> '1',
            'Module::Build::Cookbook'=> '1',
            'Module::Build::Dumper' => '1',
            'Module::Build::ModuleInfo'=> '1',
            'Module::Build::Notes'  => '1',
            'Module::Build::PPMMaker'=> '1',
            'Module::Build::Platform::Default'=> '1',
            'Module::Build::Platform::MacOS'=> '1',
            'Module::Build::Platform::Unix'=> '1',
            'Module::Build::Platform::VMS'=> '1',
            'Module::Build::Platform::VOS'=> '1',
            'Module::Build::Platform::Windows'=> '1',
            'Module::Build::Platform::aix'=> '1',
            'Module::Build::Platform::cygwin'=> '1',
            'Module::Build::Platform::darwin'=> '1',
            'Module::Build::Platform::os2'=> '1',
            'Module::Build::PodParser'=> '1',
            'Module::Build::Version'=> '1',
            'Module::Build::YAML'   => '1',
            'inc::latest'           => '1',
        },
        removed => {
        }
    },
    5.019005 => {
        delta_from => 5.019004,
        changed => {
        },
        removed => {
        }
    },
    5.019006 => {
        delta_from => 5.019005,
        changed => {
            'Package::Constants'    => '1',
        },
        removed => {
        }
    },
    5.019007 => {
        delta_from => 5.019006,
        changed => {
            'CGI'                   => '1',
            'CGI::Apache'           => '1',
            'CGI::Carp'             => '1',
            'CGI::Cookie'           => '1',
            'CGI::Fast'             => '1',
            'CGI::Pretty'           => '1',
            'CGI::Push'             => '1',
            'CGI::Switch'           => '1',
            'CGI::Util'             => '1',
        },
        removed => {
        }
    },
    5.019008 => {
        delta_from => 5.019007,
        changed => {
        },
        removed => {
        }
    },
    5.019009 => {
        delta_from => 5.019008,
        changed => {
        },
        removed => {
        }
    },
    5.01901 => {
        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 => {
            'CGI'                   => 1,
            'CGI::Apache'           => 1,
            'CGI::Carp'             => 1,
            'CGI::Cookie'           => 1,
            'CGI::Fast'             => 1,
            'CGI::Pretty'           => 1,
            'CGI::Push'             => 1,
            'CGI::Switch'           => 1,
            'CGI::Util'             => 1,
            'Module::Build'         => 1,
            'Module::Build::Base'   => 1,
            'Module::Build::Compat' => 1,
            'Module::Build::Config' => 1,
            'Module::Build::ConfigData'=> 1,
            'Module::Build::Cookbook'=> 1,
            'Module::Build::Dumper' => 1,
            'Module::Build::ModuleInfo'=> 1,
            'Module::Build::Notes'  => 1,
            'Module::Build::PPMMaker'=> 1,
            'Module::Build::Platform::Default'=> 1,
            'Module::Build::Platform::MacOS'=> 1,
            'Module::Build::Platform::Unix'=> 1,
            'Module::Build::Platform::VMS'=> 1,
            'Module::Build::Platform::VOS'=> 1,
            'Module::Build::Platform::Windows'=> 1,
            'Module::Build::Platform::aix'=> 1,
            'Module::Build::Platform::cygwin'=> 1,
            'Module::Build::Platform::darwin'=> 1,
            'Module::Build::Platform::os2'=> 1,
            'Module::Build::PodParser'=> 1,
            'Module::Build::Version'=> 1,
            'Module::Build::YAML'   => 1,
            'Package::Constants'    => 1,
            'inc::latest'           => 1,
        }
    },
    5.021001 => {
        delta_from => 5.021000,
        changed => {
        },
        removed => {
        }
    },
    5.021002 => {
        delta_from => 5.021001,
        changed => {
        },
        removed => {
        }
    },
    5.021003 => {
        delta_from => 5.021002,
        changed => {
        },
        removed => {
        }
    },
    5.020001 => {
        delta_from => 5.020000,
        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 => {
        },
        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.023000,
        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.024,
        changed => {
        },
        removed => {
        }
    },
    5.025001 => {
        delta_from => 5.025,
        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 => {
        }
    },
    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.026,
        changed => {
        },
        removed => {
        }
    },
    5.027001 => {
        delta_from => 5.027,
        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 => {
            'B::Debug'              => '1',
        },
        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.02701,
        changed => {
        },
        removed => {
        }
    },
    5.028000 => {
        delta_from => 5.027011,
        changed => {
        },
        removed => {
        }
    },
    5.029000 => {
        delta_from => 5.028,
        changed => {
        },
        removed => {
        }
    },
    5.029001 => {
        delta_from => 5.029,
        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 => {
            arybase => '1',
        }
    },
    5.029005 => {
        delta_from => 5.027002,
        changed => {
        },
        removed => {
        }
    },
    5.026003 => {
        delta_from => 5.026002,
        changed => {
        },
        removed => {
        }
    },
    5.028001 => {
        delta_from => 5.028000,
        changed => {
        },
        removed => {
        }
    },
);

%deprecated = _undelta(\%deprecated);

%upstream = (
    'App::Cpan'             => 'cpan',
    'App::Prove'            => 'cpan',
    'App::Prove::State'     => 'cpan',
    'App::Prove::State::Result'=> 'cpan',
    'App::Prove::State::Result::Test'=> 'cpan',
    'Archive::Tar'          => 'cpan',
    'Archive::Tar::Constant'=> 'cpan',
    'Archive::Tar::File'    => 'cpan',
    'AutoLoader'            => 'cpan',
    'AutoSplit'             => 'cpan',
    'CPAN'                  => 'cpan',
    'CPAN::Author'          => 'cpan',
    'CPAN::Bundle'          => 'cpan',
    'CPAN::CacheMgr'        => 'cpan',
    'CPAN::Complete'        => 'cpan',
    'CPAN::Debug'           => 'cpan',
    'CPAN::DeferredCode'    => 'cpan',
    'CPAN::Distribution'    => 'cpan',
    'CPAN::Distroprefs'     => 'cpan',
    'CPAN::Distrostatus'    => 'cpan',
    'CPAN::Exception::RecursiveDependency'=> 'cpan',
    'CPAN::Exception::blocked_urllist'=> 'cpan',
    'CPAN::Exception::yaml_not_installed'=> 'cpan',
    'CPAN::Exception::yaml_process_error'=> 'cpan',
    'CPAN::FTP'             => 'cpan',
    'CPAN::FTP::netrc'      => 'cpan',
    'CPAN::FirstTime'       => 'cpan',
    'CPAN::HTTP::Client'    => 'cpan',
    'CPAN::HTTP::Credentials'=> 'cpan',
    'CPAN::HandleConfig'    => 'cpan',
    'CPAN::Index'           => 'cpan',
    'CPAN::InfoObj'         => 'cpan',
    'CPAN::Kwalify'         => 'cpan',
    'CPAN::LWP::UserAgent'  => 'cpan',
    'CPAN::Meta'            => 'cpan',
    'CPAN::Meta::Converter' => 'cpan',
    'CPAN::Meta::Feature'   => 'cpan',
    'CPAN::Meta::History'   => 'cpan',
    'CPAN::Meta::Merge'     => 'cpan',
    'CPAN::Meta::Prereqs'   => 'cpan',
    'CPAN::Meta::Requirements'=> 'cpan',
    'CPAN::Meta::Spec'      => 'cpan',
    'CPAN::Meta::Validator' => 'cpan',
    'CPAN::Meta::YAML'      => 'cpan',
    'CPAN::Mirrors'         => 'cpan',
    'CPAN::Module'          => 'cpan',
    'CPAN::Nox'             => 'cpan',
    'CPAN::Plugin'          => 'cpan',
    'CPAN::Plugin::Specfile'=> 'cpan',
    'CPAN::Prompt'          => 'cpan',
    'CPAN::Queue'           => 'cpan',
    'CPAN::Shell'           => 'cpan',
    'CPAN::Tarzip'          => 'cpan',
    'CPAN::URL'             => 'cpan',
    'CPAN::Version'         => 'cpan',
    'Compress::Raw::Bzip2'  => 'cpan',
    'Compress::Raw::Zlib'   => 'cpan',
    'Compress::Zlib'        => 'cpan',
    'Config::Perl::V'       => 'cpan',
    'DB_File'               => 'cpan',
    'Digest'                => 'cpan',
    'Digest::MD5'           => 'cpan',
    'Digest::SHA'           => 'cpan',
    'Digest::base'          => 'cpan',
    'Digest::file'          => 'cpan',
    'Encode'                => 'cpan',
    'Encode::Alias'         => 'cpan',
    'Encode::Byte'          => 'cpan',
    'Encode::CJKConstants'  => 'cpan',
    'Encode::CN'            => 'cpan',
    'Encode::CN::HZ'        => 'cpan',
    'Encode::Config'        => 'cpan',
    'Encode::EBCDIC'        => 'cpan',
    'Encode::Encoder'       => 'cpan',
    'Encode::Encoding'      => 'cpan',
    'Encode::GSM0338'       => 'cpan',
    'Encode::Guess'         => 'cpan',
    'Encode::JP'            => 'cpan',
    'Encode::JP::H2Z'       => 'cpan',
    'Encode::JP::JIS7'      => 'cpan',
    'Encode::KR'            => 'cpan',
    'Encode::KR::2022_KR'   => 'cpan',
    'Encode::MIME::Header'  => 'cpan',
    'Encode::MIME::Header::ISO_2022_JP'=> 'cpan',
    'Encode::MIME::Name'    => 'cpan',
    'Encode::Symbol'        => 'cpan',
    'Encode::TW'            => 'cpan',
    'Encode::Unicode'       => 'cpan',
    'Encode::Unicode::UTF7' => 'cpan',
    'ExtUtils::Command'     => 'cpan',
    'ExtUtils::Command::MM' => 'cpan',
    'ExtUtils::Constant'    => 'cpan',
    'ExtUtils::Constant::Base'=> 'cpan',
    'ExtUtils::Constant::ProxySubs'=> 'cpan',
    'ExtUtils::Constant::Utils'=> 'cpan',
    'ExtUtils::Constant::XS'=> 'cpan',
    'ExtUtils::Install'     => 'cpan',
    'ExtUtils::Installed'   => 'cpan',
    'ExtUtils::Liblist'     => 'cpan',
    'ExtUtils::Liblist::Kid'=> 'cpan',
    'ExtUtils::MM'          => 'cpan',
    'ExtUtils::MM_AIX'      => 'cpan',
    'ExtUtils::MM_Any'      => 'cpan',
    'ExtUtils::MM_BeOS'     => 'cpan',
    'ExtUtils::MM_Cygwin'   => 'cpan',
    'ExtUtils::MM_DOS'      => 'cpan',
    'ExtUtils::MM_Darwin'   => 'cpan',
    'ExtUtils::MM_MacOS'    => 'cpan',
    'ExtUtils::MM_NW5'      => 'cpan',
    'ExtUtils::MM_OS2'      => 'cpan',
    'ExtUtils::MM_QNX'      => 'cpan',
    'ExtUtils::MM_UWIN'     => 'cpan',
    'ExtUtils::MM_Unix'     => 'cpan',
    'ExtUtils::MM_VMS'      => 'cpan',
    'ExtUtils::MM_VOS'      => 'cpan',
    'ExtUtils::MM_Win32'    => 'cpan',
    'ExtUtils::MM_Win95'    => 'cpan',
    'ExtUtils::MY'          => 'cpan',
    'ExtUtils::MakeMaker'   => 'cpan',
    'ExtUtils::MakeMaker::Config'=> 'cpan',
    'ExtUtils::MakeMaker::Locale'=> 'cpan',
    'ExtUtils::MakeMaker::version'=> 'cpan',
    'ExtUtils::MakeMaker::version::regex'=> 'cpan',
    'ExtUtils::Manifest'    => 'cpan',
    'ExtUtils::Mkbootstrap' => 'cpan',
    'ExtUtils::Mksymlists'  => 'cpan',
    'ExtUtils::Packlist'    => 'cpan',
    'ExtUtils::testlib'     => 'cpan',
    'Fatal'                 => 'cpan',
    'File::Fetch'           => 'cpan',
    'File::GlobMapper'      => 'cpan',
    'File::Path'            => 'cpan',
    'File::Temp'            => 'cpan',
    'Filter::Util::Call'    => 'cpan',
    'Getopt::Long'          => 'cpan',
    'HTTP::Tiny'            => 'cpan',
    'IO::Compress::Adapter::Bzip2'=> 'cpan',
    'IO::Compress::Adapter::Deflate'=> 'cpan',
    'IO::Compress::Adapter::Identity'=> 'cpan',
    'IO::Compress::Base'    => 'cpan',
    'IO::Compress::Base::Common'=> 'cpan',
    'IO::Compress::Bzip2'   => 'cpan',
    'IO::Compress::Deflate' => 'cpan',
    'IO::Compress::Gzip'    => 'cpan',
    'IO::Compress::Gzip::Constants'=> 'cpan',
    'IO::Compress::RawDeflate'=> 'cpan',
    'IO::Compress::Zip'     => 'cpan',
    'IO::Compress::Zip::Constants'=> 'cpan',
    'IO::Compress::Zlib::Constants'=> 'cpan',
    'IO::Compress::Zlib::Extra'=> 'cpan',
    'IO::Socket::IP'        => 'cpan',
    'IO::Uncompress::Adapter::Bunzip2'=> 'cpan',
    'IO::Uncompress::Adapter::Identity'=> 'cpan',
    'IO::Uncompress::Adapter::Inflate'=> 'cpan',
    'IO::Uncompress::AnyInflate'=> 'cpan',
    'IO::Uncompress::AnyUncompress'=> 'cpan',
    'IO::Uncompress::Base'  => 'cpan',
    'IO::Uncompress::Bunzip2'=> 'cpan',
    'IO::Uncompress::Gunzip'=> 'cpan',
    'IO::Uncompress::Inflate'=> 'cpan',
    'IO::Uncompress::RawInflate'=> 'cpan',
    'IO::Uncompress::Unzip' => 'cpan',
    'IO::Zlib'              => 'cpan',
    'IPC::Cmd'              => 'cpan',
    'IPC::Msg'              => 'cpan',
    'IPC::Semaphore'        => 'cpan',
    'IPC::SharedMem'        => 'cpan',
    'IPC::SysV'             => 'cpan',
    'JSON::PP'              => 'cpan',
    'JSON::PP::Boolean'     => 'cpan',
    'List::Util'            => 'cpan',
    'List::Util::XS'        => 'cpan',
    'Locale::Maketext::Simple'=> 'cpan',
    'MIME::Base64'          => 'cpan',
    'MIME::QuotedPrint'     => 'cpan',
    'Math::BigFloat'        => 'cpan',
    'Math::BigFloat::Trace' => 'cpan',
    'Math::BigInt'          => 'cpan',
    'Math::BigInt::Calc'    => 'cpan',
    'Math::BigInt::CalcEmu' => 'cpan',
    'Math::BigInt::FastCalc'=> 'cpan',
    'Math::BigInt::Lib'     => 'cpan',
    'Math::BigInt::Trace'   => 'cpan',
    'Math::BigRat'          => 'cpan',
    'Math::Complex'         => 'cpan',
    'Math::Trig'            => 'cpan',
    'Memoize'               => 'cpan',
    'Memoize::AnyDBM_File'  => 'cpan',
    'Memoize::Expire'       => 'cpan',
    'Memoize::ExpireFile'   => 'cpan',
    'Memoize::ExpireTest'   => 'cpan',
    'Memoize::NDBM_File'    => 'cpan',
    'Memoize::SDBM_File'    => 'cpan',
    'Memoize::Storable'     => 'cpan',
    'Module::Load'          => 'cpan',
    'Module::Load::Conditional'=> 'cpan',
    'Module::Loaded'        => 'cpan',
    'Module::Metadata'      => 'cpan',
    'NEXT'                  => 'cpan',
    'Net::Cmd'              => 'cpan',
    'Net::Config'           => 'cpan',
    'Net::Domain'           => 'cpan',
    'Net::FTP'              => 'cpan',
    'Net::FTP::A'           => 'cpan',
    'Net::FTP::E'           => 'cpan',
    'Net::FTP::I'           => 'cpan',
    'Net::FTP::L'           => 'cpan',
    'Net::FTP::dataconn'    => 'cpan',
    'Net::NNTP'             => 'cpan',
    'Net::Netrc'            => 'cpan',
    'Net::POP3'             => 'cpan',
    'Net::SMTP'             => 'cpan',
    'Net::Time'             => 'cpan',
    'Params::Check'         => 'cpan',
    'Parse::CPAN::Meta'     => 'cpan',
    'Perl::OSType'          => 'cpan',
    'PerlIO::via::QuotedPrint'=> 'cpan',
    'Pod::Checker'          => 'cpan',
    'Pod::Escapes'          => 'cpan',
    'Pod::Find'             => 'cpan',
    'Pod::InputObjects'     => 'cpan',
    'Pod::Man'              => 'cpan',
    'Pod::ParseLink'        => 'cpan',
    'Pod::ParseUtils'       => 'cpan',
    'Pod::Parser'           => 'cpan',
    'Pod::Perldoc'          => 'cpan',
    'Pod::Perldoc::BaseTo'  => 'cpan',
    'Pod::Perldoc::GetOptsOO'=> 'cpan',
    'Pod::Perldoc::ToANSI'  => 'cpan',
    'Pod::Perldoc::ToChecker'=> 'cpan',
    'Pod::Perldoc::ToMan'   => 'cpan',
    'Pod::Perldoc::ToNroff' => 'cpan',
    'Pod::Perldoc::ToPod'   => 'cpan',
    'Pod::Perldoc::ToRtf'   => 'cpan',
    'Pod::Perldoc::ToTerm'  => 'cpan',
    'Pod::Perldoc::ToText'  => 'cpan',
    'Pod::Perldoc::ToTk'    => 'cpan',
    'Pod::Perldoc::ToXml'   => 'cpan',
    'Pod::PlainText'        => 'cpan',
    'Pod::Select'           => 'cpan',
    'Pod::Simple'           => 'cpan',
    'Pod::Simple::BlackBox' => 'cpan',
    'Pod::Simple::Checker'  => 'cpan',
    'Pod::Simple::Debug'    => 'cpan',
    'Pod::Simple::DumpAsText'=> 'cpan',
    'Pod::Simple::DumpAsXML'=> 'cpan',
    'Pod::Simple::HTML'     => 'cpan',
    'Pod::Simple::HTMLBatch'=> 'cpan',
    'Pod::Simple::HTMLLegacy'=> 'cpan',
    'Pod::Simple::LinkSection'=> 'cpan',
    'Pod::Simple::Methody'  => 'cpan',
    'Pod::Simple::Progress' => 'cpan',
    'Pod::Simple::PullParser'=> 'cpan',
    'Pod::Simple::PullParserEndToken'=> 'cpan',
    'Pod::Simple::PullParserStartToken'=> 'cpan',
    'Pod::Simple::PullParserTextToken'=> 'cpan',
    'Pod::Simple::PullParserToken'=> 'cpan',
    'Pod::Simple::RTF'      => 'cpan',
    'Pod::Simple::Search'   => 'cpan',
    'Pod::Simple::SimpleTree'=> 'cpan',
    'Pod::Simple::Text'     => 'cpan',
    'Pod::Simple::TextContent'=> 'cpan',
    'Pod::Simple::TiedOutFH'=> 'cpan',
    'Pod::Simple::Transcode'=> 'cpan',
    'Pod::Simple::TranscodeDumb'=> 'cpan',
    'Pod::Simple::TranscodeSmart'=> 'cpan',
    'Pod::Simple::XHTML'    => 'cpan',
    'Pod::Simple::XMLOutStream'=> 'cpan',
    'Pod::Text'             => 'cpan',
    'Pod::Text::Color'      => 'cpan',
    'Pod::Text::Overstrike' => 'cpan',
    'Pod::Text::Termcap'    => 'cpan',
    'Pod::Usage'            => 'cpan',
    'Scalar::Util'          => 'cpan',
    'Socket'                => 'cpan',
    'Sub::Util'             => 'cpan',
    'Sys::Syslog'           => 'cpan',
    'Sys::Syslog::Win32'    => 'cpan',
    'TAP::Base'             => 'cpan',
    'TAP::Formatter::Base'  => 'cpan',
    'TAP::Formatter::Color' => 'cpan',
    'TAP::Formatter::Console'=> 'cpan',
    'TAP::Formatter::Console::ParallelSession'=> 'cpan',
    'TAP::Formatter::Console::Session'=> 'cpan',
    'TAP::Formatter::File'  => 'cpan',
    'TAP::Formatter::File::Session'=> 'cpan',
    'TAP::Formatter::Session'=> 'cpan',
    'TAP::Harness'          => 'cpan',
    'TAP::Harness::Env'     => 'cpan',
    'TAP::Object'           => 'cpan',
    'TAP::Parser'           => 'cpan',
    'TAP::Parser::Aggregator'=> 'cpan',
    'TAP::Parser::Grammar'  => 'cpan',
    'TAP::Parser::Iterator' => 'cpan',
    'TAP::Parser::Iterator::Array'=> 'cpan',
    'TAP::Parser::Iterator::Process'=> 'cpan',
    'TAP::Parser::Iterator::Stream'=> 'cpan',
    'TAP::Parser::IteratorFactory'=> 'cpan',
    'TAP::Parser::Multiplexer'=> 'cpan',
    'TAP::Parser::Result'   => 'cpan',
    'TAP::Parser::Result::Bailout'=> 'cpan',
    'TAP::Parser::Result::Comment'=> 'cpan',
    'TAP::Parser::Result::Plan'=> 'cpan',
    'TAP::Parser::Result::Pragma'=> 'cpan',
    'TAP::Parser::Result::Test'=> 'cpan',
    'TAP::Parser::Result::Unknown'=> 'cpan',
    'TAP::Parser::Result::Version'=> 'cpan',
    'TAP::Parser::Result::YAML'=> 'cpan',
    'TAP::Parser::ResultFactory'=> 'cpan',
    'TAP::Parser::Scheduler'=> 'cpan',
    'TAP::Parser::Scheduler::Job'=> 'cpan',
    'TAP::Parser::Scheduler::Spinner'=> 'cpan',
    'TAP::Parser::Source'   => 'cpan',
    'TAP::Parser::SourceHandler'=> 'cpan',
    'TAP::Parser::SourceHandler::Executable'=> 'cpan',
    'TAP::Parser::SourceHandler::File'=> 'cpan',
    'TAP::Parser::SourceHandler::Handle'=> 'cpan',
    'TAP::Parser::SourceHandler::Perl'=> 'cpan',
    'TAP::Parser::SourceHandler::RawTAP'=> 'cpan',
    'TAP::Parser::YAMLish::Reader'=> 'cpan',
    'TAP::Parser::YAMLish::Writer'=> 'cpan',
    'Term::ANSIColor'       => 'cpan',
    'Term::Cap'             => 'cpan',
    'Test2'                 => 'cpan',
    'Test2::API'            => 'cpan',
    'Test2::API::Breakage'  => 'cpan',
    'Test2::API::Context'   => 'cpan',
    'Test2::API::Instance'  => 'cpan',
    'Test2::API::Stack'     => 'cpan',
    'Test2::Event'          => 'cpan',
    'Test2::Event::Bail'    => 'cpan',
    'Test2::Event::Diag'    => 'cpan',
    'Test2::Event::Encoding'=> 'cpan',
    'Test2::Event::Exception'=> 'cpan',
    'Test2::Event::Fail'    => 'cpan',
    'Test2::Event::Generic' => 'cpan',
    'Test2::Event::Note'    => 'cpan',
    'Test2::Event::Ok'      => 'cpan',
    'Test2::Event::Pass'    => 'cpan',
    'Test2::Event::Plan'    => 'cpan',
    'Test2::Event::Skip'    => 'cpan',
    'Test2::Event::Subtest' => 'cpan',
    'Test2::Event::TAP::Version'=> 'cpan',
    'Test2::Event::V2'      => 'cpan',
    'Test2::Event::Waiting' => 'cpan',
    'Test2::EventFacet'     => 'cpan',
    'Test2::EventFacet::About'=> 'cpan',
    'Test2::EventFacet::Amnesty'=> 'cpan',
    'Test2::EventFacet::Assert'=> 'cpan',
    'Test2::EventFacet::Control'=> 'cpan',
    'Test2::EventFacet::Error'=> 'cpan',
    'Test2::EventFacet::Hub'=> 'cpan',
    'Test2::EventFacet::Info'=> 'cpan',
    'Test2::EventFacet::Meta'=> 'cpan',
    'Test2::EventFacet::Parent'=> 'cpan',
    'Test2::EventFacet::Plan'=> 'cpan',
    'Test2::EventFacet::Render'=> 'cpan',
    'Test2::EventFacet::Trace'=> 'cpan',
    'Test2::Formatter'      => 'cpan',
    'Test2::Formatter::TAP' => 'cpan',
    'Test2::Hub'            => 'cpan',
    'Test2::Hub::Interceptor'=> 'cpan',
    'Test2::Hub::Interceptor::Terminator'=> 'cpan',
    'Test2::Hub::Subtest'   => 'cpan',
    'Test2::IPC'            => 'cpan',
    'Test2::IPC::Driver'    => 'cpan',
    'Test2::IPC::Driver::Files'=> 'cpan',
    'Test2::Tools::Tiny'    => 'cpan',
    'Test2::Util'           => 'cpan',
    'Test2::Util::ExternalMeta'=> 'cpan',
    'Test2::Util::Facets2Legacy'=> 'cpan',
    'Test2::Util::HashBase' => 'cpan',
    'Test2::Util::Trace'    => 'cpan',
    'Test::Builder'         => 'cpan',
    'Test::Builder::Formatter'=> 'cpan',
    'Test::Builder::IO::Scalar'=> 'cpan',
    'Test::Builder::Module' => 'cpan',
    'Test::Builder::Tester' => 'cpan',
    'Test::Builder::Tester::Color'=> 'cpan',
    'Test::Builder::TodoDiag'=> 'cpan',
    'Test::Harness'         => 'cpan',
    'Test::More'            => 'cpan',
    'Test::Simple'          => 'cpan',
    'Test::Tester'          => 'cpan',
    'Test::Tester::Capture' => 'cpan',
    'Test::Tester::CaptureRunner'=> 'cpan',
    'Test::Tester::Delegate'=> 'cpan',
    'Test::use::ok'         => 'cpan',
    'Text::Balanced'        => 'cpan',
    'Text::ParseWords'      => 'cpan',
    'Text::Tabs'            => 'cpan',
    'Text::Wrap'            => 'cpan',
    'Tie::RefHash'          => 'cpan',
    'Time::Local'           => 'cpan',
    'Time::Piece'           => 'cpan',
    'Time::Seconds'         => 'cpan',
    'Unicode::Collate'      => 'cpan',
    'Unicode::Collate::CJK::Big5'=> 'cpan',
    'Unicode::Collate::CJK::GB2312'=> 'cpan',
    'Unicode::Collate::CJK::JISX0208'=> 'cpan',
    'Unicode::Collate::CJK::Korean'=> 'cpan',
    'Unicode::Collate::CJK::Pinyin'=> 'cpan',
    'Unicode::Collate::CJK::Stroke'=> 'cpan',
    'Unicode::Collate::CJK::Zhuyin'=> 'cpan',
    'Unicode::Collate::Locale'=> 'cpan',
    'Win32'                 => 'cpan',
    'Win32API::File'        => 'cpan',
    'Win32API::File::inc::ExtUtils::Myconst2perl'=> 'cpan',
    'autodie'               => 'cpan',
    'autodie::Scope::Guard' => 'cpan',
    'autodie::Scope::GuardStack'=> 'cpan',
    'autodie::Util'         => 'cpan',
    'autodie::exception'    => 'cpan',
    'autodie::exception::system'=> 'cpan',
    'autodie::hints'        => 'cpan',
    'autodie::skip'         => 'cpan',
    'bigint'                => 'cpan',
    'bignum'                => 'cpan',
    'bigrat'                => 'cpan',
    'encoding'              => 'cpan',
    'experimental'          => 'cpan',
    'ok'                    => 'cpan',
    'parent'                => 'cpan',
    'perlfaq'               => 'cpan',
    'version'               => 'cpan',
    'version::regex'        => 'cpan',
);

%bug_tracker = (
    'App::Cpan'             => undef,
    'App::Prove'            => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'App::Prove::State'     => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'App::Prove::State::Result'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'App::Prove::State::Result::Test'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'Archive::Tar'          => undef,
    'Archive::Tar::Constant'=> undef,
    'Archive::Tar::File'    => undef,
    'CPAN'                  => undef,
    'CPAN::Author'          => undef,
    'CPAN::Bundle'          => undef,
    'CPAN::CacheMgr'        => undef,
    'CPAN::Complete'        => undef,
    'CPAN::Debug'           => undef,
    'CPAN::DeferredCode'    => undef,
    'CPAN::Distribution'    => undef,
    'CPAN::Distroprefs'     => undef,
    'CPAN::Distrostatus'    => undef,
    'CPAN::Exception::RecursiveDependency'=> undef,
    'CPAN::Exception::blocked_urllist'=> undef,
    'CPAN::Exception::yaml_not_installed'=> undef,
    'CPAN::Exception::yaml_process_error'=> undef,
    'CPAN::FTP'             => undef,
    'CPAN::FTP::netrc'      => undef,
    'CPAN::FirstTime'       => undef,
    'CPAN::HTTP::Client'    => undef,
    'CPAN::HTTP::Credentials'=> undef,
    'CPAN::HandleConfig'    => undef,
    'CPAN::Index'           => undef,
    'CPAN::InfoObj'         => undef,
    'CPAN::Kwalify'         => undef,
    'CPAN::LWP::UserAgent'  => undef,
    'CPAN::Meta'            => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::Converter' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::Feature'   => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::History'   => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::Merge'     => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::Prereqs'   => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::Requirements'=> 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements/issues',
    'CPAN::Meta::Spec'      => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::Validator' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'CPAN::Meta::YAML'      => 'https://github.com/Perl-Toolchain-Gang/YAML-Tiny/issues',
    'CPAN::Mirrors'         => undef,
    'CPAN::Module'          => undef,
    'CPAN::Nox'             => undef,
    'CPAN::Plugin'          => undef,
    'CPAN::Plugin::Specfile'=> undef,
    'CPAN::Prompt'          => undef,
    'CPAN::Queue'           => undef,
    'CPAN::Shell'           => undef,
    'CPAN::Tarzip'          => undef,
    'CPAN::URL'             => undef,
    'CPAN::Version'         => undef,
    'Compress::Raw::Bzip2'  => undef,
    'Compress::Raw::Zlib'   => undef,
    'Compress::Zlib'        => undef,
    'Config::Perl::V'       => undef,
    'DB_File'               => undef,
    'Digest'                => undef,
    'Digest::MD5'           => undef,
    'Digest::SHA'           => undef,
    'Digest::base'          => undef,
    'Digest::file'          => undef,
    'Encode'                => undef,
    'Encode::Alias'         => undef,
    'Encode::Byte'          => undef,
    'Encode::CJKConstants'  => undef,
    'Encode::CN'            => undef,
    'Encode::CN::HZ'        => undef,
    'Encode::Config'        => undef,
    'Encode::EBCDIC'        => undef,
    'Encode::Encoder'       => undef,
    'Encode::Encoding'      => undef,
    'Encode::GSM0338'       => undef,
    'Encode::Guess'         => undef,
    'Encode::JP'            => undef,
    'Encode::JP::H2Z'       => undef,
    'Encode::JP::JIS7'      => undef,
    'Encode::KR'            => undef,
    'Encode::KR::2022_KR'   => undef,
    'Encode::MIME::Header'  => undef,
    'Encode::MIME::Header::ISO_2022_JP'=> undef,
    'Encode::MIME::Name'    => undef,
    'Encode::Symbol'        => undef,
    'Encode::TW'            => undef,
    'Encode::Unicode'       => undef,
    'Encode::Unicode::UTF7' => undef,
    'ExtUtils::Command'     => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::Command::MM' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::Constant'    => undef,
    'ExtUtils::Constant::Base'=> undef,
    'ExtUtils::Constant::ProxySubs'=> undef,
    'ExtUtils::Constant::Utils'=> undef,
    'ExtUtils::Constant::XS'=> undef,
    'ExtUtils::Install'     => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-Install',
    'ExtUtils::Installed'   => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-Install',
    'ExtUtils::Liblist'     => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::Liblist::Kid'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM'          => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_AIX'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_Any'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_BeOS'     => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_Cygwin'   => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_DOS'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_Darwin'   => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_MacOS'    => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_NW5'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_OS2'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_QNX'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_UWIN'     => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_Unix'     => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_VMS'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_VOS'      => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_Win32'    => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MM_Win95'    => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MY'          => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MakeMaker'   => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MakeMaker::Config'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MakeMaker::Locale'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MakeMaker::version'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::MakeMaker::version::regex'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::Manifest'    => 'http://github.com/Perl-Toolchain-Gang/ExtUtils-Manifest/issues',
    'ExtUtils::Mkbootstrap' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::Mksymlists'  => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'ExtUtils::Packlist'    => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-Install',
    'ExtUtils::testlib'     => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
    'Fatal'                 => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'File::Fetch'           => undef,
    'File::GlobMapper'      => undef,
    'File::Path'            => undef,
    'File::Temp'            => 'https://rt.cpan.org/Public/Dist/Display.html?Name=File-Temp',
    'Filter::Util::Call'    => undef,
    'Getopt::Long'          => undef,
    'HTTP::Tiny'            => 'https://github.com/chansen/p5-http-tiny/issues',
    'IO::Compress::Adapter::Bzip2'=> undef,
    'IO::Compress::Adapter::Deflate'=> undef,
    'IO::Compress::Adapter::Identity'=> undef,
    'IO::Compress::Base'    => undef,
    'IO::Compress::Base::Common'=> undef,
    'IO::Compress::Bzip2'   => undef,
    'IO::Compress::Deflate' => undef,
    'IO::Compress::Gzip'    => undef,
    'IO::Compress::Gzip::Constants'=> undef,
    'IO::Compress::RawDeflate'=> undef,
    'IO::Compress::Zip'     => undef,
    'IO::Compress::Zip::Constants'=> undef,
    'IO::Compress::Zlib::Constants'=> undef,
    'IO::Compress::Zlib::Extra'=> undef,
    'IO::Socket::IP'        => undef,
    'IO::Uncompress::Adapter::Bunzip2'=> undef,
    'IO::Uncompress::Adapter::Identity'=> undef,
    'IO::Uncompress::Adapter::Inflate'=> undef,
    'IO::Uncompress::AnyInflate'=> undef,
    'IO::Uncompress::AnyUncompress'=> undef,
    'IO::Uncompress::Base'  => undef,
    'IO::Uncompress::Bunzip2'=> undef,
    'IO::Uncompress::Gunzip'=> undef,
    'IO::Uncompress::Inflate'=> undef,
    'IO::Uncompress::RawInflate'=> undef,
    'IO::Uncompress::Unzip' => undef,
    'IO::Zlib'              => undef,
    'IPC::Cmd'              => undef,
    'IPC::Msg'              => undef,
    'IPC::Semaphore'        => undef,
    'IPC::SharedMem'        => undef,
    'IPC::SysV'             => undef,
    'JSON::PP'              => undef,
    'JSON::PP::Boolean'     => undef,
    'List::Util'            => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Scalar-List-Utils',
    'List::Util::XS'        => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Scalar-List-Utils',
    'Locale::Maketext::Simple'=> undef,
    'MIME::Base64'          => undef,
    'MIME::QuotedPrint'     => undef,
    'Math::BigFloat'        => undef,
    'Math::BigFloat::Trace' => undef,
    'Math::BigInt'          => undef,
    'Math::BigInt::Calc'    => undef,
    'Math::BigInt::CalcEmu' => undef,
    'Math::BigInt::FastCalc'=> undef,
    'Math::BigInt::Lib'     => undef,
    'Math::BigInt::Trace'   => undef,
    'Math::BigRat'          => undef,
    'Math::Complex'         => undef,
    'Math::Trig'            => undef,
    'Memoize'               => undef,
    'Memoize::AnyDBM_File'  => undef,
    'Memoize::Expire'       => undef,
    'Memoize::ExpireFile'   => undef,
    'Memoize::ExpireTest'   => undef,
    'Memoize::NDBM_File'    => undef,
    'Memoize::SDBM_File'    => undef,
    'Memoize::Storable'     => undef,
    'Module::Load'          => undef,
    'Module::Load::Conditional'=> undef,
    'Module::Loaded'        => undef,
    'Module::Metadata'      => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Module-Metadata',
    'NEXT'                  => undef,
    'Net::Cmd'              => undef,
    'Net::Config'           => undef,
    'Net::Domain'           => undef,
    'Net::FTP'              => undef,
    'Net::FTP::A'           => undef,
    'Net::FTP::E'           => undef,
    'Net::FTP::I'           => undef,
    'Net::FTP::L'           => undef,
    'Net::FTP::dataconn'    => undef,
    'Net::NNTP'             => undef,
    'Net::Netrc'            => undef,
    'Net::POP3'             => undef,
    'Net::SMTP'             => undef,
    'Net::Time'             => undef,
    'Params::Check'         => undef,
    'Parse::CPAN::Meta'     => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
    'Perl::OSType'          => 'https://github.com/Perl-Toolchain-Gang/Perl-OSType/issues',
    'PerlIO::via::QuotedPrint'=> undef,
    'Pod::Checker'          => undef,
    'Pod::Escapes'          => undef,
    'Pod::Find'             => undef,
    'Pod::InputObjects'     => undef,
    'Pod::Man'              => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
    'Pod::ParseLink'        => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
    'Pod::ParseUtils'       => undef,
    'Pod::Parser'           => undef,
    'Pod::Perldoc'          => undef,
    'Pod::Perldoc::BaseTo'  => undef,
    'Pod::Perldoc::GetOptsOO'=> undef,
    'Pod::Perldoc::ToANSI'  => undef,
    'Pod::Perldoc::ToChecker'=> undef,
    'Pod::Perldoc::ToMan'   => undef,
    'Pod::Perldoc::ToNroff' => undef,
    'Pod::Perldoc::ToPod'   => undef,
    'Pod::Perldoc::ToRtf'   => undef,
    'Pod::Perldoc::ToTerm'  => undef,
    'Pod::Perldoc::ToText'  => undef,
    'Pod::Perldoc::ToTk'    => undef,
    'Pod::Perldoc::ToXml'   => undef,
    'Pod::PlainText'        => undef,
    'Pod::Select'           => undef,
    'Pod::Simple'           => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::BlackBox' => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::Checker'  => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::Debug'    => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::DumpAsText'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::DumpAsXML'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::HTML'     => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::HTMLBatch'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::HTMLLegacy'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::LinkSection'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::Methody'  => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::Progress' => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::PullParser'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::PullParserEndToken'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::PullParserStartToken'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::PullParserTextToken'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::PullParserToken'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::RTF'      => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::Search'   => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::SimpleTree'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::Text'     => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::TextContent'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::TiedOutFH'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::Transcode'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::TranscodeDumb'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::TranscodeSmart'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::XHTML'    => 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Simple::XMLOutStream'=> 'https://github.com/perl-pod/pod-simple/issues',
    'Pod::Text'             => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
    'Pod::Text::Color'      => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
    'Pod::Text::Overstrike' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
    'Pod::Text::Termcap'    => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
    'Pod::Usage'            => undef,
    'Scalar::Util'          => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Scalar-List-Utils',
    'Socket'                => undef,
    'Sub::Util'             => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Scalar-List-Utils',
    'Sys::Syslog'           => undef,
    'Sys::Syslog::Win32'    => undef,
    'TAP::Base'             => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::Base'  => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::Color' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::Console'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::Console::ParallelSession'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::Console::Session'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::File'  => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::File::Session'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Formatter::Session'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Harness'          => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Harness::Env'     => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Object'           => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser'           => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Aggregator'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Grammar'  => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Iterator' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Iterator::Array'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Iterator::Process'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Iterator::Stream'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::IteratorFactory'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Multiplexer'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result'   => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::Bailout'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::Comment'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::Plan'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::Pragma'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::Test'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::Unknown'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::Version'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Result::YAML'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::ResultFactory'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Scheduler'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Scheduler::Job'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Scheduler::Spinner'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::Source'   => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::SourceHandler'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::SourceHandler::Executable'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::SourceHandler::File'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::SourceHandler::Handle'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::SourceHandler::Perl'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::SourceHandler::RawTAP'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::YAMLish::Reader'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'TAP::Parser::YAMLish::Writer'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'Term::ANSIColor'       => 'https://rt.cpan.org/Dist/Display.html?Name=Term-ANSIColor',
    'Term::Cap'             => undef,
    'Test2'                 => 'http://github.com/Test-More/test-more/issues',
    'Test2::API'            => 'http://github.com/Test-More/test-more/issues',
    'Test2::API::Breakage'  => 'http://github.com/Test-More/test-more/issues',
    'Test2::API::Context'   => 'http://github.com/Test-More/test-more/issues',
    'Test2::API::Instance'  => 'http://github.com/Test-More/test-more/issues',
    'Test2::API::Stack'     => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event'          => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Bail'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Diag'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Encoding'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Exception'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Fail'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Generic' => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Note'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Ok'      => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Pass'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Plan'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Skip'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Subtest' => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::TAP::Version'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::V2'      => 'http://github.com/Test-More/test-more/issues',
    'Test2::Event::Waiting' => 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet'     => 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::About'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Amnesty'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Assert'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Control'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Error'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Hub'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Info'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Meta'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Parent'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Plan'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Render'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::EventFacet::Trace'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Formatter'      => 'http://github.com/Test-More/test-more/issues',
    'Test2::Formatter::TAP' => 'http://github.com/Test-More/test-more/issues',
    'Test2::Hub'            => 'http://github.com/Test-More/test-more/issues',
    'Test2::Hub::Interceptor'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Hub::Interceptor::Terminator'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Hub::Subtest'   => 'http://github.com/Test-More/test-more/issues',
    'Test2::IPC'            => 'http://github.com/Test-More/test-more/issues',
    'Test2::IPC::Driver'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::IPC::Driver::Files'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Tools::Tiny'    => 'http://github.com/Test-More/test-more/issues',
    'Test2::Util'           => 'http://github.com/Test-More/test-more/issues',
    'Test2::Util::ExternalMeta'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Util::Facets2Legacy'=> 'http://github.com/Test-More/test-more/issues',
    'Test2::Util::HashBase' => 'http://github.com/Test-More/test-more/issues',
    'Test2::Util::Trace'    => 'http://github.com/Test-More/test-more/issues',
    'Test::Builder'         => 'http://github.com/Test-More/test-more/issues',
    'Test::Builder::Formatter'=> 'http://github.com/Test-More/test-more/issues',
    'Test::Builder::IO::Scalar'=> 'http://github.com/Test-More/test-more/issues',
    'Test::Builder::Module' => 'http://github.com/Test-More/test-more/issues',
    'Test::Builder::Tester' => 'http://github.com/Test-More/test-more/issues',
    'Test::Builder::Tester::Color'=> 'http://github.com/Test-More/test-more/issues',
    'Test::Builder::TodoDiag'=> 'http://github.com/Test-More/test-more/issues',
    'Test::Harness'         => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
    'Test::More'            => 'http://github.com/Test-More/test-more/issues',
    'Test::Simple'          => 'http://github.com/Test-More/test-more/issues',
    'Test::Tester'          => 'http://github.com/Test-More/test-more/issues',
    'Test::Tester::Capture' => 'http://github.com/Test-More/test-more/issues',
    'Test::Tester::CaptureRunner'=> 'http://github.com/Test-More/test-more/issues',
    'Test::Tester::Delegate'=> 'http://github.com/Test-More/test-more/issues',
    'Test::use::ok'         => 'http://github.com/Test-More/test-more/issues',
    'Text::Balanced'        => undef,
    'Text::ParseWords'      => undef,
    'Text::Tabs'            => undef,
    'Text::Wrap'            => undef,
    'Tie::RefHash'          => undef,
    'Time::Local'           => 'https://github.com/houseabsolute/Time-Local/issues',
    'Time::Piece'           => undef,
    'Time::Seconds'         => undef,
    'Unicode::Collate'      => undef,
    'Unicode::Collate::CJK::Big5'=> undef,
    'Unicode::Collate::CJK::GB2312'=> undef,
    'Unicode::Collate::CJK::JISX0208'=> undef,
    'Unicode::Collate::CJK::Korean'=> undef,
    'Unicode::Collate::CJK::Pinyin'=> undef,
    'Unicode::Collate::CJK::Stroke'=> undef,
    'Unicode::Collate::CJK::Zhuyin'=> undef,
    'Unicode::Collate::Locale'=> undef,
    'Win32'                 => undef,
    'Win32API::File'        => undef,
    'Win32API::File::inc::ExtUtils::Myconst2perl'=> undef,
    'autodie'               => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'autodie::Scope::Guard' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'autodie::Scope::GuardStack'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'autodie::Util'         => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'autodie::exception'    => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'autodie::exception::system'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'autodie::hints'        => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'autodie::skip'         => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
    'bigint'                => undef,
    'bignum'                => undef,
    'bigrat'                => undef,
    'encoding'              => undef,
    'experimental'          => 'http://rt.cpan.org/Public/Dist/Display.html?Name=experimental',
    'ok'                    => 'http://github.com/Test-More/test-more/issues',
    'parent'                => undef,
    'perlfaq'               => 'https://github.com/perl-doc-cats/perlfaq/issues',
    'version'               => 'https://rt.cpan.org/Public/Dist/Display.html?Name=version',
    'version::regex'        => 'https://rt.cpan.org/Public/Dist/Display.html?Name=version',
);

# Create aliases with trailing zeros for $] use

$released{'5.000'} = $released{5};
$version{'5.000'} = $version{5};

_create_aliases(\%delta);
_create_aliases(\%released);
_create_aliases(\%version);
_create_aliases(\%deprecated);

sub _create_aliases {
    my ($hash) = @_;

    for my $version (keys %$hash) {
        next unless $version >= 5.006;

        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};
        }
    }
}

1;
__END__
Load/Conditional.pm000064400000045331150517530340010235 0ustar00package Module::Load::Conditional;

use strict;

use Module::Load qw/load autoload_remote/;
use Params::Check                       qw[check];
use Locale::Maketext::Simple Style  => 'gettext';

use Carp        ();
use File::Spec  ();
use FileHandle  ();
use version;

use Module::Metadata ();

use constant ON_VMS   => $^O eq 'VMS';
use constant ON_WIN32 => $^O eq 'MSWin32' ? 1 : 0;
use constant QUOTE    => do { ON_WIN32 ? q["] : q['] };

BEGIN {
    use vars        qw[ $VERSION @ISA $VERBOSE $CACHE @EXPORT_OK $DEPRECATED
                        $FIND_VERSION $ERROR $CHECK_INC_HASH $FORCE_SAFE_INC ];
    use Exporter;
    @ISA            = qw[Exporter];
    $VERSION        = '0.68';
    $VERBOSE        = 0;
    $DEPRECATED     = 0;
    $FIND_VERSION   = 1;
    $CHECK_INC_HASH = 0;
    $FORCE_SAFE_INC = 0;
    @EXPORT_OK      = qw[check_install can_load requires];
}

=pod

=head1 NAME

Module::Load::Conditional - Looking up module information / loading at runtime

=head1 SYNOPSIS

    use Module::Load::Conditional qw[can_load check_install requires];


    my $use_list = {
            CPANPLUS        => 0.05,
            LWP             => 5.60,
            'Test::More'    => undef,
    };

    print can_load( modules => $use_list )
            ? 'all modules loaded successfully'
            : 'failed to load required modules';


    my $rv = check_install( module => 'LWP', version => 5.60 )
                or print 'LWP is not installed!';

    print 'LWP up to date' if $rv->{uptodate};
    print "LWP version is $rv->{version}\n";
    print "LWP is installed as file $rv->{file}\n";


    print "LWP requires the following modules to be installed:\n";
    print join "\n", requires('LWP');

    ### allow M::L::C to peek in your %INC rather than just
    ### scanning @INC
    $Module::Load::Conditional::CHECK_INC_HASH = 1;

    ### reset the 'can_load' cache
    undef $Module::Load::Conditional::CACHE;

    ### don't have Module::Load::Conditional issue warnings --
    ### default is '1'
    $Module::Load::Conditional::VERBOSE = 0;

    ### The last error that happened during a call to 'can_load'
    my $err = $Module::Load::Conditional::ERROR;


=head1 DESCRIPTION

Module::Load::Conditional provides simple ways to query and possibly load any of
the modules you have installed on your system during runtime.

It is able to load multiple modules at once or none at all if one of
them was not able to load. It also takes care of any error checking
and so forth.

=head1 Methods

=head2 $href = check_install( module => NAME [, version => VERSION, verbose => BOOL ] );

C<check_install> allows you to verify if a certain module is installed
or not. You may call it with the following arguments:

=over 4

=item module

The name of the module you wish to verify -- this is a required key

=item version

The version this module needs to be -- this is optional

=item verbose

Whether or not to be verbose about what it is doing -- it will default
to $Module::Load::Conditional::VERBOSE

=back

It will return undef if it was not able to find where the module was
installed, or a hash reference with the following keys if it was able
to find the file:

=over 4

=item file

Full path to the file that contains the module

=item dir

Directory, or more exact the C<@INC> entry, where the module was
loaded from.

=item version

The version number of the installed module - this will be C<undef> if
the module had no (or unparsable) version number, or if the variable
C<$Module::Load::Conditional::FIND_VERSION> was set to true.
(See the C<GLOBAL VARIABLES> section below for details)

=item uptodate

A boolean value indicating whether or not the module was found to be
at least the version you specified. If you did not specify a version,
uptodate will always be true if the module was found.
If no parsable version was found in the module, uptodate will also be
true, since C<check_install> had no way to verify clearly.

See also C<$Module::Load::Conditional::DEPRECATED>, which affects
the outcome of this value.

=back

=cut

### this checks if a certain module is installed already ###
### if it returns true, the module in question is already installed
### or we found the file, but couldn't open it, OR there was no version
### to be found in the module
### it will return 0 if the version in the module is LOWER then the one
### we are looking for, or if we couldn't find the desired module to begin with
### if the installed version is higher or equal to the one we want, it will return
### a hashref with he module name and version in it.. so 'true' as well.
sub check_install {
    my %hash = @_;

    my $tmpl = {
            version => { default    => '0.0'    },
            module  => { required   => 1        },
            verbose => { default    => $VERBOSE },
    };

    my $args;
    unless( $args = check( $tmpl, \%hash, $VERBOSE ) ) {
        warn loc( q[A problem occurred checking arguments] ) if $VERBOSE;
        return;
    }

    my $file     = File::Spec->catfile( split /::/, $args->{module} ) . '.pm';
    my $file_inc = File::Spec::Unix->catfile(
                        split /::/, $args->{module}
                    ) . '.pm';

    ### where we store the return value ###
    my $href = {
            file        => undef,
            version     => undef,
            uptodate    => undef,
    };

    my $filename;

    ### check the inc hash if we're allowed to
    if( $CHECK_INC_HASH ) {
        $filename = $href->{'file'} =
            $INC{ $file_inc } if defined $INC{ $file_inc };

        ### find the version by inspecting the package
        if( defined $filename && $FIND_VERSION ) {
            no strict 'refs';
            $href->{version} = ${ "$args->{module}"."::VERSION" };
        }
    }

    ### we didn't find the filename yet by looking in %INC,
    ### so scan the dirs
    unless( $filename ) {

        local @INC = @INC[0..$#INC-1] if $FORCE_SAFE_INC && $INC[-1] eq '.';

        DIR: for my $dir ( @INC ) {

            my $fh;

            if ( ref $dir ) {
                ### @INC hook -- we invoke it and get the filehandle back
                ### this is actually documented behaviour as of 5.8 ;)

                my $existed_in_inc = $INC{$file_inc};

                if (UNIVERSAL::isa($dir, 'CODE')) {
                    ($fh) = $dir->($dir, $file);

                } elsif (UNIVERSAL::isa($dir, 'ARRAY')) {
                    ($fh) = $dir->[0]->($dir, $file, @{$dir}{1..$#{$dir}})

                } elsif (UNIVERSAL::can($dir, 'INC')) {
                    ($fh) = $dir->INC($file);
                }

                if (!UNIVERSAL::isa($fh, 'GLOB')) {
                    warn loc(q[Cannot open file '%1': %2], $file, $!)
                            if $args->{verbose};
                    next;
                }

                $filename = $INC{$file_inc} || $file;

                delete $INC{$file_inc} if not $existed_in_inc;

            } else {
                $filename = File::Spec->catfile($dir, $file);
                next unless -e $filename;

                $fh = new FileHandle;
                if (!$fh->open($filename)) {
                    warn loc(q[Cannot open file '%1': %2], $file, $!)
                            if $args->{verbose};
                    next;
                }
            }

            ### store the directory we found the file in
            $href->{dir} = $dir;

            ### files need to be in unix format under vms,
            ### or they might be loaded twice
            $href->{file} = ON_VMS
                ? VMS::Filespec::unixify( $filename )
                : $filename;

            ### if we don't need the version, we're done
            last DIR unless $FIND_VERSION;

            ### otherwise, the user wants us to find the version from files
            my $mod_info = Module::Metadata->new_from_handle( $fh, $filename );
            my $ver      = $mod_info->version( $args->{module} );

            if( defined $ver ) {
                $href->{version} = $ver;

                last DIR;
            }
        }
    }

    ### if we couldn't find the file, return undef ###
    return unless defined $href->{file};

    ### only complain if we're expected to find a version higher than 0.0 anyway
    if( $FIND_VERSION and not defined $href->{version} ) {
        {   ### don't warn about the 'not numeric' stuff ###
            local $^W;

            ### if we got here, we didn't find the version
            warn loc(q[Could not check version on '%1'], $args->{module} )
                    if $args->{verbose} and $args->{version} > 0;
        }
        $href->{uptodate} = 1;

    } else {
        ### don't warn about the 'not numeric' stuff ###
        local $^W;

        ### use qv(), as it will deal with developer release number
        ### ie ones containing _ as well. This addresses bug report
        ### #29348: Version compare logic doesn't handle alphas?
        ###
        ### Update from JPeacock: apparently qv() and version->new
        ### are different things, and we *must* use version->new
        ### here, or things like #30056 might start happening

        ### We have to wrap this in an eval as version-0.82 raises
        ### exceptions and not warnings now *sigh*

        eval {

          $href->{uptodate} =
            version->new( $args->{version} ) <= version->new( $href->{version} )
                ? 1
                : 0;

        };
    }

    if ( $DEPRECATED and "$]" >= 5.011 ) {
        local @INC = @INC[0..$#INC-1] if $FORCE_SAFE_INC && $INC[-1] eq '.';
        require Module::CoreList;
        require Config;

        $href->{uptodate} = 0 if
           exists $Module::CoreList::version{ 0+$] }{ $args->{module} } and
           Module::CoreList::is_deprecated( $args->{module} ) and
           $Config::Config{privlibexp} eq $href->{dir}
           and $Config::Config{privlibexp} ne $Config::Config{sitelibexp};
    }

    return $href;
}

=head2 $bool = can_load( modules => { NAME => VERSION [,NAME => VERSION] }, [verbose => BOOL, nocache => BOOL, autoload => BOOL] )

C<can_load> will take a list of modules, optionally with version
numbers and determine if it is able to load them. If it can load *ALL*
of them, it will. If one or more are unloadable, none will be loaded.

This is particularly useful if you have More Than One Way (tm) to
solve a problem in a program, and only wish to continue down a path
if all modules could be loaded, and not load them if they couldn't.

This function uses the C<load> function or the C<autoload_remote> function
from Module::Load under the hood.

C<can_load> takes the following arguments:

=over 4

=item modules

This is a hashref of module/version pairs. The version indicates the
minimum version to load. If no version is provided, any version is
assumed to be good enough.

=item verbose

This controls whether warnings should be printed if a module failed
to load.
The default is to use the value of $Module::Load::Conditional::VERBOSE.

=item nocache

C<can_load> keeps its results in a cache, so it will not load the
same module twice, nor will it attempt to load a module that has
already failed to load before. By default, C<can_load> will check its
cache, but you can override that by setting C<nocache> to true.

=item autoload

This controls whether imports the functions of a loaded modules to the caller package. The default is no importing any functions.

See the C<autoload> function and the C<autoload_remote> function from L<Module::Load> for details.

=cut

sub can_load {
    my %hash = @_;

    my $tmpl = {
        modules     => { default => {}, strict_type => 1 },
        verbose     => { default => $VERBOSE },
        nocache     => { default => 0 },
        autoload    => { default => 0 },
    };

    my $args;

    unless( $args = check( $tmpl, \%hash, $VERBOSE ) ) {
        $ERROR = loc(q[Problem validating arguments!]);
        warn $ERROR if $VERBOSE;
        return;
    }

    ### layout of $CACHE:
    ### $CACHE = {
    ###     $ module => {
    ###             usable  => BOOL,
    ###             version => \d,
    ###             file    => /path/to/file,
    ###     },
    ### };

    $CACHE ||= {}; # in case it was undef'd

    my $error;
    BLOCK: {
        my $href = $args->{modules};

        my @load;
        for my $mod ( keys %$href ) {

            next if $CACHE->{$mod}->{usable} && !$args->{nocache};

            ### else, check if the hash key is defined already,
            ### meaning $mod => 0,
            ### indicating UNSUCCESSFUL prior attempt of usage

            ### use qv(), as it will deal with developer release number
            ### ie ones containing _ as well. This addresses bug report
            ### #29348: Version compare logic doesn't handle alphas?
            ###
            ### Update from JPeacock: apparently qv() and version->new
            ### are different things, and we *must* use version->new
            ### here, or things like #30056 might start happening
            if (    !$args->{nocache}
                    && defined $CACHE->{$mod}->{usable}
                    && (version->new( $CACHE->{$mod}->{version}||0 )
                        >= version->new( $href->{$mod} ) )
            ) {
                $error = loc( q[Already tried to use '%1', which was unsuccessful], $mod);
                last BLOCK;
            }

            my $mod_data = check_install(
                                    module  => $mod,
                                    version => $href->{$mod}
                                );

            if( !$mod_data or !defined $mod_data->{file} ) {
                $error = loc(q[Could not find or check module '%1'], $mod);
                $CACHE->{$mod}->{usable} = 0;
                last BLOCK;
            }

            map {
                $CACHE->{$mod}->{$_} = $mod_data->{$_}
            } qw[version file uptodate];

            push @load, $mod;
        }

        for my $mod ( @load ) {

            if ( $CACHE->{$mod}->{uptodate} ) {

                local @INC = @INC[0..$#INC-1] if $FORCE_SAFE_INC && $INC[-1] eq '.';

                if ( $args->{autoload} ) {
                    my $who = (caller())[0];
                    eval { autoload_remote $who, $mod };
                } else {
                    eval { load $mod };
                }

                ### in case anything goes wrong, log the error, the fact
                ### we tried to use this module and return 0;
                if( $@ ) {
                    $error = $@;
                    $CACHE->{$mod}->{usable} = 0;
                    last BLOCK;
                } else {
                    $CACHE->{$mod}->{usable} = 1;
                }

            ### module not found in @INC, store the result in
            ### $CACHE and return 0
            } else {

                $error = loc(q[Module '%1' is not uptodate!], $mod);
                $CACHE->{$mod}->{usable} = 0;
                last BLOCK;
            }
        }

    } # BLOCK

    if( defined $error ) {
        $ERROR = $error;
        Carp::carp( loc(q|%1 [THIS MAY BE A PROBLEM!]|,$error) ) if $args->{verbose};
        return;
    } else {
        return 1;
    }
}

=back

=head2 @list = requires( MODULE );

C<requires> can tell you what other modules a particular module
requires. This is particularly useful when you're intending to write
a module for public release and are listing its prerequisites.

C<requires> takes but one argument: the name of a module.
It will then first check if it can actually load this module, and
return undef if it can't.
Otherwise, it will return a list of modules and pragmas that would
have been loaded on the module's behalf.

Note: The list C<require> returns has originated from your current
perl and your current install.

=cut

sub requires {
    my $who = shift;

    unless( check_install( module => $who ) ) {
        warn loc(q[You do not have module '%1' installed], $who) if $VERBOSE;
        return undef;
    }

    local @INC = @INC[0..$#INC-1] if $FORCE_SAFE_INC && $INC[-1] eq '.';

    my $lib = join " ", map { qq["-I$_"] } @INC;
    my $oneliner = 'print(join(qq[\n],map{qq[BONG=$_]}keys(%INC)),qq[\n])';
    my $cmd = join '', qq["$^X" $lib -M$who -e], QUOTE, $oneliner, QUOTE;

    return  sort
                grep { !/^$who$/  }
                map  { chomp; s|/|::|g; $_ }
                grep { s|\.pm$||i; }
                map  { s!^BONG\=!!; $_ }
                grep { m!^BONG\=! }
            `$cmd`;
}

1;

__END__

=head1 Global Variables

The behaviour of Module::Load::Conditional can be altered by changing the
following global variables:

=head2 $Module::Load::Conditional::VERBOSE

This controls whether Module::Load::Conditional will issue warnings and
explanations as to why certain things may have failed. If you set it
to 0, Module::Load::Conditional will not output any warnings.
The default is 0;

=head2 $Module::Load::Conditional::FIND_VERSION

This controls whether Module::Load::Conditional will try to parse
(and eval) the version from the module you're trying to load.

If you don't wish to do this, set this variable to C<false>. Understand
then that version comparisons are not possible, and Module::Load::Conditional
can not tell you what module version you have installed.
This may be desirable from a security or performance point of view.
Note that C<$FIND_VERSION> code runs safely under C<taint mode>.

The default is 1;

=head2 $Module::Load::Conditional::CHECK_INC_HASH

This controls whether C<Module::Load::Conditional> checks your
C<%INC> hash to see if a module is available. By default, only
C<@INC> is scanned to see if a module is physically on your
filesystem, or available via an C<@INC-hook>. Setting this variable
to C<true> will trust any entries in C<%INC> and return them for
you.

The default is 0;

=head2 $Module::Load::Conditional::FORCE_SAFE_INC

This controls whether C<Module::Load::Conditional> sanitises C<@INC>
by removing "C<.>". The current default setting is C<0>, but this
may change in a future release.

=head2 $Module::Load::Conditional::CACHE

This holds the cache of the C<can_load> function. If you explicitly
want to remove the current cache, you can set this variable to
C<undef>

=head2 $Module::Load::Conditional::ERROR

This holds a string of the last error that happened during a call to
C<can_load>. It is useful to inspect this when C<can_load> returns
C<undef>.

=head2 $Module::Load::Conditional::DEPRECATED

This controls whether C<Module::Load::Conditional> checks if
a dual-life core module has been deprecated. If this is set to
true C<check_install> will return false to C<uptodate>, if
a dual-life module is found to be loaded from C<$Config{privlibexp}>

The default is 0;

=head1 See Also

C<Module::Load>

=head1 BUG REPORTS

Please report bugs or other issues to E<lt>bug-module-load-conditional@rt.cpan.orgE<gt>.

=head1 AUTHOR

This module by Jos Boumans E<lt>kane@cpan.orgE<gt>.

=head1 COPYRIGHT

This library is free software; you may redistribute and/or modify it
under the same terms as Perl itself.

=cut
Build.pm000064400000105540150517530340006151 0ustar00package Module::Build;

# This module doesn't do much of anything itself, it inherits from the
# modules that do the real work.  The only real thing it has to do is
# figure out which OS-specific module to pull in.  Many of the
# OS-specific modules don't do anything either - most of the work is
# done in Module::Build::Base.

use 5.006;
use strict;
use warnings;
use File::Spec ();
use File::Path ();
use File::Basename ();
use Perl::OSType ();

use Module::Build::Base;

our @ISA = qw(Module::Build::Base);
our $VERSION = '0.4224';
$VERSION = eval $VERSION;

# Inserts the given module into the @ISA hierarchy between
# Module::Build and its immediate parent
sub _interpose_module {
  my ($self, $mod) = @_;
  eval "use $mod";
  die $@ if $@;

  no strict 'refs';
  my $top_class = $mod;
  while (@{"${top_class}::ISA"}) {
    last if ${"${top_class}::ISA"}[0] eq $ISA[0];
    $top_class = ${"${top_class}::ISA"}[0];
  }

  @{"${top_class}::ISA"} = @ISA;
  @ISA = ($mod);
}

if (grep {-e File::Spec->catfile($_, qw(Module Build Platform), $^O) . '.pm'} @INC) {
  __PACKAGE__->_interpose_module("Module::Build::Platform::$^O");

} elsif ( my $ostype = os_type() ) {
  __PACKAGE__->_interpose_module("Module::Build::Platform::$ostype");

} else {
  warn "Unknown OS type '$^O' - using default settings\n";
}

sub os_type { return Perl::OSType::os_type() }

sub is_vmsish { return Perl::OSType::is_os_type('VMS') }
sub is_windowsish { return Perl::OSType::is_os_type('Windows') }
sub is_unixish { return Perl::OSType::is_os_type('Unix') }

1;

__END__

=for :stopwords
bindoc binhtml destdir distcheck distclean distdir distmeta distsign disttest
fakeinstall html installdirs installsitebin installsitescript installvendorbin
installvendorscript libdoc libhtml pardist ppd ppmdist realclean skipcheck
testall testcover testdb testpod testpodcoverage versioninstall

=head1 NAME

Module::Build - Build and install Perl modules

=head1 SYNOPSIS

Standard process for building & installing modules:

  perl Build.PL
  ./Build
  ./Build test
  ./Build install

Or, if you're on a platform (like DOS or Windows) that doesn't require
the "./" notation, you can do this:

  perl Build.PL
  Build
  Build test
  Build install


=head1 DESCRIPTION

C<Module::Build> is a system for building, testing, and installing
Perl modules.  It is meant to be an alternative to
C<ExtUtils::MakeMaker>.  Developers may alter the behavior of the
module through subclassing in a much more straightforward way than
with C<MakeMaker>.  It also does not require a C<make> on your system
- most of the C<Module::Build> code is pure-perl and written in a very
cross-platform way.

See L<"MOTIVATIONS"> for more comparisons between C<ExtUtils::MakeMaker>
and C<Module::Build>.

To install C<Module::Build>, and any other module that uses
C<Module::Build> for its installation process, do the following:

  perl Build.PL       # 'Build.PL' script creates the 'Build' script
  ./Build             # Need ./ to ensure we're using this "Build" script
  ./Build test        # and not another one that happens to be in the PATH
  ./Build install

This illustrates initial configuration and the running of three
'actions'.  In this case the actions run are 'build' (the default
action), 'test', and 'install'.  Other actions defined so far include:

  build                          manifest
  clean                          manifest_skip
  code                           manpages
  config_data                    pardist
  diff                           ppd
  dist                           ppmdist
  distcheck                      prereq_data
  distclean                      prereq_report
  distdir                        pure_install
  distinstall                    realclean
  distmeta                       retest
  distsign                       skipcheck
  disttest                       test
  docs                           testall
  fakeinstall                    testcover
  help                           testdb
  html                           testpod
  install                        testpodcoverage
  installdeps                    versioninstall

You can run the 'help' action for a complete list of actions.


=head1 GUIDE TO DOCUMENTATION

The documentation for C<Module::Build> is broken up into sections:

=over

=item General Usage (L<Module::Build>)

This is the document you are currently reading. It describes basic
usage and background information.  Its main purpose is to assist the
user who wants to learn how to invoke and control C<Module::Build>
scripts at the command line.

=item Authoring Reference (L<Module::Build::Authoring>)

This document describes the structure and organization of
C<Module::Build>, and the relevant concepts needed by authors who are
writing F<Build.PL> scripts for a distribution or controlling
C<Module::Build> processes programmatically.

=item API Reference (L<Module::Build::API>)

This is a reference to the C<Module::Build> API.

=item Cookbook (L<Module::Build::Cookbook>)

This document demonstrates how to accomplish many common tasks.  It
covers general command line usage and authoring of F<Build.PL>
scripts.  Includes working examples.

=back


=head1 ACTIONS

There are some general principles at work here.  First, each task when
building a module is called an "action".  These actions are listed
above; they correspond to the building, testing, installing,
packaging, etc., tasks.

Second, arguments are processed in a very systematic way.  Arguments
are always key=value pairs.  They may be specified at C<perl Build.PL>
time (i.e. C<perl Build.PL destdir=/my/secret/place>), in which case
their values last for the lifetime of the C<Build> script.  They may
also be specified when executing a particular action (i.e.
C<Build test verbose=1>), in which case their values last only for the
lifetime of that command.  Per-action command line parameters take
precedence over parameters specified at C<perl Build.PL> time.

The build process also relies heavily on the C<Config.pm> module.
If the user wishes to override any of the
values in C<Config.pm>, she may specify them like so:

  perl Build.PL --config cc=gcc --config ld=gcc

The following build actions are provided by default.

=over 4

=item build

[version 0.01]

If you run the C<Build> script without any arguments, it runs the
C<build> action, which in turn runs the C<code> and C<docs> actions.

This is analogous to the C<MakeMaker> I<make all> target.

=item clean

[version 0.01]

This action will clean up any files that the build process may have
created, including the C<blib/> directory (but not including the
C<_build/> directory and the C<Build> script itself).

=item code

[version 0.20]

This action builds your code base.

By default it just creates a C<blib/> directory and copies any C<.pm>
and C<.pod> files from your C<lib/> directory into the C<blib/>
directory.  It also compiles any C<.xs> files from C<lib/> and places
them in C<blib/>.  Of course, you need a working C compiler (probably
the same one that built perl itself) for the compilation to work
properly.

The C<code> action also runs any C<.PL> files in your F<lib/>
directory.  Typically these create other files, named the same but
without the C<.PL> ending.  For example, a file F<lib/Foo/Bar.pm.PL>
could create the file F<lib/Foo/Bar.pm>.  The C<.PL> files are
processed first, so any C<.pm> files (or other kinds that we deal
with) will get copied correctly.

=item config_data

[version 0.26]

...

=item diff

[version 0.14]

This action will compare the files about to be installed with their
installed counterparts.  For .pm and .pod files, a diff will be shown
(this currently requires a 'diff' program to be in your PATH).  For
other files like compiled binary files, we simply report whether they
differ.

A C<flags> parameter may be passed to the action, which will be passed
to the 'diff' program.  Consult your 'diff' documentation for the
parameters it will accept - a good one is C<-u>:

  ./Build diff flags=-u

=item dist

[version 0.02]

This action is helpful for module authors who want to package up their
module for source distribution through a medium like CPAN.  It will create a
tarball of the files listed in F<MANIFEST> and compress the tarball using
GZIP compression.

By default, this action will use the C<Archive::Tar> module. However, you can
force it to use binary "tar" and "gzip" executables by supplying an explicit
C<tar> (and optional C<gzip>) parameter:

  ./Build dist --tar C:\path\to\tar.exe --gzip C:\path\to\zip.exe

=item distcheck

[version 0.05]

Reports which files are in the build directory but not in the
F<MANIFEST> file, and vice versa.  (See L<manifest> for details.)

=item distclean

[version 0.05]

Performs the 'realclean' action and then the 'distcheck' action.

=item distdir

[version 0.05]

Creates a "distribution directory" named C<$dist_name-$dist_version>
(if that directory already exists, it will be removed first), then
copies all the files listed in the F<MANIFEST> file to that directory.
This directory is what the distribution tarball is created from.

=item distinstall

[version 0.37]

Performs the 'distdir' action, then switches into that directory and runs a
C<perl Build.PL>, followed by the 'build' and 'install' actions in that
directory.  Use PERL_MB_OPT or F<.modulebuildrc> to set options that should be
applied during subprocesses

=item distmeta

[version 0.21]

Creates the F<META.yml> file that describes the distribution.

F<META.yml> is a file containing various bits of I<metadata> about the
distribution.  The metadata includes the distribution name, version,
abstract, prerequisites, license, and various other data about the
distribution.  This file is created as F<META.yml> in a simplified YAML format.

F<META.yml> file must also be listed in F<MANIFEST> - if it's not, a
warning will be issued.

The current version of the F<META.yml> specification can be found
on CPAN as L<CPAN::Meta::Spec>.

=item distsign

[version 0.16]

Uses C<Module::Signature> to create a SIGNATURE file for your
distribution, and adds the SIGNATURE file to the distribution's
MANIFEST.

=item disttest

[version 0.05]

Performs the 'distdir' action, then switches into that directory and runs a
C<perl Build.PL>, followed by the 'build' and 'test' actions in that directory.
Use PERL_MB_OPT or F<.modulebuildrc> to set options that should be applied
during subprocesses


=item docs

[version 0.20]

This will generate documentation (e.g. Unix man pages and HTML
documents) for any installable items under B<blib/> that
contain POD.  If there are no C<bindoc> or C<libdoc> installation
targets defined (as will be the case on systems that don't support
Unix manpages) no action is taken for manpages.  If there are no
C<binhtml> or C<libhtml> installation targets defined no action is
taken for HTML documents.

=item fakeinstall

[version 0.02]

This is just like the C<install> action, but it won't actually do
anything, it will just report what it I<would> have done if you had
actually run the C<install> action.

=item help

[version 0.03]

This action will simply print out a message that is meant to help you
use the build process.  It will show you a list of available build
actions too.

With an optional argument specifying an action name (e.g. C<Build help
test>), the 'help' action will show you any POD documentation it can
find for that action.

=item html

[version 0.26]

This will generate HTML documentation for any binary or library files
under B<blib/> that contain POD.  The HTML documentation will only be
installed if the install paths can be determined from values in
C<Config.pm>.  You can also supply or override install paths on the
command line by specifying C<install_path> values for the C<binhtml>
and/or C<libhtml> installation targets.

With an optional C<html_links> argument set to a false value, you can
skip the search for other documentation to link to, because that can
waste a lot of time if there aren't any links to generate anyway:

  ./Build html --html_links 0

=item install

[version 0.01]

This action will use C<ExtUtils::Install> to install the files from
C<blib/> into the system.  See L<"INSTALL PATHS">
for details about how Module::Build determines where to install
things, and how to influence this process.

If you want the installation process to look around in C<@INC> for
other versions of the stuff you're installing and try to delete it,
you can use the C<uninst> parameter, which tells C<ExtUtils::Install> to
do so:

  ./Build install uninst=1

This can be a good idea, as it helps prevent multiple versions of a
module from being present on your system, which can be a confusing
situation indeed.

=item installdeps

[version 0.36]

This action will use the C<cpan_client> parameter as a command to install
missing prerequisites.  You will be prompted whether to install
optional dependencies.

The C<cpan_client> option defaults to 'cpan' but can be set as an option or in
F<.modulebuildrc>.  It must be a shell command that takes a list of modules to
install as arguments (e.g. 'cpanp -i' for CPANPLUS).  If the program part is a
relative path (e.g. 'cpan' or 'cpanp'), it will be located relative to the perl
program that executed Build.PL.

  /opt/perl/5.8.9/bin/perl Build.PL
  ./Build installdeps --cpan_client 'cpanp -i'
  # installs to 5.8.9

=item manifest

[version 0.05]

This is an action intended for use by module authors, not people
installing modules.  It will bring the F<MANIFEST> up to date with the
files currently present in the distribution.  You may use a
F<MANIFEST.SKIP> file to exclude certain files or directories from
inclusion in the F<MANIFEST>.  F<MANIFEST.SKIP> should contain a bunch
of regular expressions, one per line.  If a file in the distribution
directory matches any of the regular expressions, it won't be included
in the F<MANIFEST>.

The following is a reasonable F<MANIFEST.SKIP> starting point, you can
add your own stuff to it:

  ^_build
  ^Build$
  ^blib
  ~$
  \.bak$
  ^MANIFEST\.SKIP$
  CVS

See the L<distcheck> and L<skipcheck> actions if you want to find out
what the C<manifest> action would do, without actually doing anything.

=item manifest_skip

[version 0.3608]

This is an action intended for use by module authors, not people
installing modules.  It will generate a boilerplate MANIFEST.SKIP file
if one does not already exist.

=item manpages

[version 0.28]

This will generate man pages for any binary or library files under
B<blib/> that contain POD.  The man pages will only be installed if the
install paths can be determined from values in C<Config.pm>.  You can
also supply or override install paths by specifying there values on
the command line with the C<bindoc> and C<libdoc> installation
targets.

=item pardist

[version 0.2806]

Generates a PAR binary distribution for use with L<PAR> or L<PAR::Dist>.

It requires that the PAR::Dist module (version 0.17 and up) is
installed on your system.

=item ppd

[version 0.20]

Build a PPD file for your distribution.

This action takes an optional argument C<codebase> which is used in
the generated PPD file to specify the (usually relative) URL of the
distribution.  By default, this value is the distribution name without
any path information.

Example:

  ./Build ppd --codebase "MSWin32-x86-multi-thread/Module-Build-0.21.tar.gz"

=item ppmdist

[version 0.23]

Generates a PPM binary distribution and a PPD description file.  This
action also invokes the C<ppd> action, so it can accept the same
C<codebase> argument described under that action.

This uses the same mechanism as the C<dist> action to tar & zip its
output, so you can supply C<tar> and/or C<gzip> parameters to affect
the result.

=item prereq_data

[version 0.32]

This action prints out a Perl data structure of all prerequisites and the versions
required.  The output can be loaded again using C<eval()>.  This can be useful for
external tools that wish to query a Build script for prerequisites.

=item prereq_report

[version 0.28]

This action prints out a list of all prerequisites, the versions required, and
the versions actually installed.  This can be useful for reviewing the
configuration of your system prior to a build, or when compiling data to send
for a bug report.

=item pure_install

[version 0.28]

This action is identical to the C<install> action.  In the future,
though, when C<install> starts writing to the file
F<$(INSTALLARCHLIB)/perllocal.pod>, C<pure_install> won't, and that
will be the only difference between them.

=item realclean

[version 0.01]

This action is just like the C<clean> action, but also removes the
C<_build> directory and the C<Build> script.  If you run the
C<realclean> action, you are essentially starting over, so you will
have to re-create the C<Build> script again.

=item retest

[version 0.2806]

This is just like the C<test> action, but doesn't actually build the
distribution first, and doesn't add F<blib/> to the load path, and
therefore will test against a I<previously> installed version of the
distribution.  This can be used to verify that a certain installed
distribution still works, or to see whether newer versions of a
distribution still pass the old regression tests, and so on.

=item skipcheck

[version 0.05]

Reports which files are skipped due to the entries in the
F<MANIFEST.SKIP> file (See L<manifest> for details)

=item test

[version 0.01]

This will use C<Test::Harness> or C<TAP::Harness> to run any regression
tests and report their results. Tests can be defined in the standard
places: a file called C<test.pl> in the top-level directory, or several
files ending with C<.t> in a C<t/> directory.

If you want tests to be 'verbose', i.e. show details of test execution
rather than just summary information, pass the argument C<verbose=1>.

If you want to run tests under the perl debugger, pass the argument
C<debugger=1>.

If you want to have Module::Build find test files with different file
name extensions, pass the C<test_file_exts> argument with an array
of extensions, such as C<[qw( .t .s .z )]>.

If you want test to be run by C<TAP::Harness>, rather than C<Test::Harness>,
pass the argument C<tap_harness_args> as an array reference of arguments to
pass to the TAP::Harness constructor.

In addition, if a file called C<visual.pl> exists in the top-level
directory, this file will be executed as a Perl script and its output
will be shown to the user.  This is a good place to put speed tests or
other tests that don't use the C<Test::Harness> format for output.

To override the choice of tests to run, you may pass a C<test_files>
argument whose value is a whitespace-separated list of test scripts to
run.  This is especially useful in development, when you only want to
run a single test to see whether you've squashed a certain bug yet:

  ./Build test --test_files t/something_failing.t

You may also pass several C<test_files> arguments separately:

  ./Build test --test_files t/one.t --test_files t/two.t

or use a C<glob()>-style pattern:

  ./Build test --test_files 't/01-*.t'

=item testall

[version 0.2807]

[Note: the 'testall' action and the code snippets below are currently
in alpha stage, see
L<"http://www.nntp.perl.org/group/perl.module.build/2007/03/msg584.html"> ]

Runs the C<test> action plus each of the C<test$type> actions defined by
the keys of the C<test_types> parameter.

Currently, you need to define the ACTION_test$type method yourself and
enumerate them in the test_types parameter.

  my $mb = Module::Build->subclass(
    code => q(
      sub ACTION_testspecial { shift->generic_test(type => 'special'); }
      sub ACTION_testauthor  { shift->generic_test(type => 'author'); }
    )
  )->new(
    ...
    test_types  => {
      special => '.st',
      author  => ['.at', '.pt' ],
    },
    ...

=item testcover

[version 0.26]

Runs the C<test> action using C<Devel::Cover>, generating a
code-coverage report showing which parts of the code were actually
exercised during the tests.

To pass options to C<Devel::Cover>, set the C<$DEVEL_COVER_OPTIONS>
environment variable:

  DEVEL_COVER_OPTIONS=-ignore,Build ./Build testcover

=item testdb

[version 0.05]

This is a synonym for the 'test' action with the C<debugger=1>
argument.

=item testpod

[version 0.25]

This checks all the files described in the C<docs> action and
produces C<Test::Harness>-style output.  If you are a module author,
this is useful to run before creating a new release.

=item testpodcoverage

[version 0.28]

This checks the pod coverage of the distribution and
produces C<Test::Harness>-style output. If you are a module author,
this is useful to run before creating a new release.

=item versioninstall

[version 0.16]

** Note: since C<only.pm> is so new, and since we just recently added
support for it here too, this feature is to be considered
experimental. **

If you have the C<only.pm> module installed on your system, you can
use this action to install a module into the version-specific library
trees.  This means that you can have several versions of the same
module installed and C<use> a specific one like this:

  use only MyModule => 0.55;

To override the default installation libraries in C<only::config>,
specify the C<versionlib> parameter when you run the C<Build.PL> script:

  perl Build.PL --versionlib /my/version/place/

To override which version the module is installed as, specify the
C<version> parameter when you run the C<Build.PL> script:

  perl Build.PL --version 0.50

See the C<only.pm> documentation for more information on
version-specific installs.

=back


=head1 OPTIONS

=head2 Command Line Options

The following options can be used during any invocation of C<Build.PL>
or the Build script, during any action.  For information on other
options specific to an action, see the documentation for the
respective action.

NOTE: There is some preliminary support for options to use the more
familiar long option style.  Most options can be preceded with the
C<--> long option prefix, and the underscores changed to dashes
(e.g. C<--use-rcfile>).  Additionally, the argument to boolean options is
optional, and boolean options can be negated by prefixing them with
C<no> or C<no-> (e.g. C<--noverbose> or C<--no-verbose>).

=over 4

=item quiet

Suppress informative messages on output.

=item verbose

Display extra information about the Build on output.  C<verbose> will
turn off C<quiet>

=item cpan_client

Sets the C<cpan_client> command for use with the C<installdeps> action.
See C<installdeps> for more details.

=item use_rcfile

Load the F<~/.modulebuildrc> option file.  This option can be set to
false to prevent the custom resource file from being loaded.

=item allow_mb_mismatch

Suppresses the check upon startup that the version of Module::Build
we're now running under is the same version that was initially invoked
when building the distribution (i.e. when the C<Build.PL> script was
first run).  As of 0.3601, a mismatch results in a warning instead of
a fatal error, so this option effectively just suppresses the warning.

=item debug

Prints Module::Build debugging information to STDOUT, such as a trace of
executed build actions.

=back

=head2 Default Options File (F<.modulebuildrc>)

[version 0.28]

When Module::Build starts up, it will look first for a file,
F<$ENV{HOME}/.modulebuildrc>.  If it's not found there, it will look
in the F<.modulebuildrc> file in the directories referred to by
the environment variables C<HOMEDRIVE> + C<HOMEDIR>, C<USERPROFILE>,
C<APPDATA>, C<WINDIR>, C<SYS$LOGIN>.  If the file exists, the options
specified there will be used as defaults, as if they were typed on the
command line.  The defaults can be overridden by specifying new values
on the command line.

The action name must come at the beginning of the line, followed by any
amount of whitespace and then the options.  Options are given the same
as they would be on the command line.  They can be separated by any
amount of whitespace, including newlines, as long there is whitespace at
the beginning of each continued line.  Anything following a hash mark (C<#>)
is considered a comment, and is stripped before parsing.  If more than
one line begins with the same action name, those lines are merged into
one set of options.

Besides the regular actions, there are two special pseudo-actions: the
key C<*> (asterisk) denotes any global options that should be applied
to all actions, and the key 'Build_PL' specifies options to be applied
when you invoke C<perl Build.PL>.

  *           verbose=1   # global options
  diff        flags=-u
  install     --install_base /home/ken
              --install_path html=/home/ken/docs/html
  installdeps --cpan_client 'cpanp -i'

If you wish to locate your resource file in a different location, you
can set the environment variable C<MODULEBUILDRC> to the complete
absolute path of the file containing your options.

=head2 Environment variables

=over

=item MODULEBUILDRC

[version 0.28]

Specifies an alternate location for a default options file as described above.

=item PERL_MB_OPT

[version 0.36]

Command line options that are applied to Build.PL or any Build action.  The
string is split as the shell would (e.g. whitespace) and the result is
prepended to any actual command-line arguments.

=back

=head1 INSTALL PATHS

[version 0.19]

When you invoke Module::Build's C<build> action, it needs to figure
out where to install things.  The nutshell version of how this works
is that default installation locations are determined from
F<Config.pm>, and they may be overridden by using the C<install_path>
parameter.  An C<install_base> parameter lets you specify an
alternative installation root like F</home/foo>, and a C<destdir> lets
you specify a temporary installation directory like F</tmp/install> in
case you want to create bundled-up installable packages.

Natively, Module::Build provides default installation locations for
the following types of installable items:

=over 4

=item lib

Usually pure-Perl module files ending in F<.pm>.

=item arch

"Architecture-dependent" module files, usually produced by compiling
XS, L<Inline>, or similar code.

=item script

Programs written in pure Perl.  In order to improve reuse, try to make
these as small as possible - put the code into modules whenever
possible.

=item bin

"Architecture-dependent" executable programs, i.e. compiled C code or
something.  Pretty rare to see this in a perl distribution, but it
happens.

=item bindoc

Documentation for the stuff in C<script> and C<bin>.  Usually
generated from the POD in those files.  Under Unix, these are manual
pages belonging to the 'man1' category.

=item libdoc

Documentation for the stuff in C<lib> and C<arch>.  This is usually
generated from the POD in F<.pm> files.  Under Unix, these are manual
pages belonging to the 'man3' category.

=item binhtml

This is the same as C<bindoc> above, but applies to HTML documents.

=item libhtml

This is the same as C<libdoc> above, but applies to HTML documents.

=back

Four other parameters let you control various aspects of how
installation paths are determined:

=over 4

=item installdirs

The default destinations for these installable things come from
entries in your system's C<Config.pm>.  You can select from three
different sets of default locations by setting the C<installdirs>
parameter as follows:

                          'installdirs' set to:
                   core          site                vendor

              uses the following defaults from Config.pm:

  lib     => installprivlib  installsitelib      installvendorlib
  arch    => installarchlib  installsitearch     installvendorarch
  script  => installscript   installsitescript   installvendorscript
  bin     => installbin      installsitebin      installvendorbin
  bindoc  => installman1dir  installsiteman1dir  installvendorman1dir
  libdoc  => installman3dir  installsiteman3dir  installvendorman3dir
  binhtml => installhtml1dir installsitehtml1dir installvendorhtml1dir [*]
  libhtml => installhtml3dir installsitehtml3dir installvendorhtml3dir [*]

  * Under some OS (eg. MSWin32) the destination for HTML documents is
    determined by the C<Config.pm> entry C<installhtmldir>.

The default value of C<installdirs> is "site".  If you're creating
vendor distributions of module packages, you may want to do something
like this:

  perl Build.PL --installdirs vendor

or

  ./Build install --installdirs vendor

If you're installing an updated version of a module that was included
with perl itself (i.e. a "core module"), then you may set
C<installdirs> to "core" to overwrite the module in its present
location.

(Note that the 'script' line is different from C<MakeMaker> -
unfortunately there's no such thing as "installsitescript" or
"installvendorscript" entry in C<Config.pm>, so we use the
"installsitebin" and "installvendorbin" entries to at least get the
general location right.  In the future, if C<Config.pm> adds some more
appropriate entries, we'll start using those.)

=item install_path

Once the defaults have been set, you can override them.

On the command line, that would look like this:

  perl Build.PL --install_path lib=/foo/lib --install_path arch=/foo/lib/arch

or this:

  ./Build install --install_path lib=/foo/lib --install_path arch=/foo/lib/arch

=item install_base

You can also set the whole bunch of installation paths by supplying the
C<install_base> parameter to point to a directory on your system.  For
instance, if you set C<install_base> to "/home/ken" on a Linux
system, you'll install as follows:

  lib     => /home/ken/lib/perl5
  arch    => /home/ken/lib/perl5/i386-linux
  script  => /home/ken/bin
  bin     => /home/ken/bin
  bindoc  => /home/ken/man/man1
  libdoc  => /home/ken/man/man3
  binhtml => /home/ken/html
  libhtml => /home/ken/html

Note that this is I<different> from how C<MakeMaker>'s C<PREFIX>
parameter works.  C<install_base> just gives you a default layout under the
directory you specify, which may have little to do with the
C<installdirs=site> layout.

The exact layout under the directory you specify may vary by system -
we try to do the "sensible" thing on each platform.

=item destdir

If you want to install everything into a temporary directory first
(for instance, if you want to create a directory tree that a package
manager like C<rpm> or C<dpkg> could create a package from), you can
use the C<destdir> parameter:

  perl Build.PL --destdir /tmp/foo

or

  ./Build install --destdir /tmp/foo

This will effectively install to "/tmp/foo/$sitelib",
"/tmp/foo/$sitearch", and the like, except that it will use
C<File::Spec> to make the pathnames work correctly on whatever
platform you're installing on.

=item prefix

Provided for compatibility with C<ExtUtils::MakeMaker>'s PREFIX argument.
C<prefix> should be used when you want Module::Build to install your
modules, documentation, and scripts in the same place as
C<ExtUtils::MakeMaker>'s PREFIX mechanism.

The following are equivalent.

    perl Build.PL --prefix /tmp/foo
    perl Makefile.PL PREFIX=/tmp/foo

Because of the complex nature of the prefixification logic, the
behavior of PREFIX in C<MakeMaker> has changed subtly over time.
Module::Build's --prefix logic is equivalent to the PREFIX logic found
in C<ExtUtils::MakeMaker> 6.30.

The maintainers of C<MakeMaker> do understand the troubles with the
PREFIX mechanism, and added INSTALL_BASE support in version 6.31 of
C<MakeMaker>, which was released in 2006.

If you don't need to retain compatibility with old versions (pre-6.31) of C<ExtUtils::MakeMaker> or
are starting a fresh Perl installation we recommend you use
C<install_base> instead (and C<INSTALL_BASE> in C<ExtUtils::MakeMaker>).
See L<Module::Build::Cookbook/Installing in the same location as
ExtUtils::MakeMaker> for further information.


=back


=head1 MOTIVATIONS

There are several reasons I wanted to start over, and not just fix
what I didn't like about C<MakeMaker>:

=over 4

=item *

I don't like the core idea of C<MakeMaker>, namely that C<make> should be
involved in the build process.  Here are my reasons:

=over 4

=item +

When a person is installing a Perl module, what can you assume about
their environment?  Can you assume they have C<make>?  No, but you can
assume they have some version of Perl.

=item +

When a person is writing a Perl module for intended distribution, can
you assume that they know how to build a Makefile, so they can
customize their build process?  No, but you can assume they know Perl,
and could customize that way.

=back

For years, these things have been a barrier to people getting the
build/install process to do what they want.

=item *

There are several architectural decisions in C<MakeMaker> that make it
very difficult to customize its behavior.  For instance, when using
C<MakeMaker> you do C<use ExtUtils::MakeMaker>, but the object created in
C<WriteMakefile()> is actually blessed into a package name that's
created on the fly, so you can't simply subclass
C<ExtUtils::MakeMaker>.  There is a workaround C<MY> package that lets
you override certain C<MakeMaker> methods, but only certain explicitly
preselected (by C<MakeMaker>) methods can be overridden.  Also, the method
of customization is very crude: you have to modify a string containing
the Makefile text for the particular target.  Since these strings
aren't documented, and I<can't> be documented (they take on different
values depending on the platform, version of perl, version of
C<MakeMaker>, etc.), you have no guarantee that your modifications will
work on someone else's machine or after an upgrade of C<MakeMaker> or
perl.

=item *

It is risky to make major changes to C<MakeMaker>, since it does so many
things, is so important, and generally works.  C<Module::Build> is an
entirely separate package so that I can work on it all I want, without
worrying about backward compatibility with C<MakeMaker>.

=item *

Finally, Perl is said to be a language for system administration.
Could it really be the case that Perl isn't up to the task of building
and installing software?  Even if that software is a bunch of
C<.pm> files that just need to be copied from one place to
another?  My sense was that we could design a system to accomplish
this in a flexible, extensible, and friendly manner.  Or die trying.

=back


=head1 TO DO

The current method of relying on time stamps to determine whether a
derived file is out of date isn't likely to scale well, since it
requires tracing all dependencies backward, it runs into problems on
NFS, and it's just generally flimsy.  It would be better to use an MD5
signature or the like, if available.  See C<cons> for an example.

 - append to perllocal.pod
 - add a 'plugin' functionality


=head1 AUTHOR

Ken Williams <kwilliams@cpan.org>

Development questions, bug reports, and patches should be sent to the
Module-Build mailing list at <module-build@perl.org>.

Bug reports are also welcome at
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Module-Build>.

The latest development version is available from the Git
repository at <https://github.com/Perl-Toolchain-Gang/Module-Build>


=head1 COPYRIGHT

Copyright (c) 2001-2006 Ken Williams.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.


=head1 SEE ALSO

perl(1), L<Module::Build::Cookbook>, L<Module::Build::Authoring>,
L<Module::Build::API>, L<ExtUtils::MakeMaker>

F<META.yml> Specification:
L<CPAN::Meta::Spec>

L<http://www.dsmit.com/cons/>

L<http://search.cpan.org/dist/PerlBuildSystem/>

=cut
CoreList.pod000064400000020325150517530350007002 0ustar00=head1 NAME

Module::CoreList - what modules shipped with versions of perl

=head1 SYNOPSIS

 use Module::CoreList;

 print $Module::CoreList::version{5.00503}{CPAN}; # prints 1.48

 print Module::CoreList->first_release('File::Spec');
 # prints 5.00405

 print Module::CoreList->first_release_by_date('File::Spec');
 # prints 5.005

 print Module::CoreList->first_release('File::Spec', 0.82);
 # prints 5.006001

 if (Module::CoreList::is_core('File::Spec')) {
   print "File::Spec is a core module\n";
 }

 print join ', ', Module::CoreList->find_modules(qr/Data/);
    # prints 'Data::Dumper'
 print join ', ',
          Module::CoreList->find_modules(qr/test::h.*::.*s/i, 5.008008);
    # prints 'Test::Harness::Assert, Test::Harness::Straps'

 print join ", ", @{ $Module::CoreList::families{5.005} };
    # prints "5.005, 5.00503, 5.00504"

=head1 DESCRIPTION

Module::CoreList provides information on which core and dual-life modules shipped
with each version of L<perl>.

It provides a number of mechanisms for querying this information.

There is a utility called L<corelist> provided with this module
which is a convenient way of querying from the command-line.

There is a functional programming API available for programmers to query
information.

Programmers may also query the contained hash structures 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::first_release('File::Spec'); # as a function

  Module::CoreList->first_release('File::Spec'); # class method

=over

=item C<first_release( MODULE )>

Behaviour since version 2.11

Requires a MODULE name as an argument, returns the perl version when that module first
appeared in core as ordered by perl version number or undef ( in scalar context )
or an empty list ( in list context ) if that module is not in core.

=item C<first_release_by_date( MODULE )>

Requires a MODULE name as an argument, returns the perl version when that module first
appeared in core as ordered by release date or undef ( in scalar context )
or an empty list ( in list context ) if that module is not in core.

=item C<find_modules( REGEX, [ LIST OF PERLS ] )>

Takes a regex as an argument, returns a list of modules that match the regex given.
If only a regex is provided applies to all modules in all perl versions. Optionally
you may provide a list of perl versions to limit the regex search.

=item C<find_version( PERL_VERSION )>

Takes a perl version as an argument. Upon successful completion, returns a
reference to a hash.  Each element of that hash has a key which is the name of
a module (I<e.g.,> 'File::Path') shipped with that version of perl and a value
which is the version number (I<e.g.,> '2.09') of that module which shipped
with that version of perl .  Returns C<undef> otherwise.

=item C<is_core( MODULE, [ MODULE_VERSION, [ PERL_VERSION ] ] )>

Available in version 2.99 and above.

Returns true if MODULE was bundled with the specified version of Perl.
You can optionally specify a minimum version of the module,
and can also specify a version of Perl.
If a version of Perl isn't specified,
C<is_core()> will use the numeric version of Perl that is running (ie C<$]>).

If you want to specify the version of Perl, but don't care about
the version of the module, pass C<undef> for the module version:

=item C<is_deprecated( MODULE, PERL_VERSION )>

Available in version 2.22 and above.

Returns true if MODULE is marked as deprecated in PERL_VERSION.  If PERL_VERSION is
omitted, it defaults to the current version of Perl.

=item C<deprecated_in( MODULE )>

Available in version 2.77 and above.

Returns the first perl version where the MODULE was marked as deprecated. Returns C<undef>
if the MODULE has not been marked as deprecated.

=item C<removed_from( MODULE )>

Available in version 2.32 and above

Takes a module name as an argument, returns the first perl version where that module
was removed from core. Returns undef if the given module was never in core or remains
in core.

=item C<removed_from_by_date( MODULE )>

Available in version 2.32 and above

Takes a module name as an argument, returns the first perl version by release date where that module
was removed from core. Returns undef if the given module was never in core or remains
in core.

=item C<changes_between( PERL_VERSION, PERL_VERSION )>

Available in version 2.66 and above.

Given two perl versions, this returns a list of pairs describing the changes in
core module content between them.  The list is suitable for storing in a hash.
The keys are library names and the values are hashrefs.  Each hashref has an
entry for one or both of C<left> and C<right>, giving the versions of the
library in each of the left and right perl distributions.

For example, it might return these data (among others) for the difference
between 5.008000 and 5.008001:

  'Pod::ParseLink'  => { left => '1.05', right => '1.06' },
  'Pod::ParseUtils' => { left => '0.22', right => '0.3'  },
  'Pod::Perldoc'    => {                 right => '3.10' },
  'Pod::Perldoc::BaseTo' => {            right => undef  },

This shows us two libraries being updated and two being added, one of which has
an undefined version in the right-hand side version.

=back

=head1 DATA STRUCTURES

These are the hash data structures that are available:

=over

=item C<%Module::CoreList::version>

A hash of hashes that is keyed on perl version as indicated
in $].  The second level hash is module => version pairs.

Note, it is possible for the version of a module to be unspecified,
whereby the value is C<undef>, so use C<exists $version{$foo}{$bar}> if
that's what you're testing for.

Starting with 2.10, the special module name C<Unicode> refers to the version of
the Unicode Character Database bundled with Perl.

=item C<%Module::CoreList::delta>

Available in version 3.00 and above.

It is a hash of hashes that is keyed on perl version. Each keyed hash will have the
following keys:

  delta_from - a previous perl version that the changes are based on
  changed    - a hash of module/versions that have changed
  removed    - a hash of modules that have been removed

=item C<%Module::CoreList::released>

Keyed on perl version this contains ISO
formatted versions of the release dates, as gleaned from L<perlhist>.

=item C<%Module::CoreList::families>

New, in 1.96, a hash that
clusters known perl releases by their major versions.

=item C<%Module::CoreList::deprecated>

A hash of hashes keyed on perl version and on module name.
If a module is defined it indicates that that module is
deprecated in that perl version and is scheduled for removal
from core at some future point.

=item C<%Module::CoreList::upstream>

A hash that contains information on where patches should be directed
for each core module.

UPSTREAM indicates where patches should go. C<undef> implies
that this hasn't been discussed for the module at hand.
C<blead> indicates that the copy of the module in the blead
sources is to be considered canonical, C<cpan> means that the
module on CPAN is to be patched first. C<first-come> means
that blead can be patched freely if it is in sync with the
latest release on CPAN.

=item C<%Module::CoreList::bug_tracker>

A hash that contains information on the appropriate bug tracker
for each core module.

BUGS is an email or url to post bug reports.  For modules with
UPSTREAM => 'blead', use perl5-porters@perl.org.  rt.cpan.org
appears to automatically provide a URL for CPAN modules; any value
given here overrides the default:
http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName

=back

=head1 CAVEATS

Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07,
5.004, 5.004_05, 5.005, 5.005_03, 5.005_04 and 5.7.3 releases of perl.

All stable releases of perl since 5.6.0 are covered.

All development releases of perl since 5.9.0 are covered.


=head1 HISTORY

Moved to Changes file.

=head1 AUTHOR

Richard Clamp E<lt>richardc@unixbeard.netE<gt>

Currently maintained by the perl 5 porters E<lt>perl5-porters@perl.orgE<gt>.

=head1 LICENSE

Copyright (C) 2002-2009 Richard Clamp.  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::Info>, L<perl>, L<http://perlpunks.de/corelist>

=cut
Load.pm000064400000020505150517530350005767 0ustar00package Module::Load;

$VERSION = '0.32';

use strict;
use warnings;
use File::Spec ();

sub import {
    my $who = _who();
    my $h; shift;

    {   no strict 'refs';

        @_ or (
            *{"${who}::load"} = \&load, # compat to prev version
            *{"${who}::autoload"} = \&autoload,
            return
        );

        map { $h->{$_} = () if defined $_ } @_;

        (exists $h->{none} or exists $h->{''})
            and shift, last;

        ((exists $h->{autoload} and shift,1) or (exists $h->{all} and shift))
            and *{"${who}::autoload"} = \&autoload;

        ((exists $h->{load} and shift,1) or exists $h->{all})
            and *{"${who}::load"} = \&load;

        ((exists $h->{load_remote} and shift,1) or exists $h->{all})
            and *{"${who}::load_remote"} = \&load_remote;

        ((exists $h->{autoload_remote} and shift,1) or exists $h->{all})
            and *{"${who}::autoload_remote"} = \&autoload_remote;

    }

}

sub load(*;@){
    goto &_load;
}

sub autoload(*;@){
    unshift @_, 'autoimport';
    goto &_load;
}

sub load_remote($$;@){
    my ($dst, $src, @exp) = @_;

    eval "package $dst;Module::Load::load('$src', qw/@exp/);";
    $@ && die "$@";
}

sub autoload_remote($$;@){
    my ($dst, $src, @exp) = @_;

    eval "package $dst;Module::Load::autoload('$src', qw/@exp/);";
    $@ && die "$@";
}

sub _load{
    my $autoimport = $_[0] eq 'autoimport' and shift;
    my $mod = shift or return;
    my $who = _who();

    if( _is_file( $mod ) ) {
        require $mod;
    } else {
        LOAD: {
            my $err;
            for my $flag ( qw[1 0] ) {
                my $file = _to_file( $mod, $flag);
                eval { require $file };
                $@ ? $err .= $@ : last LOAD;
            }
            die $err if $err;
        }
    }

    ### This addresses #41883: Module::Load cannot import
    ### non-Exporter module. ->import() routines weren't
    ### properly called when load() was used.

    {   no strict 'refs';
        my $import;

    ((@_ or $autoimport) and (
        $import = $mod->can('import')
        ) and (
        unshift(@_, $mod),
        goto &$import,
        return
        )
    );
    }

}

sub _to_file{
    local $_    = shift;
    my $pm      = shift || '';

    ## trailing blanks ignored by default. [rt #69886]
    my @parts = split /::|'/, $_, -1;
    ## make sure that we can't hop out of @INC
    shift @parts if @parts && !$parts[0];

    ### because of [perl #19213], see caveats ###
    my $file = $^O eq 'MSWin32'
                    ? join "/", @parts
                    : File::Spec->catfile( @parts );

    $file   .= '.pm' if $pm;

    ### on perl's before 5.10 (5.9.5@31746) if you require
    ### a file in VMS format, it's stored in %INC in VMS
    ### format. Therefor, better unixify it first
    ### Patch in reply to John Malmbergs patch (as mentioned
    ### above) on p5p Tue 21 Aug 2007 04:55:07
    $file = VMS::Filespec::unixify($file) if $^O eq 'VMS';

    return $file;
}

sub _who { (caller(1))[0] }

sub _is_file {
    local $_ = shift;
    return  /^\./               ? 1 :
            /[^\w:']/           ? 1 :
            undef
    #' silly bbedit..
}


1;

__END__

=pod

=head1 NAME

Module::Load - runtime require of both modules and files

=head1 SYNOPSIS

  use Module::Load;

  my $module = 'Data::Dumper';

  load Data::Dumper;     # loads that module, but not import any functions
                         # -> cannot use 'Dumper' function

  load 'Data::Dumper';   # ditto
  load $module           # tritto

  autoload Data::Dumper; # loads that module and imports the default functions
                         # -> can use 'Dumper' function

  my $script = 'some/script.pl'
  load $script;
  load 'some/script.pl';  # use quotes because of punctuations

  load thing;             # try 'thing' first, then 'thing.pm'

  load CGI, ':all';       # like 'use CGI qw[:standard]'

=head1 DESCRIPTION

C<Module::Load> eliminates the need to know whether you are trying
to require either a file or a module.

If you consult C<perldoc -f require> you will see that C<require> will
behave differently when given a bareword or a string.

In the case of a string, C<require> assumes you are wanting to load a
file. But in the case of a bareword, it assumes you mean a module.

This gives nasty overhead when you are trying to dynamically require
modules at runtime, since you will need to change the module notation
(C<Acme::Comment>) to a file notation fitting the particular platform
you are on.

C<Module::Load> eliminates the need for this overhead and will
just DWYM.

=head2 Difference between C<load> and C<autoload>

C<Module::Load> imports the two functions - C<load> and C<autoload>

C<autoload> imports the default functions automatically,
but C<load> do not import any functions.

C<autoload> is usable under C<BEGIN{};>.

Both the functions can import the functions that are specified.

Following codes are same.

  load File::Spec::Functions, qw/splitpath/;

  autoload File::Spec::Functions, qw/splitpath/;

=head1 FUNCTIONS

=over 4

=item load

Loads a specified module.

See L</Rules> for detailed loading rule.

=item autoload

Loads a specified module and imports the default functions.

Except importing the functions, 'autoload' is same as 'load'.

=item load_remote

Loads a specified module to the specified package.

  use Module::Load 'load_remote';

  my $pkg = 'Other::Package';

  load_remote $pkg, 'Data::Dumper'; # load a module to 'Other::Package'
                                    # but do not import 'Dumper' function

A module for loading must be quoted.

Except specifing the package and quoting module name,
'load_remote' is same as 'load'.

=item autoload_remote

Loads a specified module and imports the default functions to the specified package.

  use Module::Load 'autoload_remote';

  my $pkg = 'Other::Package';

  autoload_remote $pkg, 'Data::Dumper'; # load a module to 'Other::Package'
                                        # and imports 'Dumper' function

A module for loading must be quoted.

Except specifing the package and quoting module name,
'autoload_remote' is same as 'load_remote'.

=back

=head1 Rules

All functions have the following rules to decide what it thinks
you want:

=over 4

=item *

If the argument has any characters in it other than those matching
C<\w>, C<:> or C<'>, it must be a file

=item *

If the argument matches only C<[\w:']>, it must be a module

=item *

If the argument matches only C<\w>, it could either be a module or a
file. We will try to find C<file.pm> first in C<@INC> and if that
fails, we will try to find C<file> in @INC.  If both fail, we die with
the respective error messages.

=back

=head1 IMPORTS THE FUNCTIONS

'load' and 'autoload' are imported by default, but 'load_remote' and
'autoload_remote' are not imported.

To use 'load_remote' or 'autoload_remote', specify at 'use'.

=over 4

=item "load","autoload","load_remote","autoload_remote"

Imports the selected functions.

  # imports 'load' and 'autoload' (default)
  use Module::Load;

  # imports 'autoload' only
  use Module::Load 'autoload';

  # imports 'autoload' and 'autoload_remote', but don't import 'load';
  use Module::Load qw/autoload autoload_remote/;

=item 'all'

Imports all the functions.

  use Module::Load 'all'; # imports load, autoload, load_remote, autoload_remote

=item '','none',undef

Not import any functions (C<load> and C<autoload> are not imported).

  use Module::Load '';

  use Module::Load 'none';

  use Module::Load undef;

=back

=head1 Caveats

Because of a bug in perl (#19213), at least in version 5.6.1, we have
to hardcode the path separator for a require on Win32 to be C</>, like
on Unix rather than the Win32 C<\>. Otherwise perl will not read its
own %INC accurately double load files if they are required again, or
in the worst case, core dump.

C<Module::Load> cannot do implicit imports, only explicit imports.
(in other words, you always have to specify explicitly what you wish
to import from a module, even if the functions are in that modules'
C<@EXPORT>)

=head1 ACKNOWLEDGEMENTS

Thanks to Jonas B. Nielsen for making explicit imports work.

=head1 BUG REPORTS

Please report bugs or other issues to E<lt>bug-module-load@rt.cpan.org<gt>.

=head1 AUTHOR

This module by Jos Boumans E<lt>kane@cpan.orgE<gt>.

=head1 COPYRIGHT

This library is free software; you may redistribute and/or modify it
under the same terms as Perl itself.

=cut