Файловый менеджер - Редактировать - /var/www/html/perl.zip
Ðазад
PK ! 5.34.0nu ȯ�� PK ! :��,* * 5.34.0/JSON/PP/Boolean.pmnu �[��� package JSON::PP::Boolean; use strict; require overload; local $^W; overload::import('overload', "0+" => sub { ${$_[0]} }, "++" => sub { $_[0] = ${$_[0]} + 1 }, "--" => sub { $_[0] = ${$_[0]} - 1 }, fallback => 1, ); $JSON::PP::Boolean::VERSION = '4.06'; 1; __END__ =head1 NAME JSON::PP::Boolean - dummy module providing JSON::PP::Boolean =head1 SYNOPSIS # do not "use" yourself =head1 DESCRIPTION This module exists only to provide overload resolution for Storable and similar modules. See L<JSON::PP> for more info about this class. =head1 AUTHOR This idea is from L<JSON::XS::Boolean> written by Marc Lehmann <schmorp[at]schmorp.de> =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut PK ! %���� �� 5.34.0/JSON/PP.pmnu �[��� package JSON::PP; # JSON-2.0 use 5.005; use strict; use Exporter (); BEGIN { @JSON::PP::ISA = ('Exporter') } use overload (); use JSON::PP::Boolean; use Carp (); #use Devel::Peek; $JSON::PP::VERSION = '4.06'; @JSON::PP::EXPORT = qw(encode_json decode_json from_json to_json); # instead of hash-access, i tried index-access for speed. # but this method is not faster than what i expected. so it will be changed. use constant P_ASCII => 0; use constant P_LATIN1 => 1; use constant P_UTF8 => 2; use constant P_INDENT => 3; use constant P_CANONICAL => 4; use constant P_SPACE_BEFORE => 5; use constant P_SPACE_AFTER => 6; use constant P_ALLOW_NONREF => 7; use constant P_SHRINK => 8; use constant P_ALLOW_BLESSED => 9; use constant P_CONVERT_BLESSED => 10; use constant P_RELAXED => 11; use constant P_LOOSE => 12; use constant P_ALLOW_BIGNUM => 13; use constant P_ALLOW_BAREKEY => 14; use constant P_ALLOW_SINGLEQUOTE => 15; use constant P_ESCAPE_SLASH => 16; use constant P_AS_NONBLESSED => 17; use constant P_ALLOW_UNKNOWN => 18; use constant P_ALLOW_TAGS => 19; use constant OLD_PERL => $] < 5.008 ? 1 : 0; use constant USE_B => $ENV{PERL_JSON_PP_USE_B} || 0; BEGIN { if (USE_B) { require B; } } BEGIN { my @xs_compati_bit_properties = qw( latin1 ascii utf8 indent canonical space_before space_after allow_nonref shrink allow_blessed convert_blessed relaxed allow_unknown allow_tags ); my @pp_bit_properties = qw( allow_singlequote allow_bignum loose allow_barekey escape_slash as_nonblessed ); # Perl version check, Unicode handling is enabled? # Helper module sets @JSON::PP::_properties. if ( OLD_PERL ) { my $helper = $] >= 5.006 ? 'JSON::PP::Compat5006' : 'JSON::PP::Compat5005'; eval qq| require $helper |; if ($@) { Carp::croak $@; } } for my $name (@xs_compati_bit_properties, @pp_bit_properties) { my $property_id = 'P_' . uc($name); eval qq/ sub $name { my \$enable = defined \$_[1] ? \$_[1] : 1; if (\$enable) { \$_[0]->{PROPS}->[$property_id] = 1; } else { \$_[0]->{PROPS}->[$property_id] = 0; } \$_[0]; } sub get_$name { \$_[0]->{PROPS}->[$property_id] ? 1 : ''; } /; } } # Functions my $JSON; # cache sub encode_json ($) { # encode ($JSON ||= __PACKAGE__->new->utf8)->encode(@_); } sub decode_json { # decode ($JSON ||= __PACKAGE__->new->utf8)->decode(@_); } # Obsoleted sub to_json($) { Carp::croak ("JSON::PP::to_json has been renamed to encode_json."); } sub from_json($) { Carp::croak ("JSON::PP::from_json has been renamed to decode_json."); } # Methods sub new { my $class = shift; my $self = { max_depth => 512, max_size => 0, indent_length => 3, }; $self->{PROPS}[P_ALLOW_NONREF] = 1; bless $self, $class; } sub encode { return $_[0]->PP_encode_json($_[1]); } sub decode { return $_[0]->PP_decode_json($_[1], 0x00000000); } sub decode_prefix { return $_[0]->PP_decode_json($_[1], 0x00000001); } # accessor # pretty printing sub pretty { my ($self, $v) = @_; my $enable = defined $v ? $v : 1; if ($enable) { # indent_length(3) for JSON::XS compatibility $self->indent(1)->space_before(1)->space_after(1); } else { $self->indent(0)->space_before(0)->space_after(0); } $self; } # etc sub max_depth { my $max = defined $_[1] ? $_[1] : 0x80000000; $_[0]->{max_depth} = $max; $_[0]; } sub get_max_depth { $_[0]->{max_depth}; } sub max_size { my $max = defined $_[1] ? $_[1] : 0; $_[0]->{max_size} = $max; $_[0]; } sub get_max_size { $_[0]->{max_size}; } sub boolean_values { my $self = shift; if (@_) { my ($false, $true) = @_; $self->{false} = $false; $self->{true} = $true; } else { delete $self->{false}; delete $self->{true}; } return $self; } sub get_boolean_values { my $self = shift; if (exists $self->{true} and exists $self->{false}) { return @$self{qw/false true/}; } return; } sub filter_json_object { if (defined $_[1] and ref $_[1] eq 'CODE') { $_[0]->{cb_object} = $_[1]; } else { delete $_[0]->{cb_object}; } $_[0]->{F_HOOK} = ($_[0]->{cb_object} or $_[0]->{cb_sk_object}) ? 1 : 0; $_[0]; } sub filter_json_single_key_object { if (@_ == 1 or @_ > 3) { Carp::croak("Usage: JSON::PP::filter_json_single_key_object(self, key, callback = undef)"); } if (defined $_[2] and ref $_[2] eq 'CODE') { $_[0]->{cb_sk_object}->{$_[1]} = $_[2]; } else { delete $_[0]->{cb_sk_object}->{$_[1]}; delete $_[0]->{cb_sk_object} unless %{$_[0]->{cb_sk_object} || {}}; } $_[0]->{F_HOOK} = ($_[0]->{cb_object} or $_[0]->{cb_sk_object}) ? 1 : 0; $_[0]; } sub indent_length { if (!defined $_[1] or $_[1] > 15 or $_[1] < 0) { Carp::carp "The acceptable range of indent_length() is 0 to 15."; } else { $_[0]->{indent_length} = $_[1]; } $_[0]; } sub get_indent_length { $_[0]->{indent_length}; } sub sort_by { $_[0]->{sort_by} = defined $_[1] ? $_[1] : 1; $_[0]; } sub allow_bigint { Carp::carp("allow_bigint() is obsoleted. use allow_bignum() instead."); $_[0]->allow_bignum; } ############################### ### ### Perl => JSON ### { # Convert my $max_depth; my $indent; my $ascii; my $latin1; my $utf8; my $space_before; my $space_after; my $canonical; my $allow_blessed; my $convert_blessed; my $indent_length; my $escape_slash; my $bignum; my $as_nonblessed; my $allow_tags; my $depth; my $indent_count; my $keysort; sub PP_encode_json { my $self = shift; my $obj = shift; $indent_count = 0; $depth = 0; my $props = $self->{PROPS}; ($ascii, $latin1, $utf8, $indent, $canonical, $space_before, $space_after, $allow_blessed, $convert_blessed, $escape_slash, $bignum, $as_nonblessed, $allow_tags) = @{$props}[P_ASCII .. P_SPACE_AFTER, P_ALLOW_BLESSED, P_CONVERT_BLESSED, P_ESCAPE_SLASH, P_ALLOW_BIGNUM, P_AS_NONBLESSED, P_ALLOW_TAGS]; ($max_depth, $indent_length) = @{$self}{qw/max_depth indent_length/}; $keysort = $canonical ? sub { $a cmp $b } : undef; if ($self->{sort_by}) { $keysort = ref($self->{sort_by}) eq 'CODE' ? $self->{sort_by} : $self->{sort_by} =~ /\D+/ ? $self->{sort_by} : sub { $a cmp $b }; } encode_error("hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)") if(!ref $obj and !$props->[ P_ALLOW_NONREF ]); my $str = $self->object_to_json($obj); $str .= "\n" if ( $indent ); # JSON::XS 2.26 compatible unless ($ascii or $latin1 or $utf8) { utf8::upgrade($str); } if ($props->[ P_SHRINK ]) { utf8::downgrade($str, 1); } return $str; } sub object_to_json { my ($self, $obj) = @_; my $type = ref($obj); if($type eq 'HASH'){ return $self->hash_to_json($obj); } elsif($type eq 'ARRAY'){ return $self->array_to_json($obj); } elsif ($type) { # blessed object? if (blessed($obj)) { return $self->value_to_json($obj) if ( $obj->isa('JSON::PP::Boolean') ); if ( $allow_tags and $obj->can('FREEZE') ) { my $obj_class = ref $obj || $obj; $obj = bless $obj, $obj_class; my @results = $obj->FREEZE('JSON'); if ( @results and ref $results[0] ) { if ( refaddr( $obj ) eq refaddr( $results[0] ) ) { encode_error( sprintf( "%s::FREEZE method returned same object as was passed instead of a new one", ref $obj ) ); } } return '("'.$obj_class.'")['.join(',', @results).']'; } if ( $convert_blessed and $obj->can('TO_JSON') ) { my $result = $obj->TO_JSON(); if ( defined $result and ref( $result ) ) { if ( refaddr( $obj ) eq refaddr( $result ) ) { encode_error( sprintf( "%s::TO_JSON method returned same object as was passed instead of a new one", ref $obj ) ); } } return $self->object_to_json( $result ); } return "$obj" if ( $bignum and _is_bignum($obj) ); if ($allow_blessed) { return $self->blessed_to_json($obj) if ($as_nonblessed); # will be removed. return 'null'; } encode_error( sprintf("encountered object '%s', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing)", $obj) ); } else { return $self->value_to_json($obj); } } else{ return $self->value_to_json($obj); } } sub hash_to_json { my ($self, $obj) = @_; my @res; encode_error("json text or perl structure exceeds maximum nesting level (max_depth set too low?)") if (++$depth > $max_depth); my ($pre, $post) = $indent ? $self->_up_indent() : ('', ''); my $del = ($space_before ? ' ' : '') . ':' . ($space_after ? ' ' : ''); for my $k ( _sort( $obj ) ) { if ( OLD_PERL ) { utf8::decode($k) } # key for Perl 5.6 / be optimized push @res, $self->string_to_json( $k ) . $del . ( ref $obj->{$k} ? $self->object_to_json( $obj->{$k} ) : $self->value_to_json( $obj->{$k} ) ); } --$depth; $self->_down_indent() if ($indent); return '{}' unless @res; return '{' . $pre . join( ",$pre", @res ) . $post . '}'; } sub array_to_json { my ($self, $obj) = @_; my @res; encode_error("json text or perl structure exceeds maximum nesting level (max_depth set too low?)") if (++$depth > $max_depth); my ($pre, $post) = $indent ? $self->_up_indent() : ('', ''); for my $v (@$obj){ push @res, ref($v) ? $self->object_to_json($v) : $self->value_to_json($v); } --$depth; $self->_down_indent() if ($indent); return '[]' unless @res; return '[' . $pre . join( ",$pre", @res ) . $post . ']'; } sub _looks_like_number { my $value = shift; if (USE_B) { my $b_obj = B::svref_2object(\$value); my $flags = $b_obj->FLAGS; return 1 if $flags & ( B::SVp_IOK() | B::SVp_NOK() ) and !( $flags & B::SVp_POK() ); return; } else { no warnings 'numeric'; # if the utf8 flag is on, it almost certainly started as a string return if utf8::is_utf8($value); # detect numbers # string & "" -> "" # number & "" -> 0 (with warning) # nan and inf can detect as numbers, so check with * 0 return unless length((my $dummy = "") & $value); return unless 0 + $value eq $value; return 1 if $value * 0 == 0; return -1; # inf/nan } } sub value_to_json { my ($self, $value) = @_; return 'null' if(!defined $value); my $type = ref($value); if (!$type) { if (_looks_like_number($value)) { return $value; } return $self->string_to_json($value); } elsif( blessed($value) and $value->isa('JSON::PP::Boolean') ){ return $$value == 1 ? 'true' : 'false'; } else { if ((overload::StrVal($value) =~ /=(\w+)/)[0]) { return $self->value_to_json("$value"); } if ($type eq 'SCALAR' and defined $$value) { return $$value eq '1' ? 'true' : $$value eq '0' ? 'false' : $self->{PROPS}->[ P_ALLOW_UNKNOWN ] ? 'null' : encode_error("cannot encode reference to scalar"); } if ( $self->{PROPS}->[ P_ALLOW_UNKNOWN ] ) { return 'null'; } else { if ( $type eq 'SCALAR' or $type eq 'REF' ) { encode_error("cannot encode reference to scalar"); } else { encode_error("encountered $value, but JSON can only represent references to arrays or hashes"); } } } } my %esc = ( "\n" => '\n', "\r" => '\r', "\t" => '\t', "\f" => '\f', "\b" => '\b', "\"" => '\"', "\\" => '\\\\', "\'" => '\\\'', ); sub string_to_json { my ($self, $arg) = @_; $arg =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g; $arg =~ s/\//\\\//g if ($escape_slash); $arg =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1)/eg; if ($ascii) { $arg = JSON_PP_encode_ascii($arg); } if ($latin1) { $arg = JSON_PP_encode_latin1($arg); } if ($utf8) { utf8::encode($arg); } return '"' . $arg . '"'; } sub blessed_to_json { my $reftype = reftype($_[1]) || ''; if ($reftype eq 'HASH') { return $_[0]->hash_to_json($_[1]); } elsif ($reftype eq 'ARRAY') { return $_[0]->array_to_json($_[1]); } else { return 'null'; } } sub encode_error { my $error = shift; Carp::croak "$error"; } sub _sort { defined $keysort ? (sort $keysort (keys %{$_[0]})) : keys %{$_[0]}; } sub _up_indent { my $self = shift; my $space = ' ' x $indent_length; my ($pre,$post) = ('',''); $post = "\n" . $space x $indent_count; $indent_count++; $pre = "\n" . $space x $indent_count; return ($pre,$post); } sub _down_indent { $indent_count--; } sub PP_encode_box { { depth => $depth, indent_count => $indent_count, }; } } # Convert sub _encode_ascii { join('', map { $_ <= 127 ? chr($_) : $_ <= 65535 ? sprintf('\u%04x', $_) : sprintf('\u%x\u%x', _encode_surrogates($_)); } unpack('U*', $_[0]) ); } sub _encode_latin1 { join('', map { $_ <= 255 ? chr($_) : $_ <= 65535 ? sprintf('\u%04x', $_) : sprintf('\u%x\u%x', _encode_surrogates($_)); } unpack('U*', $_[0]) ); } sub _encode_surrogates { # from perlunicode my $uni = $_[0] - 0x10000; return ($uni / 0x400 + 0xD800, $uni % 0x400 + 0xDC00); } sub _is_bignum { $_[0]->isa('Math::BigInt') or $_[0]->isa('Math::BigFloat'); } # # JSON => Perl # my $max_intsize; BEGIN { my $checkint = 1111; for my $d (5..64) { $checkint .= 1; my $int = eval qq| $checkint |; if ($int =~ /[eE]/) { $max_intsize = $d - 1; last; } } } { # PARSE my %escapes = ( # by Jeremy Muhlich <jmuhlich [at] bitflood.org> b => "\x8", t => "\x9", n => "\xA", f => "\xC", r => "\xD", '\\' => '\\', '"' => '"', '/' => '/', ); my $text; # json data my $at; # offset my $ch; # first character my $len; # text length (changed according to UTF8 or NON UTF8) # INTERNAL my $depth; # nest counter my $encoding; # json text encoding my $is_valid_utf8; # temp variable my $utf8_len; # utf8 byte length # FLAGS my $utf8; # must be utf8 my $max_depth; # max nest number of objects and arrays my $max_size; my $relaxed; my $cb_object; my $cb_sk_object; my $F_HOOK; my $allow_bignum; # using Math::BigInt/BigFloat my $singlequote; # loosely quoting my $loose; # my $allow_barekey; # bareKey my $allow_tags; my $alt_true; my $alt_false; sub _detect_utf_encoding { my $text = shift; my @octets = unpack('C4', $text); return 'unknown' unless defined $octets[3]; return ( $octets[0] and $octets[1]) ? 'UTF-8' : (!$octets[0] and $octets[1]) ? 'UTF-16BE' : (!$octets[0] and !$octets[1]) ? 'UTF-32BE' : ( $octets[2] ) ? 'UTF-16LE' : (!$octets[2] ) ? 'UTF-32LE' : 'unknown'; } sub PP_decode_json { my ($self, $want_offset); ($self, $text, $want_offset) = @_; ($at, $ch, $depth) = (0, '', 0); if ( !defined $text or ref $text ) { decode_error("malformed JSON string, neither array, object, number, string or atom"); } my $props = $self->{PROPS}; ($utf8, $relaxed, $loose, $allow_bignum, $allow_barekey, $singlequote, $allow_tags) = @{$props}[P_UTF8, P_RELAXED, P_LOOSE .. P_ALLOW_SINGLEQUOTE, P_ALLOW_TAGS]; ($alt_true, $alt_false) = @$self{qw/true false/}; if ( $utf8 ) { $encoding = _detect_utf_encoding($text); if ($encoding ne 'UTF-8' and $encoding ne 'unknown') { require Encode; Encode::from_to($text, $encoding, 'utf-8'); } else { utf8::downgrade( $text, 1 ) or Carp::croak("Wide character in subroutine entry"); } } else { utf8::upgrade( $text ); utf8::encode( $text ); } $len = length $text; ($max_depth, $max_size, $cb_object, $cb_sk_object, $F_HOOK) = @{$self}{qw/max_depth max_size cb_object cb_sk_object F_HOOK/}; if ($max_size > 1) { use bytes; my $bytes = length $text; decode_error( sprintf("attempted decode of JSON text of %s bytes size, but max_size is set to %s" , $bytes, $max_size), 1 ) if ($bytes > $max_size); } white(); # remove head white space decode_error("malformed JSON string, neither array, object, number, string or atom") unless defined $ch; # Is there a first character for JSON structure? my $result = value(); if ( !$props->[ P_ALLOW_NONREF ] and !ref $result ) { decode_error( 'JSON text must be an object or array (but found number, string, true, false or null,' . ' use allow_nonref to allow this)', 1); } Carp::croak('something wrong.') if $len < $at; # we won't arrive here. my $consumed = defined $ch ? $at - 1 : $at; # consumed JSON text length white(); # remove tail white space return ( $result, $consumed ) if $want_offset; # all right if decode_prefix decode_error("garbage after JSON object") if defined $ch; $result; } sub next_chr { return $ch = undef if($at >= $len); $ch = substr($text, $at++, 1); } sub value { white(); return if(!defined $ch); return object() if($ch eq '{'); return array() if($ch eq '['); return tag() if($ch eq '('); return string() if($ch eq '"' or ($singlequote and $ch eq "'")); return number() if($ch =~ /[0-9]/ or $ch eq '-'); return word(); } sub string { my $utf16; my $is_utf8; ($is_valid_utf8, $utf8_len) = ('', 0); my $s = ''; # basically UTF8 flag on if($ch eq '"' or ($singlequote and $ch eq "'")){ my $boundChar = $ch; OUTER: while( defined(next_chr()) ){ if($ch eq $boundChar){ next_chr(); if ($utf16) { decode_error("missing low surrogate character in surrogate pair"); } utf8::decode($s) if($is_utf8); return $s; } elsif($ch eq '\\'){ next_chr(); if(exists $escapes{$ch}){ $s .= $escapes{$ch}; } elsif($ch eq 'u'){ # UNICODE handling my $u = ''; for(1..4){ $ch = next_chr(); last OUTER if($ch !~ /[0-9a-fA-F]/); $u .= $ch; } # U+D800 - U+DBFF if ($u =~ /^[dD][89abAB][0-9a-fA-F]{2}/) { # UTF-16 high surrogate? $utf16 = $u; } # U+DC00 - U+DFFF elsif ($u =~ /^[dD][c-fC-F][0-9a-fA-F]{2}/) { # UTF-16 low surrogate? unless (defined $utf16) { decode_error("missing high surrogate character in surrogate pair"); } $is_utf8 = 1; $s .= JSON_PP_decode_surrogates($utf16, $u) || next; $utf16 = undef; } else { if (defined $utf16) { decode_error("surrogate pair expected"); } if ( ( my $hex = hex( $u ) ) > 127 ) { $is_utf8 = 1; $s .= JSON_PP_decode_unicode($u) || next; } else { $s .= chr $hex; } } } else{ unless ($loose) { $at -= 2; decode_error('illegal backslash escape sequence in string'); } $s .= $ch; } } else{ if ( ord $ch > 127 ) { unless( $ch = is_valid_utf8($ch) ) { $at -= 1; decode_error("malformed UTF-8 character in JSON string"); } else { $at += $utf8_len - 1; } $is_utf8 = 1; } if (!$loose) { if ($ch =~ /[\x00-\x1f\x22\x5c]/) { # '/' ok if (!$relaxed or $ch ne "\t") { $at--; decode_error('invalid character encountered while parsing JSON string'); } } } $s .= $ch; } } } decode_error("unexpected end of string while parsing JSON string"); } sub white { while( defined $ch ){ if($ch eq '' or $ch =~ /\A[ \t\r\n]\z/){ next_chr(); } elsif($relaxed and $ch eq '/'){ next_chr(); if(defined $ch and $ch eq '/'){ 1 while(defined(next_chr()) and $ch ne "\n" and $ch ne "\r"); } elsif(defined $ch and $ch eq '*'){ next_chr(); while(1){ if(defined $ch){ if($ch eq '*'){ if(defined(next_chr()) and $ch eq '/'){ next_chr(); last; } } else{ next_chr(); } } else{ decode_error("Unterminated comment"); } } next; } else{ $at--; decode_error("malformed JSON string, neither array, object, number, string or atom"); } } else{ if ($relaxed and $ch eq '#') { # correctly? pos($text) = $at; $text =~ /\G([^\n]*(?:\r\n|\r|\n|$))/g; $at = pos($text); next_chr; next; } last; } } } sub array { my $a = $_[0] || []; # you can use this code to use another array ref object. decode_error('json text or perl structure exceeds maximum nesting level (max_depth set too low?)') if (++$depth > $max_depth); next_chr(); white(); if(defined $ch and $ch eq ']'){ --$depth; next_chr(); return $a; } else { while(defined($ch)){ push @$a, value(); white(); if (!defined $ch) { last; } if($ch eq ']'){ --$depth; next_chr(); return $a; } if($ch ne ','){ last; } next_chr(); white(); if ($relaxed and $ch eq ']') { --$depth; next_chr(); return $a; } } } $at-- if defined $ch and $ch ne ''; decode_error(", or ] expected while parsing array"); } sub tag { decode_error('malformed JSON string, neither array, object, number, string or atom') unless $allow_tags; next_chr(); white(); my $tag = value(); return unless defined $tag; decode_error('malformed JSON string, (tag) must be a string') if ref $tag; white(); if (!defined $ch or $ch ne ')') { decode_error(') expected after tag'); } next_chr(); white(); my $val = value(); return unless defined $val; decode_error('malformed JSON string, tag value must be an array') unless ref $val eq 'ARRAY'; if (!eval { $tag->can('THAW') }) { decode_error('cannot decode perl-object (package does not exist)') if $@; decode_error('cannot decode perl-object (package does not have a THAW method)'); } $tag->THAW('JSON', @$val); } sub object { my $o = $_[0] || {}; # you can use this code to use another hash ref object. my $k; decode_error('json text or perl structure exceeds maximum nesting level (max_depth set too low?)') if (++$depth > $max_depth); next_chr(); white(); if(defined $ch and $ch eq '}'){ --$depth; next_chr(); if ($F_HOOK) { return _json_object_hook($o); } return $o; } else { while (defined $ch) { $k = ($allow_barekey and $ch ne '"' and $ch ne "'") ? bareKey() : string(); white(); if(!defined $ch or $ch ne ':'){ $at--; decode_error("':' expected"); } next_chr(); $o->{$k} = value(); white(); last if (!defined $ch); if($ch eq '}'){ --$depth; next_chr(); if ($F_HOOK) { return _json_object_hook($o); } return $o; } if($ch ne ','){ last; } next_chr(); white(); if ($relaxed and $ch eq '}') { --$depth; next_chr(); if ($F_HOOK) { return _json_object_hook($o); } return $o; } } } $at-- if defined $ch and $ch ne ''; decode_error(", or } expected while parsing object/hash"); } sub bareKey { # doesn't strictly follow Standard ECMA-262 3rd Edition my $key; while($ch =~ /[^\x00-\x23\x25-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\x7F]/){ $key .= $ch; next_chr(); } return $key; } sub word { my $word = substr($text,$at-1,4); if($word eq 'true'){ $at += 3; next_chr; return defined $alt_true ? $alt_true : $JSON::PP::true; } elsif($word eq 'null'){ $at += 3; next_chr; return undef; } elsif($word eq 'fals'){ $at += 3; if(substr($text,$at,1) eq 'e'){ $at++; next_chr; return defined $alt_false ? $alt_false : $JSON::PP::false; } } $at--; # for decode_error report decode_error("'null' expected") if ($word =~ /^n/); decode_error("'true' expected") if ($word =~ /^t/); decode_error("'false' expected") if ($word =~ /^f/); decode_error("malformed JSON string, neither array, object, number, string or atom"); } sub number { my $n = ''; my $v; my $is_dec; my $is_exp; if($ch eq '-'){ $n = '-'; next_chr; if (!defined $ch or $ch !~ /\d/) { decode_error("malformed number (no digits after initial minus)"); } } # According to RFC4627, hex or oct digits are invalid. if($ch eq '0'){ my $peek = substr($text,$at,1); if($peek =~ /^[0-9a-dfA-DF]/){ # e may be valid (exponential) decode_error("malformed number (leading zero must not be followed by another digit)"); } $n .= $ch; next_chr; } while(defined $ch and $ch =~ /\d/){ $n .= $ch; next_chr; } if(defined $ch and $ch eq '.'){ $n .= '.'; $is_dec = 1; next_chr; if (!defined $ch or $ch !~ /\d/) { decode_error("malformed number (no digits after decimal point)"); } else { $n .= $ch; } while(defined(next_chr) and $ch =~ /\d/){ $n .= $ch; } } if(defined $ch and ($ch eq 'e' or $ch eq 'E')){ $n .= $ch; $is_exp = 1; next_chr; if(defined($ch) and ($ch eq '+' or $ch eq '-')){ $n .= $ch; next_chr; if (!defined $ch or $ch =~ /\D/) { decode_error("malformed number (no digits after exp sign)"); } $n .= $ch; } elsif(defined($ch) and $ch =~ /\d/){ $n .= $ch; } else { decode_error("malformed number (no digits after exp sign)"); } while(defined(next_chr) and $ch =~ /\d/){ $n .= $ch; } } $v .= $n; if ($is_dec or $is_exp) { if ($allow_bignum) { require Math::BigFloat; return Math::BigFloat->new($v); } } else { if (length $v > $max_intsize) { if ($allow_bignum) { # from Adam Sussman require Math::BigInt; return Math::BigInt->new($v); } else { return "$v"; } } } return $is_dec ? $v/1.0 : 0+$v; } sub is_valid_utf8 { $utf8_len = $_[0] =~ /[\x00-\x7F]/ ? 1 : $_[0] =~ /[\xC2-\xDF]/ ? 2 : $_[0] =~ /[\xE0-\xEF]/ ? 3 : $_[0] =~ /[\xF0-\xF4]/ ? 4 : 0 ; return unless $utf8_len; my $is_valid_utf8 = substr($text, $at - 1, $utf8_len); return ( $is_valid_utf8 =~ /^(?: [\x00-\x7F] |[\xC2-\xDF][\x80-\xBF] |[\xE0][\xA0-\xBF][\x80-\xBF] |[\xE1-\xEC][\x80-\xBF][\x80-\xBF] |[\xED][\x80-\x9F][\x80-\xBF] |[\xEE-\xEF][\x80-\xBF][\x80-\xBF] |[\xF0][\x90-\xBF][\x80-\xBF][\x80-\xBF] |[\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF] |[\xF4][\x80-\x8F][\x80-\xBF][\x80-\xBF] )$/x ) ? $is_valid_utf8 : ''; } sub decode_error { my $error = shift; my $no_rep = shift; my $str = defined $text ? substr($text, $at) : ''; my $mess = ''; my $type = 'U*'; if ( OLD_PERL ) { my $type = $] < 5.006 ? 'C*' : utf8::is_utf8( $str ) ? 'U*' # 5.6 : 'C*' ; } for my $c ( unpack( $type, $str ) ) { # emulate pv_uni_display() ? $mess .= $c == 0x07 ? '\a' : $c == 0x09 ? '\t' : $c == 0x0a ? '\n' : $c == 0x0d ? '\r' : $c == 0x0c ? '\f' : $c < 0x20 ? sprintf('\x{%x}', $c) : $c == 0x5c ? '\\\\' : $c < 0x80 ? chr($c) : sprintf('\x{%x}', $c) ; if ( length $mess >= 20 ) { $mess .= '...'; last; } } unless ( length $mess ) { $mess = '(end of string)'; } Carp::croak ( $no_rep ? "$error" : "$error, at character offset $at (before \"$mess\")" ); } sub _json_object_hook { my $o = $_[0]; my @ks = keys %{$o}; if ( $cb_sk_object and @ks == 1 and exists $cb_sk_object->{ $ks[0] } and ref $cb_sk_object->{ $ks[0] } ) { my @val = $cb_sk_object->{ $ks[0] }->( $o->{$ks[0]} ); if (@val == 0) { return $o; } elsif (@val == 1) { return $val[0]; } else { Carp::croak("filter_json_single_key_object callbacks must not return more than one scalar"); } } my @val = $cb_object->($o) if ($cb_object); if (@val == 0) { return $o; } elsif (@val == 1) { return $val[0]; } else { Carp::croak("filter_json_object callbacks must not return more than one scalar"); } } sub PP_decode_box { { text => $text, at => $at, ch => $ch, len => $len, depth => $depth, encoding => $encoding, is_valid_utf8 => $is_valid_utf8, }; } } # PARSE sub _decode_surrogates { # from perlunicode my $uni = 0x10000 + (hex($_[0]) - 0xD800) * 0x400 + (hex($_[1]) - 0xDC00); my $un = pack('U*', $uni); utf8::encode( $un ); return $un; } sub _decode_unicode { my $un = pack('U', hex shift); utf8::encode( $un ); return $un; } # # Setup for various Perl versions (the code from JSON::PP58) # BEGIN { unless ( defined &utf8::is_utf8 ) { require Encode; *utf8::is_utf8 = *Encode::is_utf8; } if ( !OLD_PERL ) { *JSON::PP::JSON_PP_encode_ascii = \&_encode_ascii; *JSON::PP::JSON_PP_encode_latin1 = \&_encode_latin1; *JSON::PP::JSON_PP_decode_surrogates = \&_decode_surrogates; *JSON::PP::JSON_PP_decode_unicode = \&_decode_unicode; if ($] < 5.008003) { # join() in 5.8.0 - 5.8.2 is broken. package JSON::PP; require subs; subs->import('join'); eval q| sub join { return '' if (@_ < 2); my $j = shift; my $str = shift; for (@_) { $str .= $j . $_; } return $str; } |; } } sub JSON::PP::incr_parse { local $Carp::CarpLevel = 1; ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_parse( @_ ); } sub JSON::PP::incr_skip { ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_skip; } sub JSON::PP::incr_reset { ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_reset; } eval q{ sub JSON::PP::incr_text : lvalue { $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new; if ( $_[0]->{_incr_parser}->{incr_pos} ) { Carp::croak("incr_text cannot be called when the incremental parser already started parsing"); } $_[0]->{_incr_parser}->{incr_text}; } } if ( $] >= 5.006 ); } # Setup for various Perl versions (the code from JSON::PP58) ############################### # Utilities # BEGIN { eval 'require Scalar::Util'; unless($@){ *JSON::PP::blessed = \&Scalar::Util::blessed; *JSON::PP::reftype = \&Scalar::Util::reftype; *JSON::PP::refaddr = \&Scalar::Util::refaddr; } else{ # This code is from Scalar::Util. # warn $@; eval 'sub UNIVERSAL::a_sub_not_likely_to_be_here { ref($_[0]) }'; *JSON::PP::blessed = sub { local($@, $SIG{__DIE__}, $SIG{__WARN__}); ref($_[0]) ? eval { $_[0]->a_sub_not_likely_to_be_here } : undef; }; require B; my %tmap = qw( B::NULL SCALAR B::HV HASH B::AV ARRAY B::CV CODE B::IO IO B::GV GLOB B::REGEXP REGEXP ); *JSON::PP::reftype = sub { my $r = shift; return undef unless length(ref($r)); my $t = ref(B::svref_2object($r)); return exists $tmap{$t} ? $tmap{$t} : length(ref($$r)) ? 'REF' : 'SCALAR'; }; *JSON::PP::refaddr = sub { return undef unless length(ref($_[0])); my $addr; if(defined(my $pkg = blessed($_[0]))) { $addr .= bless $_[0], 'Scalar::Util::Fake'; bless $_[0], $pkg; } else { $addr .= $_[0] } $addr =~ /0x(\w+)/; local $^W; #no warnings 'portable'; hex($1); } } } # shamelessly copied and modified from JSON::XS code. $JSON::PP::true = do { bless \(my $dummy = 1), "JSON::PP::Boolean" }; $JSON::PP::false = do { bless \(my $dummy = 0), "JSON::PP::Boolean" }; sub is_bool { blessed $_[0] and ( $_[0]->isa("JSON::PP::Boolean") or $_[0]->isa("Types::Serialiser::BooleanBase") or $_[0]->isa("JSON::XS::Boolean") ); } sub true { $JSON::PP::true } sub false { $JSON::PP::false } sub null { undef; } ############################### package JSON::PP::IncrParser; use strict; use constant INCR_M_WS => 0; # initial whitespace skipping use constant INCR_M_STR => 1; # inside string use constant INCR_M_BS => 2; # inside backslash use constant INCR_M_JSON => 3; # outside anything, count nesting use constant INCR_M_C0 => 4; use constant INCR_M_C1 => 5; use constant INCR_M_TFN => 6; use constant INCR_M_NUM => 7; $JSON::PP::IncrParser::VERSION = '1.01'; sub new { my ( $class ) = @_; bless { incr_nest => 0, incr_text => undef, incr_pos => 0, incr_mode => 0, }, $class; } sub incr_parse { my ( $self, $coder, $text ) = @_; $self->{incr_text} = '' unless ( defined $self->{incr_text} ); if ( defined $text ) { if ( utf8::is_utf8( $text ) and !utf8::is_utf8( $self->{incr_text} ) ) { utf8::upgrade( $self->{incr_text} ) ; utf8::decode( $self->{incr_text} ) ; } $self->{incr_text} .= $text; } if ( defined wantarray ) { my $max_size = $coder->get_max_size; my $p = $self->{incr_pos}; my @ret; { do { unless ( $self->{incr_nest} <= 0 and $self->{incr_mode} == INCR_M_JSON ) { $self->_incr_parse( $coder ); if ( $max_size and $self->{incr_pos} > $max_size ) { Carp::croak("attempted decode of JSON text of $self->{incr_pos} bytes size, but max_size is set to $max_size"); } unless ( $self->{incr_nest} <= 0 and $self->{incr_mode} == INCR_M_JSON ) { # as an optimisation, do not accumulate white space in the incr buffer if ( $self->{incr_mode} == INCR_M_WS and $self->{incr_pos} ) { $self->{incr_pos} = 0; $self->{incr_text} = ''; } last; } } my ($obj, $offset) = $coder->PP_decode_json( $self->{incr_text}, 0x00000001 ); push @ret, $obj; use bytes; $self->{incr_text} = substr( $self->{incr_text}, $offset || 0 ); $self->{incr_pos} = 0; $self->{incr_nest} = 0; $self->{incr_mode} = 0; last unless wantarray; } while ( wantarray ); } if ( wantarray ) { return @ret; } else { # in scalar context return defined $ret[0] ? $ret[0] : undef; } } } sub _incr_parse { my ($self, $coder) = @_; my $text = $self->{incr_text}; my $len = length $text; my $p = $self->{incr_pos}; INCR_PARSE: while ( $len > $p ) { my $s = substr( $text, $p, 1 ); last INCR_PARSE unless defined $s; my $mode = $self->{incr_mode}; if ( $mode == INCR_M_WS ) { while ( $len > $p ) { $s = substr( $text, $p, 1 ); last INCR_PARSE unless defined $s; if ( ord($s) > 0x20 ) { if ( $s eq '#' ) { $self->{incr_mode} = INCR_M_C0; redo INCR_PARSE; } else { $self->{incr_mode} = INCR_M_JSON; redo INCR_PARSE; } } $p++; } } elsif ( $mode == INCR_M_BS ) { $p++; $self->{incr_mode} = INCR_M_STR; redo INCR_PARSE; } elsif ( $mode == INCR_M_C0 or $mode == INCR_M_C1 ) { while ( $len > $p ) { $s = substr( $text, $p, 1 ); last INCR_PARSE unless defined $s; if ( $s eq "\n" ) { $self->{incr_mode} = $self->{incr_mode} == INCR_M_C0 ? INCR_M_WS : INCR_M_JSON; last; } $p++; } next; } elsif ( $mode == INCR_M_TFN ) { while ( $len > $p ) { $s = substr( $text, $p++, 1 ); next if defined $s and $s =~ /[rueals]/; last; } $p--; $self->{incr_mode} = INCR_M_JSON; last INCR_PARSE unless $self->{incr_nest}; redo INCR_PARSE; } elsif ( $mode == INCR_M_NUM ) { while ( $len > $p ) { $s = substr( $text, $p++, 1 ); next if defined $s and $s =~ /[0-9eE.+\-]/; last; } $p--; $self->{incr_mode} = INCR_M_JSON; last INCR_PARSE unless $self->{incr_nest}; redo INCR_PARSE; } elsif ( $mode == INCR_M_STR ) { while ( $len > $p ) { $s = substr( $text, $p, 1 ); last INCR_PARSE unless defined $s; if ( $s eq '"' ) { $p++; $self->{incr_mode} = INCR_M_JSON; last INCR_PARSE unless $self->{incr_nest}; redo INCR_PARSE; } elsif ( $s eq '\\' ) { $p++; if ( !defined substr($text, $p, 1) ) { $self->{incr_mode} = INCR_M_BS; last INCR_PARSE; } } $p++; } } elsif ( $mode == INCR_M_JSON ) { while ( $len > $p ) { $s = substr( $text, $p++, 1 ); if ( $s eq "\x00" ) { $p--; last INCR_PARSE; } elsif ( $s eq "\x09" or $s eq "\x0a" or $s eq "\x0d" or $s eq "\x20" ) { if ( !$self->{incr_nest} ) { $p--; # do not eat the whitespace, let the next round do it last INCR_PARSE; } next; } elsif ( $s eq 't' or $s eq 'f' or $s eq 'n' ) { $self->{incr_mode} = INCR_M_TFN; redo INCR_PARSE; } elsif ( $s =~ /^[0-9\-]$/ ) { $self->{incr_mode} = INCR_M_NUM; redo INCR_PARSE; } elsif ( $s eq '"' ) { $self->{incr_mode} = INCR_M_STR; redo INCR_PARSE; } elsif ( $s eq '[' or $s eq '{' ) { if ( ++$self->{incr_nest} > $coder->get_max_depth ) { Carp::croak('json text or perl structure exceeds maximum nesting level (max_depth set too low?)'); } next; } elsif ( $s eq ']' or $s eq '}' ) { if ( --$self->{incr_nest} <= 0 ) { last INCR_PARSE; } } elsif ( $s eq '#' ) { $self->{incr_mode} = INCR_M_C1; redo INCR_PARSE; } } } } $self->{incr_pos} = $p; $self->{incr_parsing} = $p ? 1 : 0; # for backward compatibility } sub incr_text { if ( $_[0]->{incr_pos} ) { Carp::croak("incr_text cannot be called when the incremental parser already started parsing"); } $_[0]->{incr_text}; } sub incr_skip { my $self = shift; $self->{incr_text} = substr( $self->{incr_text}, $self->{incr_pos} ); $self->{incr_pos} = 0; $self->{incr_mode} = 0; $self->{incr_nest} = 0; } sub incr_reset { my $self = shift; $self->{incr_text} = undef; $self->{incr_pos} = 0; $self->{incr_mode} = 0; $self->{incr_nest} = 0; } ############################### 1; __END__ =pod =head1 NAME JSON::PP - JSON::XS compatible pure-Perl module. =head1 SYNOPSIS use JSON::PP; # exported functions, they croak on error # and expect/generate UTF-8 $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref; $perl_hash_or_arrayref = decode_json $utf8_encoded_json_text; # OO-interface $json = JSON::PP->new->ascii->pretty->allow_nonref; $pretty_printed_json_text = $json->encode( $perl_scalar ); $perl_scalar = $json->decode( $json_text ); # Note that JSON version 2.0 and above will automatically use # JSON::XS or JSON::PP, so you should be able to just: use JSON; =head1 VERSION 4.05 =head1 DESCRIPTION JSON::PP is a pure perl JSON decoder/encoder, and (almost) compatible to much faster L<JSON::XS> written by Marc Lehmann in C. JSON::PP works as a fallback module when you use L<JSON> module without having installed JSON::XS. Because of this fallback feature of JSON.pm, JSON::PP tries not to be more JavaScript-friendly than JSON::XS (i.e. not to escape extra characters such as U+2028 and U+2029, etc), in order for you not to lose such JavaScript-friendliness silently when you use JSON.pm and install JSON::XS for speed or by accident. If you need JavaScript-friendly RFC7159-compliant pure perl module, try L<JSON::Tiny>, which is derived from L<Mojolicious> web framework and is also smaller and faster than JSON::PP. JSON::PP has been in the Perl core since Perl 5.14, mainly for CPAN toolchain modules to parse META.json. =head1 FUNCTIONAL INTERFACE This section is taken from JSON::XS almost verbatim. C<encode_json> and C<decode_json> are exported by default. =head2 encode_json $json_text = encode_json $perl_scalar Converts the given Perl data structure to a UTF-8 encoded, binary string (that is, the string contains octets only). Croaks on error. This function call is functionally identical to: $json_text = JSON::PP->new->utf8->encode($perl_scalar) Except being faster. =head2 decode_json $perl_scalar = decode_json $json_text The opposite of C<encode_json>: expects an UTF-8 (binary) string and tries to parse that as an UTF-8 encoded JSON text, returning the resulting reference. Croaks on error. This function call is functionally identical to: $perl_scalar = JSON::PP->new->utf8->decode($json_text) Except being faster. =head2 JSON::PP::is_bool $is_boolean = JSON::PP::is_bool($scalar) Returns true if the passed scalar represents either JSON::PP::true or JSON::PP::false, two constants that act like C<1> and C<0> respectively and are also used to represent JSON C<true> and C<false> in Perl strings. See L<MAPPING>, below, for more information on how JSON values are mapped to Perl. =head1 OBJECT-ORIENTED INTERFACE This section is also taken from JSON::XS. The object oriented interface lets you configure your own encoding or decoding style, within the limits of supported formats. =head2 new $json = JSON::PP->new Creates a new JSON::PP object that can be used to de/encode JSON strings. All boolean flags described below are by default I<disabled> (with the exception of C<allow_nonref>, which defaults to I<enabled> since version C<4.0>). The mutators for flags all return the JSON::PP object again and thus calls can be chained: my $json = JSON::PP->new->utf8->space_after->encode({a => [1,2]}) => {"a": [1, 2]} =head2 ascii $json = $json->ascii([$enable]) $enabled = $json->get_ascii If C<$enable> is true (or missing), then the C<encode> method will not generate characters outside the code range C<0..127> (which is ASCII). Any Unicode characters outside that range will be escaped using either a single \uXXXX (BMP characters) or a double \uHHHH\uLLLLL escape sequence, as per RFC4627. The resulting encoded JSON text can be treated as a native Unicode string, an ascii-encoded, latin1-encoded or UTF-8 encoded string, or any other superset of ASCII. If C<$enable> is false, then the C<encode> method will not escape Unicode characters unless required by the JSON syntax or other flags. This results in a faster and more compact format. See also the section I<ENCODING/CODESET FLAG NOTES> later in this document. The main use for this flag is to produce JSON texts that can be transmitted over a 7-bit channel, as the encoded JSON texts will not contain any 8 bit characters. JSON::PP->new->ascii(1)->encode([chr 0x10401]) => ["\ud801\udc01"] =head2 latin1 $json = $json->latin1([$enable]) $enabled = $json->get_latin1 If C<$enable> is true (or missing), then the C<encode> method will encode the resulting JSON text as latin1 (or iso-8859-1), escaping any characters outside the code range C<0..255>. The resulting string can be treated as a latin1-encoded JSON text or a native Unicode string. The C<decode> method will not be affected in any way by this flag, as C<decode> by default expects Unicode, which is a strict superset of latin1. If C<$enable> is false, then the C<encode> method will not escape Unicode characters unless required by the JSON syntax or other flags. See also the section I<ENCODING/CODESET FLAG NOTES> later in this document. The main use for this flag is efficiently encoding binary data as JSON text, as most octets will not be escaped, resulting in a smaller encoded size. The disadvantage is that the resulting JSON text is encoded in latin1 (and must correctly be treated as such when storing and transferring), a rare encoding for JSON. It is therefore most useful when you want to store data structures known to contain binary data efficiently in files or databases, not when talking to other JSON encoders/decoders. JSON::PP->new->latin1->encode (["\x{89}\x{abc}"] => ["\x{89}\\u0abc"] # (perl syntax, U+abc escaped, U+89 not) =head2 utf8 $json = $json->utf8([$enable]) $enabled = $json->get_utf8 If C<$enable> is true (or missing), then the C<encode> method will encode the JSON result into UTF-8, as required by many protocols, while the C<decode> method expects to be handled an UTF-8-encoded string. Please note that UTF-8-encoded strings do not contain any characters outside the range C<0..255>, they are thus useful for bytewise/binary I/O. In future versions, enabling this option might enable autodetection of the UTF-16 and UTF-32 encoding families, as described in RFC4627. If C<$enable> is false, then the C<encode> method will return the JSON string as a (non-encoded) Unicode string, while C<decode> expects thus a Unicode string. Any decoding or encoding (e.g. to UTF-8 or UTF-16) needs to be done yourself, e.g. using the Encode module. See also the section I<ENCODING/CODESET FLAG NOTES> later in this document. Example, output UTF-16BE-encoded JSON: use Encode; $jsontext = encode "UTF-16BE", JSON::PP->new->encode ($object); Example, decode UTF-32LE-encoded JSON: use Encode; $object = JSON::PP->new->decode (decode "UTF-32LE", $jsontext); =head2 pretty $json = $json->pretty([$enable]) This enables (or disables) all of the C<indent>, C<space_before> and C<space_after> (and in the future possibly more) flags in one call to generate the most readable (or most compact) form possible. =head2 indent $json = $json->indent([$enable]) $enabled = $json->get_indent If C<$enable> is true (or missing), then the C<encode> method will use a multiline format as output, putting every array member or object/hash key-value pair into its own line, indenting them properly. If C<$enable> is false, no newlines or indenting will be produced, and the resulting JSON text is guaranteed not to contain any C<newlines>. This setting has no effect when decoding JSON texts. The default indent space length is three. You can use C<indent_length> to change the length. =head2 space_before $json = $json->space_before([$enable]) $enabled = $json->get_space_before If C<$enable> is true (or missing), then the C<encode> method will add an extra optional space before the C<:> separating keys from values in JSON objects. If C<$enable> is false, then the C<encode> method will not add any extra space at those places. This setting has no effect when decoding JSON texts. You will also most likely combine this setting with C<space_after>. Example, space_before enabled, space_after and indent disabled: {"key" :"value"} =head2 space_after $json = $json->space_after([$enable]) $enabled = $json->get_space_after If C<$enable> is true (or missing), then the C<encode> method will add an extra optional space after the C<:> separating keys from values in JSON objects and extra whitespace after the C<,> separating key-value pairs and array members. If C<$enable> is false, then the C<encode> method will not add any extra space at those places. This setting has no effect when decoding JSON texts. Example, space_before and indent disabled, space_after enabled: {"key": "value"} =head2 relaxed $json = $json->relaxed([$enable]) $enabled = $json->get_relaxed If C<$enable> is true (or missing), then C<decode> will accept some extensions to normal JSON syntax (see below). C<encode> will not be affected in anyway. I<Be aware that this option makes you accept invalid JSON texts as if they were valid!>. I suggest only to use this option to parse application-specific files written by humans (configuration files, resource files etc.) If C<$enable> is false (the default), then C<decode> will only accept valid JSON texts. Currently accepted extensions are: =over 4 =item * list items can have an end-comma JSON I<separates> array elements and key-value pairs with commas. This can be annoying if you write JSON texts manually and want to be able to quickly append elements, so this extension accepts comma at the end of such items not just between them: [ 1, 2, <- this comma not normally allowed ] { "k1": "v1", "k2": "v2", <- this comma not normally allowed } =item * shell-style '#'-comments Whenever JSON allows whitespace, shell-style comments are additionally allowed. They are terminated by the first carriage-return or line-feed character, after which more white-space and comments are allowed. [ 1, # this comment not allowed in JSON # neither this one... ] =item * C-style multiple-line '/* */'-comments (JSON::PP only) Whenever JSON allows whitespace, C-style multiple-line comments are additionally allowed. Everything between C</*> and C<*/> is a comment, after which more white-space and comments are allowed. [ 1, /* this comment not allowed in JSON */ /* neither this one... */ ] =item * C++-style one-line '//'-comments (JSON::PP only) Whenever JSON allows whitespace, C++-style one-line comments are additionally allowed. They are terminated by the first carriage-return or line-feed character, after which more white-space and comments are allowed. [ 1, // this comment not allowed in JSON // neither this one... ] =item * literal ASCII TAB characters in strings Literal ASCII TAB characters are now allowed in strings (and treated as C<\t>). [ "Hello\tWorld", "Hello<TAB>World", # literal <TAB> would not normally be allowed ] =back =head2 canonical $json = $json->canonical([$enable]) $enabled = $json->get_canonical If C<$enable> is true (or missing), then the C<encode> method will output JSON objects by sorting their keys. This is adding a comparatively high overhead. If C<$enable> is false, then the C<encode> method will output key-value pairs in the order Perl stores them (which will likely change between runs of the same script, and can change even within the same run from 5.18 onwards). This option is useful if you want the same data structure to be encoded as the same JSON text (given the same overall settings). If it is disabled, the same hash might be encoded differently even if contains the same data, as key-value pairs have no inherent ordering in Perl. This setting has no effect when decoding JSON texts. This setting has currently no effect on tied hashes. =head2 allow_nonref $json = $json->allow_nonref([$enable]) $enabled = $json->get_allow_nonref Unlike other boolean options, this opotion is enabled by default beginning with version C<4.0>. If C<$enable> is true (or missing), then the C<encode> method can convert a non-reference into its corresponding string, number or null JSON value, which is an extension to RFC4627. Likewise, C<decode> will accept those JSON values instead of croaking. If C<$enable> is false, then the C<encode> method will croak if it isn't passed an arrayref or hashref, as JSON texts must either be an object or array. Likewise, C<decode> will croak if given something that is not a JSON object or array. Example, encode a Perl scalar as JSON value without enabled C<allow_nonref>, resulting in an error: JSON::PP->new->allow_nonref(0)->encode ("Hello, World!") => hash- or arrayref expected... =head2 allow_unknown $json = $json->allow_unknown([$enable]) $enabled = $json->get_allow_unknown If C<$enable> is true (or missing), then C<encode> will I<not> throw an exception when it encounters values it cannot represent in JSON (for example, filehandles) but instead will encode a JSON C<null> value. Note that blessed objects are not included here and are handled separately by c<allow_blessed>. If C<$enable> is false (the default), then C<encode> will throw an exception when it encounters anything it cannot encode as JSON. This option does not affect C<decode> in any way, and it is recommended to leave it off unless you know your communications partner. =head2 allow_blessed $json = $json->allow_blessed([$enable]) $enabled = $json->get_allow_blessed See L<OBJECT SERIALISATION> for details. If C<$enable> is true (or missing), then the C<encode> method will not barf when it encounters a blessed reference that it cannot convert otherwise. Instead, a JSON C<null> value is encoded instead of the object. If C<$enable> is false (the default), then C<encode> will throw an exception when it encounters a blessed object that it cannot convert otherwise. This setting has no effect on C<decode>. =head2 convert_blessed $json = $json->convert_blessed([$enable]) $enabled = $json->get_convert_blessed See L<OBJECT SERIALISATION> for details. If C<$enable> is true (or missing), then C<encode>, upon encountering a blessed object, will check for the availability of the C<TO_JSON> method on the object's class. If found, it will be called in scalar context and the resulting scalar will be encoded instead of the object. The C<TO_JSON> method may safely call die if it wants. If C<TO_JSON> returns other blessed objects, those will be handled in the same way. C<TO_JSON> must take care of not causing an endless recursion cycle (== crash) in this case. The name of C<TO_JSON> was chosen because other methods called by the Perl core (== not by the user of the object) are usually in upper case letters and to avoid collisions with any C<to_json> function or method. If C<$enable> is false (the default), then C<encode> will not consider this type of conversion. This setting has no effect on C<decode>. =head2 allow_tags $json = $json->allow_tags([$enable]) $enabled = $json->get_allow_tags See L<OBJECT SERIALISATION> for details. If C<$enable> is true (or missing), then C<encode>, upon encountering a blessed object, will check for the availability of the C<FREEZE> method on the object's class. If found, it will be used to serialise the object into a nonstandard tagged JSON value (that JSON decoders cannot decode). It also causes C<decode> to parse such tagged JSON values and deserialise them via a call to the C<THAW> method. If C<$enable> is false (the default), then C<encode> will not consider this type of conversion, and tagged JSON values will cause a parse error in C<decode>, as if tags were not part of the grammar. =head2 boolean_values $json->boolean_values([$false, $true]) ($false, $true) = $json->get_boolean_values By default, JSON booleans will be decoded as overloaded C<$JSON::PP::false> and C<$JSON::PP::true> objects. With this method you can specify your own boolean values for decoding - on decode, JSON C<false> will be decoded as a copy of C<$false>, and JSON C<true> will be decoded as C<$true> ("copy" here is the same thing as assigning a value to another variable, i.e. C<$copy = $false>). This is useful when you want to pass a decoded data structure directly to other serialisers like YAML, Data::MessagePack and so on. Note that this works only when you C<decode>. You can set incompatible boolean objects (like L<boolean>), but when you C<encode> a data structure with such boolean objects, you still need to enable C<convert_blessed> (and add a C<TO_JSON> method if necessary). Calling this method without any arguments will reset the booleans to their default values. C<get_boolean_values> will return both C<$false> and C<$true> values, or the empty list when they are set to the default. =head2 filter_json_object $json = $json->filter_json_object([$coderef]) When C<$coderef> is specified, it will be called from C<decode> each time it decodes a JSON object. The only argument is a reference to the newly-created hash. If the code references returns a single scalar (which need not be a reference), this value (or rather a copy of it) is inserted into the deserialised data structure. If it returns an empty list (NOTE: I<not> C<undef>, which is a valid scalar), the original deserialised hash will be inserted. This setting can slow down decoding considerably. When C<$coderef> is omitted or undefined, any existing callback will be removed and C<decode> will not change the deserialised hash in any way. Example, convert all JSON objects into the integer 5: my $js = JSON::PP->new->filter_json_object(sub { 5 }); # returns [5] $js->decode('[{}]'); # returns 5 $js->decode('{"a":1, "b":2}'); =head2 filter_json_single_key_object $json = $json->filter_json_single_key_object($key [=> $coderef]) Works remotely similar to C<filter_json_object>, but is only called for JSON objects having a single key named C<$key>. This C<$coderef> is called before the one specified via C<filter_json_object>, if any. It gets passed the single value in the JSON object. If it returns a single value, it will be inserted into the data structure. If it returns nothing (not even C<undef> but the empty list), the callback from C<filter_json_object> will be called next, as if no single-key callback were specified. If C<$coderef> is omitted or undefined, the corresponding callback will be disabled. There can only ever be one callback for a given key. As this callback gets called less often then the C<filter_json_object> one, decoding speed will not usually suffer as much. Therefore, single-key objects make excellent targets to serialise Perl objects into, especially as single-key JSON objects are as close to the type-tagged value concept as JSON gets (it's basically an ID/VALUE tuple). Of course, JSON does not support this in any way, so you need to make sure your data never looks like a serialised Perl hash. Typical names for the single object key are C<__class_whatever__>, or C<$__dollars_are_rarely_used__$> or C<}ugly_brace_placement>, or even things like C<__class_md5sum(classname)__>, to reduce the risk of clashing with real hashes. Example, decode JSON objects of the form C<< { "__widget__" => <id> } >> into the corresponding C<< $WIDGET{<id>} >> object: # return whatever is in $WIDGET{5}: JSON::PP ->new ->filter_json_single_key_object (__widget__ => sub { $WIDGET{ $_[0] } }) ->decode ('{"__widget__": 5') # this can be used with a TO_JSON method in some "widget" class # for serialisation to json: sub WidgetBase::TO_JSON { my ($self) = @_; unless ($self->{id}) { $self->{id} = ..get..some..id..; $WIDGET{$self->{id}} = $self; } { __widget__ => $self->{id} } } =head2 shrink $json = $json->shrink([$enable]) $enabled = $json->get_shrink If C<$enable> is true (or missing), the string returned by C<encode> will be shrunk (i.e. downgraded if possible). The actual definition of what shrink does might change in future versions, but it will always try to save space at the expense of time. If C<$enable> is false, then JSON::PP does nothing. =head2 max_depth $json = $json->max_depth([$maximum_nesting_depth]) $max_depth = $json->get_max_depth Sets the maximum nesting level (default C<512>) accepted while encoding or decoding. If a higher nesting level is detected in JSON text or a Perl data structure, then the encoder and decoder will stop and croak at that point. Nesting level is defined by number of hash- or arrayrefs that the encoder needs to traverse to reach a given point or the number of C<{> or C<[> characters without their matching closing parenthesis crossed to reach a given character in a string. Setting the maximum depth to one disallows any nesting, so that ensures that the object is only a single hash/object or array. If no argument is given, the highest possible setting will be used, which is rarely useful. See L<JSON::XS/SECURITY CONSIDERATIONS> for more info on why this is useful. =head2 max_size $json = $json->max_size([$maximum_string_size]) $max_size = $json->get_max_size Set the maximum length a JSON text may have (in bytes) where decoding is being attempted. The default is C<0>, meaning no limit. When C<decode> is called on a string that is longer then this many bytes, it will not attempt to decode the string but throw an exception. This setting has no effect on C<encode> (yet). If no argument is given, the limit check will be deactivated (same as when C<0> is specified). See L<JSON::XS/SECURITY CONSIDERATIONS> for more info on why this is useful. =head2 encode $json_text = $json->encode($perl_scalar) Converts the given Perl value or data structure to its JSON representation. Croaks on error. =head2 decode $perl_scalar = $json->decode($json_text) The opposite of C<encode>: expects a JSON text and tries to parse it, returning the resulting simple scalar or reference. Croaks on error. =head2 decode_prefix ($perl_scalar, $characters) = $json->decode_prefix($json_text) This works like the C<decode> method, but instead of raising an exception when there is trailing garbage after the first JSON object, it will silently stop parsing there and return the number of characters consumed so far. This is useful if your JSON texts are not delimited by an outer protocol and you need to know where the JSON text ends. JSON::PP->new->decode_prefix ("[1] the tail") => ([1], 3) =head1 FLAGS FOR JSON::PP ONLY The following flags and properties are for JSON::PP only. If you use any of these, you can't make your application run faster by replacing JSON::PP with JSON::XS. If you need these and also speed boost, you might want to try L<Cpanel::JSON::XS>, a fork of JSON::XS by Reini Urban, which supports some of these (with a different set of incompatibilities). Most of these historical flags are only kept for backward compatibility, and should not be used in a new application. =head2 allow_singlequote $json = $json->allow_singlequote([$enable]) $enabled = $json->get_allow_singlequote If C<$enable> is true (or missing), then C<decode> will accept invalid JSON texts that contain strings that begin and end with single quotation marks. C<encode> will not be affected in any way. I<Be aware that this option makes you accept invalid JSON texts as if they were valid!>. I suggest only to use this option to parse application-specific files written by humans (configuration files, resource files etc.) If C<$enable> is false (the default), then C<decode> will only accept valid JSON texts. $json->allow_singlequote->decode(qq|{"foo":'bar'}|); $json->allow_singlequote->decode(qq|{'foo':"bar"}|); $json->allow_singlequote->decode(qq|{'foo':'bar'}|); =head2 allow_barekey $json = $json->allow_barekey([$enable]) $enabled = $json->get_allow_barekey If C<$enable> is true (or missing), then C<decode> will accept invalid JSON texts that contain JSON objects whose names don't begin and end with quotation marks. C<encode> will not be affected in any way. I<Be aware that this option makes you accept invalid JSON texts as if they were valid!>. I suggest only to use this option to parse application-specific files written by humans (configuration files, resource files etc.) If C<$enable> is false (the default), then C<decode> will only accept valid JSON texts. $json->allow_barekey->decode(qq|{foo:"bar"}|); =head2 allow_bignum $json = $json->allow_bignum([$enable]) $enabled = $json->get_allow_bignum If C<$enable> is true (or missing), then C<decode> will convert big integers Perl cannot handle as integer into L<Math::BigInt> objects and convert floating numbers into L<Math::BigFloat> objects. C<encode> will convert C<Math::BigInt> and C<Math::BigFloat> objects into JSON numbers. $json->allow_nonref->allow_bignum; $bigfloat = $json->decode('2.000000000000000000000000001'); print $json->encode($bigfloat); # => 2.000000000000000000000000001 See also L<MAPPING>. =head2 loose $json = $json->loose([$enable]) $enabled = $json->get_loose If C<$enable> is true (or missing), then C<decode> will accept invalid JSON texts that contain unescaped [\x00-\x1f\x22\x5c] characters. C<encode> will not be affected in any way. I<Be aware that this option makes you accept invalid JSON texts as if they were valid!>. I suggest only to use this option to parse application-specific files written by humans (configuration files, resource files etc.) If C<$enable> is false (the default), then C<decode> will only accept valid JSON texts. $json->loose->decode(qq|["abc def"]|); =head2 escape_slash $json = $json->escape_slash([$enable]) $enabled = $json->get_escape_slash If C<$enable> is true (or missing), then C<encode> will explicitly escape I<slash> (solidus; C<U+002F>) characters to reduce the risk of XSS (cross site scripting) that may be caused by C<< </script> >> in a JSON text, with the cost of bloating the size of JSON texts. This option may be useful when you embed JSON in HTML, but embedding arbitrary JSON in HTML (by some HTML template toolkit or by string interpolation) is risky in general. You must escape necessary characters in correct order, depending on the context. C<decode> will not be affected in any way. =head2 indent_length $json = $json->indent_length($number_of_spaces) $length = $json->get_indent_length This option is only useful when you also enable C<indent> or C<pretty>. JSON::XS indents with three spaces when you C<encode> (if requested by C<indent> or C<pretty>), and the number cannot be changed. JSON::PP allows you to change/get the number of indent spaces with these mutator/accessor. The default number of spaces is three (the same as JSON::XS), and the acceptable range is from C<0> (no indentation; it'd be better to disable indentation by C<indent(0)>) to C<15>. =head2 sort_by $json = $json->sort_by($code_ref) $json = $json->sort_by($subroutine_name) If you just want to sort keys (names) in JSON objects when you C<encode>, enable C<canonical> option (see above) that allows you to sort object keys alphabetically. If you do need to sort non-alphabetically for whatever reasons, you can give a code reference (or a subroutine name) to C<sort_by>, then the argument will be passed to Perl's C<sort> built-in function. As the sorting is done in the JSON::PP scope, you usually need to prepend C<JSON::PP::> to the subroutine name, and the special variables C<$a> and C<$b> used in the subrontine used by C<sort> function. Example: my %ORDER = (id => 1, class => 2, name => 3); $json->sort_by(sub { ($ORDER{$JSON::PP::a} // 999) <=> ($ORDER{$JSON::PP::b} // 999) or $JSON::PP::a cmp $JSON::PP::b }); print $json->encode([ {name => 'CPAN', id => 1, href => 'http://cpan.org'} ]); # [{"id":1,"name":"CPAN","href":"http://cpan.org"}] Note that C<sort_by> affects all the plain hashes in the data structure. If you need finer control, C<tie> necessary hashes with a module that implements ordered hash (such as L<Hash::Ordered> and L<Tie::IxHash>). C<canonical> and C<sort_by> don't affect the key order in C<tie>d hashes. use Hash::Ordered; tie my %hash, 'Hash::Ordered', (name => 'CPAN', id => 1, href => 'http://cpan.org'); print $json->encode([\%hash]); # [{"name":"CPAN","id":1,"href":"http://cpan.org"}] # order is kept =head1 INCREMENTAL PARSING This section is also taken from JSON::XS. In some cases, there is the need for incremental parsing of JSON texts. While this module always has to keep both JSON text and resulting Perl data structure in memory at one time, it does allow you to parse a JSON stream incrementally. It does so by accumulating text until it has a full JSON object, which it then can decode. This process is similar to using C<decode_prefix> to see if a full JSON object is available, but is much more efficient (and can be implemented with a minimum of method calls). JSON::PP will only attempt to parse the JSON text once it is sure it has enough text to get a decisive result, using a very simple but truly incremental parser. This means that it sometimes won't stop as early as the full parser, for example, it doesn't detect mismatched parentheses. The only thing it guarantees is that it starts decoding as soon as a syntactically valid JSON text has been seen. This means you need to set resource limits (e.g. C<max_size>) to ensure the parser will stop parsing in the presence if syntax errors. The following methods implement this incremental parser. =head2 incr_parse $json->incr_parse( [$string] ) # void context $obj_or_undef = $json->incr_parse( [$string] ) # scalar context @obj_or_empty = $json->incr_parse( [$string] ) # list context This is the central parsing function. It can both append new text and extract objects from the stream accumulated so far (both of these functions are optional). If C<$string> is given, then this string is appended to the already existing JSON fragment stored in the C<$json> object. After that, if the function is called in void context, it will simply return without doing anything further. This can be used to add more text in as many chunks as you want. If the method is called in scalar context, then it will try to extract exactly I<one> JSON object. If that is successful, it will return this object, otherwise it will return C<undef>. If there is a parse error, this method will croak just as C<decode> would do (one can then use C<incr_skip> to skip the erroneous part). This is the most common way of using the method. And finally, in list context, it will try to extract as many objects from the stream as it can find and return them, or the empty list otherwise. For this to work, there must be no separators (other than whitespace) between the JSON objects or arrays, instead they must be concatenated back-to-back. If an error occurs, an exception will be raised as in the scalar context case. Note that in this case, any previously-parsed JSON texts will be lost. Example: Parse some JSON arrays/objects in a given string and return them. my @objs = JSON::PP->new->incr_parse ("[5][7][1,2]"); =head2 incr_text $lvalue_string = $json->incr_text This method returns the currently stored JSON fragment as an lvalue, that is, you can manipulate it. This I<only> works when a preceding call to C<incr_parse> in I<scalar context> successfully returned an object. Under all other circumstances you must not call this function (I mean it. although in simple tests it might actually work, it I<will> fail under real world conditions). As a special exception, you can also call this method before having parsed anything. That means you can only use this function to look at or manipulate text before or after complete JSON objects, not while the parser is in the middle of parsing a JSON object. This function is useful in two cases: a) finding the trailing text after a JSON object or b) parsing multiple JSON objects separated by non-JSON text (such as commas). =head2 incr_skip $json->incr_skip This will reset the state of the incremental parser and will remove the parsed text from the input buffer so far. This is useful after C<incr_parse> died, in which case the input buffer and incremental parser state is left unchanged, to skip the text parsed so far and to reset the parse state. The difference to C<incr_reset> is that only text until the parse error occurred is removed. =head2 incr_reset $json->incr_reset This completely resets the incremental parser, that is, after this call, it will be as if the parser had never parsed anything. This is useful if you want to repeatedly parse JSON objects and want to ignore any trailing data, which means you have to reset the parser after each successful decode. =head1 MAPPING Most of this section is also taken from JSON::XS. This section describes how JSON::PP maps Perl values to JSON values and vice versa. These mappings are designed to "do the right thing" in most circumstances automatically, preserving round-tripping characteristics (what you put in comes out as something equivalent). For the more enlightened: note that in the following descriptions, lowercase I<perl> refers to the Perl interpreter, while uppercase I<Perl> refers to the abstract Perl language itself. =head2 JSON -> PERL =over 4 =item object A JSON object becomes a reference to a hash in Perl. No ordering of object keys is preserved (JSON does not preserve object key ordering itself). =item array A JSON array becomes a reference to an array in Perl. =item string A JSON string becomes a string scalar in Perl - Unicode codepoints in JSON are represented by the same codepoints in the Perl string, so no manual decoding is necessary. =item number A JSON number becomes either an integer, numeric (floating point) or string scalar in perl, depending on its range and any fractional parts. On the Perl level, there is no difference between those as Perl handles all the conversion details, but an integer may take slightly less memory and might represent more values exactly than floating point numbers. If the number consists of digits only, JSON::PP will try to represent it as an integer value. If that fails, it will try to represent it as a numeric (floating point) value if that is possible without loss of precision. Otherwise it will preserve the number as a string value (in which case you lose roundtripping ability, as the JSON number will be re-encoded to a JSON string). Numbers containing a fractional or exponential part will always be represented as numeric (floating point) values, possibly at a loss of precision (in which case you might lose perfect roundtripping ability, but the JSON number will still be re-encoded as a JSON number). Note that precision is not accuracy - binary floating point values cannot represent most decimal fractions exactly, and when converting from and to floating point, JSON::PP only guarantees precision up to but not including the least significant bit. When C<allow_bignum> is enabled, big integer values and any numeric values will be converted into L<Math::BigInt> and L<Math::BigFloat> objects respectively, without becoming string scalars or losing precision. =item true, false These JSON atoms become C<JSON::PP::true> and C<JSON::PP::false>, respectively. They are overloaded to act almost exactly like the numbers C<1> and C<0>. You can check whether a scalar is a JSON boolean by using the C<JSON::PP::is_bool> function. =item null A JSON null atom becomes C<undef> in Perl. =item shell-style comments (C<< # I<text> >>) As a nonstandard extension to the JSON syntax that is enabled by the C<relaxed> setting, shell-style comments are allowed. They can start anywhere outside strings and go till the end of the line. =item tagged values (C<< (I<tag>)I<value> >>). Another nonstandard extension to the JSON syntax, enabled with the C<allow_tags> setting, are tagged values. In this implementation, the I<tag> must be a perl package/class name encoded as a JSON string, and the I<value> must be a JSON array encoding optional constructor arguments. See L<OBJECT SERIALISATION>, below, for details. =back =head2 PERL -> JSON The mapping from Perl to JSON is slightly more difficult, as Perl is a truly typeless language, so we can only guess which JSON type is meant by a Perl value. =over 4 =item hash references Perl hash references become JSON objects. As there is no inherent ordering in hash keys (or JSON objects), they will usually be encoded in a pseudo-random order. JSON::PP can optionally sort the hash keys (determined by the I<canonical> flag and/or I<sort_by> property), so the same data structure will serialise to the same JSON text (given same settings and version of JSON::PP), but this incurs a runtime overhead and is only rarely useful, e.g. when you want to compare some JSON text against another for equality. =item array references Perl array references become JSON arrays. =item other references Other unblessed references are generally not allowed and will cause an exception to be thrown, except for references to the integers C<0> and C<1>, which get turned into C<false> and C<true> atoms in JSON. You can also use C<JSON::PP::false> and C<JSON::PP::true> to improve readability. to_json [\0, JSON::PP::true] # yields [false,true] =item JSON::PP::true, JSON::PP::false These special values become JSON true and JSON false values, respectively. You can also use C<\1> and C<\0> directly if you want. =item JSON::PP::null This special value becomes JSON null. =item blessed objects Blessed objects are not directly representable in JSON, but C<JSON::PP> allows various ways of handling objects. See L<OBJECT SERIALISATION>, below, for details. =item simple scalars Simple Perl scalars (any scalar that is not a reference) are the most difficult objects to encode: JSON::PP will encode undefined scalars as JSON C<null> values, scalars that have last been used in a string context before encoding as JSON strings, and anything else as number value: # dump as number encode_json [2] # yields [2] encode_json [-3.0e17] # yields [-3e+17] my $value = 5; encode_json [$value] # yields [5] # used as string, so dump as string print $value; encode_json [$value] # yields ["5"] # undef becomes null encode_json [undef] # yields [null] You can force the type to be a JSON string by stringifying it: my $x = 3.1; # some variable containing a number "$x"; # stringified $x .= ""; # another, more awkward way to stringify print $x; # perl does it for you, too, quite often # (but for older perls) You can force the type to be a JSON number by numifying it: my $x = "3"; # some variable containing a string $x += 0; # numify it, ensuring it will be dumped as a number $x *= 1; # same thing, the choice is yours. You can not currently force the type in other, less obscure, ways. Since version 2.91_01, JSON::PP uses a different number detection logic that converts a scalar that is possible to turn into a number safely. The new logic is slightly faster, and tends to help people who use older perl or who want to encode complicated data structure. However, this may results in a different JSON text from the one JSON::XS encodes (and thus may break tests that compare entire JSON texts). If you do need the previous behavior for compatibility or for finer control, set PERL_JSON_PP_USE_B environmental variable to true before you C<use> JSON::PP (or JSON.pm). Note that numerical precision has the same meaning as under Perl (so binary to decimal conversion follows the same rules as in Perl, which can differ to other languages). Also, your perl interpreter might expose extensions to the floating point numbers of your platform, such as infinities or NaN's - these cannot be represented in JSON, and it is an error to pass those in. JSON::PP (and JSON::XS) trusts what you pass to C<encode> method (or C<encode_json> function) is a clean, validated data structure with values that can be represented as valid JSON values only, because it's not from an external data source (as opposed to JSON texts you pass to C<decode> or C<decode_json>, which JSON::PP considers tainted and doesn't trust). As JSON::PP doesn't know exactly what you and consumers of your JSON texts want the unexpected values to be (you may want to convert them into null, or to stringify them with or without normalisation (string representation of infinities/NaN may vary depending on platforms), or to croak without conversion), you're advised to do what you and your consumers need before you encode, and also not to numify values that may start with values that look like a number (including infinities/NaN), without validating. =back =head2 OBJECT SERIALISATION As JSON cannot directly represent Perl objects, you have to choose between a pure JSON representation (without the ability to deserialise the object automatically again), and a nonstandard extension to the JSON syntax, tagged values. =head3 SERIALISATION What happens when C<JSON::PP> encounters a Perl object depends on the C<allow_blessed>, C<convert_blessed>, C<allow_tags> and C<allow_bignum> settings, which are used in this order: =over 4 =item 1. C<allow_tags> is enabled and the object has a C<FREEZE> method. In this case, C<JSON::PP> creates a tagged JSON value, using a nonstandard extension to the JSON syntax. This works by invoking the C<FREEZE> method on the object, with the first argument being the object to serialise, and the second argument being the constant string C<JSON> to distinguish it from other serialisers. The C<FREEZE> method can return any number of values (i.e. zero or more). These values and the paclkage/classname of the object will then be encoded as a tagged JSON value in the following format: ("classname")[FREEZE return values...] e.g.: ("URI")["http://www.google.com/"] ("MyDate")[2013,10,29] ("ImageData::JPEG")["Z3...VlCg=="] For example, the hypothetical C<My::Object> C<FREEZE> method might use the objects C<type> and C<id> members to encode the object: sub My::Object::FREEZE { my ($self, $serialiser) = @_; ($self->{type}, $self->{id}) } =item 2. C<convert_blessed> is enabled and the object has a C<TO_JSON> method. In this case, the C<TO_JSON> method of the object is invoked in scalar context. It must return a single scalar that can be directly encoded into JSON. This scalar replaces the object in the JSON text. For example, the following C<TO_JSON> method will convert all L<URI> objects to JSON strings when serialised. The fact that these values originally were L<URI> objects is lost. sub URI::TO_JSON { my ($uri) = @_; $uri->as_string } =item 3. C<allow_bignum> is enabled and the object is a C<Math::BigInt> or C<Math::BigFloat>. The object will be serialised as a JSON number value. =item 4. C<allow_blessed> is enabled. The object will be serialised as a JSON null value. =item 5. none of the above If none of the settings are enabled or the respective methods are missing, C<JSON::PP> throws an exception. =back =head3 DESERIALISATION For deserialisation there are only two cases to consider: either nonstandard tagging was used, in which case C<allow_tags> decides, or objects cannot be automatically be deserialised, in which case you can use postprocessing or the C<filter_json_object> or C<filter_json_single_key_object> callbacks to get some real objects our of your JSON. This section only considers the tagged value case: a tagged JSON object is encountered during decoding and C<allow_tags> is disabled, a parse error will result (as if tagged values were not part of the grammar). If C<allow_tags> is enabled, C<JSON::PP> will look up the C<THAW> method of the package/classname used during serialisation (it will not attempt to load the package as a Perl module). If there is no such method, the decoding will fail with an error. Otherwise, the C<THAW> method is invoked with the classname as first argument, the constant string C<JSON> as second argument, and all the values from the JSON array (the values originally returned by the C<FREEZE> method) as remaining arguments. The method must then return the object. While technically you can return any Perl scalar, you might have to enable the C<allow_nonref> setting to make that work in all cases, so better return an actual blessed reference. As an example, let's implement a C<THAW> function that regenerates the C<My::Object> from the C<FREEZE> example earlier: sub My::Object::THAW { my ($class, $serialiser, $type, $id) = @_; $class->new (type => $type, id => $id) } =head1 ENCODING/CODESET FLAG NOTES This section is taken from JSON::XS. The interested reader might have seen a number of flags that signify encodings or codesets - C<utf8>, C<latin1> and C<ascii>. There seems to be some confusion on what these do, so here is a short comparison: C<utf8> controls whether the JSON text created by C<encode> (and expected by C<decode>) is UTF-8 encoded or not, while C<latin1> and C<ascii> only control whether C<encode> escapes character values outside their respective codeset range. Neither of these flags conflict with each other, although some combinations make less sense than others. Care has been taken to make all flags symmetrical with respect to C<encode> and C<decode>, that is, texts encoded with any combination of these flag values will be correctly decoded when the same flags are used - in general, if you use different flag settings while encoding vs. when decoding you likely have a bug somewhere. Below comes a verbose discussion of these flags. Note that a "codeset" is simply an abstract set of character-codepoint pairs, while an encoding takes those codepoint numbers and I<encodes> them, in our case into octets. Unicode is (among other things) a codeset, UTF-8 is an encoding, and ISO-8859-1 (= latin 1) and ASCII are both codesets I<and> encodings at the same time, which can be confusing. =over 4 =item C<utf8> flag disabled When C<utf8> is disabled (the default), then C<encode>/C<decode> generate and expect Unicode strings, that is, characters with high ordinal Unicode values (> 255) will be encoded as such characters, and likewise such characters are decoded as-is, no changes to them will be done, except "(re-)interpreting" them as Unicode codepoints or Unicode characters, respectively (to Perl, these are the same thing in strings unless you do funny/weird/dumb stuff). This is useful when you want to do the encoding yourself (e.g. when you want to have UTF-16 encoded JSON texts) or when some other layer does the encoding for you (for example, when printing to a terminal using a filehandle that transparently encodes to UTF-8 you certainly do NOT want to UTF-8 encode your data first and have Perl encode it another time). =item C<utf8> flag enabled If the C<utf8>-flag is enabled, C<encode>/C<decode> will encode all characters using the corresponding UTF-8 multi-byte sequence, and will expect your input strings to be encoded as UTF-8, that is, no "character" of the input string must have any value > 255, as UTF-8 does not allow that. The C<utf8> flag therefore switches between two modes: disabled means you will get a Unicode string in Perl, enabled means you get an UTF-8 encoded octet/binary string in Perl. =item C<latin1> or C<ascii> flags enabled With C<latin1> (or C<ascii>) enabled, C<encode> will escape characters with ordinal values > 255 (> 127 with C<ascii>) and encode the remaining characters as specified by the C<utf8> flag. If C<utf8> is disabled, then the result is also correctly encoded in those character sets (as both are proper subsets of Unicode, meaning that a Unicode string with all character values < 256 is the same thing as a ISO-8859-1 string, and a Unicode string with all character values < 128 is the same thing as an ASCII string in Perl). If C<utf8> is enabled, you still get a correct UTF-8-encoded string, regardless of these flags, just some more characters will be escaped using C<\uXXXX> then before. Note that ISO-8859-1-I<encoded> strings are not compatible with UTF-8 encoding, while ASCII-encoded strings are. That is because the ISO-8859-1 encoding is NOT a subset of UTF-8 (despite the ISO-8859-1 I<codeset> being a subset of Unicode), while ASCII is. Surprisingly, C<decode> will ignore these flags and so treat all input values as governed by the C<utf8> flag. If it is disabled, this allows you to decode ISO-8859-1- and ASCII-encoded strings, as both strict subsets of Unicode. If it is enabled, you can correctly decode UTF-8 encoded strings. So neither C<latin1> nor C<ascii> are incompatible with the C<utf8> flag - they only govern when the JSON output engine escapes a character or not. The main use for C<latin1> is to relatively efficiently store binary data as JSON, at the expense of breaking compatibility with most JSON decoders. The main use for C<ascii> is to force the output to not contain characters with values > 127, which means you can interpret the resulting string as UTF-8, ISO-8859-1, ASCII, KOI8-R or most about any character set and 8-bit-encoding, and still get the same data structure back. This is useful when your channel for JSON transfer is not 8-bit clean or the encoding might be mangled in between (e.g. in mail), and works because ASCII is a proper subset of most 8-bit and multibyte encodings in use in the world. =back =head1 BUGS Please report bugs on a specific behavior of this module to RT or GitHub issues (preferred): L<https://github.com/makamaka/JSON-PP/issues> L<https://rt.cpan.org/Public/Dist/Display.html?Queue=JSON-PP> As for new features and requests to change common behaviors, please ask the author of JSON::XS (Marc Lehmann, E<lt>schmorp[at]schmorp.deE<gt>) first, by email (important!), to keep compatibility among JSON.pm backends. Generally speaking, if you need something special for you, you are advised to create a new module, maybe based on L<JSON::Tiny>, which is smaller and written in a much cleaner way than this module. =head1 SEE ALSO The F<json_pp> command line utility for quick experiments. L<JSON::XS>, L<Cpanel::JSON::XS>, and L<JSON::Tiny> for faster alternatives. L<JSON> and L<JSON::MaybeXS> for easy migration. L<JSON::PP::Compat5005> and L<JSON::PP::Compat5006> for older perl users. RFC4627 (L<http://www.ietf.org/rfc/rfc4627.txt>) RFC7159 (L<http://www.ietf.org/rfc/rfc7159.txt>) RFC8259 (L<http://www.ietf.org/rfc/rfc8259.txt>) =head1 AUTHOR Makamaka Hannyaharamitu, E<lt>makamaka[at]cpan.orgE<gt> =head1 CURRENT MAINTAINER Kenichi Ishigaki, E<lt>ishigaki[at]cpan.orgE<gt> =head1 COPYRIGHT AND LICENSE Copyright 2007-2016 by Makamaka Hannyaharamitu Most of the documentation is taken from JSON::XS by Marc Lehmann This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut PK ! z�� � 5.34.0/vars.pmnu �[��� package vars; use 5.006; our $VERSION = '1.05'; use warnings::register; use strict qw(vars subs); sub import { my $callpack = caller; my (undef, @imports) = @_; my ($sym, $ch); foreach (@imports) { if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) { if ($sym =~ /\W/) { # time for a more-detailed check-up if ($sym =~ /^\w+[[{].*[]}]$/) { require Carp; Carp::croak("Can't declare individual elements of hash or array"); } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) { warnings::warn("No need to declare built-in vars"); } elsif (($^H & strict::bits('vars'))) { require Carp; Carp::croak("'$_' is not a valid variable name under strict vars"); } } $sym = "${callpack}::$sym" unless $sym =~ /::/; *$sym = ( $ch eq "\$" ? \$$sym : $ch eq "\@" ? \@$sym : $ch eq "\%" ? \%$sym : $ch eq "\*" ? \*$sym : $ch eq "\&" ? \&$sym : do { require Carp; Carp::croak("'$_' is not a valid variable name"); }); } else { require Carp; Carp::croak("'$_' is not a valid variable name"); } } }; 1; __END__ =head1 NAME vars - Perl pragma to predeclare global variable names =head1 SYNOPSIS use vars qw($frob @mung %seen); =head1 DESCRIPTION NOTE: For use with variables in the current package for a single scope, the functionality provided by this pragma has been superseded by C<our> declarations, available in Perl v5.6.0 or later, and use of this pragma is discouraged. See L<perlfunc/our>. This pragma will predeclare all the variables whose names are in the list, allowing you to use them under C<use strict>, and disabling any typo warnings for them. Unlike pragmas that affect the C<$^H> hints variable, the C<use vars> and C<use subs> declarations are not lexically scoped to the block they appear in: they affect the entire package in which they appear. It is not possible to rescind these declarations with C<no vars> or C<no subs>. Packages such as the B<AutoLoader> and B<SelfLoader> that delay loading of subroutines within packages can create problems with package lexicals defined using C<my()>. While the B<vars> pragma cannot duplicate the effect of package lexicals (total transparency outside of the package), it can act as an acceptable substitute by pre-declaring global symbols, ensuring their availability to the later-loaded routines. See L<perlmodlib/Pragmatic Modules>. =cut PK ! Kƹ��# �# 5.34.0/Module/Load.pmnu �[��� package Module::Load; use strict; use warnings; use File::Spec (); our $VERSION = '0.36'; 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 ) ); } } 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 SEE ALSO L<Module::Runtime> provides functions for loading modules, checking the validity of a module name, converting a module name to partial C<.pm> path, and related utility functions. L<"require" in perlfunc|https://metacpan.org/pod/perlfunc#require> and L<"use" in perlfunc|https://metacpan.org/pod/perlfunc#use>. L<Mojo::Loader> is a "class loader and plugin framework", and is included in the L<Mojolicious|https://metacpan.org/release/Mojolicious> distribution. L<Module::Loader> is a module for finding and loading modules in a given namespace, inspired by C<Mojo::Loader>. =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.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 PK ! �<T <T 5.34.0/Module/CoreList.pmnu �[��� package Module::CoreList; use strict; our ( %released, %version, %families, %upstream, %bug_tracker, %deprecated, %delta ); use version; our $VERSION = '5.20210520'; 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', 5.029006 => '2018-12-18', 5.029007 => '2019-01-20', 5.029008 => '2019-02-20', 5.029009 => '2019-03-20', 5.028002 => '2019-04-19', 5.029010 => '2019-04-20', 5.030000 => '2019-05-22', 5.031000 => '2019-05-24', 5.031001 => '2019-06-20', 5.031002 => '2019-07-20', 5.031003 => '2019-08-20', 5.031004 => '2019-09-20', 5.031005 => '2019-10-20', 5.030001 => '2019-11-10', 5.031006 => '2019-11-20', 5.031007 => '2019-12-20', 5.031008 => '2020-01-20', 5.031009 => '2020-02-20', 5.030002 => '2020-03-14', 5.031010 => '2020-03-20', 5.031011 => '2020-04-28', 5.028003 => '2020-06-01', 5.030003 => '2020-06-01', 5.032000 => '2020-06-20', 5.033000 => '2020-07-17', 5.033001 => '2020-08-20', 5.033002 => '2020-09-20', 5.033003 => '2020-10-20', 5.033004 => '2020-11-20', 5.033005 => '2020-12-20', 5.033006 => '2021-01-20', 5.032001 => '2021-01-23', 5.033007 => '2021-02-20', 5.033008 => '2021-03-20', 5.033009 => '2021-04-20', 5.034000 => '2021-05-20', ); 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', '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 => { } }, 5.029006 => { delta_from => 5.029005, changed => { 'B::Op_private' => '5.029006', 'Config' => '5.029006', 'Config::Perl::V' => '0.32', 'ExtUtils::ParseXS' => '3.40', 'ExtUtils::ParseXS::Constants'=> '3.40', 'ExtUtils::ParseXS::CountLines'=> '3.40', 'ExtUtils::ParseXS::Eval'=> '3.40', 'ExtUtils::ParseXS::Utilities'=> '3.40', 'File::Find' => '1.35', 'Module::CoreList' => '5.20181218', 'Module::CoreList::Utils'=> '5.20181218', 'POSIX' => '1.86', 'Storable' => '3.14', 'Test2' => '1.302141', 'Test2::API' => '1.302141', 'Test2::API::Breakage' => '1.302141', 'Test2::API::Context' => '1.302141', 'Test2::API::Instance' => '1.302141', 'Test2::API::Stack' => '1.302141', 'Test2::Event' => '1.302141', 'Test2::Event::Bail' => '1.302141', 'Test2::Event::Diag' => '1.302141', 'Test2::Event::Encoding'=> '1.302141', 'Test2::Event::Exception'=> '1.302141', 'Test2::Event::Fail' => '1.302141', 'Test2::Event::Generic' => '1.302141', 'Test2::Event::Note' => '1.302141', 'Test2::Event::Ok' => '1.302141', 'Test2::Event::Pass' => '1.302141', 'Test2::Event::Plan' => '1.302141', 'Test2::Event::Skip' => '1.302141', 'Test2::Event::Subtest' => '1.302141', 'Test2::Event::TAP::Version'=> '1.302141', 'Test2::Event::V2' => '1.302141', 'Test2::Event::Waiting' => '1.302141', 'Test2::EventFacet' => '1.302141', 'Test2::EventFacet::About'=> '1.302141', 'Test2::EventFacet::Amnesty'=> '1.302141', 'Test2::EventFacet::Assert'=> '1.302141', 'Test2::EventFacet::Control'=> '1.302141', 'Test2::EventFacet::Error'=> '1.302141', 'Test2::EventFacet::Hub'=> '1.302141', 'Test2::EventFacet::Info'=> '1.302141', 'Test2::EventFacet::Meta'=> '1.302141', 'Test2::EventFacet::Parent'=> '1.302141', 'Test2::EventFacet::Plan'=> '1.302141', 'Test2::EventFacet::Render'=> '1.302141', 'Test2::EventFacet::Trace'=> '1.302141', 'Test2::Formatter' => '1.302141', 'Test2::Formatter::TAP' => '1.302141', 'Test2::Hub' => '1.302141', 'Test2::Hub::Interceptor'=> '1.302141', 'Test2::Hub::Interceptor::Terminator'=> '1.302141', 'Test2::Hub::Subtest' => '1.302141', 'Test2::IPC' => '1.302141', 'Test2::IPC::Driver' => '1.302141', 'Test2::IPC::Driver::Files'=> '1.302141', 'Test2::Tools::Tiny' => '1.302141', 'Test2::Util' => '1.302141', 'Test2::Util::ExternalMeta'=> '1.302141', 'Test2::Util::Facets2Legacy'=> '1.302141', 'Test2::Util::HashBase' => '1.302141', 'Test2::Util::Trace' => '1.302141', 'Test::Builder' => '1.302141', 'Test::Builder::Formatter'=> '1.302141', 'Test::Builder::Module' => '1.302141', 'Test::Builder::Tester' => '1.302141', 'Test::Builder::Tester::Color'=> '1.302141', 'Test::Builder::TodoDiag'=> '1.302141', 'Test::More' => '1.302141', 'Test::Simple' => '1.302141', 'Test::Tester' => '1.302141', 'Test::Tester::Capture' => '1.302141', 'Test::Tester::CaptureRunner'=> '1.302141', 'Test::Tester::Delegate'=> '1.302141', 'Test::use::ok' => '1.302141', 'ok' => '1.302141', 'threads::shared' => '1.59', }, removed => { 'Storable::Limit' => 1, } }, 5.029007 => { delta_from => 5.029006, changed => { 'App::Cpan' => '1.672', 'B::Op_private' => '5.029007', 'CPAN' => '2.22', 'CPAN::Distribution' => '2.22', 'CPAN::Plugin::Specfile'=> '0.02', 'Compress::Raw::Bzip2' => '2.084', 'Compress::Raw::Zlib' => '2.084', 'Compress::Zlib' => '2.084', 'Config' => '5.029007', 'Cwd' => '3.77', 'DB_File' => '1.843', 'File::Find' => '1.36', 'File::Spec' => '3.77', 'File::Spec::AmigaOS' => '3.77', 'File::Spec::Cygwin' => '3.77', 'File::Spec::Epoc' => '3.77', 'File::Spec::Functions' => '3.77', 'File::Spec::Mac' => '3.77', 'File::Spec::OS2' => '3.77', 'File::Spec::Unix' => '3.77', 'File::Spec::VMS' => '3.77', 'File::Spec::Win32' => '3.77', 'File::Temp' => '0.2309', 'IO::Compress::Adapter::Bzip2'=> '2.084', 'IO::Compress::Adapter::Deflate'=> '2.084', 'IO::Compress::Adapter::Identity'=> '2.084', 'IO::Compress::Base' => '2.084', 'IO::Compress::Base::Common'=> '2.084', 'IO::Compress::Bzip2' => '2.084', 'IO::Compress::Deflate' => '2.084', 'IO::Compress::Gzip' => '2.084', 'IO::Compress::Gzip::Constants'=> '2.084', 'IO::Compress::RawDeflate'=> '2.084', 'IO::Compress::Zip' => '2.084', 'IO::Compress::Zip::Constants'=> '2.084', 'IO::Compress::Zlib::Constants'=> '2.084', 'IO::Compress::Zlib::Extra'=> '2.084', 'IO::Uncompress::Adapter::Bunzip2'=> '2.084', 'IO::Uncompress::Adapter::Identity'=> '2.084', 'IO::Uncompress::Adapter::Inflate'=> '2.084', 'IO::Uncompress::AnyInflate'=> '2.084', 'IO::Uncompress::AnyUncompress'=> '2.084', 'IO::Uncompress::Base' => '2.084', 'IO::Uncompress::Bunzip2'=> '2.084', 'IO::Uncompress::Gunzip'=> '2.084', 'IO::Uncompress::Inflate'=> '2.084', 'IO::Uncompress::RawInflate'=> '2.084', 'IO::Uncompress::Unzip' => '2.084', 'Math::BigFloat' => '1.999816', 'Math::BigInt' => '1.999816', 'Math::BigInt::Calc' => '1.999816', 'Math::BigInt::FastCalc'=> '0.5008', 'Math::BigInt::Lib' => '1.999816', 'Module::CoreList' => '5.20190120', 'Module::CoreList::Utils'=> '5.20190120', 'Test2' => '1.302160', 'Test2::API' => '1.302160', 'Test2::API::Breakage' => '1.302160', 'Test2::API::Context' => '1.302160', 'Test2::API::Instance' => '1.302160', 'Test2::API::Stack' => '1.302160', 'Test2::Event' => '1.302160', 'Test2::Event::Bail' => '1.302160', 'Test2::Event::Diag' => '1.302160', 'Test2::Event::Encoding'=> '1.302160', 'Test2::Event::Exception'=> '1.302160', 'Test2::Event::Fail' => '1.302160', 'Test2::Event::Generic' => '1.302160', 'Test2::Event::Note' => '1.302160', 'Test2::Event::Ok' => '1.302160', 'Test2::Event::Pass' => '1.302160', 'Test2::Event::Plan' => '1.302160', 'Test2::Event::Skip' => '1.302160', 'Test2::Event::Subtest' => '1.302160', 'Test2::Event::TAP::Version'=> '1.302160', 'Test2::Event::V2' => '1.302160', 'Test2::Event::Waiting' => '1.302160', 'Test2::EventFacet' => '1.302160', 'Test2::EventFacet::About'=> '1.302160', 'Test2::EventFacet::Amnesty'=> '1.302160', 'Test2::EventFacet::Assert'=> '1.302160', 'Test2::EventFacet::Control'=> '1.302160', 'Test2::EventFacet::Error'=> '1.302160', 'Test2::EventFacet::Hub'=> '1.302160', 'Test2::EventFacet::Info'=> '1.302160', 'Test2::EventFacet::Info::Table'=> undef, 'Test2::EventFacet::Meta'=> '1.302160', 'Test2::EventFacet::Parent'=> '1.302160', 'Test2::EventFacet::Plan'=> '1.302160', 'Test2::EventFacet::Render'=> '1.302160', 'Test2::EventFacet::Trace'=> '1.302160', 'Test2::Formatter' => '1.302160', 'Test2::Formatter::TAP' => '1.302160', 'Test2::Hub' => '1.302160', 'Test2::Hub::Interceptor'=> '1.302160', 'Test2::Hub::Interceptor::Terminator'=> '1.302160', 'Test2::Hub::Subtest' => '1.302160', 'Test2::IPC' => '1.302160', 'Test2::IPC::Driver' => '1.302160', 'Test2::IPC::Driver::Files'=> '1.302160', 'Test2::Tools::Tiny' => '1.302160', 'Test2::Util' => '1.302160', 'Test2::Util::ExternalMeta'=> '1.302160', 'Test2::Util::Facets2Legacy'=> '1.302160', 'Test2::Util::HashBase' => '1.302160', 'Test2::Util::Trace' => '1.302160', 'Test::Builder' => '1.302160', 'Test::Builder::Formatter'=> '1.302160', 'Test::Builder::Module' => '1.302160', 'Test::Builder::Tester' => '1.302160', 'Test::Builder::Tester::Color'=> '1.302160', 'Test::Builder::TodoDiag'=> '1.302160', 'Test::More' => '1.302160', 'Test::Simple' => '1.302160', 'Test::Tester' => '1.302160', 'Test::Tester::Capture' => '1.302160', 'Test::Tester::CaptureRunner'=> '1.302160', 'Test::Tester::Delegate'=> '1.302160', 'Test::use::ok' => '1.302160', 'Unicode::Collate' => '1.27', 'Unicode::Collate::CJK::Big5'=> '1.27', 'Unicode::Collate::CJK::GB2312'=> '1.27', 'Unicode::Collate::CJK::JISX0208'=> '1.27', 'Unicode::Collate::CJK::Korean'=> '1.27', 'Unicode::Collate::CJK::Pinyin'=> '1.27', 'Unicode::Collate::CJK::Stroke'=> '1.27', 'Unicode::Collate::CJK::Zhuyin'=> '1.27', 'Unicode::Collate::Locale'=> '1.27', 'lib' => '0.65', 'ok' => '1.302160', }, removed => { 'Math::BigInt::CalcEmu' => 1, } }, 5.029008 => { delta_from => 5.029007, changed => { 'B' => '1.76', 'B::Op_private' => '5.029008', 'Config' => '5.029008', 'Devel::PPPort' => '3.44', 'Encode' => '3.00', 'Encode::Unicode' => '2.18', 'ExtUtils::Miniperl' => '1.09', 'IO' => '1.40', 'IO::Dir' => '1.40', 'IO::File' => '1.40', 'IO::Handle' => '1.40', 'IO::Pipe' => '1.40', 'IO::Poll' => '1.40', 'IO::Seekable' => '1.40', 'IO::Select' => '1.40', 'IO::Socket' => '1.40', 'IO::Socket::INET' => '1.40', 'IO::Socket::UNIX' => '1.40', 'JSON::PP' => '4.00', 'JSON::PP::Boolean' => '4.00', 'Module::CoreList' => '5.20190220', 'Module::CoreList::Utils'=> '5.20190220', 'Module::Load' => '0.34', 'Net::Ping' => '2.71', 'POSIX' => '1.87', 'Test2' => '1.302162', 'Test2::API' => '1.302162', 'Test2::API::Breakage' => '1.302162', 'Test2::API::Context' => '1.302162', 'Test2::API::Instance' => '1.302162', 'Test2::API::Stack' => '1.302162', 'Test2::Event' => '1.302162', 'Test2::Event::Bail' => '1.302162', 'Test2::Event::Diag' => '1.302162', 'Test2::Event::Encoding'=> '1.302162', 'Test2::Event::Exception'=> '1.302162', 'Test2::Event::Fail' => '1.302162', 'Test2::Event::Generic' => '1.302162', 'Test2::Event::Note' => '1.302162', 'Test2::Event::Ok' => '1.302162', 'Test2::Event::Pass' => '1.302162', 'Test2::Event::Plan' => '1.302162', 'Test2::Event::Skip' => '1.302162', 'Test2::Event::Subtest' => '1.302162', 'Test2::Event::TAP::Version'=> '1.302162', 'Test2::Event::V2' => '1.302162', 'Test2::Event::Waiting' => '1.302162', 'Test2::EventFacet' => '1.302162', 'Test2::EventFacet::About'=> '1.302162', 'Test2::EventFacet::Amnesty'=> '1.302162', 'Test2::EventFacet::Assert'=> '1.302162', 'Test2::EventFacet::Control'=> '1.302162', 'Test2::EventFacet::Error'=> '1.302162', 'Test2::EventFacet::Hub'=> '1.302162', 'Test2::EventFacet::Info'=> '1.302162', 'Test2::EventFacet::Meta'=> '1.302162', 'Test2::EventFacet::Parent'=> '1.302162', 'Test2::EventFacet::Plan'=> '1.302162', 'Test2::EventFacet::Render'=> '1.302162', 'Test2::EventFacet::Trace'=> '1.302162', 'Test2::Formatter' => '1.302162', 'Test2::Formatter::TAP' => '1.302162', 'Test2::Hub' => '1.302162', 'Test2::Hub::Interceptor'=> '1.302162', 'Test2::Hub::Interceptor::Terminator'=> '1.302162', 'Test2::Hub::Subtest' => '1.302162', 'Test2::IPC' => '1.302162', 'Test2::IPC::Driver' => '1.302162', 'Test2::IPC::Driver::Files'=> '1.302162', 'Test2::Tools::Tiny' => '1.302162', 'Test2::Util' => '1.302162', 'Test2::Util::ExternalMeta'=> '1.302162', 'Test2::Util::Facets2Legacy'=> '1.302162', 'Test2::Util::HashBase' => '1.302162', 'Test2::Util::Trace' => '1.302162', 'Test::Builder' => '1.302162', 'Test::Builder::Formatter'=> '1.302162', 'Test::Builder::Module' => '1.302162', 'Test::Builder::Tester' => '1.302162', 'Test::Builder::Tester::Color'=> '1.302162', 'Test::Builder::TodoDiag'=> '1.302162', 'Test::More' => '1.302162', 'Test::Simple' => '1.302162', 'Test::Tester' => '1.302162', 'Test::Tester::Capture' => '1.302162', 'Test::Tester::CaptureRunner'=> '1.302162', 'Test::Tester::Delegate'=> '1.302162', 'Test::use::ok' => '1.302162', 'XS::APItest' => '1.00', 'deprecate' => '0.04', 'ok' => '1.302162', 'perlfaq' => '5.20190126', }, removed => { } }, 5.029009 => { delta_from => 5.029008, changed => { 'B::Op_private' => '5.029009', 'Config' => '5.029009', 'Devel::PPPort' => '3.45', 'Encode' => '3.01', 'ExtUtils::Manifest' => '1.72', 'JSON::PP' => '4.02', 'JSON::PP::Boolean' => '4.02', 'Module::CoreList' => '5.20190320', 'Module::CoreList::Utils'=> '5.20190320', 'PerlIO::encoding' => '0.27', 'Unicode' => '12.0.0', 'threads::shared' => '1.60', 'utf8' => '1.22', 'warnings' => '1.44', }, removed => { } }, 5.028002 => { delta_from => 5.028001, changed => { 'B::Op_private' => '5.028002', 'Config' => '5.028002', 'Module::CoreList' => '5.20190419', 'Module::CoreList::Utils'=> '5.20190419', 'PerlIO::scalar' => '0.30', 'Storable' => '3.08_01', }, removed => { } }, 5.029010 => { delta_from => 5.029009, changed => { 'B::Op_private' => '5.029010', 'Config' => '5.02901', 'Cwd' => '3.78', 'Data::Dumper' => '2.174', 'ExtUtils::CBuilder' => '0.280231', 'ExtUtils::CBuilder::Base'=> '0.280231', 'ExtUtils::CBuilder::Platform::Unix'=> '0.280231', 'ExtUtils::CBuilder::Platform::VMS'=> '0.280231', 'ExtUtils::CBuilder::Platform::Windows'=> '0.280231', 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280231', 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280231', 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280231', 'ExtUtils::CBuilder::Platform::aix'=> '0.280231', 'ExtUtils::CBuilder::Platform::android'=> '0.280231', 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280231', 'ExtUtils::CBuilder::Platform::darwin'=> '0.280231', 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280231', 'ExtUtils::CBuilder::Platform::os2'=> '0.280231', 'File::Spec' => '3.78', 'File::Spec::AmigaOS' => '3.78', 'File::Spec::Cygwin' => '3.78', 'File::Spec::Epoc' => '3.78', 'File::Spec::Functions' => '3.78', 'File::Spec::Mac' => '3.78', 'File::Spec::OS2' => '3.78', 'File::Spec::Unix' => '3.78', 'File::Spec::VMS' => '3.78', 'File::Spec::Win32' => '3.78', 'I18N::Langinfo' => '0.18', 'Module::CoreList' => '5.20190420', 'Module::CoreList::Utils'=> '5.20190420', 'Module::Metadata' => '1.000036', 'POSIX' => '1.88', 'Storable' => '3.15', 'Unicode' => '12.1.0', }, removed => { } }, 5.030000 => { delta_from => 5.02901, changed => { 'B::Op_private' => '5.030000', 'Config' => '5.03', 'Devel::PPPort' => '3.52', 'Module::CoreList' => '5.20190522', 'Module::CoreList::Utils'=> '5.20190522', 'XS::Typemap' => '0.17', }, removed => { } }, 5.031000 => { delta_from => 5.03, changed => { 'B::Op_private' => '5.031000', 'Config' => '5.031', 'Module::CoreList' => '5.20190524', 'Module::CoreList::Utils'=> '5.20190524', 'Pod::Simple' => '3.36', 'Pod::Simple::BlackBox' => '3.36', 'Pod::Simple::Checker' => '3.36', 'Pod::Simple::Debug' => '3.36', 'Pod::Simple::DumpAsText'=> '3.36', 'Pod::Simple::DumpAsXML'=> '3.36', 'Pod::Simple::HTML' => '3.36', 'Pod::Simple::HTMLBatch'=> '3.36', 'Pod::Simple::JustPod' => undef, 'Pod::Simple::LinkSection'=> '3.36', 'Pod::Simple::Methody' => '3.36', 'Pod::Simple::Progress' => '3.36', 'Pod::Simple::PullParser'=> '3.36', 'Pod::Simple::PullParserEndToken'=> '3.36', 'Pod::Simple::PullParserStartToken'=> '3.36', 'Pod::Simple::PullParserTextToken'=> '3.36', 'Pod::Simple::PullParserToken'=> '3.36', 'Pod::Simple::RTF' => '3.36', 'Pod::Simple::Search' => '3.36', 'Pod::Simple::SimpleTree'=> '3.36', 'Pod::Simple::Text' => '3.36', 'Pod::Simple::TextContent'=> '3.36', 'Pod::Simple::TiedOutFH'=> '3.36', 'Pod::Simple::Transcode'=> '3.36', 'Pod::Simple::TranscodeDumb'=> '3.36', 'Pod::Simple::TranscodeSmart'=> '3.36', 'Pod::Simple::XHTML' => '3.36', 'Pod::Simple::XMLOutStream'=> '3.36', 'Socket' => '2.029', 'feature' => '1.55', }, removed => { } }, 5.031001 => { delta_from => 5.031000, changed => { 'App::Cpan' => '1.675', 'B::Op_private' => '5.031001', 'CPAN' => '2.27', 'CPAN::Bundle' => '5.5005', 'CPAN::Distribution' => '2.27', 'CPAN::FTP' => '5.5012', 'CPAN::FirstTime' => '5.5314', 'CPAN::HandleConfig' => '5.5011', 'CPAN::Mirrors' => '2.27', 'CPAN::Queue' => '5.5003', 'CPAN::Shell' => '5.5009', 'CPAN::Tarzip' => '5.5013', 'Class::Struct' => '0.66', 'Compress::Raw::Bzip2' => '2.086', 'Compress::Raw::Zlib' => '2.086', 'Compress::Zlib' => '2.086', 'Config' => '5.031001', 'DB_File' => '1.852', 'Devel::PPPort' => '3.53', 'ExtUtils::CBuilder' => '0.280232', 'ExtUtils::Command' => '7.36', 'ExtUtils::Command::MM' => '7.36', 'ExtUtils::Liblist' => '7.36', 'ExtUtils::Liblist::Kid'=> '7.36', 'ExtUtils::MM' => '7.36', 'ExtUtils::MM_AIX' => '7.36', 'ExtUtils::MM_Any' => '7.36', 'ExtUtils::MM_BeOS' => '7.36', 'ExtUtils::MM_Cygwin' => '7.36', 'ExtUtils::MM_DOS' => '7.36', 'ExtUtils::MM_Darwin' => '7.36', 'ExtUtils::MM_MacOS' => '7.36', 'ExtUtils::MM_NW5' => '7.36', 'ExtUtils::MM_OS2' => '7.36', 'ExtUtils::MM_QNX' => '7.36', 'ExtUtils::MM_UWIN' => '7.36', 'ExtUtils::MM_Unix' => '7.36', 'ExtUtils::MM_VMS' => '7.36', 'ExtUtils::MM_VOS' => '7.36', 'ExtUtils::MM_Win32' => '7.36', 'ExtUtils::MM_Win95' => '7.36', 'ExtUtils::MY' => '7.36', 'ExtUtils::MakeMaker' => '7.36', 'ExtUtils::MakeMaker::Config'=> '7.36', 'ExtUtils::MakeMaker::Locale'=> '7.36', 'ExtUtils::MakeMaker::version'=> '7.36', 'ExtUtils::MakeMaker::version::regex'=> '7.36', 'ExtUtils::Mkbootstrap' => '7.36', 'ExtUtils::Mksymlists' => '7.36', 'ExtUtils::testlib' => '7.36', 'File::Spec::Win32' => '3.79', 'I18N::LangTags' => '0.44', 'IO' => '1.41', 'IO::Compress::Adapter::Bzip2'=> '2.086', 'IO::Compress::Adapter::Deflate'=> '2.086', 'IO::Compress::Adapter::Identity'=> '2.086', 'IO::Compress::Base' => '2.086', 'IO::Compress::Base::Common'=> '2.086', 'IO::Compress::Bzip2' => '2.086', 'IO::Compress::Deflate' => '2.086', 'IO::Compress::Gzip' => '2.086', 'IO::Compress::Gzip::Constants'=> '2.086', 'IO::Compress::RawDeflate'=> '2.086', 'IO::Compress::Zip' => '2.086', 'IO::Compress::Zip::Constants'=> '2.086', 'IO::Compress::Zlib::Constants'=> '2.086', 'IO::Compress::Zlib::Extra'=> '2.086', 'IO::Dir' => '1.41', 'IO::File' => '1.41', 'IO::Handle' => '1.41', 'IO::Pipe' => '1.41', 'IO::Poll' => '1.41', 'IO::Seekable' => '1.41', 'IO::Select' => '1.41', 'IO::Socket' => '1.41', 'IO::Socket::INET' => '1.41', 'IO::Socket::UNIX' => '1.41', 'IO::Uncompress::Adapter::Bunzip2'=> '2.086', 'IO::Uncompress::Adapter::Identity'=> '2.086', 'IO::Uncompress::Adapter::Inflate'=> '2.086', 'IO::Uncompress::AnyInflate'=> '2.086', 'IO::Uncompress::AnyUncompress'=> '2.086', 'IO::Uncompress::Base' => '2.086', 'IO::Uncompress::Bunzip2'=> '2.086', 'IO::Uncompress::Gunzip'=> '2.086', 'IO::Uncompress::Inflate'=> '2.086', 'IO::Uncompress::RawInflate'=> '2.086', 'IO::Uncompress::Unzip' => '2.086', 'Module::CoreList' => '5.20190620', 'Module::CoreList::Utils'=> '5.20190620', 'POSIX' => '1.89', 'Pod::Man' => '4.12', 'Pod::ParseLink' => '4.12', 'Pod::Simple' => '3.38', 'Pod::Simple::BlackBox' => '3.38', 'Pod::Simple::Checker' => '3.38', 'Pod::Simple::Debug' => '3.38', 'Pod::Simple::DumpAsText'=> '3.38', 'Pod::Simple::DumpAsXML'=> '3.38', 'Pod::Simple::HTML' => '3.38', 'Pod::Simple::HTMLBatch'=> '3.38', 'Pod::Simple::LinkSection'=> '3.38', 'Pod::Simple::Methody' => '3.38', 'Pod::Simple::Progress' => '3.38', 'Pod::Simple::PullParser'=> '3.38', 'Pod::Simple::PullParserEndToken'=> '3.38', 'Pod::Simple::PullParserStartToken'=> '3.38', 'Pod::Simple::PullParserTextToken'=> '3.38', 'Pod::Simple::PullParserToken'=> '3.38', 'Pod::Simple::RTF' => '3.38', 'Pod::Simple::Search' => '3.38', 'Pod::Simple::SimpleTree'=> '3.38', 'Pod::Simple::Text' => '3.38', 'Pod::Simple::TextContent'=> '3.38', 'Pod::Simple::TiedOutFH'=> '3.38', 'Pod::Simple::Transcode'=> '3.38', 'Pod::Simple::TranscodeDumb'=> '3.38', 'Pod::Simple::TranscodeSmart'=> '3.38', 'Pod::Simple::XHTML' => '3.38', 'Pod::Simple::XMLOutStream'=> '3.38', 'Pod::Text' => '4.12', 'Pod::Text::Color' => '4.12', 'Pod::Text::Overstrike' => '4.12', 'Pod::Text::Termcap' => '4.12', 'SelfLoader' => '1.26', 'Storable' => '3.16', 'Sys::Hostname' => '1.23', 'Test2' => '1.302164', 'Test2::API' => '1.302164', 'Test2::API::Breakage' => '1.302164', 'Test2::API::Context' => '1.302164', 'Test2::API::Instance' => '1.302164', 'Test2::API::Stack' => '1.302164', 'Test2::Event' => '1.302164', 'Test2::Event::Bail' => '1.302164', 'Test2::Event::Diag' => '1.302164', 'Test2::Event::Encoding'=> '1.302164', 'Test2::Event::Exception'=> '1.302164', 'Test2::Event::Fail' => '1.302164', 'Test2::Event::Generic' => '1.302164', 'Test2::Event::Note' => '1.302164', 'Test2::Event::Ok' => '1.302164', 'Test2::Event::Pass' => '1.302164', 'Test2::Event::Plan' => '1.302164', 'Test2::Event::Skip' => '1.302164', 'Test2::Event::Subtest' => '1.302164', 'Test2::Event::TAP::Version'=> '1.302164', 'Test2::Event::V2' => '1.302164', 'Test2::Event::Waiting' => '1.302164', 'Test2::EventFacet' => '1.302164', 'Test2::EventFacet::About'=> '1.302164', 'Test2::EventFacet::Amnesty'=> '1.302164', 'Test2::EventFacet::Assert'=> '1.302164', 'Test2::EventFacet::Control'=> '1.302164', 'Test2::EventFacet::Error'=> '1.302164', 'Test2::EventFacet::Hub'=> '1.302164', 'Test2::EventFacet::Info'=> '1.302164', 'Test2::EventFacet::Info::Table'=> '1.302164', 'Test2::EventFacet::Meta'=> '1.302164', 'Test2::EventFacet::Parent'=> '1.302164', 'Test2::EventFacet::Plan'=> '1.302164', 'Test2::EventFacet::Render'=> '1.302164', 'Test2::EventFacet::Trace'=> '1.302164', 'Test2::Formatter' => '1.302164', 'Test2::Formatter::TAP' => '1.302164', 'Test2::Hub' => '1.302164', 'Test2::Hub::Interceptor'=> '1.302164', 'Test2::Hub::Interceptor::Terminator'=> '1.302164', 'Test2::Hub::Subtest' => '1.302164', 'Test2::IPC' => '1.302164', 'Test2::IPC::Driver' => '1.302164', 'Test2::IPC::Driver::Files'=> '1.302164', 'Test2::Tools::Tiny' => '1.302164', 'Test2::Util' => '1.302164', 'Test2::Util::ExternalMeta'=> '1.302164', 'Test2::Util::Facets2Legacy'=> '1.302164', 'Test2::Util::HashBase' => '1.302164', 'Test2::Util::Trace' => '1.302164', 'Test::Builder' => '1.302164', 'Test::Builder::Formatter'=> '1.302164', 'Test::Builder::Module' => '1.302164', 'Test::Builder::Tester' => '1.302164', 'Test::Builder::Tester::Color'=> '1.302164', 'Test::Builder::TodoDiag'=> '1.302164', 'Test::More' => '1.302164', 'Test::Simple' => '1.302164', 'Test::Tester' => '1.302164', 'Test::Tester::Capture' => '1.302164', 'Test::Tester::CaptureRunner'=> '1.302164', 'Test::Tester::Delegate'=> '1.302164', 'Test::use::ok' => '1.302164', 'Tie::File' => '1.03', 'Tie::Hash::NamedCapture'=> '0.11', 'Time::HiRes' => '1.9761', 'Unicode::Normalize' => '1.27', 'Unicode::UCD' => '0.73', 'XS::APItest' => '1.01', 'ok' => '1.302164', 'overload' => '1.31', 'warnings' => '1.45', }, removed => { 'Pod::Find' => 1, 'Pod::InputObjects' => 1, 'Pod::ParseUtils' => 1, 'Pod::Parser' => 1, 'Pod::PlainText' => 1, 'Pod::Select' => 1, } }, 5.031002 => { delta_from => 5.031001, changed => { 'B::Op_private' => '5.031002', 'Config' => '5.031002', 'Devel::PPPort' => '3.54', 'Exporter' => '5.74', 'Exporter::Heavy' => '5.74', 'IPC::Cmd' => '1.04', 'JSON::PP' => '4.04', 'JSON::PP::Boolean' => '4.04', 'Module::CoreList' => '5.20190720', 'Module::CoreList::Utils'=> '5.20190720', 'Opcode' => '1.44', 'PerlIO::encoding' => '0.28', 'Pod::Simple' => '3.39', 'Pod::Simple::BlackBox' => '3.39', 'Pod::Simple::Checker' => '3.39', 'Pod::Simple::Debug' => '3.39', 'Pod::Simple::DumpAsText'=> '3.39', 'Pod::Simple::DumpAsXML'=> '3.39', 'Pod::Simple::HTML' => '3.39', 'Pod::Simple::HTMLBatch'=> '3.39', 'Pod::Simple::LinkSection'=> '3.39', 'Pod::Simple::Methody' => '3.39', 'Pod::Simple::Progress' => '3.39', 'Pod::Simple::PullParser'=> '3.39', 'Pod::Simple::PullParserEndToken'=> '3.39', 'Pod::Simple::PullParserStartToken'=> '3.39', 'Pod::Simple::PullParserTextToken'=> '3.39', 'Pod::Simple::PullParserToken'=> '3.39', 'Pod::Simple::RTF' => '3.39', 'Pod::Simple::Search' => '3.39', 'Pod::Simple::SimpleTree'=> '3.39', 'Pod::Simple::Text' => '3.39', 'Pod::Simple::TextContent'=> '3.39', 'Pod::Simple::TiedOutFH'=> '3.39', 'Pod::Simple::Transcode'=> '3.39', 'Pod::Simple::TranscodeDumb'=> '3.39', 'Pod::Simple::TranscodeSmart'=> '3.39', 'Pod::Simple::XHTML' => '3.39', 'Pod::Simple::XMLOutStream'=> '3.39', 'threads::shared' => '1.61', }, removed => { } }, 5.031003 => { delta_from => 5.031002, changed => { 'B::Op_private' => '5.031003', 'Compress::Raw::Bzip2' => '2.087', 'Compress::Raw::Zlib' => '2.087', 'Compress::Zlib' => '2.087', 'Config' => '5.031003', 'Devel::PPPort' => '3.55', 'File::Find' => '1.37', 'Getopt::Long' => '2.51', 'I18N::LangTags::Detect'=> '1.08', 'IO::Compress::Adapter::Bzip2'=> '2.087', 'IO::Compress::Adapter::Deflate'=> '2.087', 'IO::Compress::Adapter::Identity'=> '2.087', 'IO::Compress::Base' => '2.087', 'IO::Compress::Base::Common'=> '2.087', 'IO::Compress::Bzip2' => '2.087', 'IO::Compress::Deflate' => '2.087', 'IO::Compress::Gzip' => '2.087', 'IO::Compress::Gzip::Constants'=> '2.087', 'IO::Compress::RawDeflate'=> '2.087', 'IO::Compress::Zip' => '2.087', 'IO::Compress::Zip::Constants'=> '2.087', 'IO::Compress::Zlib::Constants'=> '2.087', 'IO::Compress::Zlib::Extra'=> '2.087', 'IO::Uncompress::Adapter::Bunzip2'=> '2.087', 'IO::Uncompress::Adapter::Identity'=> '2.087', 'IO::Uncompress::Adapter::Inflate'=> '2.087', 'IO::Uncompress::AnyInflate'=> '2.087', 'IO::Uncompress::AnyUncompress'=> '2.087', 'IO::Uncompress::Base' => '2.087', 'IO::Uncompress::Bunzip2'=> '2.087', 'IO::Uncompress::Gunzip'=> '2.087', 'IO::Uncompress::Inflate'=> '2.087', 'IO::Uncompress::RawInflate'=> '2.087', 'IO::Uncompress::Unzip' => '2.087', 'Module::CoreList' => '5.20190820', 'Module::CoreList::Utils'=> '5.20190820', 'PerlIO::via' => '0.18', 'Storable' => '3.17', 'Test2' => '1.302166', 'Test2::API' => '1.302166', 'Test2::API::Breakage' => '1.302166', 'Test2::API::Context' => '1.302166', 'Test2::API::Instance' => '1.302166', 'Test2::API::Stack' => '1.302166', 'Test2::Event' => '1.302166', 'Test2::Event::Bail' => '1.302166', 'Test2::Event::Diag' => '1.302166', 'Test2::Event::Encoding'=> '1.302166', 'Test2::Event::Exception'=> '1.302166', 'Test2::Event::Fail' => '1.302166', 'Test2::Event::Generic' => '1.302166', 'Test2::Event::Note' => '1.302166', 'Test2::Event::Ok' => '1.302166', 'Test2::Event::Pass' => '1.302166', 'Test2::Event::Plan' => '1.302166', 'Test2::Event::Skip' => '1.302166', 'Test2::Event::Subtest' => '1.302166', 'Test2::Event::TAP::Version'=> '1.302166', 'Test2::Event::V2' => '1.302166', 'Test2::Event::Waiting' => '1.302166', 'Test2::EventFacet' => '1.302166', 'Test2::EventFacet::About'=> '1.302166', 'Test2::EventFacet::Amnesty'=> '1.302166', 'Test2::EventFacet::Assert'=> '1.302166', 'Test2::EventFacet::Control'=> '1.302166', 'Test2::EventFacet::Error'=> '1.302166', 'Test2::EventFacet::Hub'=> '1.302166', 'Test2::EventFacet::Info'=> '1.302166', 'Test2::EventFacet::Info::Table'=> '1.302166', 'Test2::EventFacet::Meta'=> '1.302166', 'Test2::EventFacet::Parent'=> '1.302166', 'Test2::EventFacet::Plan'=> '1.302166', 'Test2::EventFacet::Render'=> '1.302166', 'Test2::EventFacet::Trace'=> '1.302166', 'Test2::Formatter' => '1.302166', 'Test2::Formatter::TAP' => '1.302166', 'Test2::Hub' => '1.302166', 'Test2::Hub::Interceptor'=> '1.302166', 'Test2::Hub::Interceptor::Terminator'=> '1.302166', 'Test2::Hub::Subtest' => '1.302166', 'Test2::IPC' => '1.302166', 'Test2::IPC::Driver' => '1.302166', 'Test2::IPC::Driver::Files'=> '1.302166', 'Test2::Tools::Tiny' => '1.302166', 'Test2::Util' => '1.302166', 'Test2::Util::ExternalMeta'=> '1.302166', 'Test2::Util::Facets2Legacy'=> '1.302166', 'Test2::Util::HashBase' => '1.302166', 'Test2::Util::Trace' => '1.302166', 'Test::Builder' => '1.302166', 'Test::Builder::Formatter'=> '1.302166', 'Test::Builder::Module' => '1.302166', 'Test::Builder::Tester' => '1.302166', 'Test::Builder::Tester::Color'=> '1.302166', 'Test::Builder::TodoDiag'=> '1.302166', 'Test::More' => '1.302166', 'Test::Simple' => '1.302166', 'Test::Tester' => '1.302166', 'Test::Tester::Capture' => '1.302166', 'Test::Tester::CaptureRunner'=> '1.302166', 'Test::Tester::Delegate'=> '1.302166', 'Test::use::ok' => '1.302166', 'Thread' => '3.05', 'Time::HiRes' => '1.9762', 'Win32' => '0.53', 'XS::APItest' => '1.02', 'ok' => '1.302166', }, removed => { } }, 5.031004 => { delta_from => 5.031003, changed => { 'B::Op_private' => '5.031004', 'Config' => '5.031004', 'ExtUtils::Command' => '7.38', 'ExtUtils::Command::MM' => '7.38', 'ExtUtils::Liblist' => '7.38', 'ExtUtils::Liblist::Kid'=> '7.38', 'ExtUtils::MM' => '7.38', 'ExtUtils::MM_AIX' => '7.38', 'ExtUtils::MM_Any' => '7.38', 'ExtUtils::MM_BeOS' => '7.38', 'ExtUtils::MM_Cygwin' => '7.38', 'ExtUtils::MM_DOS' => '7.38', 'ExtUtils::MM_Darwin' => '7.38', 'ExtUtils::MM_MacOS' => '7.38', 'ExtUtils::MM_NW5' => '7.38', 'ExtUtils::MM_OS2' => '7.38', 'ExtUtils::MM_QNX' => '7.38', 'ExtUtils::MM_UWIN' => '7.38', 'ExtUtils::MM_Unix' => '7.38', 'ExtUtils::MM_VMS' => '7.38', 'ExtUtils::MM_VOS' => '7.38', 'ExtUtils::MM_Win32' => '7.38', 'ExtUtils::MM_Win95' => '7.38', 'ExtUtils::MY' => '7.38', 'ExtUtils::MakeMaker' => '7.38', 'ExtUtils::MakeMaker::Config'=> '7.38', 'ExtUtils::MakeMaker::Locale'=> '7.38', 'ExtUtils::MakeMaker::version'=> '7.38', 'ExtUtils::MakeMaker::version::regex'=> '7.38', 'ExtUtils::Mkbootstrap' => '7.38', 'ExtUtils::Mksymlists' => '7.38', 'ExtUtils::testlib' => '7.38', 'I18N::Langinfo' => '0.19', 'List::Util' => '1.52', 'List::Util::XS' => '1.52', 'Module::CoreList' => '5.20190920', 'Module::CoreList::Utils'=> '5.20190920', 'Module::Metadata' => '1.000037', 'Scalar::Util' => '1.52', 'Sub::Util' => '1.52', 'Test2' => '1.302168', 'Test2::API' => '1.302168', 'Test2::API::Breakage' => '1.302168', 'Test2::API::Context' => '1.302168', 'Test2::API::Instance' => '1.302168', 'Test2::API::Stack' => '1.302168', 'Test2::Event' => '1.302168', 'Test2::Event::Bail' => '1.302168', 'Test2::Event::Diag' => '1.302168', 'Test2::Event::Encoding'=> '1.302168', 'Test2::Event::Exception'=> '1.302168', 'Test2::Event::Fail' => '1.302168', 'Test2::Event::Generic' => '1.302168', 'Test2::Event::Note' => '1.302168', 'Test2::Event::Ok' => '1.302168', 'Test2::Event::Pass' => '1.302168', 'Test2::Event::Plan' => '1.302168', 'Test2::Event::Skip' => '1.302168', 'Test2::Event::Subtest' => '1.302168', 'Test2::Event::TAP::Version'=> '1.302168', 'Test2::Event::V2' => '1.302168', 'Test2::Event::Waiting' => '1.302168', 'Test2::EventFacet' => '1.302168', 'Test2::EventFacet::About'=> '1.302168', 'Test2::EventFacet::Amnesty'=> '1.302168', 'Test2::EventFacet::Assert'=> '1.302168', 'Test2::EventFacet::Control'=> '1.302168', 'Test2::EventFacet::Error'=> '1.302168', 'Test2::EventFacet::Hub'=> '1.302168', 'Test2::EventFacet::Info'=> '1.302168', 'Test2::EventFacet::Info::Table'=> '1.302168', 'Test2::EventFacet::Meta'=> '1.302168', 'Test2::EventFacet::Parent'=> '1.302168', 'Test2::EventFacet::Plan'=> '1.302168', 'Test2::EventFacet::Render'=> '1.302168', 'Test2::EventFacet::Trace'=> '1.302168', 'Test2::Formatter' => '1.302168', 'Test2::Formatter::TAP' => '1.302168', 'Test2::Hub' => '1.302168', 'Test2::Hub::Interceptor'=> '1.302168', 'Test2::Hub::Interceptor::Terminator'=> '1.302168', 'Test2::Hub::Subtest' => '1.302168', 'Test2::IPC' => '1.302168', 'Test2::IPC::Driver' => '1.302168', 'Test2::IPC::Driver::Files'=> '1.302168', 'Test2::Tools::Tiny' => '1.302168', 'Test2::Util' => '1.302168', 'Test2::Util::ExternalMeta'=> '1.302168', 'Test2::Util::Facets2Legacy'=> '1.302168', 'Test2::Util::HashBase' => '1.302168', 'Test2::Util::Trace' => '1.302168', 'Test::Builder' => '1.302168', 'Test::Builder::Formatter'=> '1.302168', 'Test::Builder::Module' => '1.302168', 'Test::Builder::Tester' => '1.302168', 'Test::Builder::Tester::Color'=> '1.302168', 'Test::Builder::TodoDiag'=> '1.302168', 'Test::More' => '1.302168', 'Test::Simple' => '1.302168', 'Test::Tester' => '1.302168', 'Test::Tester::Capture' => '1.302168', 'Test::Tester::CaptureRunner'=> '1.302168', 'Test::Tester::Delegate'=> '1.302168', 'Test::use::ok' => '1.302168', 'Time::HiRes' => '1.9763', 'XS::APItest' => '1.03', 'ok' => '1.302168', 're' => '0.38', }, removed => { } }, 5.031005 => { delta_from => 5.031004, changed => { 'B' => '1.77', 'B::Deparse' => '1.50', 'B::Op_private' => '5.031005', 'Config' => '5.031005', 'Devel::PPPort' => '3.54', 'Digest::MD5' => '2.55_01', 'Dumpvalue' => '1.21', 'ExtUtils::CBuilder' => '0.280233', 'Math::BigFloat' => '1.999817_01', 'Math::BigInt' => '1.999817_01', 'Math::BigInt::Calc' => '1.999817_01', 'Math::BigInt::FastCalc'=> '0.5009', 'Math::BigInt::Lib' => '1.999817_01', 'Module::CoreList' => '5.20191020', 'Module::CoreList::Utils'=> '5.20191020', 'Safe' => '2.41', 'Time::HiRes' => '1.9764', 'XS::APItest' => '1.04', 'threads' => '2.23', }, removed => { } }, 5.030001 => { delta_from => 5.030000, changed => { 'B::Op_private' => '5.030001', 'Config' => '5.030001', 'Module::CoreList' => '5.20191110', 'Module::CoreList::Utils'=> '5.20191110', }, removed => { } }, 5.031006 => { delta_from => 5.031005, changed => { 'B::Deparse' => '1.51', 'B::Op_private' => '5.031006', 'Compress::Raw::Bzip2' => '2.090', 'Compress::Raw::Zlib' => '2.090', 'Compress::Zlib' => '2.090', 'Config' => '5.031006', 'Devel::PPPort' => '3.55', 'DynaLoader' => '1.46', 'IO::Compress::Adapter::Bzip2'=> '2.090', 'IO::Compress::Adapter::Deflate'=> '2.090', 'IO::Compress::Adapter::Identity'=> '2.090', 'IO::Compress::Base' => '2.090', 'IO::Compress::Base::Common'=> '2.090', 'IO::Compress::Bzip2' => '2.090', 'IO::Compress::Deflate' => '2.090', 'IO::Compress::Gzip' => '2.090', 'IO::Compress::Gzip::Constants'=> '2.090', 'IO::Compress::RawDeflate'=> '2.090', 'IO::Compress::Zip' => '2.090', 'IO::Compress::Zip::Constants'=> '2.090', 'IO::Compress::Zlib::Constants'=> '2.090', 'IO::Compress::Zlib::Extra'=> '2.090', 'IO::Uncompress::Adapter::Bunzip2'=> '2.090', 'IO::Uncompress::Adapter::Identity'=> '2.090', 'IO::Uncompress::Adapter::Inflate'=> '2.090', 'IO::Uncompress::AnyInflate'=> '2.090', 'IO::Uncompress::AnyUncompress'=> '2.090', 'IO::Uncompress::Base' => '2.090', 'IO::Uncompress::Bunzip2'=> '2.090', 'IO::Uncompress::Gunzip'=> '2.090', 'IO::Uncompress::Inflate'=> '2.090', 'IO::Uncompress::RawInflate'=> '2.090', 'IO::Uncompress::Unzip' => '2.090', 'List::Util' => '1.53', 'List::Util::XS' => '1.53', 'Math::BigFloat' => '1.999818', 'Math::BigInt' => '1.999818', 'Math::BigInt::Calc' => '1.999818', 'Math::BigInt::Lib' => '1.999818', 'Module::CoreList' => '5.20191120', 'Module::CoreList::Utils'=> '5.20191120', 'Module::Load::Conditional'=> '0.70', 'POSIX' => '1.90', 'Pod::Simple' => '3.40', 'Pod::Simple::BlackBox' => '3.40', 'Pod::Simple::Checker' => '3.40', 'Pod::Simple::Debug' => '3.40', 'Pod::Simple::DumpAsText'=> '3.40', 'Pod::Simple::DumpAsXML'=> '3.40', 'Pod::Simple::HTML' => '3.40', 'Pod::Simple::HTMLBatch'=> '3.40', 'Pod::Simple::LinkSection'=> '3.40', 'Pod::Simple::Methody' => '3.40', 'Pod::Simple::Progress' => '3.40', 'Pod::Simple::PullParser'=> '3.40', 'Pod::Simple::PullParserEndToken'=> '3.40', 'Pod::Simple::PullParserStartToken'=> '3.40', 'Pod::Simple::PullParserTextToken'=> '3.40', 'Pod::Simple::PullParserToken'=> '3.40', 'Pod::Simple::RTF' => '3.40', 'Pod::Simple::Search' => '3.40', 'Pod::Simple::SimpleTree'=> '3.40', 'Pod::Simple::Text' => '3.40', 'Pod::Simple::TextContent'=> '3.40', 'Pod::Simple::TiedOutFH'=> '3.40', 'Pod::Simple::Transcode'=> '3.40', 'Pod::Simple::TranscodeDumb'=> '3.40', 'Pod::Simple::TranscodeSmart'=> '3.40', 'Pod::Simple::XHTML' => '3.40', 'Pod::Simple::XMLOutStream'=> '3.40', 'Scalar::Util' => '1.53', 'Sub::Util' => '1.53', 'Sys::Syslog' => '0.36', 'Test2' => '1.302169', 'Test2::API' => '1.302169', 'Test2::API::Breakage' => '1.302169', 'Test2::API::Context' => '1.302169', 'Test2::API::Instance' => '1.302169', 'Test2::API::Stack' => '1.302169', 'Test2::Event' => '1.302169', 'Test2::Event::Bail' => '1.302169', 'Test2::Event::Diag' => '1.302169', 'Test2::Event::Encoding'=> '1.302169', 'Test2::Event::Exception'=> '1.302169', 'Test2::Event::Fail' => '1.302169', 'Test2::Event::Generic' => '1.302169', 'Test2::Event::Note' => '1.302169', 'Test2::Event::Ok' => '1.302169', 'Test2::Event::Pass' => '1.302169', 'Test2::Event::Plan' => '1.302169', 'Test2::Event::Skip' => '1.302169', 'Test2::Event::Subtest' => '1.302169', 'Test2::Event::TAP::Version'=> '1.302169', 'Test2::Event::V2' => '1.302169', 'Test2::Event::Waiting' => '1.302169', 'Test2::EventFacet' => '1.302169', 'Test2::EventFacet::About'=> '1.302169', 'Test2::EventFacet::Amnesty'=> '1.302169', 'Test2::EventFacet::Assert'=> '1.302169', 'Test2::EventFacet::Control'=> '1.302169', 'Test2::EventFacet::Error'=> '1.302169', 'Test2::EventFacet::Hub'=> '1.302169', 'Test2::EventFacet::Info'=> '1.302169', 'Test2::EventFacet::Info::Table'=> '1.302169', 'Test2::EventFacet::Meta'=> '1.302169', 'Test2::EventFacet::Parent'=> '1.302169', 'Test2::EventFacet::Plan'=> '1.302169', 'Test2::EventFacet::Render'=> '1.302169', 'Test2::EventFacet::Trace'=> '1.302169', 'Test2::Formatter' => '1.302169', 'Test2::Formatter::TAP' => '1.302169', 'Test2::Hub' => '1.302169', 'Test2::Hub::Interceptor'=> '1.302169', 'Test2::Hub::Interceptor::Terminator'=> '1.302169', 'Test2::Hub::Subtest' => '1.302169', 'Test2::IPC' => '1.302169', 'Test2::IPC::Driver' => '1.302169', 'Test2::IPC::Driver::Files'=> '1.302169', 'Test2::Tools::Tiny' => '1.302169', 'Test2::Util' => '1.302169', 'Test2::Util::ExternalMeta'=> '1.302169', 'Test2::Util::Facets2Legacy'=> '1.302169', 'Test2::Util::HashBase' => '1.302169', 'Test2::Util::Trace' => '1.302169', 'Test::Builder' => '1.302169', 'Test::Builder::Formatter'=> '1.302169', 'Test::Builder::Module' => '1.302169', 'Test::Builder::Tester' => '1.302169', 'Test::Builder::Tester::Color'=> '1.302169', 'Test::Builder::TodoDiag'=> '1.302169', 'Test::More' => '1.302169', 'Test::Simple' => '1.302169', 'Test::Tester' => '1.302169', 'Test::Tester::Capture' => '1.302169', 'Test::Tester::CaptureRunner'=> '1.302169', 'Test::Tester::Delegate'=> '1.302169', 'Test::use::ok' => '1.302169', 'Tie::StdHandle' => '4.6', 'Unicode::UCD' => '0.74', 'Win32API::File' => '0.1203_01', 'feature' => '1.56', 'mro' => '1.23', 'ok' => '1.302169', 'perlfaq' => '5.20191102', }, removed => { } }, 5.031007 => { delta_from => 5.031006, changed => { 'B' => '1.78', 'B::Deparse' => '1.52', 'B::Op_private' => '5.031007', 'Compress::Raw::Bzip2' => '2.093', 'Compress::Raw::Zlib' => '2.093', 'Compress::Zlib' => '2.093', 'Config' => '5.031007', 'Devel::PPPort' => '3.56', 'English' => '1.11', 'ExtUtils::Command' => '7.42', 'ExtUtils::Command::MM' => '7.42', 'ExtUtils::Liblist' => '7.42', 'ExtUtils::Liblist::Kid'=> '7.42', 'ExtUtils::MM' => '7.42', 'ExtUtils::MM_AIX' => '7.42', 'ExtUtils::MM_Any' => '7.42', 'ExtUtils::MM_BeOS' => '7.42', 'ExtUtils::MM_Cygwin' => '7.42', 'ExtUtils::MM_DOS' => '7.42', 'ExtUtils::MM_Darwin' => '7.42', 'ExtUtils::MM_MacOS' => '7.42', 'ExtUtils::MM_NW5' => '7.42', 'ExtUtils::MM_OS2' => '7.42', 'ExtUtils::MM_QNX' => '7.42', 'ExtUtils::MM_UWIN' => '7.42', 'ExtUtils::MM_Unix' => '7.42', 'ExtUtils::MM_VMS' => '7.42', 'ExtUtils::MM_VOS' => '7.42', 'ExtUtils::MM_Win32' => '7.42', 'ExtUtils::MM_Win95' => '7.42', 'ExtUtils::MY' => '7.42', 'ExtUtils::MakeMaker' => '7.42', 'ExtUtils::MakeMaker::Config'=> '7.42', 'ExtUtils::MakeMaker::Locale'=> '7.42', 'ExtUtils::MakeMaker::version'=> '7.42', 'ExtUtils::MakeMaker::version::regex'=> '7.42', 'ExtUtils::Mkbootstrap' => '7.42', 'ExtUtils::Mksymlists' => '7.42', 'ExtUtils::testlib' => '7.42', 'File::stat' => '1.09', 'Filter::Simple' => '0.96', 'IO::Compress::Adapter::Bzip2'=> '2.093', 'IO::Compress::Adapter::Deflate'=> '2.093', 'IO::Compress::Adapter::Identity'=> '2.093', 'IO::Compress::Base' => '2.093', 'IO::Compress::Base::Common'=> '2.093', 'IO::Compress::Bzip2' => '2.093', 'IO::Compress::Deflate' => '2.093', 'IO::Compress::Gzip' => '2.093', 'IO::Compress::Gzip::Constants'=> '2.093', 'IO::Compress::RawDeflate'=> '2.093', 'IO::Compress::Zip' => '2.093', 'IO::Compress::Zip::Constants'=> '2.093', 'IO::Compress::Zlib::Constants'=> '2.093', 'IO::Compress::Zlib::Extra'=> '2.093', 'IO::Uncompress::Adapter::Bunzip2'=> '2.093', 'IO::Uncompress::Adapter::Identity'=> '2.093', 'IO::Uncompress::Adapter::Inflate'=> '2.093', 'IO::Uncompress::AnyInflate'=> '2.093', 'IO::Uncompress::AnyUncompress'=> '2.093', 'IO::Uncompress::Base' => '2.093', 'IO::Uncompress::Bunzip2'=> '2.093', 'IO::Uncompress::Gunzip'=> '2.093', 'IO::Uncompress::Inflate'=> '2.093', 'IO::Uncompress::RawInflate'=> '2.093', 'IO::Uncompress::Unzip' => '2.093', 'Module::CoreList' => '5.20191220', 'Module::CoreList::Utils'=> '5.20191220', 'Net::Ping' => '2.72', 'Opcode' => '1.45', 'Storable' => '3.18', 'Test2' => '1.302170', 'Test2::API' => '1.302170', 'Test2::API::Breakage' => '1.302170', 'Test2::API::Context' => '1.302170', 'Test2::API::Instance' => '1.302170', 'Test2::API::Stack' => '1.302170', 'Test2::Event' => '1.302170', 'Test2::Event::Bail' => '1.302170', 'Test2::Event::Diag' => '1.302170', 'Test2::Event::Encoding'=> '1.302170', 'Test2::Event::Exception'=> '1.302170', 'Test2::Event::Fail' => '1.302170', 'Test2::Event::Generic' => '1.302170', 'Test2::Event::Note' => '1.302170', 'Test2::Event::Ok' => '1.302170', 'Test2::Event::Pass' => '1.302170', 'Test2::Event::Plan' => '1.302170', 'Test2::Event::Skip' => '1.302170', 'Test2::Event::Subtest' => '1.302170', 'Test2::Event::TAP::Version'=> '1.302170', 'Test2::Event::V2' => '1.302170', 'Test2::Event::Waiting' => '1.302170', 'Test2::EventFacet' => '1.302170', 'Test2::EventFacet::About'=> '1.302170', 'Test2::EventFacet::Amnesty'=> '1.302170', 'Test2::EventFacet::Assert'=> '1.302170', 'Test2::EventFacet::Control'=> '1.302170', 'Test2::EventFacet::Error'=> '1.302170', 'Test2::EventFacet::Hub'=> '1.302170', 'Test2::EventFacet::Info'=> '1.302170', 'Test2::EventFacet::Info::Table'=> '1.302170', 'Test2::EventFacet::Meta'=> '1.302170', 'Test2::EventFacet::Parent'=> '1.302170', 'Test2::EventFacet::Plan'=> '1.302170', 'Test2::EventFacet::Render'=> '1.302170', 'Test2::EventFacet::Trace'=> '1.302170', 'Test2::Formatter' => '1.302170', 'Test2::Formatter::TAP' => '1.302170', 'Test2::Hub' => '1.302170', 'Test2::Hub::Interceptor'=> '1.302170', 'Test2::Hub::Interceptor::Terminator'=> '1.302170', 'Test2::Hub::Subtest' => '1.302170', 'Test2::IPC' => '1.302170', 'Test2::IPC::Driver' => '1.302170', 'Test2::IPC::Driver::Files'=> '1.302170', 'Test2::Tools::Tiny' => '1.302170', 'Test2::Util' => '1.302170', 'Test2::Util::ExternalMeta'=> '1.302170', 'Test2::Util::Facets2Legacy'=> '1.302170', 'Test2::Util::HashBase' => '1.302170', 'Test2::Util::Trace' => '1.302170', 'Test::Builder' => '1.302170', 'Test::Builder::Formatter'=> '1.302170', 'Test::Builder::Module' => '1.302170', 'Test::Builder::Tester' => '1.302170', 'Test::Builder::Tester::Color'=> '1.302170', 'Test::Builder::TodoDiag'=> '1.302170', 'Test::More' => '1.302170', 'Test::Simple' => '1.302170', 'Test::Tester' => '1.302170', 'Test::Tester::Capture' => '1.302170', 'Test::Tester::CaptureRunner'=> '1.302170', 'Test::Tester::Delegate'=> '1.302170', 'Test::use::ok' => '1.302170', 'Tie::Hash::NamedCapture'=> '0.13', 'VMS::Stdio' => '2.45', 'XS::APItest' => '1.05', 'feature' => '1.57', 'ok' => '1.302170', 'warnings' => '1.46', }, removed => { } }, 5.031008 => { delta_from => 5.031007, changed => { 'B::Op_private' => '5.031008', 'Config' => '5.031008', 'DB_File' => '1.853', 'Encode' => '3.02', 'ExtUtils::Command' => '7.44', 'ExtUtils::Command::MM' => '7.44', 'ExtUtils::Liblist' => '7.44', 'ExtUtils::Liblist::Kid'=> '7.44', 'ExtUtils::MM' => '7.44', 'ExtUtils::MM_AIX' => '7.44', 'ExtUtils::MM_Any' => '7.44', 'ExtUtils::MM_BeOS' => '7.44', 'ExtUtils::MM_Cygwin' => '7.44', 'ExtUtils::MM_DOS' => '7.44', 'ExtUtils::MM_Darwin' => '7.44', 'ExtUtils::MM_MacOS' => '7.44', 'ExtUtils::MM_NW5' => '7.44', 'ExtUtils::MM_OS2' => '7.44', 'ExtUtils::MM_QNX' => '7.44', 'ExtUtils::MM_UWIN' => '7.44', 'ExtUtils::MM_Unix' => '7.44', 'ExtUtils::MM_VMS' => '7.44', 'ExtUtils::MM_VOS' => '7.44', 'ExtUtils::MM_Win32' => '7.44', 'ExtUtils::MM_Win95' => '7.44', 'ExtUtils::MY' => '7.44', 'ExtUtils::MakeMaker' => '7.44', 'ExtUtils::MakeMaker::Config'=> '7.44', 'ExtUtils::MakeMaker::Locale'=> '7.44', 'ExtUtils::MakeMaker::version'=> '7.44', 'ExtUtils::MakeMaker::version::regex'=> '7.44', 'ExtUtils::Mkbootstrap' => '7.44', 'ExtUtils::Mksymlists' => '7.44', 'ExtUtils::testlib' => '7.44', 'Fatal' => '2.32', 'Hash::Util' => '0.23', 'IO' => '1.42', 'IO::Handle' => '1.42', 'IO::Socket' => '1.42', 'Module::CoreList' => '5.20200120', 'Module::CoreList::Utils'=> '5.20200120', 'POSIX' => '1.91', 'Pod::Man' => '4.14', 'Pod::ParseLink' => '4.14', 'Pod::Text' => '4.14', 'Pod::Text::Color' => '4.14', 'Pod::Text::Overstrike' => '4.14', 'Pod::Text::Termcap' => '4.14', 'Term::ANSIColor' => '5.01', 'Test2' => '1.302171', 'Test2::API' => '1.302171', 'Test2::API::Breakage' => '1.302171', 'Test2::API::Context' => '1.302171', 'Test2::API::Instance' => '1.302171', 'Test2::API::Stack' => '1.302171', 'Test2::Event' => '1.302171', 'Test2::Event::Bail' => '1.302171', 'Test2::Event::Diag' => '1.302171', 'Test2::Event::Encoding'=> '1.302171', 'Test2::Event::Exception'=> '1.302171', 'Test2::Event::Fail' => '1.302171', 'Test2::Event::Generic' => '1.302171', 'Test2::Event::Note' => '1.302171', 'Test2::Event::Ok' => '1.302171', 'Test2::Event::Pass' => '1.302171', 'Test2::Event::Plan' => '1.302171', 'Test2::Event::Skip' => '1.302171', 'Test2::Event::Subtest' => '1.302171', 'Test2::Event::TAP::Version'=> '1.302171', 'Test2::Event::V2' => '1.302171', 'Test2::Event::Waiting' => '1.302171', 'Test2::EventFacet' => '1.302171', 'Test2::EventFacet::About'=> '1.302171', 'Test2::EventFacet::Amnesty'=> '1.302171', 'Test2::EventFacet::Assert'=> '1.302171', 'Test2::EventFacet::Control'=> '1.302171', 'Test2::EventFacet::Error'=> '1.302171', 'Test2::EventFacet::Hub'=> '1.302171', 'Test2::EventFacet::Info'=> '1.302171', 'Test2::EventFacet::Info::Table'=> '1.302171', 'Test2::EventFacet::Meta'=> '1.302171', 'Test2::EventFacet::Parent'=> '1.302171', 'Test2::EventFacet::Plan'=> '1.302171', 'Test2::EventFacet::Render'=> '1.302171', 'Test2::EventFacet::Trace'=> '1.302171', 'Test2::Formatter' => '1.302171', 'Test2::Formatter::TAP' => '1.302171', 'Test2::Hub' => '1.302171', 'Test2::Hub::Interceptor'=> '1.302171', 'Test2::Hub::Interceptor::Terminator'=> '1.302171', 'Test2::Hub::Subtest' => '1.302171', 'Test2::IPC' => '1.302171', 'Test2::IPC::Driver' => '1.302171', 'Test2::IPC::Driver::Files'=> '1.302171', 'Test2::Tools::Tiny' => '1.302171', 'Test2::Util' => '1.302171', 'Test2::Util::ExternalMeta'=> '1.302171', 'Test2::Util::Facets2Legacy'=> '1.302171', 'Test2::Util::HashBase' => '1.302171', 'Test2::Util::Trace' => '1.302171', 'Test::Builder' => '1.302171', 'Test::Builder::Formatter'=> '1.302171', 'Test::Builder::Module' => '1.302171', 'Test::Builder::Tester' => '1.302171', 'Test::Builder::Tester::Color'=> '1.302171', 'Test::Builder::TodoDiag'=> '1.302171', 'Test::More' => '1.302171', 'Test::Simple' => '1.302171', 'Test::Tester' => '1.302171', 'Test::Tester::Capture' => '1.302171', 'Test::Tester::CaptureRunner'=> '1.302171', 'Test::Tester::Delegate'=> '1.302171', 'Test::use::ok' => '1.302171', 'XS::APItest' => '1.06', 'autodie' => '2.32', 'autodie::Scope::Guard' => '2.32', 'autodie::Scope::GuardStack'=> '2.32', 'autodie::Util' => '2.32', 'autodie::exception' => '2.32', 'autodie::exception::system'=> '2.32', 'autodie::hints' => '2.32', 'autodie::skip' => '2.32', 'ok' => '1.302171', }, removed => { } }, 5.031009 => { delta_from => 5.031008, changed => { 'Archive::Tar' => '2.36', 'Archive::Tar::Constant'=> '2.36', 'Archive::Tar::File' => '2.36', 'B' => '1.80', 'B::Op_private' => '5.031009', 'Config' => '5.031009', 'Devel::PPPort' => '3.57', 'Encode' => '3.03', 'ExtUtils::CBuilder' => '0.280234', 'ExtUtils::CBuilder::Base'=> '0.280234', 'ExtUtils::CBuilder::Platform::Unix'=> '0.280234', 'ExtUtils::CBuilder::Platform::VMS'=> '0.280234', 'ExtUtils::CBuilder::Platform::Windows'=> '0.280234', 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280234', 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280234', 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280234', 'ExtUtils::CBuilder::Platform::aix'=> '0.280234', 'ExtUtils::CBuilder::Platform::android'=> '0.280234', 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280234', 'ExtUtils::CBuilder::Platform::darwin'=> '0.280234', 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280234', 'ExtUtils::CBuilder::Platform::os2'=> '0.280234', 'IO' => '1.43', 'IO::Select' => '1.42', 'IO::Socket' => '1.43', 'Module::CoreList' => '5.20200220', 'Module::CoreList::Utils'=> '5.20200220', 'POSIX' => '1.92', 'Pod::Html' => '1.25', 'Storable' => '3.19', 'Tie::File' => '1.06', 'Unicode' => '13.0.0', 'XS::APItest' => '1.07', '_charnames' => '1.46', 'charnames' => '1.46', 'diagnostics' => '1.37', 'feature' => '1.58', 'parent' => '0.238', 'perlfaq' => '5.20200125', 'threads' => '2.24', }, removed => { } }, 5.030002 => { delta_from => 5.030001, changed => { 'B::Op_private' => '5.030002', 'Compress::Raw::Bzip2' => '2.089', 'Config' => '5.030002', 'Module::CoreList' => '5.20200314', 'Module::CoreList::Utils'=> '5.20200314', }, removed => { } }, 5.031010 => { delta_from => 5.031009, changed => { 'B::Op_private' => '5.031010', 'Config' => '5.03101', }, removed => { } }, 5.031011 => { delta_from => 5.031010, changed => { 'B::Deparse' => '1.53', 'B::Op_private' => '5.031011', 'Config' => '5.031011', 'DynaLoader' => '1.47', 'Encode' => '3.04', 'IPC::Open2' => '1.05', 'IPC::Open3' => '1.21', 'Module::CoreList' => '5.20200428', 'Module::CoreList::Utils'=> '5.20200428', 'Opcode' => '1.47', 'POSIX' => '1.93', 'PerlIO' => '1.11', 'Storable' => '3.20', 'Test2' => '1.302175', 'Test2::API' => '1.302175', 'Test2::API::Breakage' => '1.302175', 'Test2::API::Context' => '1.302175', 'Test2::API::Instance' => '1.302175', 'Test2::API::Stack' => '1.302175', 'Test2::Event' => '1.302175', 'Test2::Event::Bail' => '1.302175', 'Test2::Event::Diag' => '1.302175', 'Test2::Event::Encoding'=> '1.302175', 'Test2::Event::Exception'=> '1.302175', 'Test2::Event::Fail' => '1.302175', 'Test2::Event::Generic' => '1.302175', 'Test2::Event::Note' => '1.302175', 'Test2::Event::Ok' => '1.302175', 'Test2::Event::Pass' => '1.302175', 'Test2::Event::Plan' => '1.302175', 'Test2::Event::Skip' => '1.302175', 'Test2::Event::Subtest' => '1.302175', 'Test2::Event::TAP::Version'=> '1.302175', 'Test2::Event::V2' => '1.302175', 'Test2::Event::Waiting' => '1.302175', 'Test2::EventFacet' => '1.302175', 'Test2::EventFacet::About'=> '1.302175', 'Test2::EventFacet::Amnesty'=> '1.302175', 'Test2::EventFacet::Assert'=> '1.302175', 'Test2::EventFacet::Control'=> '1.302175', 'Test2::EventFacet::Error'=> '1.302175', 'Test2::EventFacet::Hub'=> '1.302175', 'Test2::EventFacet::Info'=> '1.302175', 'Test2::EventFacet::Info::Table'=> '1.302175', 'Test2::EventFacet::Meta'=> '1.302175', 'Test2::EventFacet::Parent'=> '1.302175', 'Test2::EventFacet::Plan'=> '1.302175', 'Test2::EventFacet::Render'=> '1.302175', 'Test2::EventFacet::Trace'=> '1.302175', 'Test2::Formatter' => '1.302175', 'Test2::Formatter::TAP' => '1.302175', 'Test2::Hub' => '1.302175', 'Test2::Hub::Interceptor'=> '1.302175', 'Test2::Hub::Interceptor::Terminator'=> '1.302175', 'Test2::Hub::Subtest' => '1.302175', 'Test2::IPC' => '1.302175', 'Test2::IPC::Driver' => '1.302175', 'Test2::IPC::Driver::Files'=> '1.302175', 'Test2::Tools::Tiny' => '1.302175', 'Test2::Util' => '1.302175', 'Test2::Util::ExternalMeta'=> '1.302175', 'Test2::Util::Facets2Legacy'=> '1.302175', 'Test2::Util::HashBase' => '1.302175', 'Test2::Util::Trace' => '1.302175', 'Test::Builder' => '1.302175', 'Test::Builder::Formatter'=> '1.302175', 'Test::Builder::Module' => '1.302175', 'Test::Builder::Tester' => '1.302175', 'Test::Builder::Tester::Color'=> '1.302175', 'Test::Builder::TodoDiag'=> '1.302175', 'Test::More' => '1.302175', 'Test::Simple' => '1.302175', 'Test::Tester' => '1.302175', 'Test::Tester::Capture' => '1.302175', 'Test::Tester::CaptureRunner'=> '1.302175', 'Test::Tester::Delegate'=> '1.302175', 'Test::use::ok' => '1.302175', 'Time::Piece' => '1.3401', 'Time::Seconds' => '1.3401', 'Unicode::UCD' => '0.75', 'XS::APItest' => '1.09', '_charnames' => '1.47', 'charnames' => '1.47', 'ok' => '1.302175', 'open' => '1.12', 're' => '0.39', 'warnings' => '1.47', }, removed => { } }, 5.028003 => { delta_from => 5.028002, changed => { 'B::Op_private' => '5.028003', 'Config' => '5.028003', 'Module::CoreList' => '5.20200601_28', 'Module::CoreList::Utils'=> '5.20200601_28', }, removed => { } }, 5.030003 => { delta_from => 5.030002, changed => { 'B::Op_private' => '5.030003', 'Config' => '5.030003', 'Module::CoreList' => '5.20200601_30', 'Module::CoreList::Utils'=> '5.20200601_30', }, removed => { } }, 5.032000 => { delta_from => 5.031011, changed => { 'B::Deparse' => '1.54', 'B::Op_private' => '5.032000', 'Benchmark' => '1.23', 'Config' => '5.032', 'Encode' => '3.06', 'Encode::Guess' => '2.08', 'File::Glob' => '1.33', 'List::Util' => '1.55', 'List::Util::XS' => '1.55', 'Module::CoreList' => '5.20200620', 'Module::CoreList::Utils'=> '5.20200620', 'POSIX' => '1.94', 'Scalar::Util' => '1.55', 'Storable' => '3.21', 'Sub::Util' => '1.55', 'Thread::Queue' => '3.14', 'Tie::Scalar' => '1.05', '_charnames' => '1.48', 'charnames' => '1.48', 'encoding' => '3.00', 'perlfaq' => '5.20200523', 're' => '0.40', 'threads' => '2.25', }, removed => { } }, 5.033000 => { delta_from => 5.032000, changed => { 'B::Op_private' => '5.033000', 'Config' => '5.033', 'Module::CoreList' => '5.20200717', 'Module::CoreList::Utils'=> '5.20200717', 'feature' => '1.59', }, removed => { } }, 5.033001 => { delta_from => 5.033, changed => { 'B' => '1.81', 'B::Deparse' => '1.55', 'B::Op_private' => '5.033001', 'Config' => '5.033001', 'Data::Dumper' => '2.175', 'Devel::PPPort' => '3.60', 'Devel::Peek' => '1.29', 'DynaLoader' => '1.48', 'Errno' => '1.31', 'Exporter' => '5.75', 'Exporter::Heavy' => '5.75', 'ExtUtils::Miniperl' => '1.10', 'ExtUtils::PL2Bat' => '0.002', 'ExtUtils::ParseXS' => '3.41', 'ExtUtils::ParseXS::Constants'=> '3.41', 'ExtUtils::ParseXS::CountLines'=> '3.41', 'ExtUtils::ParseXS::Eval'=> '3.41', 'ExtUtils::ParseXS::Utilities'=> '3.41', 'Fcntl' => '1.14', 'File::Path' => '2.17', 'Hash::Util' => '0.24', 'Hash::Util::FieldHash' => '1.21', 'IO' => '1.44', 'IO::Socket' => '1.44', 'IO::Socket::UNIX' => '1.42', 'IPC::Msg' => '2.08', 'IPC::Semaphore' => '2.08', 'IPC::SharedMem' => '2.08', 'IPC::SysV' => '2.08', 'JSON::PP' => '4.05', 'JSON::PP::Boolean' => '4.05', 'Math::Complex' => '1.5902', 'Module::CoreList' => '5.20200820', 'Module::CoreList::Utils'=> '5.20200820', 'Net::Ping' => '2.73_01', 'POSIX' => '1.95', 'PerlIO::mmap' => '0.017', 'Pod::Usage' => '1.70', 'Safe' => '2.42', 'Socket' => '2.030', 'Storable' => '3.22', 'Time::HiRes' => '1.9765', 'Unicode::Normalize' => '1.28', 'XS::APItest' => '1.11', 'XS::Typemap' => '0.18', 'feature' => '1.60', 'mro' => '1.24', 'strict' => '1.12', 'threads' => '2.26', 'threads::shared' => '1.62', 'warnings' => '1.48', }, removed => { 'Moped::Msg' => 1, } }, 5.033002 => { delta_from => 5.033001, changed => { 'Archive::Tar' => '2.38', 'Archive::Tar::Constant'=> '2.38', 'Archive::Tar::File' => '2.38', 'B::Op_private' => '5.033002', 'Compress::Raw::Bzip2' => '2.096', 'Compress::Raw::Zlib' => '2.096', 'Compress::Zlib' => '2.096', 'Config' => '5.033002', 'DB_File' => '1.854', 'Env' => '1.05', 'Errno' => '1.32', 'ExtUtils::Install' => '2.18', 'ExtUtils::Installed' => '2.18', 'ExtUtils::Packlist' => '2.18', 'Filter::Util::Call' => '1.60', 'IO::Compress::Adapter::Bzip2'=> '2.096', 'IO::Compress::Adapter::Deflate'=> '2.096', 'IO::Compress::Adapter::Identity'=> '2.096', 'IO::Compress::Base' => '2.096', 'IO::Compress::Base::Common'=> '2.096', 'IO::Compress::Bzip2' => '2.096', 'IO::Compress::Deflate' => '2.096', 'IO::Compress::Gzip' => '2.096', 'IO::Compress::Gzip::Constants'=> '2.096', 'IO::Compress::RawDeflate'=> '2.096', 'IO::Compress::Zip' => '2.096', 'IO::Compress::Zip::Constants'=> '2.096', 'IO::Compress::Zlib::Constants'=> '2.096', 'IO::Compress::Zlib::Extra'=> '2.096', 'IO::Socket::IP' => '0.41', 'IO::Uncompress::Adapter::Bunzip2'=> '2.096', 'IO::Uncompress::Adapter::Identity'=> '2.096', 'IO::Uncompress::Adapter::Inflate'=> '2.096', 'IO::Uncompress::AnyInflate'=> '2.096', 'IO::Uncompress::AnyUncompress'=> '2.096', 'IO::Uncompress::Base' => '2.096', 'IO::Uncompress::Bunzip2'=> '2.096', 'IO::Uncompress::Gunzip'=> '2.096', 'IO::Uncompress::Inflate'=> '2.096', 'IO::Uncompress::RawInflate'=> '2.096', 'IO::Uncompress::Unzip' => '2.096', 'IO::Zlib' => '1.11', 'Module::CoreList' => '5.20200920', 'Module::CoreList::Utils'=> '5.20200920', 'Module::Load::Conditional'=> '0.74', 'Opcode' => '1.48', 'PerlIO::scalar' => '0.31', 'Safe' => '2.43', 'Test2' => '1.302181', 'Test2::API' => '1.302181', 'Test2::API::Breakage' => '1.302181', 'Test2::API::Context' => '1.302181', 'Test2::API::Instance' => '1.302181', 'Test2::API::InterceptResult'=> '1.302181', 'Test2::API::InterceptResult::Event'=> '1.302181', 'Test2::API::InterceptResult::Facet'=> '1.302181', 'Test2::API::InterceptResult::Hub'=> '1.302181', 'Test2::API::InterceptResult::Squasher'=> '1.302181', 'Test2::API::Stack' => '1.302181', 'Test2::Event' => '1.302181', 'Test2::Event::Bail' => '1.302181', 'Test2::Event::Diag' => '1.302181', 'Test2::Event::Encoding'=> '1.302181', 'Test2::Event::Exception'=> '1.302181', 'Test2::Event::Fail' => '1.302181', 'Test2::Event::Generic' => '1.302181', 'Test2::Event::Note' => '1.302181', 'Test2::Event::Ok' => '1.302181', 'Test2::Event::Pass' => '1.302181', 'Test2::Event::Plan' => '1.302181', 'Test2::Event::Skip' => '1.302181', 'Test2::Event::Subtest' => '1.302181', 'Test2::Event::TAP::Version'=> '1.302181', 'Test2::Event::V2' => '1.302181', 'Test2::Event::Waiting' => '1.302181', 'Test2::EventFacet' => '1.302181', 'Test2::EventFacet::About'=> '1.302181', 'Test2::EventFacet::Amnesty'=> '1.302181', 'Test2::EventFacet::Assert'=> '1.302181', 'Test2::EventFacet::Control'=> '1.302181', 'Test2::EventFacet::Error'=> '1.302181', 'Test2::EventFacet::Hub'=> '1.302181', 'Test2::EventFacet::Info'=> '1.302181', 'Test2::EventFacet::Info::Table'=> '1.302181', 'Test2::EventFacet::Meta'=> '1.302181', 'Test2::EventFacet::Parent'=> '1.302181', 'Test2::EventFacet::Plan'=> '1.302181', 'Test2::EventFacet::Render'=> '1.302181', 'Test2::EventFacet::Trace'=> '1.302181', 'Test2::Formatter' => '1.302181', 'Test2::Formatter::TAP' => '1.302181', 'Test2::Hub' => '1.302181', 'Test2::Hub::Interceptor'=> '1.302181', 'Test2::Hub::Interceptor::Terminator'=> '1.302181', 'Test2::Hub::Subtest' => '1.302181', 'Test2::IPC' => '1.302181', 'Test2::IPC::Driver' => '1.302181', 'Test2::IPC::Driver::Files'=> '1.302181', 'Test2::Tools::Tiny' => '1.302181', 'Test2::Util' => '1.302181', 'Test2::Util::ExternalMeta'=> '1.302181', 'Test2::Util::Facets2Legacy'=> '1.302181', 'Test2::Util::HashBase' => '1.302181', 'Test2::Util::Trace' => '1.302181', 'Test::Builder' => '1.302181', 'Test::Builder::Formatter'=> '1.302181', 'Test::Builder::Module' => '1.302181', 'Test::Builder::Tester' => '1.302181', 'Test::Builder::Tester::Color'=> '1.302181', 'Test::Builder::TodoDiag'=> '1.302181', 'Test::More' => '1.302181', 'Test::Simple' => '1.302181', 'Test::Tester' => '1.302181', 'Test::Tester::Capture' => '1.302181', 'Test::Tester::CaptureRunner'=> '1.302181', 'Test::Tester::Delegate'=> '1.302181', 'Test::use::ok' => '1.302181', 'ok' => '1.302181', 'overload' => '1.32', }, removed => { } }, 5.033003 => { delta_from => 5.033002, changed => { 'Amiga::ARexx' => '0.05', 'App::Cpan' => '1.676', 'B::Op_private' => '5.033003', 'CPAN' => '2.28', 'CPAN::FTP' => '5.5013', 'CPAN::FirstTime' => '5.5315', 'Config' => '5.033003', 'DB_File' => '1.855', 'Data::Dumper' => '2.176', 'Devel::PPPort' => '3.62', 'Devel::Peek' => '1.30', 'Digest' => '1.19', 'Digest::MD5' => '2.58', 'Digest::base' => '1.19', 'Digest::file' => '1.19', 'Encode' => '3.07', 'Encode::GSM0338' => '2.08', 'Errno' => '1.33', 'Exporter' => '5.76', 'Exporter::Heavy' => '5.76', 'ExtUtils::Command' => '7.48', 'ExtUtils::Command::MM' => '7.48', 'ExtUtils::Liblist' => '7.48', 'ExtUtils::Liblist::Kid'=> '7.48', 'ExtUtils::MM' => '7.48', 'ExtUtils::MM_AIX' => '7.48', 'ExtUtils::MM_Any' => '7.48', 'ExtUtils::MM_BeOS' => '7.48', 'ExtUtils::MM_Cygwin' => '7.48', 'ExtUtils::MM_DOS' => '7.48', 'ExtUtils::MM_Darwin' => '7.48', 'ExtUtils::MM_MacOS' => '7.48', 'ExtUtils::MM_NW5' => '7.48', 'ExtUtils::MM_OS2' => '7.48', 'ExtUtils::MM_OS390' => '7.48', 'ExtUtils::MM_QNX' => '7.48', 'ExtUtils::MM_UWIN' => '7.48', 'ExtUtils::MM_Unix' => '7.48', 'ExtUtils::MM_VMS' => '7.48', 'ExtUtils::MM_VOS' => '7.48', 'ExtUtils::MM_Win32' => '7.48', 'ExtUtils::MM_Win95' => '7.48', 'ExtUtils::MY' => '7.48', 'ExtUtils::MakeMaker' => '7.48', 'ExtUtils::MakeMaker::Config'=> '7.48', 'ExtUtils::MakeMaker::Locale'=> '7.48', 'ExtUtils::MakeMaker::version'=> '7.48', 'ExtUtils::MakeMaker::version::regex'=> '7.48', 'ExtUtils::Mkbootstrap' => '7.48', 'ExtUtils::Mksymlists' => '7.48', 'ExtUtils::PL2Bat' => '0.003', 'ExtUtils::testlib' => '7.48', 'File::Temp' => '0.2311', 'FindBin' => '1.52', 'Getopt::Long' => '2.52', 'Getopt::Std' => '1.13', 'I18N::LangTags' => '0.45', 'MIME::Base64' => '3.16', 'MIME::QuotedPrint' => '3.16', 'Module::CoreList' => '5.20201020', 'Module::CoreList::Utils'=> '5.20201020', 'Module::Load' => '0.36', 'Pod::Checker' => '1.74', 'Pod::Simple' => '3.41', 'Pod::Simple::BlackBox' => '3.41', 'Pod::Simple::Checker' => '3.41', 'Pod::Simple::Debug' => '3.41', 'Pod::Simple::DumpAsText'=> '3.41', 'Pod::Simple::DumpAsXML'=> '3.41', 'Pod::Simple::HTML' => '3.41', 'Pod::Simple::HTMLBatch'=> '3.41', 'Pod::Simple::LinkSection'=> '3.41', 'Pod::Simple::Methody' => '3.41', 'Pod::Simple::Progress' => '3.41', 'Pod::Simple::PullParser'=> '3.41', 'Pod::Simple::PullParserEndToken'=> '3.41', 'Pod::Simple::PullParserStartToken'=> '3.41', 'Pod::Simple::PullParserTextToken'=> '3.41', 'Pod::Simple::PullParserToken'=> '3.41', 'Pod::Simple::RTF' => '3.41', 'Pod::Simple::Search' => '3.41', 'Pod::Simple::SimpleTree'=> '3.41', 'Pod::Simple::Text' => '3.41', 'Pod::Simple::TextContent'=> '3.41', 'Pod::Simple::TiedOutFH'=> '3.41', 'Pod::Simple::Transcode'=> '3.41', 'Pod::Simple::TranscodeDumb'=> '3.41', 'Pod::Simple::TranscodeSmart'=> '3.41', 'Pod::Simple::XHTML' => '3.41', 'Pod::Simple::XMLOutStream'=> '3.41', 'Pod::Usage' => '2.01', 'Storable' => '3.23', 'Symbol' => '1.09', 'Test2' => '1.302182', 'Test2::API' => '1.302182', 'Test2::API::Breakage' => '1.302182', 'Test2::API::Context' => '1.302182', 'Test2::API::Instance' => '1.302182', 'Test2::API::InterceptResult'=> '1.302182', 'Test2::API::InterceptResult::Event'=> '1.302182', 'Test2::API::InterceptResult::Facet'=> '1.302182', 'Test2::API::InterceptResult::Hub'=> '1.302182', 'Test2::API::InterceptResult::Squasher'=> '1.302182', 'Test2::API::Stack' => '1.302182', 'Test2::Event' => '1.302182', 'Test2::Event::Bail' => '1.302182', 'Test2::Event::Diag' => '1.302182', 'Test2::Event::Encoding'=> '1.302182', 'Test2::Event::Exception'=> '1.302182', 'Test2::Event::Fail' => '1.302182', 'Test2::Event::Generic' => '1.302182', 'Test2::Event::Note' => '1.302182', 'Test2::Event::Ok' => '1.302182', 'Test2::Event::Pass' => '1.302182', 'Test2::Event::Plan' => '1.302182', 'Test2::Event::Skip' => '1.302182', 'Test2::Event::Subtest' => '1.302182', 'Test2::Event::TAP::Version'=> '1.302182', 'Test2::Event::V2' => '1.302182', 'Test2::Event::Waiting' => '1.302182', 'Test2::EventFacet' => '1.302182', 'Test2::EventFacet::About'=> '1.302182', 'Test2::EventFacet::Amnesty'=> '1.302182', 'Test2::EventFacet::Assert'=> '1.302182', 'Test2::EventFacet::Control'=> '1.302182', 'Test2::EventFacet::Error'=> '1.302182', 'Test2::EventFacet::Hub'=> '1.302182', 'Test2::EventFacet::Info'=> '1.302182', 'Test2::EventFacet::Info::Table'=> '1.302182', 'Test2::EventFacet::Meta'=> '1.302182', 'Test2::EventFacet::Parent'=> '1.302182', 'Test2::EventFacet::Plan'=> '1.302182', 'Test2::EventFacet::Render'=> '1.302182', 'Test2::EventFacet::Trace'=> '1.302182', 'Test2::Formatter' => '1.302182', 'Test2::Formatter::TAP' => '1.302182', 'Test2::Hub' => '1.302182', 'Test2::Hub::Interceptor'=> '1.302182', 'Test2::Hub::Interceptor::Terminator'=> '1.302182', 'Test2::Hub::Subtest' => '1.302182', 'Test2::IPC' => '1.302182', 'Test2::IPC::Driver' => '1.302182', 'Test2::IPC::Driver::Files'=> '1.302182', 'Test2::Tools::Tiny' => '1.302182', 'Test2::Util' => '1.302182', 'Test2::Util::ExternalMeta'=> '1.302182', 'Test2::Util::Facets2Legacy'=> '1.302182', 'Test2::Util::HashBase' => '1.302182', 'Test2::Util::Trace' => '1.302182', 'Test::Builder' => '1.302182', 'Test::Builder::Formatter'=> '1.302182', 'Test::Builder::Module' => '1.302182', 'Test::Builder::Tester' => '1.302182', 'Test::Builder::Tester::Color'=> '1.302182', 'Test::Builder::TodoDiag'=> '1.302182', 'Test::More' => '1.302182', 'Test::Simple' => '1.302182', 'Test::Tester' => '1.302182', 'Test::Tester::Capture' => '1.302182', 'Test::Tester::CaptureRunner'=> '1.302182', 'Test::Tester::Delegate'=> '1.302182', 'Test::use::ok' => '1.302182', 'Tie::RefHash' => '1.40', 'Time::Local' => '1.30', 'Unicode::Collate' => '1.29', 'Unicode::Collate::CJK::Big5'=> '1.29', 'Unicode::Collate::CJK::GB2312'=> '1.29', 'Unicode::Collate::CJK::JISX0208'=> '1.29', 'Unicode::Collate::CJK::Korean'=> '1.29', 'Unicode::Collate::CJK::Pinyin'=> '1.29', 'Unicode::Collate::CJK::Stroke'=> '1.29', 'Unicode::Collate::CJK::Zhuyin'=> '1.29', 'Unicode::Collate::Locale'=> '1.29', 'Win32' => '0.54', 'XS::APItest' => '1.12', 'bytes' => '1.08', 'experimental' => '0.022', 'feature' => '1.61', 'if' => '0.0609', 'locale' => '1.10', 'mro' => '1.25', 'ok' => '1.302182', 'overload' => '1.33', 're' => '0.41', 'subs' => '1.04', 'utf8' => '1.24', 'version' => '0.9928', 'version::regex' => '0.9928', }, removed => { } }, 5.033004 => { delta_from => 5.033003, changed => { 'B' => '1.82', 'B::Op_private' => '5.033004', 'Config' => '5.033004', 'Cwd' => '3.79', 'ExtUtils::CBuilder' => '0.280235', 'ExtUtils::CBuilder::Base'=> '0.280235', 'ExtUtils::CBuilder::Platform::Unix'=> '0.280235', 'ExtUtils::CBuilder::Platform::VMS'=> '0.280235', 'ExtUtils::CBuilder::Platform::Windows'=> '0.280235', 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280235', 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280235', 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280235', 'ExtUtils::CBuilder::Platform::aix'=> '0.280235', 'ExtUtils::CBuilder::Platform::android'=> '0.280235', 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280235', 'ExtUtils::CBuilder::Platform::darwin'=> '0.280235', 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280235', 'ExtUtils::CBuilder::Platform::os2'=> '0.280235', 'ExtUtils::Command' => '7.56', 'ExtUtils::Command::MM' => '7.56', 'ExtUtils::Liblist' => '7.56', 'ExtUtils::Liblist::Kid'=> '7.56', 'ExtUtils::MM' => '7.56', 'ExtUtils::MM_AIX' => '7.56', 'ExtUtils::MM_Any' => '7.56', 'ExtUtils::MM_BeOS' => '7.56', 'ExtUtils::MM_Cygwin' => '7.56', 'ExtUtils::MM_DOS' => '7.56', 'ExtUtils::MM_Darwin' => '7.56', 'ExtUtils::MM_MacOS' => '7.56', 'ExtUtils::MM_NW5' => '7.56', 'ExtUtils::MM_OS2' => '7.56', 'ExtUtils::MM_OS390' => '7.56', 'ExtUtils::MM_QNX' => '7.56', 'ExtUtils::MM_UWIN' => '7.56', 'ExtUtils::MM_Unix' => '7.56', 'ExtUtils::MM_VMS' => '7.56', 'ExtUtils::MM_VOS' => '7.56', 'ExtUtils::MM_Win32' => '7.56', 'ExtUtils::MM_Win95' => '7.56', 'ExtUtils::MY' => '7.56', 'ExtUtils::MakeMaker' => '7.56', 'ExtUtils::MakeMaker::Config'=> '7.56', 'ExtUtils::MakeMaker::Locale'=> '7.56', 'ExtUtils::MakeMaker::version'=> '7.56', 'ExtUtils::MakeMaker::version::regex'=> '7.56', 'ExtUtils::Mkbootstrap' => '7.56', 'ExtUtils::Mksymlists' => '7.56', 'ExtUtils::testlib' => '7.56', 'File::Fetch' => '1.00', 'File::Path' => '2.18', 'File::Spec' => '3.79', 'File::Spec::AmigaOS' => '3.79', 'File::Spec::Cygwin' => '3.79', 'File::Spec::Epoc' => '3.79', 'File::Spec::Functions' => '3.79', 'File::Spec::Mac' => '3.79', 'File::Spec::OS2' => '3.79', 'File::Spec::Unix' => '3.79', 'File::Spec::VMS' => '3.79', 'IPC::Msg' => '2.09', 'IPC::Semaphore' => '2.09', 'IPC::SharedMem' => '2.09', 'IPC::SysV' => '2.09', 'Module::CoreList' => '5.20201120', 'Module::CoreList::Utils'=> '5.20201120', 'Net::Ping' => '2.74', 'Pod::Html' => '1.26', 'Pod::Simple' => '3.42', 'Pod::Simple::BlackBox' => '3.42', 'Pod::Simple::Checker' => '3.42', 'Pod::Simple::Debug' => '3.42', 'Pod::Simple::DumpAsText'=> '3.42', 'Pod::Simple::DumpAsXML'=> '3.42', 'Pod::Simple::HTML' => '3.42', 'Pod::Simple::HTMLBatch'=> '3.42', 'Pod::Simple::LinkSection'=> '3.42', 'Pod::Simple::Methody' => '3.42', 'Pod::Simple::Progress' => '3.42', 'Pod::Simple::PullParser'=> '3.42', 'Pod::Simple::PullParserEndToken'=> '3.42', 'Pod::Simple::PullParserStartToken'=> '3.42', 'Pod::Simple::PullParserTextToken'=> '3.42', 'Pod::Simple::PullParserToken'=> '3.42', 'Pod::Simple::RTF' => '3.42', 'Pod::Simple::Search' => '3.42', 'Pod::Simple::SimpleTree'=> '3.42', 'Pod::Simple::Text' => '3.42', 'Pod::Simple::TextContent'=> '3.42', 'Pod::Simple::TiedOutFH'=> '3.42', 'Pod::Simple::Transcode'=> '3.42', 'Pod::Simple::TranscodeDumb'=> '3.42', 'Pod::Simple::TranscodeSmart'=> '3.42', 'Pod::Simple::XHTML' => '3.42', 'Pod::Simple::XMLOutStream'=> '3.42', 'Test2' => '1.302183', 'Test2::API' => '1.302183', 'Test2::API::Breakage' => '1.302183', 'Test2::API::Context' => '1.302183', 'Test2::API::Instance' => '1.302183', 'Test2::API::InterceptResult'=> '1.302183', 'Test2::API::InterceptResult::Event'=> '1.302183', 'Test2::API::InterceptResult::Facet'=> '1.302183', 'Test2::API::InterceptResult::Hub'=> '1.302183', 'Test2::API::InterceptResult::Squasher'=> '1.302183', 'Test2::API::Stack' => '1.302183', 'Test2::Event' => '1.302183', 'Test2::Event::Bail' => '1.302183', 'Test2::Event::Diag' => '1.302183', 'Test2::Event::Encoding'=> '1.302183', 'Test2::Event::Exception'=> '1.302183', 'Test2::Event::Fail' => '1.302183', 'Test2::Event::Generic' => '1.302183', 'Test2::Event::Note' => '1.302183', 'Test2::Event::Ok' => '1.302183', 'Test2::Event::Pass' => '1.302183', 'Test2::Event::Plan' => '1.302183', 'Test2::Event::Skip' => '1.302183', 'Test2::Event::Subtest' => '1.302183', 'Test2::Event::TAP::Version'=> '1.302183', 'Test2::Event::V2' => '1.302183', 'Test2::Event::Waiting' => '1.302183', 'Test2::EventFacet' => '1.302183', 'Test2::EventFacet::About'=> '1.302183', 'Test2::EventFacet::Amnesty'=> '1.302183', 'Test2::EventFacet::Assert'=> '1.302183', 'Test2::EventFacet::Control'=> '1.302183', 'Test2::EventFacet::Error'=> '1.302183', 'Test2::EventFacet::Hub'=> '1.302183', 'Test2::EventFacet::Info'=> '1.302183', 'Test2::EventFacet::Info::Table'=> '1.302183', 'Test2::EventFacet::Meta'=> '1.302183', 'Test2::EventFacet::Parent'=> '1.302183', 'Test2::EventFacet::Plan'=> '1.302183', 'Test2::EventFacet::Render'=> '1.302183', 'Test2::EventFacet::Trace'=> '1.302183', 'Test2::Formatter' => '1.302183', 'Test2::Formatter::TAP' => '1.302183', 'Test2::Hub' => '1.302183', 'Test2::Hub::Interceptor'=> '1.302183', 'Test2::Hub::Interceptor::Terminator'=> '1.302183', 'Test2::Hub::Subtest' => '1.302183', 'Test2::IPC' => '1.302183', 'Test2::IPC::Driver' => '1.302183', 'Test2::IPC::Driver::Files'=> '1.302183', 'Test2::Tools::Tiny' => '1.302183', 'Test2::Util' => '1.302183', 'Test2::Util::ExternalMeta'=> '1.302183', 'Test2::Util::Facets2Legacy'=> '1.302183', 'Test2::Util::HashBase' => '1.302183', 'Test2::Util::Trace' => '1.302183', 'Test::Builder' => '1.302183', 'Test::Builder::Formatter'=> '1.302183', 'Test::Builder::Module' => '1.302183', 'Test::Builder::Tester' => '1.302183', 'Test::Builder::Tester::Color'=> '1.302183', 'Test::Builder::TodoDiag'=> '1.302183', 'Test::More' => '1.302183', 'Test::Simple' => '1.302183', 'Test::Tester' => '1.302183', 'Test::Tester::Capture' => '1.302183', 'Test::Tester::CaptureRunner'=> '1.302183', 'Test::Tester::Delegate'=> '1.302183', 'Test::use::ok' => '1.302183', 'XS::APItest' => '1.13', 'ok' => '1.302183', 'perlfaq' => '5.20201107', }, removed => { } }, 5.033005 => { delta_from => 5.033004, changed => { 'App::Prove' => '3.43', 'App::Prove::State' => '3.43', 'App::Prove::State::Result'=> '3.43', 'App::Prove::State::Result::Test'=> '3.43', 'B::Op_private' => '5.033005', 'Carp' => '1.51', 'Carp::Heavy' => '1.51', 'Config' => '5.033005', 'Config::Perl::V' => '0.33', 'Cwd' => '3.80', 'DynaLoader' => '1.49', 'Encode' => '3.08', 'Encode::GSM0338' => '2.09', 'ExtUtils::Install' => '2.20', 'ExtUtils::Installed' => '2.20', 'ExtUtils::Packlist' => '2.20', 'ExtUtils::ParseXS' => '3.42', 'ExtUtils::ParseXS::Constants'=> '3.42', 'ExtUtils::ParseXS::CountLines'=> '3.42', 'ExtUtils::ParseXS::Eval'=> '3.42', 'ExtUtils::ParseXS::Utilities'=> '3.42', 'File::Copy' => '2.35', 'File::Find' => '1.38', 'File::Spec' => '3.80', 'File::Spec::AmigaOS' => '3.80', 'File::Spec::Cygwin' => '3.80', 'File::Spec::Epoc' => '3.80', 'File::Spec::Functions' => '3.80', 'File::Spec::Mac' => '3.80', 'File::Spec::OS2' => '3.80', 'File::Spec::Unix' => '3.80', 'File::Spec::VMS' => '3.80', 'File::Spec::Win32' => '3.80', 'Module::CoreList' => '5.20201220', 'Module::CoreList::Utils'=> '5.20201220', 'Net::Cmd' => '3.12', 'Net::Config' => '3.12', 'Net::Domain' => '3.12', 'Net::FTP' => '3.12', 'Net::FTP::A' => '3.12', 'Net::FTP::E' => '3.12', 'Net::FTP::I' => '3.12', 'Net::FTP::L' => '3.12', 'Net::FTP::dataconn' => '3.12', 'Net::NNTP' => '3.12', 'Net::Netrc' => '3.12', 'Net::POP3' => '3.12', 'Net::SMTP' => '3.12', 'Net::Time' => '3.12', 'ODBM_File' => '1.17', 'Opcode' => '1.49', 'POSIX' => '1.96', 'PerlIO::via::QuotedPrint'=> '0.09', 'TAP::Base' => '3.43', 'TAP::Formatter::Base' => '3.43', 'TAP::Formatter::Color' => '3.43', 'TAP::Formatter::Console'=> '3.43', 'TAP::Formatter::Console::ParallelSession'=> '3.43', 'TAP::Formatter::Console::Session'=> '3.43', 'TAP::Formatter::File' => '3.43', 'TAP::Formatter::File::Session'=> '3.43', 'TAP::Formatter::Session'=> '3.43', 'TAP::Harness' => '3.43', 'TAP::Harness::Env' => '3.43', 'TAP::Object' => '3.43', 'TAP::Parser' => '3.43', 'TAP::Parser::Aggregator'=> '3.43', 'TAP::Parser::Grammar' => '3.43', 'TAP::Parser::Iterator' => '3.43', 'TAP::Parser::Iterator::Array'=> '3.43', 'TAP::Parser::Iterator::Process'=> '3.43', 'TAP::Parser::Iterator::Stream'=> '3.43', 'TAP::Parser::IteratorFactory'=> '3.43', 'TAP::Parser::Multiplexer'=> '3.43', 'TAP::Parser::Result' => '3.43', 'TAP::Parser::Result::Bailout'=> '3.43', 'TAP::Parser::Result::Comment'=> '3.43', 'TAP::Parser::Result::Plan'=> '3.43', 'TAP::Parser::Result::Pragma'=> '3.43', 'TAP::Parser::Result::Test'=> '3.43', 'TAP::Parser::Result::Unknown'=> '3.43', 'TAP::Parser::Result::Version'=> '3.43', 'TAP::Parser::Result::YAML'=> '3.43', 'TAP::Parser::ResultFactory'=> '3.43', 'TAP::Parser::Scheduler'=> '3.43', 'TAP::Parser::Scheduler::Job'=> '3.43', 'TAP::Parser::Scheduler::Spinner'=> '3.43', 'TAP::Parser::Source' => '3.43', 'TAP::Parser::SourceHandler'=> '3.43', 'TAP::Parser::SourceHandler::Executable'=> '3.43', 'TAP::Parser::SourceHandler::File'=> '3.43', 'TAP::Parser::SourceHandler::Handle'=> '3.43', 'TAP::Parser::SourceHandler::Perl'=> '3.43', 'TAP::Parser::SourceHandler::RawTAP'=> '3.43', 'TAP::Parser::YAMLish::Reader'=> '3.43', 'TAP::Parser::YAMLish::Writer'=> '3.43', 'Test::Harness' => '3.43', 'Text::Balanced' => '2.04', 'Time::HiRes' => '1.9766', 'XS::APItest' => '1.14', 'warnings' => '1.49', }, removed => { } }, 5.033006 => { delta_from => 5.033005, changed => { 'B::Op_private' => '5.033006', 'Carp' => '1.52', 'Carp::Heavy' => '1.52', 'Compress::Raw::Bzip2' => '2.100', 'Compress::Raw::Zlib' => '2.100', 'Compress::Zlib' => '2.100', 'Config' => '5.033006', 'DynaLoader' => '1.50', 'ExtUtils::Command' => '7.58', 'ExtUtils::Command::MM' => '7.58', 'ExtUtils::Liblist' => '7.58', 'ExtUtils::Liblist::Kid'=> '7.58', 'ExtUtils::MM' => '7.58', 'ExtUtils::MM_AIX' => '7.58', 'ExtUtils::MM_Any' => '7.58', 'ExtUtils::MM_BeOS' => '7.58', 'ExtUtils::MM_Cygwin' => '7.58', 'ExtUtils::MM_DOS' => '7.58', 'ExtUtils::MM_Darwin' => '7.58', 'ExtUtils::MM_MacOS' => '7.58', 'ExtUtils::MM_NW5' => '7.58', 'ExtUtils::MM_OS2' => '7.58', 'ExtUtils::MM_OS390' => '7.58', 'ExtUtils::MM_QNX' => '7.58', 'ExtUtils::MM_UWIN' => '7.58', 'ExtUtils::MM_Unix' => '7.58', 'ExtUtils::MM_VMS' => '7.58', 'ExtUtils::MM_VOS' => '7.58', 'ExtUtils::MM_Win32' => '7.58', 'ExtUtils::MM_Win95' => '7.58', 'ExtUtils::MY' => '7.58', 'ExtUtils::MakeMaker' => '7.58', 'ExtUtils::MakeMaker::Config'=> '7.58', 'ExtUtils::MakeMaker::Locale'=> '7.58', 'ExtUtils::MakeMaker::version'=> '7.58', 'ExtUtils::MakeMaker::version::regex'=> '7.58', 'ExtUtils::Manifest' => '1.73', 'ExtUtils::Mkbootstrap' => '7.58', 'ExtUtils::Mksymlists' => '7.58', 'ExtUtils::testlib' => '7.58', 'GDBM_File' => '1.19', 'IO' => '1.45', 'IO::Compress::Adapter::Bzip2'=> '2.100', 'IO::Compress::Adapter::Deflate'=> '2.100', 'IO::Compress::Adapter::Identity'=> '2.100', 'IO::Compress::Base' => '2.100', 'IO::Compress::Base::Common'=> '2.100', 'IO::Compress::Bzip2' => '2.100', 'IO::Compress::Deflate' => '2.100', 'IO::Compress::Gzip' => '2.100', 'IO::Compress::Gzip::Constants'=> '2.100', 'IO::Compress::RawDeflate'=> '2.100', 'IO::Compress::Zip' => '2.100', 'IO::Compress::Zip::Constants'=> '2.100', 'IO::Compress::Zlib::Constants'=> '2.100', 'IO::Compress::Zlib::Extra'=> '2.100', 'IO::Dir' => '1.45', 'IO::File' => '1.45', 'IO::Handle' => '1.45', 'IO::Pipe' => '1.45', 'IO::Poll' => '1.45', 'IO::Seekable' => '1.45', 'IO::Select' => '1.45', 'IO::Socket' => '1.45', 'IO::Socket::INET' => '1.45', 'IO::Socket::UNIX' => '1.45', 'IO::Uncompress::Adapter::Bunzip2'=> '2.100', 'IO::Uncompress::Adapter::Identity'=> '2.100', 'IO::Uncompress::Adapter::Inflate'=> '2.100', 'IO::Uncompress::AnyInflate'=> '2.100', 'IO::Uncompress::AnyUncompress'=> '2.100', 'IO::Uncompress::Base' => '2.100', 'IO::Uncompress::Bunzip2'=> '2.100', 'IO::Uncompress::Gunzip'=> '2.100', 'IO::Uncompress::Inflate'=> '2.100', 'IO::Uncompress::RawInflate'=> '2.100', 'IO::Uncompress::Unzip' => '2.100', 'Module::CoreList' => '5.20210120', 'Module::CoreList::Utils'=> '5.20210120', 'Net::Cmd' => '3.13', 'Net::Config' => '3.13', 'Net::Domain' => '3.13', 'Net::FTP' => '3.13', 'Net::FTP::A' => '3.13', 'Net::FTP::E' => '3.13', 'Net::FTP::I' => '3.13', 'Net::FTP::L' => '3.13', 'Net::FTP::dataconn' => '3.13', 'Net::NNTP' => '3.13', 'Net::Netrc' => '3.13', 'Net::POP3' => '3.13', 'Net::SMTP' => '3.13', 'Net::Time' => '3.13', 'POSIX' => '1.97', 'Socket' => '2.031', 'XS::APItest' => '1.15', 'feature' => '1.62', 'warnings' => '1.50', }, removed => { } }, 5.032001 => { delta_from => 5.032000, changed => { 'B::Op_private' => '5.032001', 'Config' => '5.032001', 'Data::Dumper' => '2.174_01', 'DynaLoader' => '1.47_01', 'ExtUtils::Liblist::Kid'=> '7.44_01', 'Module::CoreList' => '5.20210123', 'Module::CoreList::Utils'=> '5.20210123', 'Opcode' => '1.48', 'Safe' => '2.41_01', 'Win32API::File::inc::ExtUtils::Myconst2perl'=> '1', }, removed => { } }, 5.033007 => { delta_from => 5.033006, changed => { 'B::Deparse' => '1.56', 'B::Op_private' => '5.033007', 'Config' => '5.033007', 'ExtUtils::CBuilder' => '0.280236', 'ExtUtils::CBuilder::Base'=> '0.280236', 'ExtUtils::CBuilder::Platform::Unix'=> '0.280236', 'ExtUtils::CBuilder::Platform::VMS'=> '0.280236', 'ExtUtils::CBuilder::Platform::Windows'=> '0.280236', 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280236', 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280236', 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280236', 'ExtUtils::CBuilder::Platform::aix'=> '0.280236', 'ExtUtils::CBuilder::Platform::android'=> '0.280236', 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280236', 'ExtUtils::CBuilder::Platform::darwin'=> '0.280236', 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280236', 'ExtUtils::CBuilder::Platform::os2'=> '0.280236', 'ExtUtils::Command' => '7.60', 'ExtUtils::Command::MM' => '7.60', 'ExtUtils::Liblist' => '7.60', 'ExtUtils::Liblist::Kid'=> '7.60', 'ExtUtils::MM' => '7.60', 'ExtUtils::MM_AIX' => '7.60', 'ExtUtils::MM_Any' => '7.60', 'ExtUtils::MM_BeOS' => '7.60', 'ExtUtils::MM_Cygwin' => '7.60', 'ExtUtils::MM_DOS' => '7.60', 'ExtUtils::MM_Darwin' => '7.60', 'ExtUtils::MM_MacOS' => '7.60', 'ExtUtils::MM_NW5' => '7.60', 'ExtUtils::MM_OS2' => '7.60', 'ExtUtils::MM_OS390' => '7.60', 'ExtUtils::MM_QNX' => '7.60', 'ExtUtils::MM_UWIN' => '7.60', 'ExtUtils::MM_Unix' => '7.60', 'ExtUtils::MM_VMS' => '7.60', 'ExtUtils::MM_VOS' => '7.60', 'ExtUtils::MM_Win32' => '7.60', 'ExtUtils::MM_Win95' => '7.60', 'ExtUtils::MY' => '7.60', 'ExtUtils::MakeMaker' => '7.60', 'ExtUtils::MakeMaker::Config'=> '7.60', 'ExtUtils::MakeMaker::Locale'=> '7.60', 'ExtUtils::MakeMaker::version'=> '7.60', 'ExtUtils::MakeMaker::version::regex'=> '7.60', 'ExtUtils::Mkbootstrap' => '7.60', 'ExtUtils::Mksymlists' => '7.60', 'ExtUtils::PL2Bat' => '0.004', 'ExtUtils::testlib' => '7.60', 'Fatal' => '2.34', 'File::Find' => '1.39', 'Hash::Util' => '0.25', 'IO' => '1.46', 'IO::Dir' => '1.46', 'IO::File' => '1.46', 'IO::Handle' => '1.46', 'IO::Pipe' => '1.46', 'IO::Poll' => '1.46', 'IO::Seekable' => '1.46', 'IO::Select' => '1.46', 'IO::Socket' => '1.46', 'IO::Socket::INET' => '1.46', 'IO::Socket::UNIX' => '1.46', 'JSON::PP' => '4.06', 'JSON::PP::Boolean' => '4.06', 'Module::CoreList' => '5.20210220', 'Module::CoreList::Utils'=> '5.20210220', 'Opcode' => '1.50', 'PerlIO::encoding' => '0.30', 'Time::HiRes' => '1.9767', 'autodie' => '2.34', 'autodie::Scope::Guard' => '2.34', 'autodie::Scope::GuardStack'=> '2.34', 'autodie::Util' => '2.34', 'autodie::exception' => '2.34', 'autodie::exception::system'=> '2.34', 'autodie::hints' => '2.34', 'autodie::skip' => '2.34', 'feature' => '1.63', 'mro' => '1.25_001', 'warnings' => '1.51', }, removed => { } }, 5.033008 => { delta_from => 5.033007, changed => { 'B::Op_private' => '5.033008', 'Compress::Raw::Bzip2' => '2.101', 'Compress::Raw::Zlib' => '2.101', 'Compress::Zlib' => '2.102', 'Config' => '5.033008', 'Data::Dumper' => '2.177', 'IO::Compress::Adapter::Bzip2'=> '2.102', 'IO::Compress::Adapter::Deflate'=> '2.102', 'IO::Compress::Adapter::Identity'=> '2.102', 'IO::Compress::Base' => '2.102', 'IO::Compress::Base::Common'=> '2.102', 'IO::Compress::Bzip2' => '2.102', 'IO::Compress::Deflate' => '2.102', 'IO::Compress::Gzip' => '2.102', 'IO::Compress::Gzip::Constants'=> '2.102', 'IO::Compress::RawDeflate'=> '2.102', 'IO::Compress::Zip' => '2.102', 'IO::Compress::Zip::Constants'=> '2.102', 'IO::Compress::Zlib::Constants'=> '2.102', 'IO::Compress::Zlib::Extra'=> '2.102', 'IO::Uncompress::Adapter::Bunzip2'=> '2.102', 'IO::Uncompress::Adapter::Identity'=> '2.102', 'IO::Uncompress::Adapter::Inflate'=> '2.102', 'IO::Uncompress::AnyInflate'=> '2.102', 'IO::Uncompress::AnyUncompress'=> '2.102', 'IO::Uncompress::Base' => '2.102', 'IO::Uncompress::Bunzip2'=> '2.102', 'IO::Uncompress::Gunzip'=> '2.102', 'IO::Uncompress::Inflate'=> '2.102', 'IO::Uncompress::RawInflate'=> '2.102', 'IO::Uncompress::Unzip' => '2.102', 'Module::CoreList' => '5.20210320', 'Module::CoreList::Utils'=> '5.20210320', 'Pod::Html' => '1.27', 'Win32' => '0.57', }, removed => { } }, 5.033009 => { delta_from => 5.033008, changed => { 'B::Op_private' => '5.033009', 'Config' => '5.033009', 'Data::Dumper' => '2.178', 'ExtUtils::Command' => '7.62', 'ExtUtils::Command::MM' => '7.62', 'ExtUtils::Liblist' => '7.62', 'ExtUtils::Liblist::Kid'=> '7.62', 'ExtUtils::MM' => '7.62', 'ExtUtils::MM_AIX' => '7.62', 'ExtUtils::MM_Any' => '7.62', 'ExtUtils::MM_BeOS' => '7.62', 'ExtUtils::MM_Cygwin' => '7.62', 'ExtUtils::MM_DOS' => '7.62', 'ExtUtils::MM_Darwin' => '7.62', 'ExtUtils::MM_MacOS' => '7.62', 'ExtUtils::MM_NW5' => '7.62', 'ExtUtils::MM_OS2' => '7.62', 'ExtUtils::MM_OS390' => '7.62', 'ExtUtils::MM_QNX' => '7.62', 'ExtUtils::MM_UWIN' => '7.62', 'ExtUtils::MM_Unix' => '7.62', 'ExtUtils::MM_VMS' => '7.62', 'ExtUtils::MM_VOS' => '7.62', 'ExtUtils::MM_Win32' => '7.62', 'ExtUtils::MM_Win95' => '7.62', 'ExtUtils::MY' => '7.62', 'ExtUtils::MakeMaker' => '7.62', 'ExtUtils::MakeMaker::Config'=> '7.62', 'ExtUtils::MakeMaker::Locale'=> '7.62', 'ExtUtils::MakeMaker::version'=> '7.62', 'ExtUtils::MakeMaker::version::regex'=> '7.62', 'ExtUtils::Mkbootstrap' => '7.62', 'ExtUtils::Mksymlists' => '7.62', 'ExtUtils::ParseXS' => '3.43', 'ExtUtils::ParseXS::Constants'=> '3.43', 'ExtUtils::ParseXS::CountLines'=> '3.43', 'ExtUtils::ParseXS::Eval'=> '3.43', 'ExtUtils::ParseXS::Utilities'=> '3.43', 'ExtUtils::Typemaps' => '3.43', 'ExtUtils::Typemaps::Cmd'=> '3.43', 'ExtUtils::Typemaps::InputMap'=> '3.43', 'ExtUtils::Typemaps::OutputMap'=> '3.43', 'ExtUtils::Typemaps::Type'=> '3.43', 'ExtUtils::testlib' => '7.62', 'Module::CoreList' => '5.20210420', 'Module::CoreList::Utils'=> '5.20210420', 'NEXT' => '0.68', 'XS::APItest' => '1.16', 'feature' => '1.64', 'perlfaq' => '5.20210411', }, removed => { } }, 5.034000 => { delta_from => 5.033009, changed => { 'B::Op_private' => '5.034000', 'Config' => '5.034', 'Data::Dumper' => '2.179', 'Module::CoreList' => '5.20210520', 'Module::CoreList::Utils'=> '5.20210520', 'experimental' => '0.024', }, 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 => { } }, 5.029006 => { delta_from => 5.029005, changed => { }, removed => { } }, 5.029007 => { delta_from => 5.029006, changed => { }, removed => { } }, 5.029008 => { delta_from => 5.029007, changed => { }, removed => { } }, 5.029009 => { delta_from => 5.029008, changed => { }, removed => { } }, 5.028002 => { delta_from => 5.028001, changed => { }, removed => { } }, 5.029010 => { delta_from => 5.029009, changed => { }, removed => { } }, 5.030000 => { delta_from => 5.02901, changed => { }, removed => { } }, 5.031000 => { delta_from => 5.030000, changed => { }, removed => { } }, 5.031001 => { delta_from => 5.031000, changed => { }, removed => { } }, 5.031002 => { delta_from => 5.031001, changed => { }, removed => { } }, 5.031003 => { delta_from => 5.031002, changed => { }, removed => { } }, 5.031004 => { delta_from => 5.031003, changed => { }, removed => { } }, 5.031005 => { delta_from => 5.031004, changed => { }, removed => { } }, 5.030001 => { delta_from => 5.030000, changed => { }, removed => { } }, 5.031006 => { delta_from => 5.031005, changed => { }, removed => { } }, 5.031007 => { delta_from => 5.031006, changed => { }, removed => { } }, 5.031008 => { delta_from => 5.031007, changed => { }, removed => { } }, 5.031009 => { delta_from => 5.031008, changed => { }, removed => { } }, 5.030002 => { delta_from => 5.030001, changed => { }, removed => { } }, 5.031010 => { delta_from => 5.031009, changed => { }, removed => { } }, 5.031011 => { delta_from => 5.03101, changed => { }, removed => { } }, 5.028003 => { delta_from => 5.028002, changed => { }, removed => { } }, 5.030003 => { delta_from => 5.030002, changed => { }, removed => { } }, 5.032000 => { delta_from => 5.031011, changed => { }, removed => { } }, 5.033000 => { delta_from => 5.032, changed => { }, removed => { } }, 5.033001 => { delta_from => 5.033000, changed => { }, removed => { } }, 5.033002 => { delta_from => 5.033001, changed => { }, removed => { } }, 5.033003 => { delta_from => 5.033002, changed => { }, removed => { } }, 5.033004 => { delta_from => 5.033003, changed => { }, removed => { } }, 5.033005 => { delta_from => 5.033004, changed => { }, removed => { } }, 5.033006 => { delta_from => 5.033005, changed => { }, removed => { } }, 5.032001 => { delta_from => 5.032, changed => { }, removed => { } }, 5.033007 => { delta_from => 5.033006, changed => { }, removed => { } }, 5.033008 => { delta_from => 5.033007, changed => { }, removed => { } }, 5.033009 => { delta_from => 5.033008, changed => { }, removed => { } }, 5.034000 => { delta_from => 5.033009, 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_OS390' => '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::PL2Bat' => '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::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::Man' => 'cpan', 'Pod::ParseLink' => '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::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::JustPod' => '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::InterceptResult'=> 'cpan', 'Test2::API::InterceptResult::Event'=> 'cpan', 'Test2::API::InterceptResult::Facet'=> 'cpan', 'Test2::API::InterceptResult::Hub'=> 'cpan', 'Test2::API::InterceptResult::Squasher'=> '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::Info::Table'=> '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', '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' => 'https://github.com/pmqs/Compress-Raw-Bzip2/issues', 'Compress::Raw::Zlib' => 'https://github.com/pmqs/Compress-Raw-Zlib/issues', 'Compress::Zlib' => 'https://github.com/pmqs/IO-Compress/issues', 'Config::Perl::V' => 'https://github.com/Tux/Config-Perl-V/issues', 'DB_File' => 'https://github.com/pmqs/DB_File/issues', 'Digest' => 'https://github.com/Dual-Life/digest/issues', 'Digest::MD5' => 'https://github.com/Dual-Life/digest-md5/issues', 'Digest::SHA' => undef, 'Digest::base' => 'https://github.com/Dual-Life/digest/issues', 'Digest::file' => 'https://github.com/Dual-Life/digest/issues', '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' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::Command::MM' => 'https://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' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::Liblist::Kid'=> 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_AIX' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_Any' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_BeOS' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_Cygwin' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_DOS' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_Darwin' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_MacOS' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_NW5' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_OS2' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_OS390' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_QNX' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_UWIN' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_Unix' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_VMS' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_VOS' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_Win32' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MM_Win95' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MY' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MakeMaker' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MakeMaker::Config'=> 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MakeMaker::Locale'=> 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MakeMaker::version'=> 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::MakeMaker::version::regex'=> 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::Manifest' => 'http://github.com/Perl-Toolchain-Gang/ExtUtils-Manifest/issues', 'ExtUtils::Mkbootstrap' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::Mksymlists' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'ExtUtils::PL2Bat' => 'https://github.com/Perl-Toolchain-Gang/extutils-pl2bat/issues', 'ExtUtils::Packlist' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-Install', 'ExtUtils::testlib' => 'https://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker', 'Fatal' => 'https://github.com/pjf/autodie/issues', 'File::Fetch' => undef, 'File::GlobMapper' => 'https://github.com/pmqs/IO-Compress/issues', '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'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Adapter::Deflate'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Adapter::Identity'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Base' => 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Base::Common'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Bzip2' => 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Deflate' => 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Gzip' => 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Gzip::Constants'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::RawDeflate'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Zip' => 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Zip::Constants'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Zlib::Constants'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Compress::Zlib::Extra'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Socket::IP' => undef, 'IO::Uncompress::Adapter::Bunzip2'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::Adapter::Identity'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::Adapter::Inflate'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::AnyInflate'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::AnyUncompress'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::Base' => 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::Bunzip2'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::Gunzip'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::Inflate'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::RawInflate'=> 'https://github.com/pmqs/IO-Compress/issues', 'IO::Uncompress::Unzip' => 'https://github.com/pmqs/IO-Compress/issues', 'IO::Zlib' => 'https://github.com/tomhughes/IO-Zlib/issues', 'IPC::Cmd' => undef, 'IPC::Msg' => undef, 'IPC::Semaphore' => undef, 'IPC::SharedMem' => undef, 'IPC::SysV' => undef, 'JSON::PP' => 'https://github.com/makamaka/JSON-PP/issues', 'JSON::PP::Boolean' => 'https://github.com/makamaka/JSON-PP/issues', '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' => 'https://github.com/Dual-Life/mime-base64/issues', 'MIME::QuotedPrint' => 'https://github.com/Dual-Life/mime-base64/issues', 'Math::BigFloat' => undef, 'Math::BigFloat::Trace' => undef, 'Math::BigInt' => undef, 'Math::BigInt::Calc' => 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::Man' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators', 'Pod::ParseLink' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators', '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::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::JustPod' => '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' => 'https://github.com/Dual-Life/Pod-Usage/issues', '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::InterceptResult'=> 'http://github.com/Test-More/test-more/issues', 'Test2::API::InterceptResult::Event'=> 'http://github.com/Test-More/test-more/issues', 'Test2::API::InterceptResult::Facet'=> 'http://github.com/Test-More/test-more/issues', 'Test2::API::InterceptResult::Hub'=> 'http://github.com/Test-More/test-more/issues', 'Test2::API::InterceptResult::Squasher'=> '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::Info::Table'=> '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' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Tie-RefHash', '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' => 'https://github.com/perl-libwin32/win32/issues', 'Win32API::File' => undef, 'autodie' => 'https://github.com/pjf/autodie/issues', 'autodie::Scope::Guard' => 'https://github.com/pjf/autodie/issues', 'autodie::Scope::GuardStack'=> 'https://github.com/pjf/autodie/issues', 'autodie::Util' => 'https://github.com/pjf/autodie/issues', 'autodie::exception' => 'https://github.com/pjf/autodie/issues', 'autodie::exception::system'=> 'https://github.com/pjf/autodie/issues', 'autodie::hints' => 'https://github.com/pjf/autodie/issues', 'autodie::skip' => 'https://github.com/pjf/autodie/issues', '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__ PK ! ���� 5.34.0/Module/Loaded.pmnu �[��� package 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; PK ! ⒙3� � 5.34.0/Module/CoreList.podnu �[��� =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 L<mailto:perl5-porters@perl.org>. rt.cpan.org appears to automatically provide a URL for CPAN modules; any value given here overrides the default: L<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 PK ! ������ �� 5.34.0/Module/Metadata.pmnu �[��� # -*- 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.000036-4-g435a294 # 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.000037'; 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->abs2rel( $file, $dir ); my @path = File::Spec->splitdir( $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 decode_pod ); @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; my $encoding = ''; 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} ) { if ( $self->{decode_pod} && $line =~ /^=encoding ([\w-]+)/ ) { $encoding = $1; } $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; } if ( $self->{decode_pod} && $encoding ) { require Encode; $_ = Encode::decode( $encoding, $_ ) for values %pod; } $self->{versions} = \%vers; $self->{packages} = \@packages; $self->{pod} = \%pod; $self->{pod_headings} = \@pod; } sub __uniq (@) { my (%seen, $key); grep !$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.000037 =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, decode_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. Alternatively, if C<decode_pod> is set, it will decode the collected pod sections according to the C<=encoding> declaration. =head2 C<< new_from_handle($handle, $filename, collect_pod => 1, decode_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, decode_pod => 1) >> 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> and C<decode_pod> arguments 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 Tomas Doran Olivier Mengué Graham Knop tokuhirom Tatsuhiko Miyagawa Christian Walde Leon Timmermans Peter Rabbitson Steve Hay Jerry D. Hedden Craig A. Berry Mitchell Steinbrunner Edward Zborowski Gareth Harper James Raspass 'BinGOs' Williams Josh Jore Kent Fredric =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 * Tomas Doran <bobtfish@bobtfish.net> =item * Olivier Mengué <dolmen@cpan.org> =item * Graham Knop <haarg@haarg.org> =item * tokuhirom <tokuhirom@gmail.com> =item * Tatsuhiko Miyagawa <miyagawa@bulknews.net> =item * Christian Walde <walde.christian@googlemail.com> =item * Leon Timmermans <fawaka@gmail.com> =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> =item * Kent Fredric <kentnl@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 PK ! =n�_� _� 5.34.0/Module/CoreList/Utils.pmnu �[��� package Module::CoreList::Utils; use strict; use warnings; use Module::CoreList; our $VERSION = '5.20210520'; 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 => { } }, 5.029006 => { delta_from => 5.029005, changed => { }, removed => { } }, 5.029007 => { delta_from => 5.029006, changed => { }, removed => { } }, 5.029008 => { delta_from => 5.029007, changed => { }, removed => { } }, 5.029009 => { delta_from => 5.029008, changed => { }, removed => { } }, 5.028002 => { delta_from => 5.028001, changed => { }, removed => { } }, 5.029010 => { delta_from => 5.029009, changed => { }, removed => { } }, 5.030000 => { delta_from => 5.029010, changed => { }, removed => { } }, 5.031000 => { delta_from => 5.03, changed => { }, removed => { } }, 5.031001 => { delta_from => 5.031, changed => { }, removed => { 'podselect' => 1, } }, 5.031002 => { delta_from => 5.031001, changed => { }, removed => { } }, 5.031003 => { delta_from => 5.031002, changed => { }, removed => { } }, 5.031004 => { delta_from => 5.031003, changed => { }, removed => { } }, 5.031005 => { delta_from => 5.031004, changed => { }, removed => { } }, 5.030001 => { delta_from => 5.03, changed => { }, removed => { } }, 5.031006 => { delta_from => 5.031005, changed => { 'streamzip' => '1', }, removed => { } }, 5.031007 => { delta_from => 5.031006, changed => { }, removed => { } }, 5.031008 => { delta_from => 5.031007, changed => { }, removed => { } }, 5.031009 => { delta_from => 5.031008, changed => { }, removed => { } }, 5.030002 => { delta_from => 5.030001, changed => { }, removed => { } }, 5.031010 => { delta_from => 5.031009, changed => { }, removed => { } }, 5.031011 => { delta_from => 5.031010, changed => { }, removed => { } }, 5.028003 => { delta_from => 5.028002, changed => { }, removed => { } }, 5.030003 => { delta_from => 5.030002, changed => { }, removed => { } }, 5.032000 => { delta_from => 5.031011, changed => { }, removed => { } }, 5.033000 => { delta_from => 5.032, changed => { }, removed => { } }, 5.033001 => { delta_from => 5.033000, changed => { }, removed => { } }, 5.033002 => { delta_from => 5.033001, changed => { }, removed => { } }, 5.033003 => { delta_from => 5.033002, changed => { }, removed => { } }, 5.033004 => { delta_from => 5.033003, changed => { }, removed => { } }, 5.033005 => { delta_from => 5.033004, changed => { }, removed => { } }, 5.033006 => { delta_from => 5.033005, changed => { }, removed => { } }, 5.032001 => { delta_from => 5.032000, changed => { }, removed => { } }, 5.033007 => { delta_from => 5.033006, changed => { }, removed => { } }, 5.033008 => { delta_from => 5.033007, changed => { }, removed => { } }, 5.033009 => { delta_from => 5.033008, changed => { }, removed => { } }, 5.034000 => { delta_from => 5.033009, 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 PK ! Ņ�sK sK ! 5.34.0/Module/Load/Conditional.pmnu �[��� package 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.74'; $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 = FileHandle->new(); 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 { local $SIG{__WARN__} = sub {}; my $ver = eval { my $mod_info = Module::Metadata->new_from_handle( $fh, $filename ); $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; no warnings 'once'; $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 PK ! .JK�R �R 5.34.0/bignum.pmnu �[��� package bignum; use 5.010; use strict; use warnings; our $VERSION = '0.51'; use Exporter; our @ISA = qw( bigint ); our @EXPORT_OK = qw( PI e bpi bexp hex oct ); our @EXPORT = qw( inf NaN ); use overload; use bigint (); ############################################################################## BEGIN { *inf = \&bigint::inf; *NaN = \&bigint::NaN; *hex = \&bigint::hex; *oct = \&bigint::oct; } # These are all alike, and thus faked by AUTOLOAD my @faked = qw/round_mode accuracy precision div_scale/; our ($AUTOLOAD, $_lite); # _lite for testsuite sub AUTOLOAD { my $name = $AUTOLOAD; $name =~ s/.*:://; # split package no strict 'refs'; foreach my $n (@faked) { if ($n eq $name) { *{"bignum::$name"} = sub { my $self = shift; no strict 'refs'; if (defined $_[0]) { Math::BigInt->$name($_[0]); return Math::BigFloat->$name($_[0]); } return Math::BigInt->$name(); }; return &$name; } } # delayed load of Carp and avoid recursion require Carp; Carp::croak ("Can't call bignum\-\>$name, not a valid method"); } sub unimport { $^H{bignum} = undef; # no longer in effect overload::remove_constant('binary', '', 'float', '', 'integer'); } sub in_effect { my $level = shift || 0; my $hinthash = (caller($level))[10]; $hinthash->{bignum}; } ############################################################################# sub import { my $self = shift; $^H{bignum} = 1; # we are in effect # for newer Perls override hex() and oct() with a lexical version: if ($] > 5.009004) { bigint::_override(); } # some defaults my $lib = ''; my $lib_kind = 'try'; my $upgrade = 'Math::BigFloat'; my $downgrade = 'Math::BigInt'; my @import = (':constant'); # drive it w/ constant my @a = @_; my $l = scalar @_; my $j = 0; my ($ver, $trace); # version? trace? my ($a, $p); # accuracy, precision for (my $i = 0; $i < $l; $i++, $j++) { if ($_[$i] eq 'upgrade') { # this causes upgrading $upgrade = $_[$i + 1]; # or undef to disable my $s = 2; $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..." splice @a, $j, $s; $j -= $s; $i++; } elsif ($_[$i] eq 'downgrade') { # this causes downgrading $downgrade = $_[$i + 1]; # or undef to disable my $s = 2; $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..." splice @a, $j, $s; $j -= $s; $i++; } elsif ($_[$i] =~ /^(l|lib|try|only)$/) { # this causes a different low lib to take care... $lib_kind = $1; $lib_kind = 'lib' if $lib_kind eq 'l'; $lib = $_[$i + 1] || ''; my $s = 2; $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..." splice @a, $j, $s; $j -= $s; $i++; } elsif ($_[$i] =~ /^(a|accuracy)$/) { $a = $_[$i + 1]; my $s = 2; $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..." splice @a, $j, $s; $j -= $s; $i++; } elsif ($_[$i] =~ /^(p|precision)$/) { $p = $_[$i + 1]; my $s = 2; $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..." splice @a, $j, $s; $j -= $s; $i++; } elsif ($_[$i] =~ /^(v|version)$/) { $ver = 1; splice @a, $j, 1; $j--; } elsif ($_[$i] =~ /^(t|trace)$/) { $trace = 1; splice @a, $j, 1; $j--; } elsif ($_[$i] !~ /^(PI|e|bexp|bpi|hex|oct)\z/) { die ("unknown option $_[$i]"); } } my $class; $_lite = 0; # using M::BI::L ? if ($trace) { require Math::BigInt::Trace; $class = 'Math::BigInt::Trace'; $upgrade = 'Math::BigFloat::Trace'; } else { # see if we can find Math::BigInt::Lite if (!defined $a && !defined $p) { # rounding won't work to well local @INC = @INC; pop @INC if $INC[-1] eq '.'; if (eval { require Math::BigInt::Lite; 1 }) { @import = (); # :constant in Lite, not MBI Math::BigInt::Lite->import(':constant'); $_lite = 1; # signal okay } } require Math::BigInt if $_lite == 0; # not already loaded? $class = 'Math::BigInt'; # regardless of MBIL or not } push @import, $lib_kind => $lib if $lib ne ''; # Math::BigInt::Trace or plain Math::BigInt $class->import(@import, upgrade => $upgrade); if ($trace) { require Math::BigFloat::Trace; $class = 'Math::BigFloat::Trace'; $downgrade = 'Math::BigInt::Trace'; } else { require Math::BigFloat; $class = 'Math::BigFloat'; } $class->import(':constant', 'downgrade', $downgrade); bignum->accuracy($a) if defined $a; bignum->precision($p) if defined $p; if ($ver) { print "bignum\t\t\t v$VERSION\n"; print "Math::BigInt::Lite\t v$Math::BigInt::Lite::VERSION\n" if $_lite; print "Math::BigInt\t\t v$Math::BigInt::VERSION"; my $config = Math::BigInt->config(); print " lib => $config->{lib} v$config->{lib_version}\n"; print "Math::BigFloat\t\t v$Math::BigFloat::VERSION\n"; exit; } # Take care of octal/hexadecimal constants overload::constant binary => sub { bigint::_binary_constant(shift); }; # if another big* was already loaded: my ($package) = caller(); no strict 'refs'; if (!defined *{"${package}::inf"}) { $self->export_to_level(1, $self, @a); # export inf and NaN } } sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); } sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); } sub bpi ($) { Math::BigFloat->bpi(@_); } sub bexp ($$) { my $x = Math::BigFloat->new($_[0]); $x->bexp($_[1]); } 1; __END__ =pod =head1 NAME bignum - Transparent BigNumber support for Perl =head1 SYNOPSIS use bignum; $x = 2 + 4.5,"\n"; # BigFloat 6.5 print 2 ** 512 * 0.1,"\n"; # really is what you think it is print inf * inf,"\n"; # prints inf print NaN * 3,"\n"; # prints NaN { no bignum; print 2 ** 256,"\n"; # a normal Perl scalar now } # for older Perls, import into current package: use bignum qw/hex oct/; print hex("0x1234567890123490"),"\n"; print oct("01234567890123490"),"\n"; =head1 DESCRIPTION All operators (including basic math operations) are overloaded. Integer and floating-point constants are created as proper BigInts or BigFloats, respectively. If you do use bignum; at the top of your script, Math::BigFloat and Math::BigInt will be loaded and any constant number will be converted to an object (Math::BigFloat for floats like 3.1415 and Math::BigInt for integers like 1234). So, the following line: $x = 1234; creates actually a Math::BigInt and stores a reference to in $x. This happens transparently and behind your back, so to speak. You can see this with the following: perl -Mbignum -le 'print ref(1234)' Don't worry if it says Math::BigInt::Lite, bignum and friends will use Lite if it is installed since it is faster for some operations. It will be automatically upgraded to BigInt whenever necessary: perl -Mbignum -le 'print ref(2**255)' This also means it is a bad idea to check for some specific package, since the actual contents of $x might be something unexpected. Due to the transparent way of bignum C<ref()> should not be necessary, anyway. Since Math::BigInt and BigFloat also overload the normal math operations, the following line will still work: perl -Mbignum -le 'print ref(1234+1234)' Since numbers are actually objects, you can call all the usual methods from BigInt/BigFloat on them. This even works to some extent on expressions: perl -Mbignum -le '$x = 1234; print $x->bdec()' perl -Mbignum -le 'print 1234->copy()->binc();' perl -Mbignum -le 'print 1234->copy()->binc->badd(6);' perl -Mbignum -le 'print +(1234)->copy()->binc()' (Note that print doesn't do what you expect if the expression starts with '(' hence the C<+>) You can even chain the operations together as usual: perl -Mbignum -le 'print 1234->copy()->binc->badd(6);' 1241 Under bignum (or bigint or bigrat), Perl will "upgrade" the numbers appropriately. This means that: perl -Mbignum -le 'print 1234+4.5' 1238.5 will work correctly. These mixed cases don't do always work when using Math::BigInt or Math::BigFloat alone, or at least not in the way normal Perl scalars work. If you do want to work with large integers like under C<use integer;>, try C<use bigint;>: perl -Mbigint -le 'print 1234.5+4.5' 1238 There is also C<use bigrat;> which gives you big rationals: perl -Mbigrat -le 'print 1234+4.1' 12381/10 The entire upgrading/downgrading is still experimental and might not work as you expect or may even have bugs. You might get errors like this: Can't use an undefined value as an ARRAY reference at /usr/local/lib/perl5/5.8.0/Math/BigInt/Calc.pm line 864 This means somewhere a routine got a BigFloat/Lite but expected a BigInt (or vice versa) and the upgrade/downgrad path was missing. This is a bug, please report it so that we can fix it. You might consider using just Math::BigInt or Math::BigFloat, since they allow you finer control over what get's done in which module/space. For instance, simple loop counters will be Math::BigInts under C<use bignum;> and this is slower than keeping them as Perl scalars: perl -Mbignum -le 'for ($i = 0; $i < 10; $i++) { print ref($i); }' Please note the following does not work as expected (prints nothing), since overloading of '..' is not yet possible in Perl (as of v5.8.0): perl -Mbignum -le 'for (1..2) { print ref($_); }' =head2 Options bignum recognizes some options that can be passed while loading it via use. The options can (currently) be either a single letter form, or the long form. The following options exist: =over 2 =item a or accuracy This sets the accuracy for all math operations. The argument must be greater than or equal to zero. See Math::BigInt's bround() function for details. perl -Mbignum=a,50 -le 'print sqrt(20)' Note that setting precision and accuracy at the same time is not possible. =item p or precision This sets the precision for all math operations. The argument can be any integer. Negative values mean a fixed number of digits after the dot, while a positive value rounds to this digit left from the dot. 0 or 1 mean round to integer. See Math::BigInt's bfround() function for details. perl -Mbignum=p,-50 -le 'print sqrt(20)' Note that setting precision and accuracy at the same time is not possible. =item t or trace This enables a trace mode and is primarily for debugging bignum or Math::BigInt/Math::BigFloat. =item l or lib Load a different math lib, see L<Math Library>. perl -Mbignum=l,GMP -e 'print 2 ** 512' Currently there is no way to specify more than one library on the command line. This means the following does not work: perl -Mbignum=l,GMP,Pari -e 'print 2 ** 512' This will be hopefully fixed soon ;) =item hex Override the built-in hex() method with a version that can handle big numbers. This overrides it by exporting it to the current package. Under Perl v5.10.0 and higher, this is not so necessary, as hex() is lexically overridden in the current scope whenever the bignum pragma is active. =item oct Override the built-in oct() method with a version that can handle big numbers. This overrides it by exporting it to the current package. Under Perl v5.10.0 and higher, this is not so necessary, as oct() is lexically overridden in the current scope whenever the bigint pragma is active. =item v or version This prints out the name and version of all modules used and then exits. perl -Mbignum=v =back =head2 Methods Beside import() and AUTOLOAD() there are only a few other methods. Since all numbers are now objects, you can use all functions that are part of the BigInt or BigFloat API. It is wise to use only the bxxx() notation, and not the fxxx() notation, though. This makes it possible that the underlying object might morph into a different class than BigFloat. =head2 Caveats But a warning is in order. When using the following to make a copy of a number, only a shallow copy will be made. $x = 9; $y = $x; $x = $y = 7; If you want to make a real copy, use the following: $y = $x->copy(); Using the copy or the original with overloaded math is okay, e.g. the following work: $x = 9; $y = $x; print $x + 1, " ", $y,"\n"; # prints 10 9 but calling any method that modifies the number directly will result in B<both> the original and the copy being destroyed: $x = 9; $y = $x; print $x->badd(1), " ", $y,"\n"; # prints 10 10 $x = 9; $y = $x; print $x->binc(1), " ", $y,"\n"; # prints 10 10 $x = 9; $y = $x; print $x->bmul(2), " ", $y,"\n"; # prints 18 18 Using methods that do not modify, but test the contents works: $x = 9; $y = $x; $z = 9 if $x->is_zero(); # works fine See the documentation about the copy constructor and C<=> in overload, as well as the documentation in BigInt for further details. =over 2 =item inf() A shortcut to return Math::BigInt->binf(). Useful because Perl does not always handle bareword C<inf> properly. =item NaN() A shortcut to return Math::BigInt->bnan(). Useful because Perl does not always handle bareword C<NaN> properly. =item e # perl -Mbignum=e -wle 'print e' Returns Euler's number C<e>, aka exp(1). =item PI() # perl -Mbignum=PI -wle 'print PI' Returns PI. =item bexp() bexp($power,$accuracy); Returns Euler's number C<e> raised to the appropriate power, to the wanted accuracy. Example: # perl -Mbignum=bexp -wle 'print bexp(1,80)' =item bpi() bpi($accuracy); Returns PI to the wanted accuracy. Example: # perl -Mbignum=bpi -wle 'print bpi(80)' =item upgrade() Return the class that numbers are upgraded to, is in fact returning C<$Math::BigInt::upgrade>. =item in_effect() use bignum; print "in effect\n" if bignum::in_effect; # true { no bignum; print "in effect\n" if bignum::in_effect; # false } Returns true or false if C<bignum> is in effect in the current scope. This method only works on Perl v5.9.4 or later. =back =head2 Math Library Math with the numbers is done (by default) by a module called Math::BigInt::Calc. This is equivalent to saying: use bignum lib => 'Calc'; You can change this by using: use bignum lib => 'GMP'; The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc: use bignum lib => 'Foo,Math::BigInt::Bar'; Please see respective module documentation for further details. Using C<lib> warns if none of the specified libraries can be found and L<Math::BigInt> did fall back to one of the default libraries. To suppress this warning, use C<try> instead: use bignum try => 'GMP'; If you want the code to die instead of falling back, use C<only> instead: use bignum only => 'GMP'; =head2 INTERNAL FORMAT The numbers are stored as objects, and their internals might change at anytime, especially between math operations. The objects also might belong to different classes, like Math::BigInt, or Math::BigFloat. Mixing them together, even with normal scalars is not extraordinary, but normal and expected. You should not depend on the internal format, all accesses must go through accessor methods. E.g. looking at $x->{sign} is not a bright idea since there is no guaranty that the object in question has such a hashkey, nor is a hash underneath at all. =head2 SIGN The sign is either '+', '-', 'NaN', '+inf' or '-inf' and stored separately. You can access it with the sign() method. A sign of 'NaN' is used to represent the result when input arguments are not numbers or as a result of 0/0. '+inf' and '-inf' represent plus respectively minus infinity. You will get '+inf' when dividing a positive number by 0, and '-inf' when dividing any negative number by 0. =head1 CAVEATS =over 2 =item Operator vs literal overloading C<bignum> works by overloading handling of integer and floating point literals, converting them to L<Math::BigInt> or L<Math::BigFloat> objects. This means that arithmetic involving only string values or string literals will be performed using Perl's built-in operators. For example: use bignum; my $x = "900000000000000009"; my $y = "900000000000000007"; print $x - $y; will output C<0> on default 32-bit builds, since C<bigrat> never sees the string literals. To ensure the expression is all treated as C<Math::BigInt> or C<BigFloat> objects, use a literal number in the expression: print +(0+$x) - $y; =item in_effect() This method only works on Perl v5.9.4 or later. =item hex()/oct() C<bigint> overrides these routines with versions that can also handle big integer values. Under Perl prior to version v5.9.4, however, this will not happen unless you specifically ask for it with the two import tags "hex" and "oct" - and then it will be global and cannot be disabled inside a scope with "no bigint": use bigint qw/hex oct/; print hex("0x1234567890123456"); { no bigint; print hex("0x1234567890123456"); } The second call to hex() will warn about a non-portable constant. Compare this to: use bigint; # will warn only under older than v5.9.4 print hex("0x1234567890123456"); =back =head1 MODULES USED C<bignum> is just a thin wrapper around various modules of the Math::BigInt family. Think of it as the head of the family, who runs the shop, and orders the others to do the work. The following modules are currently used by bignum: Math::BigInt::Lite (for speed, and only if it is loadable) Math::BigInt Math::BigFloat =head1 EXAMPLES Some cool command line examples to impress the Python crowd ;) perl -Mbignum -le 'print sqrt(33)' perl -Mbignum -le 'print 2*255' perl -Mbignum -le 'print 4.5+2*255' perl -Mbignum -le 'print 3/7 + 5/7 + 8/3' perl -Mbignum -le 'print 123->is_odd()' perl -Mbignum -le 'print log(2)' perl -Mbignum -le 'print exp(1)' perl -Mbignum -le 'print 2 ** 0.5' perl -Mbignum=a,65 -le 'print 2 ** 0.2' perl -Mbignum=a,65,l,GMP -le 'print 7 ** 7777' =head1 BUGS Please report any bugs or feature requests to C<bug-math-bigint at rt.cpan.org>, or through the web interface at L<https://rt.cpan.org/Ticket/Create.html?Queue=bignum> (requires login). We will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc bignum You can also look for information at: =over 4 =item * RT: CPAN's request tracker L<https://rt.cpan.org/Public/Dist/Display.html?Name=bignum> =item * AnnoCPAN: Annotated CPAN documentation L<http://annocpan.org/dist/bignum> =item * CPAN Ratings L<http://cpanratings.perl.org/dist/bignum> =item * Search CPAN L<http://search.cpan.org/dist/bignum/> =item * CPAN Testers Matrix L<http://matrix.cpantesters.org/?dist=bignum> =back =head1 LICENSE This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO L<bigint> and L<bigrat>. L<Math::BigInt>, L<Math::BigFloat>, L<Math::BigRat> and L<Math::Big> as well as L<Math::BigInt::FastCalc>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>. =head1 AUTHORS =over 4 =item * (C) by Tels L<http://bloodgate.com/> in early 2002 - 2007. =item * Maintained by Peter John Acklam E<lt>pjacklam@gmail.com<gt>, 2014-. =back =cut PK ! �Q@Zu Zu 5.34.0/Test.pmnu �[��� require 5.004; package Test; use strict; use Carp; our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, $ntest, $TestLevel); #public-is our ($TESTOUT, $TESTERR, %Program_Lines, $told_about_diff, $ONFAIL, %todo, %history, $planned, @FAILDETAIL); #private-ish # In case a test is run in a persistent environment. sub _reset_globals { %todo = (); %history = (); @FAILDETAIL = (); $ntest = 1; $TestLevel = 0; # how many extra stack frames to skip $planned = 0; } $VERSION = '1.31'; require Exporter; @ISA=('Exporter'); @EXPORT = qw(&plan &ok &skip); @EXPORT_OK = qw($ntest $TESTOUT $TESTERR); $|=1; $TESTOUT = *STDOUT{IO}; $TESTERR = *STDERR{IO}; # Use of this variable is strongly discouraged. It is set mainly to # help test coverage analyzers know which test is running. $ENV{REGRESSION_TEST} = $0; =head1 NAME Test - provides a simple framework for writing test scripts =head1 SYNOPSIS use strict; use Test; # use a BEGIN block so we print our plan before MyModule is loaded BEGIN { plan tests => 14, todo => [3,4] } # load your module... use MyModule; # Helpful notes. All note-lines must start with a "#". print "# I'm testing MyModule version $MyModule::VERSION\n"; ok(0); # failure ok(1); # success ok(0); # ok, expected failure (see todo list, above) ok(1); # surprise success! ok(0,1); # failure: '0' ne '1' ok('broke','fixed'); # failure: 'broke' ne 'fixed' ok('fixed','fixed'); # success: 'fixed' eq 'fixed' ok('fixed',qr/x/); # success: 'fixed' =~ qr/x/ ok(sub { 1+1 }, 2); # success: '2' eq '2' ok(sub { 1+1 }, 3); # failure: '2' ne '3' my @list = (0,0); ok @list, 3, "\@list=".join(',',@list); #extra notes ok 'segmentation fault', '/(?i)success/'; #regex match skip( $^O =~ m/MSWin/ ? "Skip if MSWin" : 0, # whether to skip $foo, $bar # arguments just like for ok(...) ); skip( $^O =~ m/MSWin/ ? 0 : "Skip unless MSWin", # whether to skip $foo, $bar # arguments just like for ok(...) ); =head1 DESCRIPTION This module simplifies the task of writing test files for Perl modules, such that their output is in the format that L<Test::Harness|Test::Harness> expects to see. =head1 QUICK START GUIDE To write a test for your new (and probably not even done) module, create a new file called F<t/test.t> (in a new F<t> directory). If you have multiple test files, to test the "foo", "bar", and "baz" feature sets, then feel free to call your files F<t/foo.t>, F<t/bar.t>, and F<t/baz.t> =head2 Functions This module defines three public functions, C<plan(...)>, C<ok(...)>, and C<skip(...)>. By default, all three are exported by the C<use Test;> statement. =over 4 =item C<plan(...)> BEGIN { plan %theplan; } This should be the first thing you call in your test script. It declares your testing plan, how many there will be, if any of them should be allowed to fail, and so on. Typical usage is just: use Test; BEGIN { plan tests => 23 } These are the things that you can put in the parameters to plan: =over =item C<tests =E<gt> I<number>> The number of tests in your script. This means all ok() and skip() calls. =item C<todo =E<gt> [I<1,5,14>]> A reference to a list of tests which are allowed to fail. See L</TODO TESTS>. =item C<onfail =E<gt> sub { ... }> =item C<onfail =E<gt> \&some_sub> A subroutine reference to be run at the end of the test script, if any of the tests fail. See L</ONFAIL>. =back You must call C<plan(...)> once and only once. You should call it in a C<BEGIN {...}> block, like so: BEGIN { plan tests => 23 } =cut sub plan { croak "Test::plan(%args): odd number of arguments" if @_ & 1; croak "Test::plan(): should not be called more than once" if $planned; local($\, $,); # guard against -l and other things that screw with # print _reset_globals(); _read_program( (caller)[1] ); my $max=0; while (@_) { my ($k,$v) = splice(@_, 0, 2); if ($k =~ /^test(s)?$/) { $max = $v; } elsif ($k eq 'todo' or $k eq 'failok') { for (@$v) { $todo{$_}=1; }; } elsif ($k eq 'onfail') { ref $v eq 'CODE' or croak "Test::plan(onfail => $v): must be CODE"; $ONFAIL = $v; } else { carp "Test::plan(): skipping unrecognized directive '$k'" } } my @todo = sort { $a <=> $b } keys %todo; if (@todo) { print $TESTOUT "1..$max todo ".join(' ', @todo).";\n"; } else { print $TESTOUT "1..$max\n"; } ++$planned; print $TESTOUT "# Running under perl version $] for $^O", (chr(65) eq 'A') ? "\n" : " in a non-ASCII world\n"; print $TESTOUT "# Win32::BuildNumber ", &Win32::BuildNumber(), "\n" if defined(&Win32::BuildNumber) and defined &Win32::BuildNumber(); print $TESTOUT "# MacPerl version $MacPerl::Version\n" if defined $MacPerl::Version; printf $TESTOUT "# Current time local: %s\n# Current time GMT: %s\n", scalar(localtime($^T)), scalar(gmtime($^T)); print $TESTOUT "# Using Test.pm version $VERSION\n"; # Retval never used: return undef; } sub _read_program { my($file) = shift; return unless defined $file and length $file and -e $file and -f _ and -r _; open(SOURCEFILE, '<', $file) || return; $Program_Lines{$file} = [<SOURCEFILE>]; close(SOURCEFILE); foreach my $x (@{$Program_Lines{$file}}) { $x =~ tr/\cm\cj\n\r//d } unshift @{$Program_Lines{$file}}, ''; return 1; } =begin _private =item B<_to_value> my $value = _to_value($input); Converts an C<ok> parameter to its value. Typically this just means running it, if it's a code reference. You should run all inputted values through this. =cut sub _to_value { my ($v) = @_; return ref $v eq 'CODE' ? $v->() : $v; } sub _quote { my $str = $_[0]; return "<UNDEF>" unless defined $str; $str =~ s/\\/\\\\/g; $str =~ s/"/\\"/g; $str =~ s/\a/\\a/g; $str =~ s/[\b]/\\b/g; $str =~ s/\e/\\e/g; $str =~ s/\f/\\f/g; $str =~ s/\n/\\n/g; $str =~ s/\r/\\r/g; $str =~ s/\t/\\t/g; if (defined $^V && $^V ge v5.6) { $str =~ s/([[:cntrl:]])(?!\d)/sprintf('\\%o',ord($1))/eg; $str =~ s/([[:^print:]])/sprintf('\\x%02X',ord($1))/eg; $str =~ s/([[:^ascii:]])/sprintf('\\x{%X}',ord($1))/eg; } elsif (ord("A") == 65) { $str =~ s/([\0-\037])(?!\d)/sprintf('\\%o',ord($1))/eg; $str =~ s/([\0-\037\177-\377])/sprintf('\\x%02X',ord($1))/eg; $str =~ s/([^\0-\176])/sprintf('\\x{%X}',ord($1))/eg; } else { # Assuming EBCDIC on this ancient Perl # The controls except for one are 0-\077, so almost all controls on # EBCDIC platforms will be expressed in octal, instead of just the C0 # ones. $str =~ s/([\0-\077])(?!\d)/sprintf('\\%o',ord($1))/eg; $str =~ s/([\0-\077])/sprintf('\\x%02X',ord($1))/eg; $str =~ s/([^\0-\xFF])/sprintf('\\x{%X}',ord($1))/eg; # What remains to be escaped are the non-ASCII-range characters, # including the one control that isn't in the 0-077 range. # (We don't escape further any ASCII printables.) $str =~ s<[^ !"\$\%#'()*+,\-./0123456789:;\<=\>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~]><sprintf('\\x%02X',ord($1))>eg; } #if( $_[1] ) { # substr( $str , 218-3 ) = "..." # if length($str) >= 218 and !$ENV{PERL_TEST_NO_TRUNC}; #} return qq("$str"); } =end _private =item C<ok(...)> ok(1 + 1 == 2); ok($have, $expect); ok($have, $expect, $diagnostics); This function is the reason for C<Test>'s existence. It's the basic function that handles printing "C<ok>" or "C<not ok>", along with the current test number. (That's what C<Test::Harness> wants to see.) In its most basic usage, C<ok(...)> simply takes a single scalar expression. If its value is true, the test passes; if false, the test fails. Examples: # Examples of ok(scalar) ok( 1 + 1 == 2 ); # ok if 1 + 1 == 2 ok( $foo =~ /bar/ ); # ok if $foo contains 'bar' ok( baz($x + $y) eq 'Armondo' ); # ok if baz($x + $y) returns # 'Armondo' ok( @a == @b ); # ok if @a and @b are the same # length The expression is evaluated in scalar context. So the following will work: ok( @stuff ); # ok if @stuff has any # elements ok( !grep !defined $_, @stuff ); # ok if everything in @stuff # is defined. A special case is if the expression is a subroutine reference (in either C<sub {...}> syntax or C<\&foo> syntax). In that case, it is executed and its value (true or false) determines if the test passes or fails. For example, ok( sub { # See whether sleep works at least passably my $start_time = time; sleep 5; time() - $start_time >= 4 }); In its two-argument form, C<ok(I<arg1>, I<arg2>)> compares the two scalar values to see if they match. They match if both are undefined, or if I<arg2> is a regex that matches I<arg1>, or if they compare equal with C<eq>. # Example of ok(scalar, scalar) ok( "this", "that" ); # not ok, 'this' ne 'that' ok( "", undef ); # not ok, "" is defined The second argument is considered a regex if it is either a regex object or a string that looks like a regex. Regex objects are constructed with the qr// operator in recent versions of perl. A string is considered to look like a regex if its first and last characters are "/", or if the first character is "m" and its second and last characters are both the same non-alphanumeric non-whitespace character. These regexp Regex examples: ok( 'JaffO', '/Jaff/' ); # ok, 'JaffO' =~ /Jaff/ ok( 'JaffO', 'm|Jaff|' ); # ok, 'JaffO' =~ m|Jaff| ok( 'JaffO', qr/Jaff/ ); # ok, 'JaffO' =~ qr/Jaff/; ok( 'JaffO', '/(?i)jaff/ ); # ok, 'JaffO' =~ /jaff/i; If either (or both!) is a subroutine reference, it is run and used as the value for comparing. For example: ok sub { open(OUT, '>', 'x.dat') || die $!; print OUT "\x{e000}"; close OUT; my $bytecount = -s 'x.dat'; unlink 'x.dat' or warn "Can't unlink : $!"; return $bytecount; }, 4 ; The above test passes two values to C<ok(arg1, arg2)> -- the first a coderef, and the second is the number 4. Before C<ok> compares them, it calls the coderef, and uses its return value as the real value of this parameter. Assuming that C<$bytecount> returns 4, C<ok> ends up testing C<4 eq 4>. Since that's true, this test passes. Finally, you can append an optional third argument, in C<ok(I<arg1>,I<arg2>, I<note>)>, where I<note> is a string value that will be printed if the test fails. This should be some useful information about the test, pertaining to why it failed, and/or a description of the test. For example: ok( grep($_ eq 'something unique', @stuff), 1, "Something that should be unique isn't!\n". '@stuff = '.join ', ', @stuff ); Unfortunately, a note cannot be used with the single argument style of C<ok()>. That is, if you try C<ok(I<arg1>, I<note>)>, then C<Test> will interpret this as C<ok(I<arg1>, I<arg2>)>, and probably end up testing C<I<arg1> eq I<arg2>> -- and that's not what you want! All of the above special cases can occasionally cause some problems. See L</BUGS and CAVEATS>. =cut # A past maintainer of this module said: # <<ok(...)'s special handling of subroutine references is an unfortunate # "feature" that can't be removed due to compatibility.>> # sub ok ($;$$) { croak "ok: plan before you test!" if !$planned; local($\,$,); # guard against -l and other things that screw with # print my ($pkg,$file,$line) = caller($TestLevel); my $repetition = ++$history{"$file:$line"}; my $context = ("$file at line $line". ($repetition > 1 ? " fail \#$repetition" : '')); # Are we comparing two values? my $compare = 0; my $ok=0; my $result = _to_value(shift); my ($expected, $isregex, $regex); if (@_ == 0) { $ok = $result; } else { $compare = 1; $expected = _to_value(shift); if (!defined $expected) { $ok = !defined $result; } elsif (!defined $result) { $ok = 0; } elsif (ref($expected) eq 'Regexp') { $ok = $result =~ /$expected/; $regex = $expected; } elsif (($regex) = ($expected =~ m,^ / (.+) / $,sx) or (undef, $regex) = ($expected =~ m,^ m([^\w\s]) (.+) \1 $,sx)) { $ok = $result =~ /$regex/; } else { $ok = $result eq $expected; } } my $todo = $todo{$ntest}; if ($todo and $ok) { $context .= ' TODO?!' if $todo; print $TESTOUT "ok $ntest # ($context)\n"; } else { # Issuing two seperate prints() causes problems on VMS. if (!$ok) { print $TESTOUT "not ok $ntest\n"; } else { print $TESTOUT "ok $ntest\n"; } $ok or _complain($result, $expected, { 'repetition' => $repetition, 'package' => $pkg, 'result' => $result, 'todo' => $todo, 'file' => $file, 'line' => $line, 'context' => $context, 'compare' => $compare, @_ ? ('diagnostic' => _to_value(shift)) : (), }); } ++ $ntest; $ok; } sub _complain { my($result, $expected, $detail) = @_; $$detail{expected} = $expected if defined $expected; # Get the user's diagnostic, protecting against multi-line # diagnostics. my $diag = $$detail{diagnostic}; $diag =~ s/\n/\n#/g if defined $diag; my $out = $$detail{todo} ? $TESTOUT : $TESTERR; $$detail{context} .= ' *TODO*' if $$detail{todo}; if (!$$detail{compare}) { if (!$diag) { print $out "# Failed test $ntest in $$detail{context}\n"; } else { print $out "# Failed test $ntest in $$detail{context}: $diag\n"; } } else { my $prefix = "Test $ntest"; print $out "# $prefix got: " . _quote($result) . " ($$detail{context})\n"; $prefix = ' ' x (length($prefix) - 5); my $expected_quoted = (defined $$detail{regex}) ? 'qr{'.($$detail{regex}).'}' : _quote($expected); print $out "# $prefix Expected: $expected_quoted", $diag ? " ($diag)" : (), "\n"; _diff_complain( $result, $expected, $detail, $prefix ) if defined($expected) and 2 < ($expected =~ tr/\n//); } if(defined $Program_Lines{ $$detail{file} }[ $$detail{line} ]) { print $out "# $$detail{file} line $$detail{line} is: $Program_Lines{ $$detail{file} }[ $$detail{line} ]\n" if $Program_Lines{ $$detail{file} }[ $$detail{line} ] =~ m/[^\s\#\(\)\{\}\[\]\;]/; # Otherwise it's uninformative undef $Program_Lines{ $$detail{file} }[ $$detail{line} ]; # So we won't repeat it. } push @FAILDETAIL, $detail; return; } sub _diff_complain { my($result, $expected, $detail, $prefix) = @_; return _diff_complain_external(@_) if $ENV{PERL_TEST_DIFF}; return _diff_complain_algdiff(@_) if eval { local @INC = @INC; pop @INC if $INC[-1] eq '.'; require Algorithm::Diff; Algorithm::Diff->VERSION(1.15); 1; }; $told_about_diff++ or print $TESTERR <<"EOT"; # $prefix (Install the Algorithm::Diff module to have differences in multiline # $prefix output explained. You might also set the PERL_TEST_DIFF environment # $prefix variable to run a diff program on the output.) EOT ; return; } sub _diff_complain_external { my($result, $expected, $detail, $prefix) = @_; my $diff = $ENV{PERL_TEST_DIFF} || die "WHAAAA?"; require File::Temp; my($got_fh, $got_filename) = File::Temp::tempfile("test-got-XXXXX"); my($exp_fh, $exp_filename) = File::Temp::tempfile("test-exp-XXXXX"); unless ($got_fh && $exp_fh) { warn "Can't get tempfiles"; return; } print $got_fh $result; print $exp_fh $expected; if (close($got_fh) && close($exp_fh)) { my $diff_cmd = "$diff $exp_filename $got_filename"; print $TESTERR "#\n# $prefix $diff_cmd\n"; if (open(DIFF, '-|', $diff_cmd)) { local $_; while (<DIFF>) { print $TESTERR "# $prefix $_"; } close(DIFF); } else { warn "Can't run diff: $!"; } } else { warn "Can't write to tempfiles: $!"; } unlink($got_filename); unlink($exp_filename); return; } sub _diff_complain_algdiff { my($result, $expected, $detail, $prefix) = @_; my @got = split(/^/, $result); my @exp = split(/^/, $expected); my $diff_kind; my @diff_lines; my $diff_flush = sub { return unless $diff_kind; my $count_lines = @diff_lines; my $s = $count_lines == 1 ? "" : "s"; my $first_line = $diff_lines[0][0] + 1; print $TESTERR "# $prefix "; if ($diff_kind eq "GOT") { print $TESTERR "Got $count_lines extra line$s at line $first_line:\n"; for my $i (@diff_lines) { print $TESTERR "# $prefix + " . _quote($got[$i->[0]]) . "\n"; } } elsif ($diff_kind eq "EXP") { if ($count_lines > 1) { my $last_line = $diff_lines[-1][0] + 1; print $TESTERR "Lines $first_line-$last_line are"; } else { print $TESTERR "Line $first_line is"; } print $TESTERR " missing:\n"; for my $i (@diff_lines) { print $TESTERR "# $prefix - " . _quote($exp[$i->[1]]) . "\n"; } } elsif ($diff_kind eq "CH") { if ($count_lines > 1) { my $last_line = $diff_lines[-1][0] + 1; print $TESTERR "Lines $first_line-$last_line are"; } else { print $TESTERR "Line $first_line is"; } print $TESTERR " changed:\n"; for my $i (@diff_lines) { print $TESTERR "# $prefix - " . _quote($exp[$i->[1]]) . "\n"; print $TESTERR "# $prefix + " . _quote($got[$i->[0]]) . "\n"; } } # reset $diff_kind = undef; @diff_lines = (); }; my $diff_collect = sub { my $kind = shift; &$diff_flush() if $diff_kind && $diff_kind ne $kind; $diff_kind = $kind; push(@diff_lines, [@_]); }; Algorithm::Diff::traverse_balanced( \@got, \@exp, { DISCARD_A => sub { &$diff_collect("GOT", @_) }, DISCARD_B => sub { &$diff_collect("EXP", @_) }, CHANGE => sub { &$diff_collect("CH", @_) }, MATCH => sub { &$diff_flush() }, }, ); &$diff_flush(); return; } #~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~ =item C<skip(I<skip_if_true>, I<args...>)> This is used for tests that under some conditions can be skipped. It's basically equivalent to: if( $skip_if_true ) { ok(1); } else { ok( args... ); } ...except that the C<ok(1)> emits not just "C<ok I<testnum>>" but actually "C<ok I<testnum> # I<skip_if_true_value>>". The arguments after the I<skip_if_true> are what is fed to C<ok(...)> if this test isn't skipped. Example usage: my $if_MSWin = $^O =~ m/MSWin/ ? 'Skip if under MSWin' : ''; # A test to be skipped if under MSWin (i.e., run except under # MSWin) skip($if_MSWin, thing($foo), thing($bar) ); Or, going the other way: my $unless_MSWin = $^O =~ m/MSWin/ ? '' : 'Skip unless under MSWin'; # A test to be skipped unless under MSWin (i.e., run only under # MSWin) skip($unless_MSWin, thing($foo), thing($bar) ); The tricky thing to remember is that the first parameter is true if you want to I<skip> the test, not I<run> it; and it also doubles as a note about why it's being skipped. So in the first codeblock above, read the code as "skip if MSWin -- (otherwise) test whether C<thing($foo)> is C<thing($bar)>" or for the second case, "skip unless MSWin...". Also, when your I<skip_if_reason> string is true, it really should (for backwards compatibility with older Test.pm versions) start with the string "Skip", as shown in the above examples. Note that in the above cases, C<thing($foo)> and C<thing($bar)> I<are> evaluated -- but as long as the C<skip_if_true> is true, then we C<skip(...)> just tosses out their value (i.e., not bothering to treat them like values to C<ok(...)>. But if you need to I<not> eval the arguments when skipping the test, use this format: skip( $unless_MSWin, sub { # This code returns true if the test passes. # (But it doesn't even get called if the test is skipped.) thing($foo) eq thing($bar) } ); or even this, which is basically equivalent: skip( $unless_MSWin, sub { thing($foo) }, sub { thing($bar) } ); That is, both are like this: if( $unless_MSWin ) { ok(1); # but it actually appends "# $unless_MSWin" # so that Test::Harness can tell it's a skip } else { # Not skipping, so actually call and evaluate... ok( sub { thing($foo) }, sub { thing($bar) } ); } =cut sub skip ($;$$$) { local($\, $,); # guard against -l and other things that screw with # print my $whyskip = _to_value(shift); if (!@_ or $whyskip) { $whyskip = '' if $whyskip =~ m/^\d+$/; $whyskip =~ s/^[Ss]kip(?:\s+|$)//; # backwards compatibility, old # versions required the reason # to start with 'skip' # We print in one shot for VMSy reasons. my $ok = "ok $ntest # skip"; $ok .= " $whyskip" if length $whyskip; $ok .= "\n"; print $TESTOUT $ok; ++ $ntest; return 1; } else { # backwards compatibility (I think). skip() used to be # called like ok(), which is weird. I haven't decided what to do with # this yet. # warn <<WARN if $^W; #This looks like a skip() using the very old interface. Please upgrade to #the documented interface as this has been deprecated. #WARN local($TestLevel) = $TestLevel+1; #to ignore this stack frame return &ok(@_); } } =back =cut END { $ONFAIL->(\@FAILDETAIL) if @FAILDETAIL && $ONFAIL; } 1; __END__ =head1 TEST TYPES =over 4 =item * NORMAL TESTS These tests are expected to succeed. Usually, most or all of your tests are in this category. If a normal test doesn't succeed, then that means that something is I<wrong>. =item * SKIPPED TESTS The C<skip(...)> function is for tests that might or might not be possible to run, depending on the availability of platform-specific features. The first argument should evaluate to true (think "yes, please skip") if the required feature is I<not> available. After the first argument, C<skip(...)> works exactly the same way as C<ok(...)> does. =item * TODO TESTS TODO tests are designed for maintaining an B<executable TODO list>. These tests are I<expected to fail.> If a TODO test does succeed, then the feature in question shouldn't be on the TODO list, now should it? Packages should NOT be released with succeeding TODO tests. As soon as a TODO test starts working, it should be promoted to a normal test, and the newly working feature should be documented in the release notes or in the change log. =back =head1 ONFAIL BEGIN { plan test => 4, onfail => sub { warn "CALL 911!" } } Although test failures should be enough, extra diagnostics can be triggered at the end of a test run. C<onfail> is passed an array ref of hash refs that describe each test failure. Each hash will contain at least the following fields: C<package>, C<repetition>, and C<result>. (You shouldn't rely on any other fields being present.) If the test had an expected value or a diagnostic (or "note") string, these will also be included. The I<optional> C<onfail> hook might be used simply to print out the version of your package and/or how to report problems. It might also be used to generate extremely sophisticated diagnostics for a particularly bizarre test failure. However it's not a panacea. Core dumps or other unrecoverable errors prevent the C<onfail> hook from running. (It is run inside an C<END> block.) Besides, C<onfail> is probably over-kill in most cases. (Your test code should be simpler than the code it is testing, yes?) =head1 BUGS and CAVEATS =over =item * C<ok(...)>'s special handing of strings which look like they might be regexes can also cause unexpected behavior. An innocent: ok( $fileglob, '/path/to/some/*stuff/' ); will fail, since Test.pm considers the second argument to be a regex! The best bet is to use the one-argument form: ok( $fileglob eq '/path/to/some/*stuff/' ); =item * C<ok(...)>'s use of string C<eq> can sometimes cause odd problems when comparing numbers, especially if you're casting a string to a number: $foo = "1.0"; ok( $foo, 1 ); # not ok, "1.0" ne 1 Your best bet is to use the single argument form: ok( $foo == 1 ); # ok "1.0" == 1 =item * As you may have inferred from the above documentation and examples, C<ok>'s prototype is C<($;$$)> (and, incidentally, C<skip>'s is C<($;$$$)>). This means, for example, that you can do C<ok @foo, @bar> to compare the I<size> of the two arrays. But don't be fooled into thinking that C<ok @foo, @bar> means a comparison of the contents of two arrays -- you're comparing I<just> the number of elements of each. It's so easy to make that mistake in reading C<ok @foo, @bar> that you might want to be very explicit about it, and instead write C<ok scalar(@foo), scalar(@bar)>. =item * This almost definitely doesn't do what you expect: ok $thingy->can('some_method'); Why? Because C<can> returns a coderef to mean "yes it can (and the method is this...)", and then C<ok> sees a coderef and thinks you're passing a function that you want it to call and consider the truth of the result of! I.e., just like: ok $thingy->can('some_method')->(); What you probably want instead is this: ok $thingy->can('some_method') && 1; If the C<can> returns false, then that is passed to C<ok>. If it returns true, then the larger expression S<< C<< $thingy->can('some_method') && 1 >> >> returns 1, which C<ok> sees as a simple signal of success, as you would expect. =item * The syntax for C<skip> is about the only way it can be, but it's still quite confusing. Just start with the above examples and you'll be okay. Moreover, users may expect this: skip $unless_mswin, foo($bar), baz($quux); to not evaluate C<foo($bar)> and C<baz($quux)> when the test is being skipped. But in reality, they I<are> evaluated, but C<skip> just won't bother comparing them if C<$unless_mswin> is true. You could do this: skip $unless_mswin, sub{foo($bar)}, sub{baz($quux)}; But that's not terribly pretty. You may find it simpler or clearer in the long run to just do things like this: if( $^O =~ m/MSWin/ ) { print "# Yay, we're under $^O\n"; ok foo($bar), baz($quux); ok thing($whatever), baz($stuff); ok blorp($quux, $whatever); ok foo($barzbarz), thang($quux); } else { print "# Feh, we're under $^O. Watch me skip some tests...\n"; for(1 .. 4) { skip "Skip unless under MSWin" } } But be quite sure that C<ok> is called exactly as many times in the first block as C<skip> is called in the second block. =back =head1 ENVIRONMENT If C<PERL_TEST_DIFF> environment variable is set, it will be used as a command for comparing unexpected multiline results. If you have GNU diff installed, you might want to set C<PERL_TEST_DIFF> to C<diff -u>. If you don't have a suitable program, you might install the C<Text::Diff> module and then set C<PERL_TEST_DIFF> to be C<perl -MText::Diff -e 'print diff(@ARGV)'>. If C<PERL_TEST_DIFF> isn't set but the C<Algorithm::Diff> module is available, then it will be used to show the differences in multiline results. =for comment If C<PERL_TEST_NO_TRUNC> is set, then the initial "Got 'something' but expected 'something_else'" readings for long multiline output values aren't truncated at about the 230th column, as they normally could be in some cases. Normally you won't need to use this, unless you were carefully parsing the output of your test programs. =head1 NOTE A past developer of this module once said that it was no longer being actively developed. However, rumors of its demise were greatly exaggerated. Feedback and suggestions are quite welcome. Be aware that the main value of this module is its simplicity. Note that there are already more ambitious modules out there, such as L<Test::More> and L<Test::Unit>. Some earlier versions of this module had docs with some confusing typos in the description of C<skip(...)>. =head1 SEE ALSO L<Test::Harness> L<Test::Simple>, L<Test::More>, L<Devel::Cover> L<Test::Builder> for building your own testing library. L<Test::Unit> is an interesting XUnit-style testing library. L<Test::Inline> lets you embed tests in code. =head1 AUTHOR Copyright (c) 1998-2000 Joshua Nathaniel Pritikin. Copyright (c) 2001-2002 Michael G. Schwern. Copyright (c) 2002-2004 Sean M. Burke. Current maintainer: Jesse Vincent. E<lt>jesse@bestpractical.comE<gt> This package is free software and is provided "as is" without express or implied warranty. It may be used, redistributed and/or modified under the same terms as Perl itself. =cut # "Your mistake was a hidden intention." # -- /Oblique Strategies/, Brian Eno and Peter Schmidt PK ! R}��� �� 5.34.0/Carp.pmnu �[��� package Carp; { use 5.006; } use strict; use warnings; BEGIN { # Very old versions of warnings.pm load Carp. This can go wrong due # to the circular dependency. If warnings is invoked before Carp, # then warnings starts by loading Carp, then Carp (above) tries to # invoke warnings, and gets nothing because warnings is in the process # of loading and hasn't defined its import method yet. If we were # only turning on warnings ("use warnings" above) this wouldn't be too # bad, because Carp would just gets the state of the -w switch and so # might not get some warnings that it wanted. The real problem is # that we then want to turn off Unicode warnings, but "no warnings # 'utf8'" won't be effective if we're in this circular-dependency # situation. So, if warnings.pm is an affected version, we turn # off all warnings ourselves by directly setting ${^WARNING_BITS}. # On unaffected versions, we turn off just Unicode warnings, via # the proper API. if(!defined($warnings::VERSION) || eval($warnings::VERSION) < 1.06) { ${^WARNING_BITS} = ""; } else { "warnings"->unimport("utf8"); } } sub _fetch_sub { # fetch sub without autovivifying my($pack, $sub) = @_; $pack .= '::'; # only works with top-level packages return unless exists($::{$pack}); for ($::{$pack}) { return unless ref \$_ eq 'GLOB' && *$_{HASH} && exists $$_{$sub}; for ($$_{$sub}) { return ref \$_ eq 'GLOB' ? *$_{CODE} : undef } } } # UTF8_REGEXP_PROBLEM is a compile-time constant indicating whether Carp # must avoid applying a regular expression to an upgraded (is_utf8) # string. There are multiple problems, on different Perl versions, # that require this to be avoided. All versions prior to 5.13.8 will # load utf8_heavy.pl for the swash system, even if the regexp doesn't # use character classes. Perl 5.6 and Perls [5.11.2, 5.13.11) exhibit # specific problems when Carp is being invoked in the aftermath of a # syntax error. BEGIN { if("$]" < 5.013011) { *UTF8_REGEXP_PROBLEM = sub () { 1 }; } else { *UTF8_REGEXP_PROBLEM = sub () { 0 }; } } # is_utf8() is essentially the utf8::is_utf8() function, which indicates # whether a string is represented in the upgraded form (using UTF-8 # internally). As utf8::is_utf8() is only available from Perl 5.8 # onwards, extra effort is required here to make it work on Perl 5.6. BEGIN { if(defined(my $sub = _fetch_sub utf8 => 'is_utf8')) { *is_utf8 = $sub; } else { # black magic for perl 5.6 *is_utf8 = sub { unpack("C", "\xaa".$_[0]) != 170 }; } } # The downgrade() function defined here is to be used for attempts to # downgrade where it is acceptable to fail. It must be called with a # second argument that is a true value. BEGIN { if(defined(my $sub = _fetch_sub utf8 => 'downgrade')) { *downgrade = \&{"utf8::downgrade"}; } else { *downgrade = sub { my $r = ""; my $l = length($_[0]); for(my $i = 0; $i != $l; $i++) { my $o = ord(substr($_[0], $i, 1)); return if $o > 255; $r .= chr($o); } $_[0] = $r; }; } } # is_safe_printable_codepoint() indicates whether a character, specified # by integer codepoint, is OK to output literally in a trace. Generally # this is if it is a printable character in the ancestral character set # (ASCII or EBCDIC). This is used on some Perls in situations where a # regexp can't be used. BEGIN { *is_safe_printable_codepoint = "$]" >= 5.007_003 ? eval(q(sub ($) { my $u = utf8::native_to_unicode($_[0]); $u >= 0x20 && $u <= 0x7e; })) : ord("A") == 65 ? sub ($) { $_[0] >= 0x20 && $_[0] <= 0x7e } : sub ($) { # Early EBCDIC # 3 EBCDIC code pages supported then; all controls but one # are the code points below SPACE. The other one is 0x5F on # POSIX-BC; FF on the other two. # FIXME: there are plenty of unprintable codepoints other # than those that this code and the comment above identifies # as "controls". $_[0] >= ord(" ") && $_[0] <= 0xff && $_[0] != (ord ("^") == 106 ? 0x5f : 0xff); } ; } sub _univ_mod_loaded { return 0 unless exists($::{"UNIVERSAL::"}); for ($::{"UNIVERSAL::"}) { return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"$_[0]::"}; for ($$_{"$_[0]::"}) { return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"VERSION"}; for ($$_{"VERSION"}) { return 0 unless ref \$_ eq "GLOB"; return ${*$_{SCALAR}}; } } } } # _maybe_isa() is usually the UNIVERSAL::isa function. We have to avoid # the latter if the UNIVERSAL::isa module has been loaded, to avoid infi- # nite recursion; in that case _maybe_isa simply returns true. my $isa; BEGIN { if (_univ_mod_loaded('isa')) { *_maybe_isa = sub { 1 } } else { # Since we have already done the check, record $isa for use below # when defining _StrVal. *_maybe_isa = $isa = _fetch_sub(UNIVERSAL => "isa"); } } # We need an overload::StrVal or equivalent function, but we must avoid # loading any modules on demand, as Carp is used from __DIE__ handlers and # may be invoked after a syntax error. # We can copy recent implementations of overload::StrVal and use # overloading.pm, which is the fastest implementation, so long as # overloading is available. If it is not available, we use our own pure- # Perl StrVal. We never actually use overload::StrVal, for various rea- # sons described below. # overload versions are as follows: # undef-1.00 (up to perl 5.8.0) uses bless (avoid!) # 1.01-1.17 (perl 5.8.1 to 5.14) uses Scalar::Util # 1.18+ (perl 5.16+) uses overloading # The ancient 'bless' implementation (that inspires our pure-Perl version) # blesses unblessed references and must be avoided. Those using # Scalar::Util use refaddr, possibly the pure-Perl implementation, which # has the same blessing bug, and must be avoided. Also, Scalar::Util is # loaded on demand. Since we avoid the Scalar::Util implementations, we # end up having to implement our own overloading.pm-based version for perl # 5.10.1 to 5.14. Since it also works just as well in more recent ver- # sions, we use it there, too. BEGIN { if (eval { require "overloading.pm" }) { *_StrVal = eval 'sub { no overloading; "$_[0]" }' } else { # Work around the UNIVERSAL::can/isa modules to avoid recursion. # _mycan is either UNIVERSAL::can, or, in the presence of an # override, overload::mycan. *_mycan = _univ_mod_loaded('can') ? do { require "overload.pm"; _fetch_sub overload => 'mycan' } : \&UNIVERSAL::can; # _blessed is either UNIVERAL::isa(...), or, in the presence of an # override, a hideous, but fairly reliable, workaround. *_blessed = $isa ? sub { &$isa($_[0], "UNIVERSAL") } : sub { my $probe = "UNIVERSAL::Carp_probe_" . rand; no strict 'refs'; local *$probe = sub { "unlikely string" }; local $@; local $SIG{__DIE__} = sub{}; (eval { $_[0]->$probe } || '') eq 'unlikely string' }; *_StrVal = sub { my $pack = ref $_[0]; # Perl's overload mechanism uses the presence of a special # "method" named "((" or "()" to signal it is in effect. # This test seeks to see if it has been set up. "((" post- # dates overloading.pm, so we can skip it. return "$_[0]" unless _mycan($pack, "()"); # Even at this point, the invocant may not be blessed, so # check for that. return "$_[0]" if not _blessed($_[0]); bless $_[0], "Carp"; my $str = "$_[0]"; bless $_[0], $pack; $pack . substr $str, index $str, "="; } } } our $VERSION = '1.52'; $VERSION =~ tr/_//d; our $MaxEvalLen = 0; our $Verbose = 0; our $CarpLevel = 0; our $MaxArgLen = 64; # How much of each argument to print. 0 = all. our $MaxArgNums = 8; # How many arguments to print. 0 = all. our $RefArgFormatter = undef; # allow caller to format reference arguments require Exporter; our @ISA = ('Exporter'); our @EXPORT = qw(confess croak carp); our @EXPORT_OK = qw(cluck verbose longmess shortmess); our @EXPORT_FAIL = qw(verbose); # hook to enable verbose mode # The members of %Internal are packages that are internal to perl. # Carp will not report errors from within these packages if it # can. The members of %CarpInternal are internal to Perl's warning # system. Carp will not report errors from within these packages # either, and will not report calls *to* these packages for carp and # croak. They replace $CarpLevel, which is deprecated. The # $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval # text and function arguments should be formatted when printed. our %CarpInternal; our %Internal; # disable these by default, so they can live w/o require Carp $CarpInternal{Carp}++; $CarpInternal{warnings}++; $Internal{Exporter}++; $Internal{'Exporter::Heavy'}++; # if the caller specifies verbose usage ("perl -MCarp=verbose script.pl") # then the following method will be called by the Exporter which knows # to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word # 'verbose'. sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ } sub _cgc { no strict 'refs'; return \&{"CORE::GLOBAL::caller"} if defined &{"CORE::GLOBAL::caller"}; return; } sub longmess { local($!, $^E); # Icky backwards compatibility wrapper. :-( # # The story is that the original implementation hard-coded the # number of call levels to go back, so calls to longmess were off # by one. Other code began calling longmess and expecting this # behaviour, so the replacement has to emulate that behaviour. my $cgc = _cgc(); my $call_pack = $cgc ? $cgc->() : caller(); if ( $Internal{$call_pack} or $CarpInternal{$call_pack} ) { return longmess_heavy(@_); } else { local $CarpLevel = $CarpLevel + 1; return longmess_heavy(@_); } } our @CARP_NOT; sub shortmess { local($!, $^E); my $cgc = _cgc(); # Icky backwards compatibility wrapper. :-( local @CARP_NOT = scalar( $cgc ? $cgc->() : caller() ); shortmess_heavy(@_); } sub croak { die shortmess @_ } sub confess { die longmess @_ } sub carp { warn shortmess @_ } sub cluck { warn longmess @_ } BEGIN { if("$]" >= 5.015002 || ("$]" >= 5.014002 && "$]" < 5.015) || ("$]" >= 5.012005 && "$]" < 5.013)) { *CALLER_OVERRIDE_CHECK_OK = sub () { 1 }; } else { *CALLER_OVERRIDE_CHECK_OK = sub () { 0 }; } } sub caller_info { my $i = shift(@_) + 1; my %call_info; my $cgc = _cgc(); { # Some things override caller() but forget to implement the # @DB::args part of it, which we need. We check for this by # pre-populating @DB::args with a sentinel which no-one else # has the address of, so that we can detect whether @DB::args # has been properly populated. However, on earlier versions # of perl this check tickles a bug in CORE::caller() which # leaks memory. So we only check on fixed perls. @DB::args = \$i if CALLER_OVERRIDE_CHECK_OK; package DB; @call_info{ qw(pack file line sub has_args wantarray evaltext is_require) } = $cgc ? $cgc->($i) : caller($i); } unless ( defined $call_info{file} ) { return (); } my $sub_name = Carp::get_subname( \%call_info ); if ( $call_info{has_args} ) { # Guard our serialization of the stack from stack refcounting bugs # NOTE this is NOT a complete solution, we cannot 100% guard against # these bugs. However in many cases Perl *is* capable of detecting # them and throws an error when it does. Unfortunately serializing # the arguments on the stack is a perfect way of finding these bugs, # even when they would not affect normal program flow that did not # poke around inside the stack. Inside of Carp.pm it makes little # sense reporting these bugs, as Carp's job is to report the callers # errors, not the ones it might happen to tickle while doing so. # See: https://rt.perl.org/Public/Bug/Display.html?id=131046 # and: https://rt.perl.org/Public/Bug/Display.html?id=52610 # for more details and discussion. - Yves my @args = map { my $arg; local $@= $@; eval { $arg = $_; 1; } or do { $arg = '** argument not available anymore **'; }; $arg; } @DB::args; if (CALLER_OVERRIDE_CHECK_OK && @args == 1 && ref $args[0] eq ref \$i && $args[0] == \$i ) { @args = (); # Don't let anyone see the address of $i local $@; my $where = eval { my $func = $cgc or return ''; my $gv = (_fetch_sub B => 'svref_2object' or return '') ->($func)->GV; my $package = $gv->STASH->NAME; my $subname = $gv->NAME; return unless defined $package && defined $subname; # returning CORE::GLOBAL::caller isn't useful for tracing the cause: return if $package eq 'CORE::GLOBAL' && $subname eq 'caller'; " in &${package}::$subname"; } || ''; @args = "** Incomplete caller override detected$where; \@DB::args were not set **"; } else { my $overflow; if ( $MaxArgNums and @args > $MaxArgNums ) { # More than we want to show? $#args = $MaxArgNums - 1; $overflow = 1; } @args = map { Carp::format_arg($_) } @args; if ($overflow) { push @args, '...'; } } # Push the args onto the subroutine $sub_name .= '(' . join( ', ', @args ) . ')'; } $call_info{sub_name} = $sub_name; return wantarray() ? %call_info : \%call_info; } # Transform an argument to a function into a string. our $in_recurse; sub format_arg { my $arg = shift; if ( my $pack= ref($arg) ) { # legitimate, let's not leak it. if (!$in_recurse && _maybe_isa( $arg, 'UNIVERSAL' ) && do { local $@; local $in_recurse = 1; local $SIG{__DIE__} = sub{}; eval {$arg->can('CARP_TRACE') } }) { return $arg->CARP_TRACE(); } elsif (!$in_recurse && defined($RefArgFormatter) && do { local $@; local $in_recurse = 1; local $SIG{__DIE__} = sub{}; eval {$arg = $RefArgFormatter->($arg); 1} }) { return $arg; } else { # Argument may be blessed into a class with overloading, and so # might have an overloaded stringification. We don't want to # risk getting the overloaded stringification, so we need to # use _StrVal, our overload::StrVal()-equivalent. return _StrVal $arg; } } return "undef" if !defined($arg); downgrade($arg, 1); return $arg if !(UTF8_REGEXP_PROBLEM && is_utf8($arg)) && $arg =~ /\A-?[0-9]+(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?\z/; my $suffix = ""; if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { substr ( $arg, $MaxArgLen - 3 ) = ""; $suffix = "..."; } if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { for(my $i = length($arg); $i--; ) { my $c = substr($arg, $i, 1); my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} if($c eq "\"" || $c eq "\\" || $c eq "\$" || $c eq "\@") { substr $arg, $i, 0, "\\"; next; } my $o = ord($c); substr $arg, $i, 1, sprintf("\\x{%x}", $o) unless is_safe_printable_codepoint($o); } } else { $arg =~ s/([\"\\\$\@])/\\$1/g; # This is all the ASCII printables spelled-out. It is portable to all # Perl versions and platforms (such as EBCDIC). There are other more # compact ways to do this, but may not work everywhere every version. $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; } downgrade($arg, 1); return "\"".$arg."\"".$suffix; } sub Regexp::CARP_TRACE { my $arg = "$_[0]"; downgrade($arg, 1); if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { for(my $i = length($arg); $i--; ) { my $o = ord(substr($arg, $i, 1)); my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} substr $arg, $i, 1, sprintf("\\x{%x}", $o) unless is_safe_printable_codepoint($o); } } else { # See comment in format_arg() about this same regex. $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; } downgrade($arg, 1); my $suffix = ""; if($arg =~ /\A\(\?\^?([a-z]*)(?:-[a-z]*)?:(.*)\)\z/s) { ($suffix, $arg) = ($1, $2); } if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { substr ( $arg, $MaxArgLen - 3 ) = ""; $suffix = "...".$suffix; } return "qr($arg)$suffix"; } # Takes an inheritance cache and a package and returns # an anon hash of known inheritances and anon array of # inheritances which consequences have not been figured # for. sub get_status { my $cache = shift; my $pkg = shift; $cache->{$pkg} ||= [ { $pkg => $pkg }, [ trusts_directly($pkg) ] ]; return @{ $cache->{$pkg} }; } # Takes the info from caller() and figures out the name of # the sub/require/eval sub get_subname { my $info = shift; if ( defined( $info->{evaltext} ) ) { my $eval = $info->{evaltext}; if ( $info->{is_require} ) { return "require $eval"; } else { $eval =~ s/([\\\'])/\\$1/g; return "eval '" . str_len_trim( $eval, $MaxEvalLen ) . "'"; } } # this can happen on older perls when the sub (or the stash containing it) # has been deleted if ( !defined( $info->{sub} ) ) { return '__ANON__::__ANON__'; } return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub}; } # Figures out what call (from the point of view of the caller) # the long error backtrace should start at. sub long_error_loc { my $i; my $lvl = $CarpLevel; { ++$i; my $cgc = _cgc(); my @caller = $cgc ? $cgc->($i) : caller($i); my $pkg = $caller[0]; unless ( defined($pkg) ) { # This *shouldn't* happen. if (%Internal) { local %Internal; $i = long_error_loc(); last; } elsif (defined $caller[2]) { # this can happen when the stash has been deleted # in that case, just assume that it's a reasonable place to # stop (the file and line data will still be intact in any # case) - the only issue is that we can't detect if the # deleted package was internal (so don't do that then) # -doy redo unless 0 > --$lvl; last; } else { return 2; } } redo if $CarpInternal{$pkg}; redo unless 0 > --$lvl; redo if $Internal{$pkg}; } return $i - 1; } sub longmess_heavy { if ( ref( $_[0] ) ) { # don't break references as exceptions return wantarray ? @_ : $_[0]; } my $i = long_error_loc(); return ret_backtrace( $i, @_ ); } BEGIN { if("$]" >= 5.017004) { # The LAST_FH constant is a reference to the variable. $Carp::{LAST_FH} = \eval '\${^LAST_FH}'; } else { eval '*LAST_FH = sub () { 0 }'; } } # Returns a full stack backtrace starting from where it is # told. sub ret_backtrace { my ( $i, @error ) = @_; my $mess; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); $mess = "$err at $i{file} line $i{line}$tid_msg"; if( $. ) { # Use ${^LAST_FH} if available. if (LAST_FH) { if (${+LAST_FH}) { $mess .= sprintf ", <%s> %s %d", *${+LAST_FH}{NAME}, ($/ eq "\n" ? "line" : "chunk"), $. } } else { local $@ = ''; local $SIG{__DIE__}; eval { CORE::die; }; if($@ =~ /^Died at .*(, <.*?> (?:line|chunk) \d+).$/ ) { $mess .= $1; } } } $mess .= "\.\n"; while ( my %i = caller_info( ++$i ) ) { $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n"; } return $mess; } sub ret_summary { my ( $i, @error ) = @_; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); return "$err at $i{file} line $i{line}$tid_msg\.\n"; } sub short_error_loc { # You have to create your (hash)ref out here, rather than defaulting it # inside trusts *on a lexical*, as you want it to persist across calls. # (You can default it on $_[2], but that gets messy) my $cache = {}; my $i = 1; my $lvl = $CarpLevel; { my $cgc = _cgc(); my $called = $cgc ? $cgc->($i) : caller($i); $i++; my $caller = $cgc ? $cgc->($i) : caller($i); if (!defined($caller)) { my @caller = $cgc ? $cgc->($i) : caller($i); if (@caller) { # if there's no package but there is other caller info, then # the package has been deleted - treat this as a valid package # in this case redo if defined($called) && $CarpInternal{$called}; redo unless 0 > --$lvl; last; } else { return 0; } } redo if $Internal{$caller}; redo if $CarpInternal{$caller}; redo if $CarpInternal{$called}; redo if trusts( $called, $caller, $cache ); redo if trusts( $caller, $called, $cache ); redo unless 0 > --$lvl; } return $i - 1; } sub shortmess_heavy { return longmess_heavy(@_) if $Verbose; return @_ if ref( $_[0] ); # don't break references as exceptions my $i = short_error_loc(); if ($i) { ret_summary( $i, @_ ); } else { longmess_heavy(@_); } } # If a string is too long, trims it with ... sub str_len_trim { my $str = shift; my $max = shift || 0; if ( 2 < $max and $max < length($str) ) { substr( $str, $max - 3 ) = '...'; } return $str; } # Takes two packages and an optional cache. Says whether the # first inherits from the second. # # Recursive versions of this have to work to avoid certain # possible endless loops, and when following long chains of # inheritance are less efficient. sub trusts { my $child = shift; my $parent = shift; my $cache = shift; my ( $known, $partial ) = get_status( $cache, $child ); # Figure out consequences until we have an answer while ( @$partial and not exists $known->{$parent} ) { my $anc = shift @$partial; next if exists $known->{$anc}; $known->{$anc}++; my ( $anc_knows, $anc_partial ) = get_status( $cache, $anc ); my @found = keys %$anc_knows; @$known{@found} = (); push @$partial, @$anc_partial; } return exists $known->{$parent}; } # Takes a package and gives a list of those trusted directly sub trusts_directly { my $class = shift; no strict 'refs'; my $stash = \%{"$class\::"}; for my $var (qw/ CARP_NOT ISA /) { # Don't try using the variable until we know it exists, # to avoid polluting the caller's namespace. if ( $stash->{$var} && ref \$stash->{$var} eq 'GLOB' && *{$stash->{$var}}{ARRAY} && @{$stash->{$var}} ) { return @{$stash->{$var}} } } return; } if(!defined($warnings::VERSION) || do { no warnings "numeric"; $warnings::VERSION < 1.03 }) { # Very old versions of warnings.pm import from Carp. This can go # wrong due to the circular dependency. If Carp is invoked before # warnings, then Carp starts by loading warnings, then warnings # tries to import from Carp, and gets nothing because Carp is in # the process of loading and hasn't defined its import method yet. # So we work around that by manually exporting to warnings here. no strict "refs"; *{"warnings::$_"} = \&$_ foreach @EXPORT; } 1; __END__ =head1 NAME Carp - alternative warn and die for modules =head1 SYNOPSIS use Carp; # warn user (from perspective of caller) carp "string trimmed to 80 chars"; # die of errors (from perspective of caller) croak "We're outta here!"; # die of errors with stack backtrace confess "not implemented"; # cluck, longmess and shortmess not exported by default use Carp qw(cluck longmess shortmess); cluck "This is how we got here!"; # warn with stack backtrace $long_message = longmess( "message from cluck() or confess()" ); $short_message = shortmess( "message from carp() or croak()" ); =head1 DESCRIPTION The Carp routines are useful in your own modules because they act like C<die()> or C<warn()>, but with a message which is more likely to be useful to a user of your module. In the case of C<cluck()> and C<confess()>, that context is a summary of every call in the call-stack; C<longmess()> returns the contents of the error message. For a shorter message you can use C<carp()> or C<croak()> which report the error as being from where your module was called. C<shortmess()> returns the contents of this error message. There is no guarantee that that is where the error was, but it is a good educated guess. C<Carp> takes care not to clobber the status variables C<$!> and C<$^E> in the course of assembling its error messages. This means that a C<$SIG{__DIE__}> or C<$SIG{__WARN__}> handler can capture the error information held in those variables, if it is required to augment the error message, and if the code calling C<Carp> left useful values there. Of course, C<Carp> can't guarantee the latter. You can also alter the way the output and logic of C<Carp> works, by changing some global variables in the C<Carp> namespace. See the section on C<GLOBAL VARIABLES> below. Here is a more complete description of how C<carp> and C<croak> work. What they do is search the call-stack for a function call stack where they have not been told that there shouldn't be an error. If every call is marked safe, they give up and give a full stack backtrace instead. In other words they presume that the first likely looking potential suspect is guilty. Their rules for telling whether a call shouldn't generate errors work as follows: =over 4 =item 1. Any call from a package to itself is safe. =item 2. Packages claim that there won't be errors on calls to or from packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or (if that array is empty) C<@ISA>. The ability to override what @ISA says is new in 5.8. =item 3. The trust in item 2 is transitive. If A trusts B, and B trusts C, then A trusts C. So if you do not override C<@ISA> with C<@CARP_NOT>, then this trust relationship is identical to, "inherits from". =item 4. Any call from an internal Perl module is safe. (Nothing keeps user modules from marking themselves as internal to Perl, but this practice is discouraged.) =item 5. Any call to Perl's warning system (eg Carp itself) is safe. (This rule is what keeps it from reporting the error at the point where you call C<carp> or C<croak>.) =item 6. C<$Carp::CarpLevel> can be set to skip a fixed number of additional call levels. Using this is not recommended because it is very difficult to get it to behave correctly. =back =head2 Forcing a Stack Trace As a debugging aid, you can force Carp to treat a croak as a confess and a carp as a cluck across I<all> modules. In other words, force a detailed stack trace to be given. This can be very helpful when trying to understand why, or from where, a warning or error is being generated. This feature is enabled by 'importing' the non-existent symbol 'verbose'. You would typically enable it by saying perl -MCarp=verbose script.pl or by including the string C<-MCarp=verbose> in the PERL5OPT environment variable. Alternately, you can set the global variable C<$Carp::Verbose> to true. See the C<GLOBAL VARIABLES> section below. =head2 Stack Trace formatting At each stack level, the subroutine's name is displayed along with its parameters. For simple scalars, this is sufficient. For complex data types, such as objects and other references, this can simply display C<'HASH(0x1ab36d8)'>. Carp gives two ways to control this. =over 4 =item 1. For objects, a method, C<CARP_TRACE>, will be called, if it exists. If this method doesn't exist, or it recurses into C<Carp>, or it otherwise throws an exception, this is skipped, and Carp moves on to the next option, otherwise checking stops and the string returned is used. It is recommended that the object's type is part of the string to make debugging easier. =item 2. For any type of reference, C<$Carp::RefArgFormatter> is checked (see below). This variable is expected to be a code reference, and the current parameter is passed in. If this function doesn't exist (the variable is undef), or it recurses into C<Carp>, or it otherwise throws an exception, this is skipped, and Carp moves on to the next option, otherwise checking stops and the string returned is used. =item 3. Otherwise, if neither C<CARP_TRACE> nor C<$Carp::RefArgFormatter> is available, stringify the value ignoring any overloading. =back =head1 GLOBAL VARIABLES =head2 $Carp::MaxEvalLen This variable determines how many characters of a string-eval are to be shown in the output. Use a value of C<0> to show all text. Defaults to C<0>. =head2 $Carp::MaxArgLen This variable determines how many characters of each argument to a function to print. Use a value of C<0> to show the full length of the argument. Defaults to C<64>. =head2 $Carp::MaxArgNums This variable determines how many arguments to each function to show. Use a false value to show all arguments to a function call. To suppress all arguments, use C<-1> or C<'0 but true'>. Defaults to C<8>. =head2 $Carp::Verbose This variable makes C<carp()> and C<croak()> generate stack backtraces just like C<cluck()> and C<confess()>. This is how C<use Carp 'verbose'> is implemented internally. Defaults to C<0>. =head2 $Carp::RefArgFormatter This variable sets a general argument formatter to display references. Plain scalars and objects that implement C<CARP_TRACE> will not go through this formatter. Calling C<Carp> from within this function is not supported. local $Carp::RefArgFormatter = sub { require Data::Dumper; Data::Dumper->Dump($_[0]); # not necessarily safe }; =head2 @CARP_NOT This variable, I<in your package>, says which packages are I<not> to be considered as the location of an error. The C<carp()> and C<cluck()> functions will skip over callers when reporting where an error occurred. NB: This variable must be in the package's symbol table, thus: # These work our @CARP_NOT; # file scope use vars qw(@CARP_NOT); # package scope @My::Package::CARP_NOT = ... ; # explicit package variable # These don't work sub xyz { ... @CARP_NOT = ... } # w/o declarations above my @CARP_NOT; # even at top-level Example of use: package My::Carping::Package; use Carp; our @CARP_NOT; sub bar { .... or _error('Wrong input') } sub _error { # temporary control of where'ness, __PACKAGE__ is implicit local @CARP_NOT = qw(My::Friendly::Caller); carp(@_) } This would make C<Carp> report the error as coming from a caller not in C<My::Carping::Package>, nor from C<My::Friendly::Caller>. Also read the L</DESCRIPTION> section above, about how C<Carp> decides where the error is reported from. Use C<@CARP_NOT>, instead of C<$Carp::CarpLevel>. Overrides C<Carp>'s use of C<@ISA>. =head2 %Carp::Internal This says what packages are internal to Perl. C<Carp> will never report an error as being from a line in a package that is internal to Perl. For example: $Carp::Internal{ (__PACKAGE__) }++; # time passes... sub foo { ... or confess("whatever") }; would give a full stack backtrace starting from the first caller outside of __PACKAGE__. (Unless that package was also internal to Perl.) =head2 %Carp::CarpInternal This says which packages are internal to Perl's warning system. For generating a full stack backtrace this is the same as being internal to Perl, the stack backtrace will not start inside packages that are listed in C<%Carp::CarpInternal>. But it is slightly different for the summary message generated by C<carp> or C<croak>. There errors will not be reported on any lines that are calling packages in C<%Carp::CarpInternal>. For example C<Carp> itself is listed in C<%Carp::CarpInternal>. Therefore the full stack backtrace from C<confess> will not start inside of C<Carp>, and the short message from calling C<croak> is not placed on the line where C<croak> was called. =head2 $Carp::CarpLevel This variable determines how many additional call frames are to be skipped that would not otherwise be when reporting where an error occurred on a call to one of C<Carp>'s functions. It is fairly easy to count these call frames on calls that generate a full stack backtrace. However it is much harder to do this accounting for calls that generate a short message. Usually people skip too many call frames. If they are lucky they skip enough that C<Carp> goes all of the way through the call stack, realizes that something is wrong, and then generates a full stack backtrace. If they are unlucky then the error is reported from somewhere misleading very high in the call stack. Therefore it is best to avoid C<$Carp::CarpLevel>. Instead use C<@CARP_NOT>, C<%Carp::Internal> and C<%Carp::CarpInternal>. Defaults to C<0>. =head1 BUGS The Carp routines don't handle exception objects currently. If called with a first argument that is a reference, they simply call die() or warn(), as appropriate. =head1 SEE ALSO L<Carp::Always>, L<Carp::Clan> =head1 CONTRIBUTING L<Carp> is maintained by the perl 5 porters as part of the core perl 5 version control repository. Please see the L<perlhack> perldoc for how to submit patches and contribute to it. =head1 AUTHOR The Carp module first appeared in Larry Wall's perl 5.000 distribution. Since then it has been modified by several of the perl 5 porters. Andrew Main (Zefram) <zefram@fysh.org> divested Carp into an independent distribution. =head1 COPYRIGHT Copyright (C) 1994-2013 Larry Wall Copyright (C) 2011, 2012, 2013 Andrew Main (Zefram) <zefram@fysh.org> =head1 LICENSE This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. PK ! .�N�� � 5.34.0/version/regex.pmnu �[��� package version::regex; use strict; our $VERSION = 0.9928; #--------------------------------------------------------------------------# # Version regexp components #--------------------------------------------------------------------------# # Fraction part of a decimal version number. This is a common part of # both strict and lax decimal versions my $FRACTION_PART = qr/\.[0-9]+/; # First part of either decimal or dotted-decimal strict version number. # Unsigned integer with no leading zeroes (except for zero itself) to # avoid confusion with octal. my $STRICT_INTEGER_PART = qr/0|[1-9][0-9]*/; # First part of either decimal or dotted-decimal lax version number. # Unsigned integer, but allowing leading zeros. Always interpreted # as decimal. However, some forms of the resulting syntax give odd # results if used as ordinary Perl expressions, due to how perl treats # octals. E.g. # version->new("010" ) == 10 # version->new( 010 ) == 8 # version->new( 010.2) == 82 # "8" . "2" my $LAX_INTEGER_PART = qr/[0-9]+/; # Second and subsequent part of a strict dotted-decimal version number. # Leading zeroes are permitted, and the number is always decimal. # Limited to three digits to avoid overflow when converting to decimal # form and also avoid problematic style with excessive leading zeroes. my $STRICT_DOTTED_DECIMAL_PART = qr/\.[0-9]{1,3}/; # Second and subsequent part of a lax dotted-decimal version number. # Leading zeroes are permitted, and the number is always decimal. No # limit on the numerical value or number of digits, so there is the # possibility of overflow when converting to decimal form. my $LAX_DOTTED_DECIMAL_PART = qr/\.[0-9]+/; # Alpha suffix part of lax version number syntax. Acts like a # dotted-decimal part. my $LAX_ALPHA_PART = qr/_[0-9]+/; #--------------------------------------------------------------------------# # Strict version regexp definitions #--------------------------------------------------------------------------# # Strict decimal version number. our $STRICT_DECIMAL_VERSION = qr/ $STRICT_INTEGER_PART $FRACTION_PART? /x; # Strict dotted-decimal version number. Must have both leading "v" and # at least three parts, to avoid confusion with decimal syntax. our $STRICT_DOTTED_DECIMAL_VERSION = qr/ v $STRICT_INTEGER_PART $STRICT_DOTTED_DECIMAL_PART{2,} /x; # Complete strict version number syntax -- should generally be used # anchored: qr/ \A $STRICT \z /x our $STRICT = qr/ $STRICT_DECIMAL_VERSION | $STRICT_DOTTED_DECIMAL_VERSION /x; #--------------------------------------------------------------------------# # Lax version regexp definitions #--------------------------------------------------------------------------# # Lax decimal version number. Just like the strict one except for # allowing an alpha suffix or allowing a leading or trailing # decimal-point our $LAX_DECIMAL_VERSION = qr/ $LAX_INTEGER_PART (?: $FRACTION_PART | \. )? $LAX_ALPHA_PART? | $FRACTION_PART $LAX_ALPHA_PART? /x; # Lax dotted-decimal version number. Distinguished by having either # leading "v" or at least three non-alpha parts. Alpha part is only # permitted if there are at least two non-alpha parts. Strangely # enough, without the leading "v", Perl takes .1.2 to mean v0.1.2, # so when there is no "v", the leading part is optional our $LAX_DOTTED_DECIMAL_VERSION = qr/ v $LAX_INTEGER_PART (?: $LAX_DOTTED_DECIMAL_PART+ $LAX_ALPHA_PART? )? | $LAX_INTEGER_PART? $LAX_DOTTED_DECIMAL_PART{2,} $LAX_ALPHA_PART? /x; # Complete lax version number syntax -- should generally be used # anchored: qr/ \A $LAX \z /x # # The string 'undef' is a special case to make for easier handling # of return values from ExtUtils::MM->parse_version our $LAX = qr/ undef | $LAX_DOTTED_DECIMAL_VERSION | $LAX_DECIMAL_VERSION /x; #--------------------------------------------------------------------------# # Preloaded methods go here. sub is_strict { defined $_[0] && $_[0] =~ qr/ \A $STRICT \z /x } sub is_lax { defined $_[0] && $_[0] =~ qr/ \A $LAX \z /x } 1; PK ! �����a �a 5.34.0/version/Internals.podnu �[��� =head1 NAME version::Internals - Perl extension for Version Objects =head1 DESCRIPTION Overloaded version objects for all modern versions of Perl. This documents the internal data representation and underlying code for version.pm. See F<version.pod> for daily usage. This document is only useful for users interested in the gory details. =head1 WHAT IS A VERSION? For the purposes of this module, a version "number" is a sequence of positive integer values separated by one or more decimal points and optionally a single underscore. This corresponds to what Perl itself uses for a version, as well as extending the "version as number" that is discussed in the various editions of the Camel book. There are actually two distinct kinds of version objects: =over 4 =item Decimal versions Any version which "looks like a number", see L<Decimal Versions>. This also includes versions with a single decimal point and a single embedded underscore, see L<Alpha Versions>, even though these must be quoted to preserve the underscore formatting. =item Dotted-Decimal versions Also referred to as "Dotted-Integer", these contains more than one decimal point and may have an optional embedded underscore, see L<Dotted-Decimal Versions>. This is what is commonly used in most open source software as the "external" version (the one used as part of the tag or tarfile name). A leading 'v' character is now required and will warn if it missing. =back Both of these methods will produce similar version objects, in that the default stringification will yield the version L<Normal Form> only if required: $v = version->new(1.002); # 1.002, but compares like 1.2.0 $v = version->new(1.002003); # 1.002003 $v2 = version->new("v1.2.3"); # v1.2.3 In specific, version numbers initialized as L<Decimal Versions> will stringify as they were originally created (i.e. the same string that was passed to C<new()>. Version numbers initialized as L<Dotted-Decimal Versions> will be stringified as L<Normal Form>. =head2 Decimal Versions These correspond to historical versions of Perl itself prior to 5.6.0, as well as all other modules which follow the Camel rules for the $VERSION scalar. A Decimal version is initialized with what looks like a floating point number. Leading zeros B<are> significant and trailing zeros are implied so that a minimum of three places is maintained between subversions. What this means is that any subversion (digits to the right of the decimal place) that contains less than three digits will have trailing zeros added to make up the difference, but only for purposes of comparison with other version objects. For example: # Prints Equivalent to $v = version->new( 1.2); # 1.2 v1.200.0 $v = version->new( 1.02); # 1.02 v1.20.0 $v = version->new( 1.002); # 1.002 v1.2.0 $v = version->new( 1.0023); # 1.0023 v1.2.300 $v = version->new( 1.00203); # 1.00203 v1.2.30 $v = version->new( 1.002003); # 1.002003 v1.2.3 All of the preceding examples are true whether or not the input value is quoted. The important feature is that the input value contains only a single decimal. See also L<Alpha Versions>. IMPORTANT NOTE: As shown above, if your Decimal version contains more than 3 significant digits after the decimal place, it will be split on each multiple of 3, so 1.0003 is equivalent to v1.0.300, due to the need to remain compatible with Perl's own 5.005_03 == 5.5.30 interpretation. Any trailing zeros are ignored for mathematical comparison purposes. =head2 Dotted-Decimal Versions These are the newest form of versions, and correspond to Perl's own version style beginning with 5.6.0. Starting with Perl 5.10.0, and most likely Perl 6, this is likely to be the preferred form. This method normally requires that the input parameter be quoted, although Perl's after 5.8.1 can use v-strings as a special form of quoting, but this is highly discouraged. Unlike L<Decimal Versions>, Dotted-Decimal Versions have more than a single decimal point, e.g.: # Prints $v = version->new( "v1.200"); # v1.200.0 $v = version->new("v1.20.0"); # v1.20.0 $v = qv("v1.2.3"); # v1.2.3 $v = qv("1.2.3"); # v1.2.3 $v = qv("1.20"); # v1.20.0 In general, Dotted-Decimal Versions permit the greatest amount of freedom to specify a version, whereas Decimal Versions enforce a certain uniformity. Just like L</Decimal Versions>, Dotted-Decimal Versions can be used as L</Alpha Versions>. =head2 Alpha Versions For module authors using CPAN, the convention has been to note unstable releases with an underscore in the version string. (See L<CPAN>.) version.pm follows this convention and alpha releases will test as being newer than the more recent stable release, and less than the next stable release. Only the last element may be separated by an underscore: # Declaring use version 0.77; our $VERSION = version->declare("v1.2_3"); # Parsing $v1 = version->parse("v1.2_3"); $v1 = version->parse("1.002_003"); Note that you B<must> quote the version when writing an alpha Decimal version. The stringified form of Decimal versions will always be the same string that was used to initialize the version object. =head2 Regular Expressions for Version Parsing A formalized definition of the legal forms for version strings is included in the C<version::regex> class. Primitives are included for common elements, although they are scoped to the file so they are useful for reference purposes only. There are two publicly accessible scalars that can be used in other code (not exported): =over 4 =item C<$version::LAX> This regexp covers all of the legal forms allowed under the current version string parser. This is not to say that all of these forms are recommended, and some of them can only be used when quoted. For dotted decimals: v1.2 1.2345.6 v1.23_4 The leading 'v' is optional if two or more decimals appear. If only a single decimal is included, then the leading 'v' is required to trigger the dotted-decimal parsing. A leading zero is permitted, though not recommended except when quoted, because of the risk that Perl will treat the number as octal. A trailing underscore plus one or more digits denotes an alpha or development release (and must be quoted to be parsed properly). For decimal versions: 1 1.2345 1.2345_01 an integer portion, an optional decimal point, and optionally one or more digits to the right of the decimal are all required. A trailing underscore is permitted and a leading zero is permitted. Just like the lax dotted-decimal version, quoting the values is required for alpha/development forms to be parsed correctly. =item C<$version::STRICT> This regexp covers a much more limited set of formats and constitutes the best practices for initializing version objects. Whether you choose to employ decimal or dotted-decimal for is a personal preference however. =over 4 =item v1.234.5 For dotted-decimal versions, a leading 'v' is required, with three or more sub-versions of no more than three digits. A leading 0 (zero) before the first sub-version (in the above example, '1') is also prohibited. =item 2.3456 For decimal versions, an integer portion (no leading 0), a decimal point, and one or more digits to the right of the decimal are all required. =back =back Both of the provided scalars are already compiled as regular expressions and do not contain either anchors or implicit groupings, so they can be included in your own regular expressions freely. For example, consider the following code: ($pkg, $ver) =~ / ^[ \t]* use [ \t]+($PKGNAME) (?:[ \t]+($version::STRICT))? [ \t]*; /x; This would match a line of the form: use Foo::Bar::Baz v1.2.3; # legal only in Perl 5.8.1+ where C<$PKGNAME> is another regular expression that defines the legal forms for package names. =head1 IMPLEMENTATION DETAILS =head2 Equivalence between Decimal and Dotted-Decimal Versions When Perl 5.6.0 was released, the decision was made to provide a transformation between the old-style decimal versions and new-style dotted-decimal versions: 5.6.0 == 5.006000 5.005_04 == 5.5.40 The floating point number is taken and split first on the single decimal place, then each group of three digits to the right of the decimal makes up the next digit, and so on until the number of significant digits is exhausted, B<plus> enough trailing zeros to reach the next multiple of three. This was the method that version.pm adopted as well. Some examples may be helpful: equivalent decimal zero-padded dotted-decimal ------- ----------- -------------- 1.2 1.200 v1.200.0 1.02 1.020 v1.20.0 1.002 1.002 v1.2.0 1.0023 1.002300 v1.2.300 1.00203 1.002030 v1.2.30 1.002003 1.002003 v1.2.3 =head2 Quoting Rules Because of the nature of the Perl parsing and tokenizing routines, certain initialization values B<must> be quoted in order to correctly parse as the intended version, especially when using the C<declare> or L</qv()> methods. While you do not have to quote decimal numbers when creating version objects, it is always safe to quote B<all> initial values when using version.pm methods, as this will ensure that what you type is what is used. Additionally, if you quote your initializer, then the quoted value that goes B<in> will be exactly what comes B<out> when your $VERSION is printed (stringified). If you do not quote your value, Perl's normal numeric handling comes into play and you may not get back what you were expecting. If you use a mathematic formula that resolves to a floating point number, you are dependent on Perl's conversion routines to yield the version you expect. You are pretty safe by dividing by a power of 10, for example, but other operations are not likely to be what you intend. For example: $VERSION = version->new((qw$Revision: 1.4)[1]/10); print $VERSION; # yields 0.14 $V2 = version->new(100/9); # Integer overflow in decimal number print $V2; # yields something like 11.111.111.100 Perl 5.8.1 and beyond are able to automatically quote v-strings but that is not possible in earlier versions of Perl. In other words: $version = version->new("v2.5.4"); # legal in all versions of Perl $newvers = version->new(v2.5.4); # legal only in Perl >= 5.8.1 =head2 What about v-strings? There are two ways to enter v-strings: a bare number with two or more decimal points, or a bare number with one or more decimal points and a leading 'v' character (also bare). For example: $vs1 = 1.2.3; # encoded as \1\2\3 $vs2 = v1.2; # encoded as \1\2 However, the use of bare v-strings to initialize version objects is B<strongly> discouraged in all circumstances. Also, bare v-strings are not completely supported in any version of Perl prior to 5.8.1. If you insist on using bare v-strings with Perl > 5.6.0, be aware of the following limitations: 1) For Perl releases 5.6.0 through 5.8.0, the v-string code merely guesses, based on some characteristics of v-strings. You B<must> use a three part version, e.g. 1.2.3 or v1.2.3 in order for this heuristic to be successful. 2) For Perl releases 5.8.1 and later, v-strings have changed in the Perl core to be magical, which means that the version.pm code can automatically determine whether the v-string encoding was used. 3) In all cases, a version created using v-strings will have a stringified form that has a leading 'v' character, for the simple reason that sometimes it is impossible to tell whether one was present initially. =head2 Version Object Internals version.pm provides an overloaded version object that is designed to both encapsulate the author's intended $VERSION assignment as well as make it completely natural to use those objects as if they were numbers (e.g. for comparisons). To do this, a version object contains both the original representation as typed by the author, as well as a parsed representation to ease comparisons. Version objects employ L<overload> methods to simplify code that needs to compare, print, etc the objects. The internal structure of version objects is a blessed hash with several components: bless( { 'original' => 'v1.2.3_4', 'alpha' => 1, 'qv' => 1, 'version' => [ 1, 2, 3, 4 ] }, 'version' ); =over 4 =item original A faithful representation of the value used to initialize this version object. The only time this will not be precisely the same characters that exist in the source file is if a short dotted-decimal version like v1.2 was used (in which case it will contain 'v1.2'). This form is B<STRONGLY> discouraged, in that it will confuse you and your users. =item qv A boolean that denotes whether this is a decimal or dotted-decimal version. See L<version/is_qv()>. =item alpha A boolean that denotes whether this is an alpha version. NOTE: that the underscore can only appear in the last position. See L<version/is_alpha()>. =item version An array of non-negative integers that is used for comparison purposes with other version objects. =back =head2 Replacement UNIVERSAL::VERSION In addition to the version objects, this modules also replaces the core UNIVERSAL::VERSION function with one that uses version objects for its comparisons. The return from this operator is always the stringified form as a simple scalar (i.e. not an object), but the warning message generated includes either the stringified form or the normal form, depending on how it was called. For example: package Foo; $VERSION = 1.2; package Bar; $VERSION = "v1.3.5"; # works with all Perl's (since it is quoted) package main; use version; print $Foo::VERSION; # prints 1.2 print $Bar::VERSION; # prints 1.003005 eval "use foo 10"; print $@; # prints "foo version 10 required..." eval "use foo 1.3.5; # work in Perl 5.6.1 or better print $@; # prints "foo version 1.3.5 required..." eval "use bar 1.3.6"; print $@; # prints "bar version 1.3.6 required..." eval "use bar 1.004"; # note Decimal version print $@; # prints "bar version 1.004 required..." IMPORTANT NOTE: This may mean that code which searches for a specific string (to determine whether a given module is available) may need to be changed. It is always better to use the built-in comparison implicit in C<use> or C<require>, rather than manually poking at C<< class->VERSION >> and then doing a comparison yourself. The replacement UNIVERSAL::VERSION, when used as a function, like this: print $module->VERSION; will also exclusively return the stringified form. See L</Stringification> for more details. =head1 USAGE DETAILS =head2 Using modules that use version.pm As much as possible, the version.pm module remains compatible with all current code. However, if your module is using a module that has defined C<$VERSION> using the version class, there are a couple of things to be aware of. For purposes of discussion, we will assume that we have the following module installed: package Example; use version; $VERSION = qv('1.2.2'); ...module code here... 1; =over 4 =item Decimal versions always work Code of the form: use Example 1.002003; will always work correctly. The C<use> will perform an automatic C<$VERSION> comparison using the floating point number given as the first term after the module name (e.g. above 1.002.003). In this case, the installed module is too old for the requested line, so you would see an error like: Example version 1.002003 (v1.2.3) required--this is only version 1.002002 (v1.2.2)... =item Dotted-Decimal version work sometimes With Perl >= 5.6.2, you can also use a line like this: use Example 1.2.3; and it will again work (i.e. give the error message as above), even with releases of Perl which do not normally support v-strings (see L<What about v-strings?> above). This has to do with that fact that C<use> only checks to see if the second term I<looks like a number> and passes that to the replacement L<UNIVERSAL::VERSION|UNIVERSAL/VERSION>. This is not true in Perl 5.005_04, however, so you are B<strongly encouraged> to always use a Decimal version in your code, even for those versions of Perl which support the Dotted-Decimal version. =back =head2 Object Methods =over 4 =item new() Like many OO interfaces, the new() method is used to initialize version objects. If two arguments are passed to C<new()>, the B<second> one will be used as if it were prefixed with "v". This is to support historical use of the C<qw> operator with the CVS variable $Revision, which is automatically incremented by CVS every time the file is committed to the repository. In order to facilitate this feature, the following code can be employed: $VERSION = version->new(qw$Revision: 2.7 $); and the version object will be created as if the following code were used: $VERSION = version->new("v2.7"); In other words, the version will be automatically parsed out of the string, and it will be quoted to preserve the meaning CVS normally carries for versions. The CVS $Revision$ increments differently from Decimal versions (i.e. 1.10 follows 1.9), so it must be handled as if it were a Dotted-Decimal Version. A new version object can be created as a copy of an existing version object, either as a class method: $v1 = version->new(12.3); $v2 = version->new($v1); or as an object method: $v1 = version->new(12.3); $v2 = $v1->new(12.3); and in each case, $v1 and $v2 will be identical. NOTE: if you create a new object using an existing object like this: $v2 = $v1->new(); the new object B<will not> be a clone of the existing object. In the example case, $v2 will be an empty object of the same type as $v1. =back =over 4 =item qv() An alternate way to create a new version object is through the exported qv() sub. This is not strictly like other q? operators (like qq, qw), in that the only delimiters supported are parentheses (or spaces). It is the best way to initialize a short version without triggering the floating point interpretation. For example: $v1 = qv(1.2); # v1.2.0 $v2 = qv("1.2"); # also v1.2.0 As you can see, either a bare number or a quoted string can usually be used interchangeably, except in the case of a trailing zero, which must be quoted to be converted properly. For this reason, it is strongly recommended that all initializers to qv() be quoted strings instead of bare numbers. To prevent the C<qv()> function from being exported to the caller's namespace, either use version with a null parameter: use version (); or just require version, like this: require version; Both methods will prevent the import() method from firing and exporting the C<qv()> sub. =back For the subsequent examples, the following three objects will be used: $ver = version->new("1.2.3.4"); # see "Quoting Rules" $alpha = version->new("1.2.3_4"); # see "Alpha Versions" $nver = version->new(1.002); # see "Decimal Versions" =over 4 =item Normal Form For any version object which is initialized with multiple decimal places (either quoted or if possible v-string), or initialized using the L<qv()|version/qv()> operator, the stringified representation is returned in a normalized or reduced form (no extraneous zeros), and with a leading 'v': print $ver->normal; # prints as v1.2.3.4 print $ver->stringify; # ditto print $ver; # ditto print $nver->normal; # prints as v1.2.0 print $nver->stringify; # prints as 1.002, # see "Stringification" In order to preserve the meaning of the processed version, the normalized representation will always contain at least three sub terms. In other words, the following is guaranteed to always be true: my $newver = version->new($ver->stringify); if ($newver eq $ver ) # always true {...} =back =over 4 =item Numification Although all mathematical operations on version objects are forbidden by default, it is possible to retrieve a number which corresponds to the version object through the use of the $obj->numify method. For formatting purposes, when displaying a number which corresponds a version object, all sub versions are assumed to have three decimal places. So for example: print $ver->numify; # prints 1.002003004 print $nver->numify; # prints 1.002 Unlike the stringification operator, there is never any need to append trailing zeros to preserve the correct version value. =back =over 4 =item Stringification The default stringification for version objects returns exactly the same string as was used to create it, whether you used C<new()> or C<qv()>, with one exception. The sole exception is if the object was created using C<qv()> and the initializer did not have two decimal places or a leading 'v' (both optional), then the stringified form will have a leading 'v' prepended, in order to support round-trip processing. For example: Initialized as Stringifies to ============== ============== version->new("1.2") 1.2 version->new("v1.2") v1.2 qv("1.2.3") 1.2.3 qv("v1.3.5") v1.3.5 qv("1.2") v1.2 ### exceptional case See also L<UNIVERSAL::VERSION|UNIVERSAL/VERSION>, as this also returns the stringified form when used as a class method. IMPORTANT NOTE: There is one exceptional cases shown in the above table where the "initializer" is not stringwise equivalent to the stringified representation. If you use the C<qv>() operator on a version without a leading 'v' B<and> with only a single decimal place, the stringified output will have a leading 'v', to preserve the sense. See the L</qv()> operator for more details. IMPORTANT NOTE 2: Attempting to bypass the normal stringification rules by manually applying L<numify()|version/numify()> and L<normal()|version/normal()> will sometimes yield surprising results: print version->new(version->new("v1.0")->numify)->normal; # v1.0.0 The reason for this is that the L<numify()|version/numify()> operator will turn "v1.0" into the equivalent string "1.000000". Forcing the outer version object to L<normal()|version/normal()> form will display the mathematically equivalent "v1.0.0". As the example in L</new()> shows, you can always create a copy of an existing version object with the same value by the very compact: $v2 = $v1->new($v1); and be assured that both C<$v1> and C<$v2> will be completely equivalent, down to the same internal representation as well as stringification. =back =over 4 =item Comparison operators Both C<cmp> and C<E<lt>=E<gt>> operators perform the same comparison between terms (upgrading to a version object automatically). Perl automatically generates all of the other comparison operators based on those two. In addition to the obvious equalities listed below, appending a single trailing 0 term does not change the value of a version for comparison purposes. In other words "v1.2" and "1.2.0" will compare as identical. For example, the following relations hold: As Number As String Truth Value ------------- ---------------- ----------- $ver > 1.0 $ver gt "1.0" true $ver < 2.5 $ver lt true $ver != 1.3 $ver ne "1.3" true $ver == 1.2 $ver eq "1.2" false $ver == 1.2.3.4 $ver eq "1.2.3.4" see discussion below It is probably best to chose either the Decimal notation or the string notation and stick with it, to reduce confusion. Perl6 version objects B<may> only support Decimal comparisons. See also L<Quoting Rules>. WARNING: Comparing version with unequal numbers of decimal points (whether explicitly or implicitly initialized), may yield unexpected results at first glance. For example, the following inequalities hold: version->new(0.96) > version->new(0.95); # 0.960.0 > 0.950.0 version->new("0.96.1") < version->new(0.95); # 0.096.1 < 0.950.0 For this reason, it is best to use either exclusively L<Decimal Versions> or L<Dotted-Decimal Versions> with multiple decimal points. =back =over 4 =item Logical Operators If you need to test whether a version object has been initialized, you can simply test it directly: $vobj = version->new($something); if ( $vobj ) # true only if $something was non-blank You can also test whether a version object is an alpha version, for example to prevent the use of some feature not present in the main release: $vobj = version->new("1.2_3"); # MUST QUOTE ...later... if ( $vobj->is_alpha ) # True =back =head1 AUTHOR John Peacock E<lt>jpeacock@cpan.orgE<gt> =head1 SEE ALSO L<perl>. =cut PK ! ���, , 5.34.0/Devel/SelfStubber.pmnu �[��� package Devel::SelfStubber; use File::Spec; require SelfLoader; @ISA = qw(SelfLoader); @EXPORT = 'AUTOLOAD'; $JUST_STUBS = 1; $VERSION = 1.06; sub Version {$VERSION} # Use as # perl -e 'use Devel::SelfStubber;Devel::SelfStubber->stub(MODULE_NAME,LIB)' # (LIB defaults to '.') e.g. # perl -e 'use Devel::SelfStubber;Devel::SelfStubber->stub('Math::BigInt')' # would print out stubs needed if you added a __DATA__ before the subs. # Setting $Devel::SelfStubber::JUST_STUBS to 0 will print out the whole # module with the stubs entered just before the __DATA__ sub _add_to_cache { my($self,$fullname,$pack,$lines, $prototype) = @_; push(@DATA,@{$lines}); if($fullname){push(@STUBS,"sub $fullname $prototype;\n")}; # stubs '1;'; } sub _package_defined { my($self,$line) = @_; push(@DATA,$line); } sub stub { my($self,$module,$lib) = @_; my($line,$end_data,$fh,$mod_file,$found_selfloader); $lib ||= File::Spec->curdir(); ($mod_file = $module) =~ s,::,/,g; $mod_file =~ tr|/|:| if $^O eq 'MacOS'; $mod_file = File::Spec->catfile($lib, "$mod_file.pm"); $fh = "${module}::DATA"; my (@BEFORE_DATA, @AFTER_DATA, @AFTER_END); @DATA = @STUBS = (); open($fh,'<',$mod_file) || die "Unable to open $mod_file"; local $/ = "\n"; while(defined ($line = <$fh>) and $line !~ m/^__DATA__/) { push(@BEFORE_DATA,$line); $line =~ /use\s+SelfLoader/ && $found_selfloader++; } (defined ($line) && $line =~ m/^__DATA__/) || die "$mod_file doesn't contain a __DATA__ token"; $found_selfloader || print 'die "\'use SelfLoader;\' statement NOT FOUND!!\n"',"\n"; if ($JUST_STUBS) { $self->_load_stubs($module); } else { $self->_load_stubs($module, \@AFTER_END); } if ( fileno($fh) ) { $end_data = 1; while(defined($line = <$fh>)) { push(@AFTER_DATA,$line); } } close($fh); unless ($JUST_STUBS) { print @BEFORE_DATA; } print @STUBS; unless ($JUST_STUBS) { print "1;\n__DATA__\n",@DATA; if($end_data) { print "__END__ DATA\n",@AFTER_DATA; } if(@AFTER_END) { print "__END__\n",@AFTER_END; } } } 1; __END__ =head1 NAME Devel::SelfStubber - generate stubs for a SelfLoading module =head1 SYNOPSIS To generate just the stubs: use Devel::SelfStubber; Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR'); or to generate the whole module with stubs inserted correctly use Devel::SelfStubber; $Devel::SelfStubber::JUST_STUBS=0; Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR'); MODULENAME is the Perl module name, e.g. Devel::SelfStubber, NOT 'Devel/SelfStubber' or 'Devel/SelfStubber.pm'. MY_LIB_DIR defaults to '.' if not present. =head1 DESCRIPTION Devel::SelfStubber prints the stubs you need to put in the module before the __DATA__ token (or you can get it to print the entire module with stubs correctly placed). The stubs ensure that if a method is called, it will get loaded. They are needed specifically for inherited autoloaded methods. This is best explained using the following example: Assume four classes, A,B,C & D. A is the root class, B is a subclass of A, C is a subclass of B, and D is another subclass of A. A / \ B D / C If D calls an autoloaded method 'foo' which is defined in class A, then the method is loaded into class A, then executed. If C then calls method 'foo', and that method was reimplemented in class B, but set to be autoloaded, then the lookup mechanism never gets to the AUTOLOAD mechanism in B because it first finds the method already loaded in A, and so erroneously uses that. If the method foo had been stubbed in B, then the lookup mechanism would have found the stub, and correctly loaded and used the sub from B. So, for classes and subclasses to have inheritance correctly work with autoloading, you need to ensure stubs are loaded. The SelfLoader can load stubs automatically at module initialization with the statement 'SelfLoader-E<gt>load_stubs()';, but you may wish to avoid having the stub loading overhead associated with your initialization (though note that the SelfLoader::load_stubs method will be called sooner or later - at latest when the first sub is being autoloaded). In this case, you can put the sub stubs before the __DATA__ token. This can be done manually, but this module allows automatic generation of the stubs. By default it just prints the stubs, but you can set the global $Devel::SelfStubber::JUST_STUBS to 0 and it will print out the entire module with the stubs positioned correctly. At the very least, this is useful to see what the SelfLoader thinks are stubs - in order to ensure future versions of the SelfStubber remain in step with the SelfLoader, the SelfStubber actually uses the SelfLoader to determine which stubs are needed. =cut PK ! ^>��4 �4 5.34.0/Test2/Transition.podnu �[��� =pod =head1 NAME Test2::Transition - Transition notes when upgrading to Test2 =head1 DESCRIPTION This is where gotchas and breakages related to the Test2 upgrade are documented. The upgrade causes Test::Builder to defer to Test2 under the hood. This transition is mostly transparent, but there are a few cases that can trip you up. =head1 THINGS THAT BREAK This is the list of scenarios that break with the new internals. =head2 Test::Builder1.5/2 conditionals =head3 The Problem a few years back there were two attempts to upgrade/replace Test::Builder. Confusingly these were called Test::Builder2 and Test::Builder1.5, in that order. Many people put conditionals in their code to check the Test::Builder version number and adapt their code accordingly. The Test::Builder2/1.5 projects both died out. Now the conditional code people added has become a mine field. A vast majority of modules broken by Test2 fall into this category. =head3 The Fix The fix is to remove all Test::Builder1.5/2 related code. Either use the legacy Test::Builder API, or use Test2 directly. =head2 Replacing the Test::Builder singleton =head3 The Problem Some test modules would replace the Test::Builder singleton instance with their own instance or subclass. This was usually done to intercept or modify results as they happened. The Test::Builder singleton is now a simple compatibility wrapper around Test2. The Test::Builder singleton is no longer the central place for results. Many results bypass the Test::Builder singleton completely, which breaks and behavior intended when replacing the singleton. =head3 The Fix If you simply want to intercept all results instead of letting them go to TAP, you should look at the L<Test2::API> docs and read about pushing a new hub onto the hub stack. Replacing the hub temporarily is now the correct way to intercept results. If your goal is purely monitoring of events use the C<< Test2::Hub->listen() >> method exported by Test::More to watch events as they are fired. If you wish to modify results before they go to TAP look at the C<< Test2::Hub->filter() >> method. =head2 Directly Accessing Hash Elements =head3 The Problem Some modules look directly at hash keys on the Test::Builder singleton. The problem here is that the Test::Builder singleton no longer holds anything important. =head3 The Fix The fix is to use the API specified in L<Test2::API> to look at or modify state as needed. =head2 Subtest indentation =head3 The Problem An early change, in fact the change that made Test2 an idea, was a change to the indentation of the subtest note. It was decided it would be more readable to outdent the subtest note instead of having it inline with the subtest: # subtest foo ok 1 - blah 1..1 ok 1 - subtest foo The old style indented the note: # subtest foo ok 1 - blah 1..1 ok 1 - subtest foo This breaks tests that do string comparison of TAP output. =head3 The Fix my $indent = $INC{'Test2/API.pm'} ? '' : ' '; is( $subtest_output, "${indent}# subtest foo", "Got subtest note" ); Check if C<$INC{'Test2/API.pm'}> is set, if it is then no indentation should be expected. If it is not set, then the old Test::Builder is in use, indentation should be expected. =head1 DISTRIBUTIONS THAT BREAK OR NEED TO BE UPGRADED This is a list of cpan modules that have been known to have been broken by the upgrade at one point. =head2 WORKS BUT TESTS WILL FAIL These modules still function correctly, but their test suites will not pass. If you already have these modules installed then you can continue to use them. If you are trying to install them after upgrading Test::Builder you will need to force installation, or bypass the broken tests. =over 4 =item Test::DBIx::Class::Schema This module has a test that appears to work around a Test::Builder bug. The bug appears to have been fixed by Test2, which means the workaround causes a failure. This can be easily updated, but nobody has done so yet. Known broken in versions: 1.0.9 and older =item Device::Chip Tests break due to subtest indentation. Known broken in version 0.07. Apparently works fine in 0.06 though. Patch has been submitted to fix the issue. =back =head2 UPGRADE SUGGESTED These are modules that did not break, but had broken test suites that have since been fixed. =over 4 =item Test::Exception Old versions work fine, but have a minor test name behavior that breaks with Test2. Old versions will no longer install because of this. The latest version on CPAN will install just fine. Upgrading is not required, but is recommended. Fixed in version: 0.43 =item Data::Peek Some tests depended on C<$!> and C<$?> being modified in subtle ways. A patch was applied to correct things that changed. The module itself works fine, there is no need to upgrade. Fixed in version: 0.45 =item circular::require Some tests were fragile and required base.pm to be loaded at a late stage. Test2 was loading base.pm too early. The tests were updated to fix this. The module itself never broke, you do not need to upgrade. Fixed in version: 0.12 =item Test::Module::Used A test worked around a now-fixed planning bug. There is no need to upgrade if you have an old version installed. New versions install fine if you want them. Fixed in version: 0.2.5 =item Test::Moose::More Some tests were fragile, but have been fixed. The actual breakage was from the subtest comment indentation change. No need to upgrade, old versions work fine. Only new versions will install. Fixed in version: 0.025 =item Test::FITesque This was broken by a bugfix to how planning is done. The test was updated after the bugfix. Fixed in version: 0.04 =item Test::Kit Old versions work fine, but would not install because L<Test::Aggregate> was in the dependency chain. An upgrade should not be needed. Fixed in version: 2.15 =item autouse A test broke because it depended on Scalar::Util not being loaded. Test2 loads Scalar::Util. The test was updated to load Test2 after checking Scalar::Util's load status. There is no need to upgrade if you already have it installed. Fixed in version: 1.11 =back =head2 NEED TO UPGRADE =over 4 =item Test::SharedFork Old versions need to directly access Test::Builder singleton hash elements. The latest version on CPAN will still do this on old Test::Builder, but will defer to L<Test2::IPC> on Test2. Fixed in version: 0.35 =item Test::Builder::Clutch This works by doing overriding methods on the singleton, and directly accessing hash values on the singleton. A new version has been released that uses the Test2 API to accomplish the same result in a saner way. Fixed in version: 0.07 =item Test::Dist::VersionSync This had Test::Builder2 conditionals. This was fixed by removing the conditionals. Fixed in version: 1.1.4 =item Test::Modern This relied on C<< Test::Builder->_try() >> which was a private method, documented as something nobody should use. This was fixed by using a different tool. Fixed in version: 0.012 =item Test::UseAllModules Version 0.14 relied on C<< Test::Builder->history >> which was available in Test::Builder 1.5. Versions 0.12 and 0.13 relied on other Test::Builder internals. Fixed in version: 0.15 =item Test::More::Prefix Worked by applying a role that wrapped C<< Test::Builder->_print_comment >>. Fixed by adding an event filter that modifies the message instead when running under Test2. Fixed in version: 0.007 =back =head2 STILL BROKEN =over 4 =item Test::Aggregate This distribution directly accesses the hash keys in the L<Test::Builder> singleton. It also approaches the problem from the wrong angle, please consider using L<Test2::Aggregate> for similar functionality and L<Test2::Harness> which allows module preloading at the harness level. Still broken as of version: 0.373 =item Test::Wrapper This module directly uses hash keys in the L<Test::Builder> singleton. This module is also obsolete thanks to the benefits of L<Test2>. Use C<intercept()> from L<Test2::API> to achieve a similar result. Still broken as of version: 0.3.0 =item Test::ParallelSubtest This module overrides C<Test::Builder::subtest()> and C<Test::Builder::done_testing()>. It also directly accesses hash elements of the singleton. It has not yet been fixed. Alternatives: L<Test2::AsyncSubtest> and L<Test2::Workflow> (not stable). Still broken as of version: 0.05 =item Test::Pretty See https://github.com/tokuhirom/Test-Pretty/issues/25 The author admits the module is crazy, and he is awaiting a stable release of something new (Test2) to completely rewrite it in a sane way. Still broken as of version: 0.32 =item Net::BitTorrent The tests for this module directly access L<Test::Builder> hash keys. Most, if not all of these hash keys have public API methods that could be used instead to avoid the problem. Still broken in version: 0.052 =item Test::Group It monkeypatches Test::Builder, and calls it "black magic" in the code. Still broken as of version: 0.20 =item Test::Flatten This modifies the Test::Builder internals in many ways. A better was to accomplish the goal of this module is to write your own subtest function. Still broken as of version: 0.11 =item Log::Dispatch::Config::TestLog Modifies Test::Builder internals. Still broken as of version: 0.02 =item Test::Able Modifies Test::Builder internals. Still broken as of version: 0.11 =back =head1 MAKE ASSERTIONS -> SEND EVENTS =head2 LEGACY use Test::Builder; # A majority of tools out there do this: # my $TB = Test::Builder->new; # This works, but has always been wrong, forcing Test::Builder to implement # subtests as a horrific hack. It also causes problems for tools that try # to replace the singleton (also discouraged). sub my_ok($;$) { my ($bool, $name) = @_; my $TB = Test::Builder->new; $TB->ok($bool, $name); } sub my_diag($) { my ($msg) = @_; my $TB = Test::Builder->new; $TB->diag($msg); } =head2 TEST2 use Test2::API qw/context/; sub my_ok($;$) { my ($bool, $name) = @_; my $ctx = context(); $ctx->ok($bool, $name); $ctx->release; } sub my_diag($) { my ($msg) = @_; my $ctx = context(); $ctx->diag($msg); $ctx->release; } The context object has API compatible implementations of the following methods: =over 4 =item ok($bool, $name) =item diag(@messages) =item note(@messages) =item subtest($name, $code) =back If you are looking for helpers with C<is>, C<like>, and others, see L<Test2::Suite>. =head1 WRAP EXISTING TOOLS =head2 LEGACY use Test::More; sub exclusive_ok { my ($bool1, $bool2, $name) = @_; # Ensure errors are reported 1 level higher local $Test::Builder::Level = $Test::Builder::Level + 1; $ok = $bool1 || $bool2; $ok &&= !($bool1 && $bool2); ok($ok, $name); return $bool; } Every single tool in the chain from this, to C<ok>, to anything C<ok> calls needs to increment the C<$Level> variable. When an error occurs Test::Builder will do a trace to the stack frame determined by C<$Level>, and report that file+line as the one where the error occurred. If you or any other tool you use forgets to set C<$Level> then errors will be reported to the wrong place. =head2 TEST2 use Test::More; sub exclusive_ok { my ($bool1, $bool2, $name) = @_; # Grab and store the context, even if you do not need to use it # directly. my $ctx = context(); $ok = $bool1 || $bool2; $ok &&= !($bool1 && $bool2); ok($ok, $name); $ctx->release; return $bool; } Instead of using C<$Level> to perform a backtrace, Test2 uses a context object. In this sample you create a context object and store it. This locks the context (errors report 1 level up from here) for all wrapped tools to find. You do not need to use the context object, but you do need to store it in a variable. Once the sub ends the C<$ctx> variable is destroyed which lets future tools find their own. =head1 USING UTF8 =head2 LEGACY # Set the mode BEFORE anything loads Test::Builder use open ':std', ':encoding(utf8)'; use Test::More; Or # Modify the filehandles my $builder = Test::More->builder; binmode $builder->output, ":encoding(utf8)"; binmode $builder->failure_output, ":encoding(utf8)"; binmode $builder->todo_output, ":encoding(utf8)"; =head2 TEST2 use Test2::API qw/test2_stack/; test2_stack->top->format->encoding('utf8'); Though a much better way is to use the L<Test2::Plugin::UTF8> plugin, which is part of L<Test2::Suite>. =head1 AUTHORS, CONTRIBUTORS AND REVIEWERS The following people have all contributed to this document in some way, even if only for review. =over 4 =item Chad Granum (EXODIST) E<lt>exodist@cpan.orgE<gt> =back =head1 SOURCE The source code repository for Test2 can be found at F<http://github.com/Test-More/test-more/>. =head1 MAINTAINER =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 COPYRIGHT Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://www.perl.com/perl/misc/Artistic.html> =cut PK ! ��.) ) 5.34.0/Test2/Util.pmnu �[��� package Test2::Util; use strict; use warnings; our $VERSION = '1.302183'; use POSIX(); use Config qw/%Config/; use Carp qw/croak/; BEGIN { local ($@, $!, $SIG{__DIE__}); *HAVE_PERLIO = eval { require PerlIO; PerlIO->VERSION(1.02); } ? sub() { 1 } : sub() { 0 }; } our @EXPORT_OK = qw{ try pkg_to_file get_tid USE_THREADS CAN_THREAD CAN_REALLY_FORK CAN_FORK CAN_SIGSYS IS_WIN32 ipc_separator gen_uid do_rename do_unlink try_sig_mask clone_io }; BEGIN { require Exporter; our @ISA = qw(Exporter) } BEGIN { *IS_WIN32 = ($^O eq 'MSWin32') ? sub() { 1 } : sub() { 0 }; } sub _can_thread { return 0 unless $] >= 5.008001; return 0 unless $Config{'useithreads'}; # Threads are broken on perl 5.10.0 built with gcc 4.8+ if ($] == 5.010000 && $Config{'ccname'} eq 'gcc' && $Config{'gccversion'}) { my @parts = split /\./, $Config{'gccversion'}; return 0 if $parts[0] > 4 || ($parts[0] == 4 && $parts[1] >= 8); } # Change to a version check if this ever changes return 0 if $INC{'Devel/Cover.pm'}; return 1; } sub _can_fork { return 1 if $Config{d_fork}; return 0 unless IS_WIN32 || $^O eq 'NetWare'; return 0 unless $Config{useithreads}; return 0 unless $Config{ccflags} =~ /-DPERL_IMPLICIT_SYS/; return _can_thread(); } BEGIN { no warnings 'once'; *CAN_THREAD = _can_thread() ? sub() { 1 } : sub() { 0 }; } my $can_fork; sub CAN_FORK () { return $can_fork if defined $can_fork; $can_fork = !!_can_fork(); no warnings 'redefine'; *CAN_FORK = $can_fork ? sub() { 1 } : sub() { 0 }; $can_fork; } my $can_really_fork; sub CAN_REALLY_FORK () { return $can_really_fork if defined $can_really_fork; $can_really_fork = !!$Config{d_fork}; no warnings 'redefine'; *CAN_REALLY_FORK = $can_really_fork ? sub() { 1 } : sub() { 0 }; $can_really_fork; } sub _manual_try(&;@) { my $code = shift; my $args = \@_; my $err; my $die = delete $SIG{__DIE__}; eval { $code->(@$args); 1 } or $err = $@ || "Error was squashed!\n"; $die ? $SIG{__DIE__} = $die : delete $SIG{__DIE__}; return (!defined($err), $err); } sub _local_try(&;@) { my $code = shift; my $args = \@_; my $err; no warnings; local $SIG{__DIE__}; eval { $code->(@$args); 1 } or $err = $@ || "Error was squashed!\n"; return (!defined($err), $err); } # Older versions of perl have a nasty bug on win32 when localizing a variable # before forking or starting a new thread. So for those systems we use the # non-local form. When possible though we use the faster 'local' form. BEGIN { if (IS_WIN32 && $] < 5.020002) { *try = \&_manual_try; } else { *try = \&_local_try; } } BEGIN { if (CAN_THREAD) { if ($INC{'threads.pm'}) { # Threads are already loaded, so we do not need to check if they # are loaded each time *USE_THREADS = sub() { 1 }; *get_tid = sub() { threads->tid() }; } else { # :-( Need to check each time to see if they have been loaded. *USE_THREADS = sub() { $INC{'threads.pm'} ? 1 : 0 }; *get_tid = sub() { $INC{'threads.pm'} ? threads->tid() : 0 }; } } else { # No threads, not now, not ever! *USE_THREADS = sub() { 0 }; *get_tid = sub() { 0 }; } } sub pkg_to_file { my $pkg = shift; my $file = $pkg; $file =~ s{(::|')}{/}g; $file .= '.pm'; return $file; } sub ipc_separator() { "~" } my $UID = 1; sub gen_uid() { join ipc_separator() => ($$, get_tid(), time, $UID++) } sub _check_for_sig_sys { my $sig_list = shift; return $sig_list =~ m/\bSYS\b/; } BEGIN { if (_check_for_sig_sys($Config{sig_name})) { *CAN_SIGSYS = sub() { 1 }; } else { *CAN_SIGSYS = sub() { 0 }; } } my %PERLIO_SKIP = ( unix => 1, via => 1, ); sub clone_io { my ($fh) = @_; my $fileno = eval { fileno($fh) }; return $fh if !defined($fileno) || !length($fileno) || $fileno < 0; open(my $out, '>&' . $fileno) or die "Can't dup fileno $fileno: $!"; my %seen; my @layers = HAVE_PERLIO ? grep { !$PERLIO_SKIP{$_} and !$seen{$_}++ } PerlIO::get_layers($fh) : (); binmode($out, join(":", "", "raw", @layers)); my $old = select $fh; my $af = $|; select $out; $| = $af; select $old; return $out; } BEGIN { if (IS_WIN32) { my $max_tries = 5; *do_rename = sub { my ($from, $to) = @_; my $err; for (1 .. $max_tries) { return (1) if rename($from, $to); $err = "$!"; last if $_ == $max_tries; sleep 1; } return (0, $err); }; *do_unlink = sub { my ($file) = @_; my $err; for (1 .. $max_tries) { return (1) if unlink($file); $err = "$!"; last if $_ == $max_tries; sleep 1; } return (0, "$!"); }; } else { *do_rename = sub { my ($from, $to) = @_; return (1) if rename($from, $to); return (0, "$!"); }; *do_unlink = sub { my ($file) = @_; return (1) if unlink($file); return (0, "$!"); }; } } sub try_sig_mask(&) { my $code = shift; my ($old, $blocked); unless(IS_WIN32) { my $to_block = POSIX::SigSet->new( POSIX::SIGINT(), POSIX::SIGALRM(), POSIX::SIGHUP(), POSIX::SIGTERM(), POSIX::SIGUSR1(), POSIX::SIGUSR2(), ); $old = POSIX::SigSet->new; $blocked = POSIX::sigprocmask(POSIX::SIG_BLOCK(), $to_block, $old); # Silently go on if we failed to log signals, not much we can do. } my ($ok, $err) = &try($code); # If our block was successful we want to restore the old mask. POSIX::sigprocmask(POSIX::SIG_SETMASK(), $old, POSIX::SigSet->new()) if defined $blocked; return ($ok, $err); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Test2::Util - Tools used by Test2 and friends. =head1 DESCRIPTION Collection of tools used by L<Test2> and friends. =head1 EXPORTS All exports are optional. You must specify subs to import. =over 4 =item ($success, $error) = try { ... } Eval the codeblock, return success or failure, and the error message. This code protects $@ and $!, they will be restored by the end of the run. This code also temporarily blocks $SIG{DIE} handlers. =item protect { ... } Similar to try, except that it does not catch exceptions. The idea here is to protect $@ and $! from changes. $@ and $! will be restored to whatever they were before the run so long as it is successful. If the run fails $! will still be restored, but $@ will contain the exception being thrown. =item CAN_FORK True if this system is capable of true or pseudo-fork. =item CAN_REALLY_FORK True if the system can really fork. This will be false for systems where fork is emulated. =item CAN_THREAD True if this system is capable of using threads. =item USE_THREADS Returns true if threads are enabled, false if they are not. =item get_tid This will return the id of the current thread when threads are enabled, otherwise it returns 0. =item my $file = pkg_to_file($package) Convert a package name to a filename. =item $string = ipc_separator() Get the IPC separator. Currently this is always the string C<'~'>. =item $string = gen_uid() Generate a unique id (NOT A UUID). This will typically be the process id, the thread id, the time, and an incrementing integer all joined with the C<ipc_separator()>. These ID's are unique enough for most purposes. For identical ids to be generated you must have 2 processes with the same PID generate IDs at the same time with the same current state of the incrementing integer. This is a perfectly reasonable thing to expect to happen across multiple machines, but is quite unlikely to happen on one machine. This can fail to be unique if a process generates an id, calls exec, and does it again after the exec and it all happens in less than a second. It can also happen if the systems process id's cycle in less than a second allowing 2 different programs that use this generator to run with the same PID in less than a second. Both these cases are sufficiently unlikely. If you need universally unique ids, or ids that are unique in these conditions, look at L<Data::UUID>. =item ($ok, $err) = do_rename($old_name, $new_name) Rename a file, this wraps C<rename()> in a way that makes it more reliable cross-platform when trying to rename files you recently altered. =item ($ok, $err) = do_unlink($filename) Unlink a file, this wraps C<unlink()> in a way that makes it more reliable cross-platform when trying to unlink files you recently altered. =item ($ok, $err) = try_sig_mask { ... } Complete an action with several signals masked, they will be unmasked at the end allowing any signals that were intercepted to get handled. This is primarily used when you need to make several actions atomic (against some signals anyway). Signals that are intercepted: =over 4 =item SIGINT =item SIGALRM =item SIGHUP =item SIGTERM =item SIGUSR1 =item SIGUSR2 =back =back =head1 NOTES && CAVEATS =over 4 =item 5.10.0 Perl 5.10.0 has a bug when compiled with newer gcc versions. This bug causes a segfault whenever a new thread is launched. Test2 will attempt to detect this, and note that the system is not capable of forking when it is detected. =item Devel::Cover Devel::Cover does not support threads. CAN_THREAD will return false if Devel::Cover is loaded before the check is first run. =back =head1 SOURCE The source code repository for Test2 can be found at F<http://github.com/Test-More/test-more/>. =head1 MAINTAINERS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 AUTHORS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =item Kent Fredric E<lt>kentnl@cpan.orgE<gt> =back =head1 COPYRIGHT Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://dev.perl.org/licenses/> =cut PK ! c�.�oX oX 5.34.0/Test2/Event.pmnu �[��� package Test2::Event; use strict; use warnings; our $VERSION = '1.302183'; use Scalar::Util qw/blessed reftype/; use Carp qw/croak/; use Test2::Util::HashBase qw/trace -amnesty uuid -_eid -hubs/; use Test2::Util::ExternalMeta qw/meta get_meta set_meta delete_meta/; use Test2::Util qw/pkg_to_file gen_uid/; use Test2::EventFacet::About(); use Test2::EventFacet::Amnesty(); use Test2::EventFacet::Assert(); use Test2::EventFacet::Control(); use Test2::EventFacet::Error(); use Test2::EventFacet::Info(); use Test2::EventFacet::Meta(); use Test2::EventFacet::Parent(); use Test2::EventFacet::Plan(); use Test2::EventFacet::Trace(); use Test2::EventFacet::Hub(); # Legacy tools will expect this to be loaded now require Test2::Util::Trace; my %LOADED_FACETS = ( 'about' => 'Test2::EventFacet::About', 'amnesty' => 'Test2::EventFacet::Amnesty', 'assert' => 'Test2::EventFacet::Assert', 'control' => 'Test2::EventFacet::Control', 'errors' => 'Test2::EventFacet::Error', 'info' => 'Test2::EventFacet::Info', 'meta' => 'Test2::EventFacet::Meta', 'parent' => 'Test2::EventFacet::Parent', 'plan' => 'Test2::EventFacet::Plan', 'trace' => 'Test2::EventFacet::Trace', 'hubs' => 'Test2::EventFacet::Hub', ); sub FACET_TYPES { sort values %LOADED_FACETS } sub load_facet { my $class = shift; my ($facet) = @_; return $LOADED_FACETS{$facet} if exists $LOADED_FACETS{$facet}; my @check = ($facet); if ('s' eq substr($facet, -1, 1)) { push @check => substr($facet, 0, -1); } else { push @check => $facet . 's'; } my $found; for my $check (@check) { my $mod = "Test2::EventFacet::" . ucfirst($facet); my $file = pkg_to_file($mod); next unless eval { require $file; 1 }; $found = $mod; last; } return undef unless $found; $LOADED_FACETS{$facet} = $found; } sub causes_fail { 0 } sub increments_count { 0 } sub diagnostics { 0 } sub no_display { 0 } sub subtest_id { undef } sub callback { } sub terminate { () } sub global { () } sub sets_plan { () } sub summary { ref($_[0]) } sub related { my $self = shift; my ($event) = @_; my $tracea = $self->trace or return undef; my $traceb = $event->trace or return undef; my $uuida = $tracea->uuid; my $uuidb = $traceb->uuid; if ($uuida && $uuidb) { return 1 if $uuida eq $uuidb; return 0; } my $siga = $tracea->signature or return undef; my $sigb = $traceb->signature or return undef; return 1 if $siga eq $sigb; return 0; } sub add_hub { my $self = shift; unshift @{$self->{+HUBS}} => @_; } sub add_amnesty { my $self = shift; for my $am (@_) { $am = {%$am} if ref($am) ne 'ARRAY'; $am = Test2::EventFacet::Amnesty->new($am); push @{$self->{+AMNESTY}} => $am; } } sub eid { $_[0]->{+_EID} ||= gen_uid() } sub common_facet_data { my $self = shift; my %out; $out{about} = {package => ref($self) || undef}; if (my $uuid = $self->uuid) { $out{about}->{uuid} = $uuid; } $out{about}->{eid} = $self->{+_EID} || $self->eid; if (my $trace = $self->trace) { $out{trace} = { %$trace }; } if (my $hubs = $self->hubs) { $out{hubs} = $hubs; } $out{amnesty} = [map {{ %{$_} }} @{$self->{+AMNESTY}}] if $self->{+AMNESTY}; if (my $meta = $self->meta_facet_data) { $out{meta} = $meta; } return \%out; } sub meta_facet_data { my $self = shift; my $key = Test2::Util::ExternalMeta::META_KEY(); my $hash = $self->{$key} or return undef; return {%$hash}; } sub facet_data { my $self = shift; my $out = $self->common_facet_data; $out->{about}->{details} = $self->summary || undef; $out->{about}->{no_display} = $self->no_display || undef; # Might be undef, we want to preserve that my $terminate = $self->terminate; $out->{control} = { global => $self->global || 0, terminate => $terminate, has_callback => $self->can('callback') == \&callback ? 0 : 1, }; $out->{assert} = { no_debug => 1, # Legacy behavior pass => $self->causes_fail ? 0 : 1, details => $self->summary, } if $self->increments_count; $out->{parent} = {hid => $self->subtest_id} if $self->subtest_id; if (my @plan = $self->sets_plan) { $out->{plan} = {}; $out->{plan}->{count} = $plan[0] if defined $plan[0]; $out->{plan}->{details} = $plan[2] if defined $plan[2]; if ($plan[1]) { $out->{plan}->{skip} = 1 if $plan[1] eq 'SKIP'; $out->{plan}->{none} = 1 if $plan[1] eq 'NO PLAN'; } $out->{control}->{terminate} ||= 0 if $out->{plan}->{skip}; } if ($self->causes_fail && !$out->{assert}) { $out->{errors} = [ { tag => 'FAIL', fail => 1, details => $self->summary, } ]; } my %IGNORE = (trace => 1, about => 1, control => 1); my $do_info = !grep { !$IGNORE{$_} } keys %$out; if ($do_info && !$self->no_display && $self->diagnostics) { $out->{info} = [ { tag => 'DIAG', debug => 1, details => $self->summary, } ]; } return $out; } sub facets { my $self = shift; my %out; my $data = $self->facet_data; my @errors = $self->validate_facet_data($data); die join "\n" => @errors if @errors; for my $facet (keys %$data) { my $class = $self->load_facet($facet); my $val = $data->{$facet}; unless($class) { $out{$facet} = $val; next; } my $is_list = reftype($val) eq 'ARRAY' ? 1 : 0; if ($is_list) { $out{$facet} = [map { $class->new($_) } @$val]; } else { $out{$facet} = $class->new($val); } } return \%out; } sub validate_facet_data { my $class_or_self = shift; my ($f, %params); $f = shift if @_ && (reftype($_[0]) || '') eq 'HASH'; %params = @_; $f ||= $class_or_self->facet_data if blessed($class_or_self); croak "No facet data" unless $f; my @errors; for my $k (sort keys %$f) { my $fclass = $class_or_self->load_facet($k); push @errors => "Could not find a facet class for facet '$k'" if $params{require_facet_class} && !$fclass; next unless $fclass; my $v = $f->{$k}; next unless defined($v); # undef is always fine my $is_list = $fclass->is_list(); my $got_list = reftype($v) eq 'ARRAY' ? 1 : 0; push @errors => "Facet '$k' should be a list, but got a single item ($v)" if $is_list && !$got_list; push @errors => "Facet '$k' should not be a list, but got a a list ($v)" if $got_list && !$is_list; } return @errors; } sub nested { my $self = shift; Carp::cluck("Use of Test2::Event->nested() is deprecated, use Test2::Event->trace->nested instead") if $ENV{AUTHOR_TESTING}; if (my $hubs = $self->{+HUBS}) { return $hubs->[0]->{nested} if @$hubs; } my $trace = $self->{+TRACE} or return undef; return $trace->{nested}; } sub in_subtest { my $self = shift; Carp::cluck("Use of Test2::Event->in_subtest() is deprecated, use Test2::Event->trace->hid instead") if $ENV{AUTHOR_TESTING}; my $hubs = $self->{+HUBS}; if ($hubs && @$hubs) { return undef unless $hubs->[0]->{nested}; return $hubs->[0]->{hid} } my $trace = $self->{+TRACE} or return undef; return undef unless $trace->{nested}; return $trace->{hid}; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Test2::Event - Base class for events =head1 DESCRIPTION Base class for all event objects that get passed through L<Test2>. =head1 SYNOPSIS package Test2::Event::MyEvent; use strict; use warnings; # This will make our class an event subclass (required) use base 'Test2::Event'; # Add some accessors (optional) # You are not obligated to use HashBase, you can use any object tool you # want, or roll your own accessors. use Test2::Util::HashBase qw/foo bar baz/; # Use this if you want the legacy API to be written for you, for this to # work you will need to implement a facet_data() method. use Test2::Util::Facets2Legacy; # Chance to initialize some defaults sub init { my $self = shift; # no other args in @_ $self->set_foo('xxx') unless defined $self->foo; ... } # This is the new way for events to convey data to the Test2 system sub facet_data { my $self = shift; # Get common facets such as 'about', 'trace' 'amnesty', and 'meta' my $facet_data = $self->common_facet_data(); # Are you making an assertion? $facet_data->{assert} = {pass => 1, details => 'my assertion'}; ... return $facet_data; } 1; =head1 METHODS =head2 GENERAL =over 4 =item $trace = $e->trace Get a snapshot of the L<Test2::EventFacet::Trace> as it was when this event was generated =item $bool_or_undef = $e->related($e2) Check if 2 events are related. In this case related means their traces share a signature meaning they were created with the same context (or at the very least by contexts which share an id, which is the same thing unless someone is doing something very bad). This can be used to reliably link multiple events created by the same tool. For instance a failing test like C<ok(0, "fail"> will generate 2 events, one being a L<Test2::Event::Ok>, the other being a L<Test2::Event::Diag>, both of these events are related having been created under the same context and by the same initial tool (though multiple tools may have been nested under the initial one). This will return C<undef> if the relationship cannot be checked, which happens if either event has an incomplete or missing trace. This will return C<0> if the traces are complete, but do not match. C<1> will be returned if there is a match. =item $e->add_amnesty({tag => $TAG, details => $DETAILS}); This can be used to add amnesty to this event. Amnesty only effects failing assertions in most cases, but some formatters may display them for passing assertions, or even non-assertions as well. Amnesty will prevent a failed assertion from causing the overall test to fail. In other words it marks a failure as expected and allowed. B<Note:> This is how 'TODO' is implemented under the hood. TODO is essentially amnesty with the 'TODO' tag. The details are the reason for the TODO. =item $uuid = $e->uuid If UUID tagging is enabled (See L<Test::API>) then any event that has made its way through a hub will be tagged with a UUID. A newly created event will not yet be tagged in most cases. =item $class = $e->load_facet($name) This method is used to load a facet by name (or key). It will attempt to load the facet class, if it succeeds it will return the class it loaded. If it fails it will return C<undef>. This caches the result at the class level so that future calls will be faster. The C<$name> variable should be the key used to access the facet in a facets hashref. For instance the assertion facet has the key 'assert', the information facet has the 'info' key, and the error facet has the key 'errors'. You may include or omit the 's' at the end of the name, the method is smart enough to try both the 's' and no-'s' forms, it will check what you provided first, and if that is not found it will add or strip the 's and try again. =item @classes = $e->FACET_TYPES() =item @classes = Test2::Event->FACET_TYPES() This returns a list of all facets that have been loaded using the C<load_facet()> method. This will not return any classes that have not been loaded, or have been loaded directly without a call to C<load_facet()>. B<Note:> The core facet types are automatically loaded and populated in this list. =back =head2 NEW API =over 4 =item $hashref = $e->common_facet_data(); This can be used by subclasses to generate a starting facet data hashref. This will populate the hashref with the trace, meta, amnesty, and about facets. These facets are nearly always produced the same way for all events. =item $hashref = $e->facet_data() If you do not override this then the default implementation will attempt to generate facets from the legacy API. This generation is limited only to what the legacy API can provide. It is recommended that you override this method and write out explicit facet data. =item $hashref = $e->facets() This takes the hashref from C<facet_data()> and blesses each facet into the proper C<Test2::EventFacet::*> subclass. If no class can be found for any given facet it will be passed along unchanged. =item @errors = $e->validate_facet_data(); =item @errors = $e->validate_facet_data(%params); =item @errors = $e->validate_facet_data(\%facets, %params); =item @errors = Test2::Event->validate_facet_data(%params); =item @errors = Test2::Event->validate_facet_data(\%facets, %params); This method will validate facet data and return a list of errors. If no errors are found this will return an empty list. This can be called as an object method with no arguments, in which case the C<facet_data()> method will be called to get the facet data to be validated. When used as an object method the C<\%facet_data> argument may be omitted. When used as a class method the C<\%facet_data> argument is required. Remaining arguments will be slurped into a C<%params> hash. Currently only 1 parameter is defined: =over 4 =item require_facet_class => $BOOL When set to true (default is false) this will reject any facets where a facet class cannot be found. Normally facets without classes are assumed to be custom and are ignored. =back =back =head3 WHAT ARE FACETS? Facets are how events convey their purpose to the Test2 internals and formatters. An event without facets will have no intentional effect on the overall test state, and will not be displayed at all by most formatters, except perhaps to say that an event of an unknown type was seen. Facets are produced by the C<facet_data()> subroutine, which you should nearly-always override. C<facet_data()> is expected to return a hashref where each key is the facet type, and the value is either a hashref with the data for that facet, or an array of hashrefs. Some facets must be defined as single hashrefs, some must be defined as an array of hashrefs, No facets allow both. C<facet_data()> B<MUST NOT> bless the data it returns, the main hashref, and nested facet hashrefs B<MUST> be bare, though items contained within each facet may be blessed. The data returned by this method B<should> also be copies of the internal data in order to prevent accidental state modification. C<facets()> takes the data from C<facet_data()> and blesses it into the C<Test2::EventFacet::*> packages. This is rarely used however, the EventFacet packages are primarily for convenience and documentation. The EventFacet classes are not used at all internally, instead the raw data is used. Here is a list of facet types by package. The packages are not used internally, but are where the documentation for each type is kept. B<Note:> Every single facet type has the C<'details'> field. This field is always intended for human consumption, and when provided, should explain the 'why' for the facet. All other fields are facet specific. =over 4 =item about => {...} L<Test2::EventFacet::About> This contains information about the event itself such as the event package name. The C<details> field for this facet is an overall summary of the event. =item assert => {...} L<Test2::EventFacet::Assert> This facet is used if an assertion was made. The C<details> field of this facet is the description of the assertion. =item control => {...} L<Test2::EventFacet::Control> This facet is used to tell the L<Test2::Event::Hub> about special actions the event causes. Things like halting all testing, terminating the current test, etc. In this facet the C<details> field explains why any special action was taken. B<Note:> This is how bail-out is implemented. =item meta => {...} L<Test2::EventFacet::Meta> The meta facet contains all the meta-data attached to the event. In this case the C<details> field has no special meaning, but may be present if something sets the 'details' meta-key on the event. =item parent => {...} L<Test2::EventFacet::Parent> This facet contains nested events and similar details for subtests. In this facet the C<details> field will typically be the name of the subtest. =item plan => {...} L<Test2::EventFacet::Plan> This facet tells the system that a plan has been set. The C<details> field of this is usually left empty, but when present explains why the plan is what it is, this is most useful if the plan is to skip-all. =item trace => {...} L<Test2::EventFacet::Trace> This facet contains information related to when and where the event was generated. This is how the test file and line number of a failure is known. This facet can also help you to tell if tests are related. In this facet the C<details> field overrides the "failed at test_file.t line 42." message provided on assertion failure. =item amnesty => [{...}, ...] L<Test2::EventFacet::Amnesty> The amnesty facet is a list instead of a single item, this is important as amnesty can come from multiple places at once. For each instance of amnesty the C<details> field explains why amnesty was granted. B<Note:> Outside of formatters amnesty only acts to forgive a failing assertion. =item errors => [{...}, ...] L<Test2::EventFacet::Error> The errors facet is a list instead of a single item, any number of errors can be listed. In this facet C<details> describes the error, or may contain the raw error message itself (such as an exception). In perl exception may be blessed objects, as such the raw data for this facet may contain nested items which are blessed. Not all errors are considered fatal, there is a C<fail> field that must be set for an error to cause the test to fail. B<Note:> This facet is unique in that the field name is 'errors' while the package is 'Error'. This is because this is the only facet type that is both a list, and has a name where the plural is not the same as the singular. This may cause some confusion, but I feel it will be less confusing than the alternative. =item info => [{...}, ...] L<Test2::EventFacet::Info> The 'info' facet is a list instead of a single item, any quantity of extra information can be attached to an event. Some information may be critical diagnostics, others may be simply commentary in nature, this is determined by the C<debug> flag. For this facet the C<details> flag is the info itself. This info may be a string, or it may be a data structure to display. This is one of the few facet types that may contain blessed items. =back =head2 LEGACY API =over 4 =item $bool = $e->causes_fail Returns true if this event should result in a test failure. In general this should be false. =item $bool = $e->increments_count Should be true if this event should result in a test count increment. =item $e->callback($hub) If your event needs to have extra effects on the L<Test2::Hub> you can override this method. This is called B<BEFORE> your event is passed to the formatter. =item $num = $e->nested If this event is nested inside of other events, this should be the depth of nesting. (This is mainly for subtests) =item $bool = $e->global Set this to true if your event is global, that is ALL threads and processes should see it no matter when or where it is generated. This is not a common thing to want, it is used by bail-out and skip_all to end testing. =item $code = $e->terminate This is called B<AFTER> your event has been passed to the formatter. This should normally return undef, only change this if your event should cause the test to exit immediately. If you want this event to cause the test to exit you should return the exit code here. Exit code of 0 means exit success, any other integer means exit with failure. This is used by L<Test2::Event::Plan> to exit 0 when the plan is 'skip_all'. This is also used by L<Test2::Event:Bail> to force the test to exit with a failure. This is called after the event has been sent to the formatter in order to ensure the event is seen and understood. =item $msg = $e->summary This is intended to be a human readable summary of the event. This should ideally only be one line long, but you can use multiple lines if necessary. This is intended for human consumption. You do not need to make it easy for machines to understand. The default is to simply return the event package name. =item ($count, $directive, $reason) = $e->sets_plan() Check if this event sets the testing plan. It will return an empty list if it does not. If it does set the plan it will return a list of 1 to 3 items in order: Expected Test Count, Test Directive, Reason for directive. =item $bool = $e->diagnostics True if the event contains diagnostics info. This is useful because a non-verbose harness may choose to hide events that are not in this category. Some formatters may choose to send these to STDERR instead of STDOUT to ensure they are seen. =item $bool = $e->no_display False by default. This will return true on events that should not be displayed by formatters. =item $id = $e->in_subtest If the event is inside a subtest this should have the subtest ID. =item $id = $e->subtest_id If the event is a final subtest event, this should contain the subtest ID. =back =head1 THIRD PARTY META-DATA This object consumes L<Test2::Util::ExternalMeta> which provides a consistent way for you to attach meta-data to instances of this class. This is useful for tools, plugins, and other extensions. =head1 SOURCE The source code repository for Test2 can be found at F<http://github.com/Test-More/test-more/>. =head1 MAINTAINERS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 AUTHORS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 COPYRIGHT Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://dev.perl.org/licenses/> =cut PK ! �5�z z 5.34.0/Test2/IPC/Driver.pmnu �[��� package Test2::IPC::Driver; use strict; use warnings; our $VERSION = '1.302183'; use Carp qw/confess/; use Test2::Util::HashBase qw{no_fatal no_bail}; use Test2::API qw/test2_ipc_add_driver/; my %ADDED; sub import { my $class = shift; return if $class eq __PACKAGE__; return if $ADDED{$class}++; test2_ipc_add_driver($class); } sub pending { -1 } sub set_pending { -1 } for my $meth (qw/send cull add_hub drop_hub waiting is_viable/) { no strict 'refs'; *$meth = sub { my $thing = shift; confess "'$thing' did not define the required method '$meth'." }; } # Print the error and call exit. We are not using 'die' cause this is a # catastrophic error that should never be caught. If we get here it # means some serious shit has happened in a child process, the only way # to inform the parent may be to exit false. sub abort { my $self = shift; chomp(my ($msg) = @_); $self->driver_abort($msg) if $self->can('driver_abort'); print STDERR "IPC Fatal Error: $msg\n"; print STDOUT "Bail out! IPC Fatal Error: $msg\n" unless $self->no_bail; CORE::exit(255) unless $self->no_fatal; } sub abort_trace { my $self = shift; my ($msg) = @_; # Older versions of Carp do not export longmess() function, so it needs to be called with package name $self->abort(Carp::longmess($msg)); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Test2::IPC::Driver - Base class for Test2 IPC drivers. =head1 SYNOPSIS package Test2::IPC::Driver::MyDriver; use base 'Test2::IPC::Driver'; ... =head1 METHODS =over 4 =item $self->abort($msg) If an IPC encounters a fatal error it should use this. This will print the message to STDERR with C<'IPC Fatal Error: '> prefixed to it, then it will forcefully exit 255. IPC errors may occur in threads or processes other than the main one, this method provides the best chance of the harness noticing the error. =item $self->abort_trace($msg) This is the same as C<< $ipc->abort($msg) >> except that it uses C<Carp::longmess> to add a stack trace to the message. =back =head1 LOADING DRIVERS Test2::IPC::Driver has an C<import()> method. All drivers inherit this import method. This import method registers the driver. In most cases you just need to load the desired IPC driver to make it work. You should load this driver as early as possible. A warning will be issued if you load it too late for it to be effective. use Test2::IPC::Driver::MyDriver; ... =head1 WRITING DRIVERS package Test2::IPC::Driver::MyDriver; use strict; use warnings; use base 'Test2::IPC::Driver'; sub is_viable { return 0 if $^O eq 'win32'; # Will not work on windows. return 1; } sub add_hub { my $self = shift; my ($hid) = @_; ... # Make it possible to contact the hub } sub drop_hub { my $self = shift; my ($hid) = @_; ... # Nothing should try to reach the hub anymore. } sub send { my $self = shift; my ($hid, $e, $global) = @_; ... # Send the event to the proper hub. # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); } sub cull { my $self = shift; my ($hid) = @_; my @events = ...; # Here is where you get the events for the hub return @events; } sub waiting { my $self = shift; ... # Notify all listening procs and threads that the main ... # process/thread is waiting for them to finish. } 1; =head2 METHODS SUBCLASSES MUST IMPLEMENT =over 4 =item $ipc->is_viable This should return true if the driver works in the current environment. This should return false if it does not. This is a CLASS method. =item $ipc->add_hub($hid) This is used to alert the driver that a new hub is expecting events. The driver should keep track of the process and thread ids, the hub should only be dropped by the proc+thread that started it. sub add_hub { my $self = shift; my ($hid) = @_; ... # Make it possible to contact the hub } =item $ipc->drop_hub($hid) This is used to alert the driver that a hub is no longer accepting events. The driver should keep track of the process and thread ids, the hub should only be dropped by the proc+thread that started it (This is the drivers responsibility to enforce). sub drop_hub { my $self = shift; my ($hid) = @_; ... # Nothing should try to reach the hub anymore. } =item $ipc->send($hid, $event); =item $ipc->send($hid, $event, $global); Used to send events from the current process/thread to the specified hub in its process+thread. sub send { my $self = shift; my ($hid, $e) = @_; ... # Send the event to the proper hub. # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); } If C<$global> is true then the driver should send the event to all hubs in all processes and threads. =item @events = $ipc->cull($hid) Used to collect events that have been sent to the specified hub. sub cull { my $self = shift; my ($hid) = @_; my @events = ...; # Here is where you get the events for the hub return @events; } =item $ipc->waiting() This is called in the parent process when it is complete and waiting for all child processes and threads to complete. sub waiting { my $self = shift; ... # Notify all listening procs and threads that the main ... # process/thread is waiting for them to finish. } =back =head2 METHODS SUBCLASSES MAY IMPLEMENT OR OVERRIDE =over 4 =item $ipc->driver_abort($msg) This is a hook called by C<< Test2::IPC::Driver->abort() >>. This is your chance to cleanup when an abort happens. You cannot prevent the abort, but you can gracefully except it. =back =head1 SOURCE The source code repository for Test2 can be found at F<http://github.com/Test-More/test-more/>. =head1 MAINTAINERS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 AUTHORS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 COPYRIGHT Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://dev.perl.org/licenses/> =cut PK ! U�\�4 �4 5.34.0/Test2/IPC/Driver/Files.pmnu �[��� package Test2::IPC::Driver::Files; use strict; use warnings; our $VERSION = '1.302183'; BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) } use Test2::Util::HashBase qw{tempdir event_ids read_ids timeouts tid pid globals}; use Scalar::Util qw/blessed/; use File::Temp(); use Storable(); use File::Spec(); use POSIX(); use Test2::Util qw/try get_tid pkg_to_file IS_WIN32 ipc_separator do_rename do_unlink try_sig_mask/; use Test2::API qw/test2_ipc_set_pending/; sub is_viable { 1 } sub init { my $self = shift; my $tmpdir = File::Temp::tempdir( $ENV{T2_TEMPDIR_TEMPLATE} || "test2" . ipc_separator . $$ . ipc_separator . "XXXXXX", CLEANUP => 0, TMPDIR => 1, ); $self->abort_trace("Could not get a temp dir") unless $tmpdir; $self->{+TEMPDIR} = File::Spec->canonpath($tmpdir); print STDERR "\nIPC Temp Dir: $tmpdir\n\n" if $ENV{T2_KEEP_TEMPDIR}; $self->{+EVENT_IDS} = {}; $self->{+READ_IDS} = {}; $self->{+TIMEOUTS} = {}; $self->{+TID} = get_tid(); $self->{+PID} = $$; $self->{+GLOBALS} = {}; return $self; } sub hub_file { my $self = shift; my ($hid) = @_; my $tdir = $self->{+TEMPDIR}; return File::Spec->catfile($tdir, "HUB" . ipc_separator . $hid); } sub event_file { my $self = shift; my ($hid, $e) = @_; my $tempdir = $self->{+TEMPDIR}; my $type = blessed($e) or $self->abort("'$e' is not a blessed object!"); $self->abort("'$e' is not an event object!") unless $type->isa('Test2::Event'); my $tid = get_tid(); my $eid = $self->{+EVENT_IDS}->{$hid}->{$$}->{$tid} += 1; my @type = split '::', $type; my $name = join(ipc_separator, $hid, $$, $tid, $eid, @type); return File::Spec->catfile($tempdir, $name); } sub add_hub { my $self = shift; my ($hid) = @_; my $hfile = $self->hub_file($hid); $self->abort_trace("File for hub '$hid' already exists") if -e $hfile; open(my $fh, '>', $hfile) or $self->abort_trace("Could not create hub file '$hid': $!"); print $fh "$$\n" . get_tid() . "\n"; close($fh); } sub drop_hub { my $self = shift; my ($hid) = @_; my $tdir = $self->{+TEMPDIR}; my $hfile = $self->hub_file($hid); $self->abort_trace("File for hub '$hid' does not exist") unless -e $hfile; open(my $fh, '<', $hfile) or $self->abort_trace("Could not open hub file '$hid': $!"); my ($pid, $tid) = <$fh>; close($fh); $self->abort_trace("A hub file can only be closed by the process that started it\nExpected $pid, got $$") unless $pid == $$; $self->abort_trace("A hub file can only be closed by the thread that started it\nExpected $tid, got " . get_tid()) unless get_tid() == $tid; if ($ENV{T2_KEEP_TEMPDIR}) { my ($ok, $err) = do_rename($hfile, File::Spec->canonpath("$hfile.complete")); $self->abort_trace("Could not rename file '$hfile' -> '$hfile.complete': $err") unless $ok } else { my ($ok, $err) = do_unlink($hfile); $self->abort_trace("Could not remove file for hub '$hid': $err") unless $ok } opendir(my $dh, $tdir) or $self->abort_trace("Could not open temp dir!"); my %bad; for my $file (readdir($dh)) { next if $file =~ m{\.complete$}; next unless $file =~ m{^$hid}; eval { $bad{$file} = $self->read_event_file(File::Spec->catfile($tdir, $file)); 1 } or $bad{$file} = $@ || "Unknown error reading file"; } closedir($dh); return unless keys %bad; my $data; my $ok = eval { require JSON::PP; local *UNIVERSAL::TO_JSON = sub { +{ %{$_[0]} } }; my $json = JSON::PP->new->ascii->pretty->canonical->allow_unknown->allow_blessed->convert_blessed; $data = $json->encode(\%bad); 1; }; $ok ||= eval { require Data::Dumper; local $Data::Dumper::Sortkeys = 1; $data = Data::Dumper::Dumper(\%bad); 1; }; $data = "Could not dump data... sorry." unless defined $data; $self->abort_trace("Not all files from hub '$hid' have been collected!\nHere is the leftover data:\n========================\n$data\n===================\n"); } sub send { my $self = shift; my ($hid, $e, $global) = @_; my $tempdir = $self->{+TEMPDIR}; my $hfile = $self->hub_file($hid); my $dest = $global ? 'GLOBAL' : $hid; $self->abort(<<" EOT") unless $global || -f $hfile; hub '$hid' is not available, failed to send event! There was an attempt to send an event to a hub in a parent process or thread, but that hub appears to be gone. This can happen if you fork, or start a new thread from inside subtest, and the parent finishes the subtest before the child returns. This can also happen if the parent process is done testing before the child finishes. Test2 normally waits automatically in the root process, but will not do so if Test::Builder is loaded for legacy reasons. EOT my $file = $self->event_file($dest, $e); my $ready = File::Spec->canonpath("$file.ready"); if ($global) { my $name = $ready; $name =~ s{^.*(GLOBAL)}{GLOBAL}; $self->{+GLOBALS}->{$hid}->{$name}++; } # Write and rename the file. my ($ren_ok, $ren_err); my ($ok, $err) = try_sig_mask(sub { Storable::store($e, $file); ($ren_ok, $ren_err) = do_rename("$file", $ready); }); if ($ok) { $self->abort("Could not rename file '$file' -> '$ready': $ren_err") unless $ren_ok; test2_ipc_set_pending($file); } else { my $src_file = __FILE__; $err =~ s{ at \Q$src_file\E.*$}{}; chomp($err); my $tid = get_tid(); my $trace = $e->trace->debug; my $type = blessed($e); $self->abort(<<" EOT"); ******************************************************************************* There was an error writing an event: Destination: $dest Origin PID: $$ Origin TID: $tid Event Type: $type Event Trace: $trace File Name: $file Ready Name: $ready Error: $err ******************************************************************************* EOT } return 1; } sub driver_abort { my $self = shift; my ($msg) = @_; local ($@, $!, $?, $^E); eval { my $abort = File::Spec->catfile($self->{+TEMPDIR}, "ABORT"); open(my $fh, '>>', $abort) or die "Could not open abort file: $!"; print $fh $msg, "\n"; close($fh) or die "Could not close abort file: $!"; 1; } or warn $@; } sub cull { my $self = shift; my ($hid) = @_; my $tempdir = $self->{+TEMPDIR}; opendir(my $dh, $tempdir) or $self->abort("could not open IPC temp dir ($tempdir)!"); my $read = $self->{+READ_IDS}; my $timeouts = $self->{+TIMEOUTS}; my @out; for my $info (sort cmp_events map { $self->should_read_event($hid, $_) } readdir($dh)) { unless ($info->{global}) { my $next = $self->{+READ_IDS}->{$info->{hid}}->{$info->{pid}}->{$info->{tid}} ||= 1; $timeouts->{$info->{file}} ||= time; if ($next != $info->{eid}) { # Wait up to N seconds for missing events next unless 5 < time - $timeouts->{$info->{file}}; $self->abort("Missing event HID: $info->{hid}, PID: $info->{pid}, TID: $info->{tid}, EID: $info->{eid}."); } $self->{+READ_IDS}->{$info->{hid}}->{$info->{pid}}->{$info->{tid}} = $info->{eid} + 1; } my $full = $info->{full_path}; my $obj = $self->read_event_file($full); push @out => $obj; # Do not remove global events next if $info->{global}; if ($ENV{T2_KEEP_TEMPDIR}) { my $complete = File::Spec->canonpath("$full.complete"); my ($ok, $err) = do_rename($full, $complete); $self->abort("Could not rename IPC file '$full', '$complete': $err") unless $ok; } else { my ($ok, $err) = do_unlink("$full"); $self->abort("Could not unlink IPC file '$full': $err") unless $ok; } } closedir($dh); return @out; } sub parse_event_filename { my $self = shift; my ($file) = @_; # The || is to force 0 in false my $complete = substr($file, -9, 9) eq '.complete' || 0 and substr($file, -9, 9, ""); my $ready = substr($file, -6, 6) eq '.ready' || 0 and substr($file, -6, 6, ""); my @parts = split ipc_separator, $file; my ($global, $hid) = $parts[0] eq 'GLOBAL' ? (1, shift @parts) : (0, join ipc_separator, splice(@parts, 0, 4)); my ($pid, $tid, $eid) = splice(@parts, 0, 3); my $type = join '::' => @parts; return { file => $file, ready => $ready, complete => $complete, global => $global, type => $type, hid => $hid, pid => $pid, tid => $tid, eid => $eid, }; } sub should_read_event { my $self = shift; my ($hid, $file) = @_; return if substr($file, 0, 1) eq '.'; return if substr($file, 0, 3) eq 'HUB'; CORE::exit(255) if $file eq 'ABORT'; my $parsed = $self->parse_event_filename($file); return if $parsed->{complete}; return unless $parsed->{ready}; return unless $parsed->{global} || $parsed->{hid} eq $hid; return if $parsed->{global} && $self->{+GLOBALS}->{$hid}->{$file}++; # Untaint the path. my $full = File::Spec->catfile($self->{+TEMPDIR}, $file); ($full) = ($full =~ m/^(.*)$/gs) if ${^TAINT}; $parsed->{full_path} = $full; return $parsed; } sub cmp_events { # Globals first return -1 if $a->{global} && !$b->{global}; return 1 if $b->{global} && !$a->{global}; return $a->{pid} <=> $b->{pid} || $a->{tid} <=> $b->{tid} || $a->{eid} <=> $b->{eid}; } sub read_event_file { my $self = shift; my ($file) = @_; my $obj = Storable::retrieve($file); $self->abort("Got an unblessed object: '$obj'") unless blessed($obj); unless ($obj->isa('Test2::Event')) { my $pkg = blessed($obj); my $mod_file = pkg_to_file($pkg); my ($ok, $err) = try { require $mod_file }; $self->abort("Event has unknown type ($pkg), tried to load '$mod_file' but failed: $err") unless $ok; $self->abort("'$obj' is not a 'Test2::Event' object") unless $obj->isa('Test2::Event'); } return $obj; } sub waiting { my $self = shift; require Test2::Event::Waiting; $self->send( GLOBAL => Test2::Event::Waiting->new( trace => Test2::EventFacet::Trace->new(frame => [caller()]), ), 'GLOBAL' ); return; } sub DESTROY { my $self = shift; return unless defined $self->pid; return unless defined $self->tid; return unless $$ == $self->pid; return unless get_tid() == $self->tid; my $tempdir = $self->{+TEMPDIR}; my $aborted = 0; my $abort_file = File::Spec->catfile($self->{+TEMPDIR}, "ABORT"); if (-e $abort_file) { $aborted = 1; my ($ok, $err) = do_unlink($abort_file); warn $err unless $ok; } opendir(my $dh, $tempdir) or $self->abort("Could not open temp dir! ($tempdir)"); while(my $file = readdir($dh)) { next if $file =~ m/^\.+$/; next if $file =~ m/\.complete$/; my $full = File::Spec->catfile($tempdir, $file); my $sep = ipc_separator; if ($aborted || $file =~ m/^(GLOBAL|HUB$sep)/) { $full =~ m/^(.*)$/; $full = $1; # Untaint it next if $ENV{T2_KEEP_TEMPDIR}; my ($ok, $err) = do_unlink($full); $self->abort("Could not unlink IPC file '$full': $err") unless $ok; next; } $self->abort("Leftover files in the directory ($full)!\n"); } closedir($dh); if ($ENV{T2_KEEP_TEMPDIR}) { print STDERR "# Not removing temp dir: $tempdir\n"; return; } my $abort = File::Spec->catfile($self->{+TEMPDIR}, "ABORT"); unlink($abort) if -e $abort; rmdir($tempdir) or warn "Could not remove IPC temp dir ($tempdir)"; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Test2::IPC::Driver::Files - Temp dir + Files concurrency model. =head1 DESCRIPTION This is the default, and fallback concurrency model for L<Test2>. This sends events between processes and threads using serialized files in a temporary directory. This is not particularly fast, but it works everywhere. =head1 SYNOPSIS use Test2::IPC::Driver::Files; # IPC is now enabled =head1 ENVIRONMENT VARIABLES =over 4 =item T2_KEEP_TEMPDIR=0 When true, the tempdir used by the IPC driver will not be deleted when the test is done. =item T2_TEMPDIR_TEMPLATE='test2-XXXXXX' This can be used to set the template for the IPC temp dir. The template should follow template specifications from L<File::Temp>. =back =head1 SEE ALSO See L<Test2::IPC::Driver> for methods. =head1 SOURCE The source code repository for Test2 can be found at F<http://github.com/Test-More/test-more/>. =head1 MAINTAINERS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 AUTHORS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 COPYRIGHT Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://dev.perl.org/licenses/> =cut PK ! ���q q 5.34.0/Test2/Formatter.pmnu �[��� package Test2::Formatter; use strict; use warnings; our $VERSION = '1.302183'; my %ADDED; sub import { my $class = shift; return if $class eq __PACKAGE__; return if $ADDED{$class}++; require Test2::API; Test2::API::test2_formatter_add($class); } sub new_root { my $class = shift; return $class->new(@_); } sub supports_tables { 0 } sub hide_buffered { 1 } sub terminate { } sub finalize { } 1; __END__ =pod =encoding UTF-8 =head1 NAME Test2::Formatter - Namespace for formatters. =head1 DESCRIPTION This is the namespace for formatters. This is an empty package. =head1 CREATING FORMATTERS A formatter is any package or object with a C<write($event, $num)> method. package Test2::Formatter::Foo; use strict; use warnings; sub write { my $self_or_class = shift; my ($event, $assert_num) = @_; ... } sub hide_buffered { 1 } sub terminate { } sub finalize { } sub supports_tables { return $BOOL } sub new_root { my $class = shift; ... $class->new(@_); } 1; The C<write> method is a method, so it either gets a class or instance. The two arguments are the C<$event> object it should record, and the C<$assert_num> which is the number of the current assertion (ok), or the last assertion if this event is not itself an assertion. The assertion number may be any integer 0 or greater, and may be undefined in some cases. The C<hide_buffered()> method must return a boolean. This is used to tell buffered subtests whether or not to send it events as they are being buffered. See L<Test2::API/"run_subtest(...)"> for more information. The C<terminate> and C<finalize> methods are optional methods called that you can implement if the format you're generating needs to handle these cases, for example if you are generating XML and need close open tags. The C<terminate> method is called when an event's C<terminate> method returns true, for example when a L<Test2::Event::Plan> has a C<'skip_all'> plan, or when a L<Test2::Event::Bail> event is sent. The C<terminate> method is passed a single argument, the L<Test2::Event> object which triggered the terminate. The C<finalize> method is always the last thing called on the formatter, I<< except when C<terminate> is called for a Bail event >>. It is passed the following arguments: The C<supports_tables> method should be true if the formatter supports directly rendering table data from the C<info> facets. This is a newer feature and many older formatters may not support it. When not supported the formatter falls back to rendering C<detail> instead of the C<table> data. The C<new_root> method is used when constructing a root formatter. The default is to just delegate to the regular C<new()> method, most formatters can ignore this. =over 4 =item * The number of tests that were planned =item * The number of tests actually seen =item * The number of tests which failed =item * A boolean indicating whether or not the test suite passed =item * A boolean indicating whether or not this call is for a subtest =back The C<new_root> method is called when C<Test2::API::Stack> Initializes the root hub for the first time. Most formatters will simply have this call C<< $class->new >>, which is the default behavior. Some formatters however may want to take extra action during construction of the root formatter, this is where they can do that. =head1 SOURCE The source code repository for Test2 can be found at F<http://github.com/Test-More/test-more/>. =head1 MAINTAINERS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 AUTHORS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 COPYRIGHT Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://dev.perl.org/licenses/> =cut PK ! g�s s 5.34.0/Test2/Util/Trace.pmnu �[��� package Test2::Util::Trace; require Test2::EventFacet::Trace; use warnings; use strict; our @ISA = ('Test2::EventFacet::Trace'); our $VERSION = '1.302183'; 1; __END__ =pod =encoding UTF-8 =head1 NAME Test2::Util::Trace - Legacy wrapper fro L<Test2::EventFacet::Trace>. =head1 DESCRIPTION All the functionality for this class has been moved to L<Test2::EventFacet::Trace>. =head1 SOURCE The source code repository for Test2 can be found at F<http://github.com/Test-More/test-more/>. =head1 MAINTAINERS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 AUTHORS =over 4 =item Chad Granum E<lt>exodist@cpan.orgE<gt> =back =head1 COPYRIGHT Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://dev.perl.org/licenses/> =cut PK ! }� � "