[Midnightbsd-cvs] src [6440] U trunk/contrib/perl/utils.lst: perl 5.18.1 merge
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Mon Dec 2 16:27:07 EST 2013
Revision: 6440
http://svnweb.midnightbsd.org/src/?rev=6440
Author: laffer1
Date: 2013-12-02 16:27:05 -0500 (Mon, 02 Dec 2013)
Log Message:
-----------
perl 5.18.1 merge
Modified Paths:
--------------
trunk/contrib/perl/dist/Attribute-Handlers/Changes
trunk/contrib/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm
trunk/contrib/perl/dist/B-Deparse/Deparse.pm
trunk/contrib/perl/dist/B-Deparse/t/deparse.t
trunk/contrib/perl/dist/Cwd/Cwd.pm
trunk/contrib/perl/dist/Cwd/Cwd.xs
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Cygwin.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Epoc.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Functions.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Mac.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/OS2.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Unix.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/VMS.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Win32.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec.pm
trunk/contrib/perl/dist/Cwd/t/Spec.t
trunk/contrib/perl/dist/Cwd/t/cwd.t
trunk/contrib/perl/dist/Cwd/t/rel2abs2rel.t
trunk/contrib/perl/dist/Cwd/t/taint.t
trunk/contrib/perl/dist/Data-Dumper/Changes
trunk/contrib/perl/dist/Data-Dumper/Dumper.pm
trunk/contrib/perl/dist/Data-Dumper/Dumper.xs
trunk/contrib/perl/dist/Data-Dumper/t/bless.t
trunk/contrib/perl/dist/Data-Dumper/t/bugs.t
trunk/contrib/perl/dist/Data-Dumper/t/dumper.t
trunk/contrib/perl/dist/Data-Dumper/t/freezer.t
trunk/contrib/perl/dist/Data-Dumper/t/perl-74170.t
trunk/contrib/perl/dist/Data-Dumper/t/terse.t
trunk/contrib/perl/dist/Dumpvalue/lib/Dumpvalue.pm
trunk/contrib/perl/dist/Env/lib/Env.pm
trunk/contrib/perl/dist/Env/t/array.t
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/t/04-base.t
trunk/contrib/perl/dist/ExtUtils-Install/Changes
trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm
trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Packlist.pm
trunk/contrib/perl/dist/ExtUtils-Install/t/Installed.t
trunk/contrib/perl/dist/ExtUtils-Install/t/Packlist.t
trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
trunk/contrib/perl/dist/ExtUtils-Manifest/t/Manifest.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/Changes
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSMore.xs
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.xs
trunk/contrib/perl/dist/Filter-Simple/lib/Filter/Simple.pm
trunk/contrib/perl/dist/Filter-Simple/t/filter_only.t
trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterOnlyTest.pm
trunk/contrib/perl/dist/I18N-LangTags/ChangeLog
trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm
trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm
trunk/contrib/perl/dist/IO/IO.pm
trunk/contrib/perl/dist/IO/IO.xs
trunk/contrib/perl/dist/IO/Makefile.PL
trunk/contrib/perl/dist/IO/lib/IO/Dir.pm
trunk/contrib/perl/dist/IO/lib/IO/File.pm
trunk/contrib/perl/dist/IO/lib/IO/Handle.pm
trunk/contrib/perl/dist/IO/lib/IO/Pipe.pm
trunk/contrib/perl/dist/IO/lib/IO/Poll.pm
trunk/contrib/perl/dist/IO/lib/IO/Select.pm
trunk/contrib/perl/dist/IO/lib/IO/Socket/INET.pm
trunk/contrib/perl/dist/IO/lib/IO/Socket/UNIX.pm
trunk/contrib/perl/dist/IO/lib/IO/Socket.pm
trunk/contrib/perl/dist/IO/t/IO.t
trunk/contrib/perl/dist/IO/t/io_taint.t
trunk/contrib/perl/dist/IO/t/io_utf8.t
trunk/contrib/perl/dist/IO/t/io_xs.t
trunk/contrib/perl/dist/Locale-Maketext/ChangeLog
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod
trunk/contrib/perl/dist/Locale-Maketext/t/09_compile.t
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigFloat.pm
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/Calc.pm
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt.pm
trunk/contrib/perl/dist/Math-BigInt/t/bare_mbi.t
trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.inc
trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.inc
trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.t
trunk/contrib/perl/dist/Math-BigInt/t/sub_mbi.t
trunk/contrib/perl/dist/Math-BigInt-FastCalc/FastCalc.xs
trunk/contrib/perl/dist/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm
trunk/contrib/perl/dist/Math-BigRat/lib/Math/BigRat.pm
trunk/contrib/perl/dist/Math-BigRat/t/bigrat.t
trunk/contrib/perl/dist/Module-CoreList/Changes
trunk/contrib/perl/dist/Module-CoreList/MANIFEST
trunk/contrib/perl/dist/Module-CoreList/Makefile.PL
trunk/contrib/perl/dist/Module-CoreList/corelist
trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pm
trunk/contrib/perl/dist/Module-CoreList/t/deprecated.t
trunk/contrib/perl/dist/Module-CoreList/t/find_modules.t
trunk/contrib/perl/dist/Net-Ping/Changes
trunk/contrib/perl/dist/Net-Ping/lib/Net/Ping.pm
trunk/contrib/perl/dist/Net-Ping/t/110_icmp_inst.t
trunk/contrib/perl/dist/Net-Ping/t/200_ping_tcp.t
trunk/contrib/perl/dist/Net-Ping/t/250_ping_hires.t
trunk/contrib/perl/dist/Net-Ping/t/400_ping_syn.t
trunk/contrib/perl/dist/Net-Ping/t/410_syn_host.t
trunk/contrib/perl/dist/Net-Ping/t/500_ping_icmp.t
trunk/contrib/perl/dist/Net-Ping/t/510_ping_udp.t
trunk/contrib/perl/dist/Safe/Changes
trunk/contrib/perl/dist/Safe/MANIFEST
trunk/contrib/perl/dist/Safe/META.yml
trunk/contrib/perl/dist/Safe/Safe.pm
trunk/contrib/perl/dist/Safe/t/safeload.t
trunk/contrib/perl/dist/Safe/t/safeops.t
trunk/contrib/perl/dist/SelfLoader/lib/SelfLoader.pm
trunk/contrib/perl/dist/Storable/ChangeLog
trunk/contrib/perl/dist/Storable/Makefile.PL
trunk/contrib/perl/dist/Storable/Storable.pm
trunk/contrib/perl/dist/Storable/Storable.xs
trunk/contrib/perl/dist/Storable/t/attach_errors.t
trunk/contrib/perl/dist/Storable/t/blessed.t
trunk/contrib/perl/dist/Storable/t/code.t
trunk/contrib/perl/dist/Storable/t/malice.t
trunk/contrib/perl/dist/Storable/t/restrict.t
trunk/contrib/perl/dist/Thread-Queue/lib/Thread/Queue.pm
trunk/contrib/perl/dist/XSLoader/Makefile.PL
trunk/contrib/perl/dist/XSLoader/XSLoader_pm.PL
trunk/contrib/perl/dist/XSLoader/t/XSLoader.t
trunk/contrib/perl/dist/autouse/lib/autouse.pm
trunk/contrib/perl/dist/autouse/t/autouse.t
trunk/contrib/perl/dist/base/Changes
trunk/contrib/perl/dist/base/lib/base.pm
trunk/contrib/perl/dist/base/lib/fields.pm
trunk/contrib/perl/dist/base/t/base.t
trunk/contrib/perl/dist/base/t/fields-5_8_0.t
trunk/contrib/perl/dist/base/t/fields.t
trunk/contrib/perl/dist/bignum/lib/Math/BigFloat/Trace.pm
trunk/contrib/perl/dist/bignum/lib/Math/BigInt/Trace.pm
trunk/contrib/perl/dist/bignum/lib/bigint.pm
trunk/contrib/perl/dist/bignum/lib/bignum.pm
trunk/contrib/perl/dist/bignum/lib/bigrat.pm
trunk/contrib/perl/dist/bignum/t/bigint.t
trunk/contrib/perl/dist/constant/lib/constant.pm
trunk/contrib/perl/dist/constant/t/constant.t
trunk/contrib/perl/dist/constant/t/utf8.t
trunk/contrib/perl/dist/if/if.pm
trunk/contrib/perl/dist/if/t/if.t
trunk/contrib/perl/dist/threads/lib/threads.pm
trunk/contrib/perl/dist/threads/t/exit.t
trunk/contrib/perl/dist/threads/t/thread.t
trunk/contrib/perl/dist/threads/threads.xs
trunk/contrib/perl/dist/threads-shared/lib/threads/shared.pm
trunk/contrib/perl/dist/threads-shared/shared.xs
trunk/contrib/perl/dist/threads-shared/t/clone.t
trunk/contrib/perl/dist/threads-shared/t/stress.t
trunk/contrib/perl/dist/threads-shared/t/waithires.t
trunk/contrib/perl/regen/embed.pl
trunk/contrib/perl/regen/keywords.pl
trunk/contrib/perl/regen/mk_PL_charclass.pl
trunk/contrib/perl/regen/opcode.pl
trunk/contrib/perl/regen/opcodes
trunk/contrib/perl/regen/overload.pl
trunk/contrib/perl/regen/reentr.pl
trunk/contrib/perl/regen/regcharclass.pl
trunk/contrib/perl/regen/regcomp.pl
trunk/contrib/perl/regen/regen_lib.pl
trunk/contrib/perl/regen/uconfig_h.pl
trunk/contrib/perl/regen/warnings.pl
trunk/contrib/perl/utils/Makefile
trunk/contrib/perl/utils/Makefile.SH
trunk/contrib/perl/utils/c2ph.PL
trunk/contrib/perl/utils/h2ph.PL
trunk/contrib/perl/utils/h2xs.PL
trunk/contrib/perl/utils/libnetcfg.PL
trunk/contrib/perl/utils/perlbug.PL
trunk/contrib/perl/utils/perlivp.PL
trunk/contrib/perl/utils.lst
Added Paths:
-----------
trunk/contrib/perl/dist/B-Deparse/t/core.t
trunk/contrib/perl/dist/Carp/
trunk/contrib/perl/dist/Cwd/t/Spec-taint.t
trunk/contrib/perl/dist/Data-Dumper/t/bless_var_method.t
trunk/contrib/perl/dist/Data-Dumper/t/deparse.t
trunk/contrib/perl/dist/Data-Dumper/t/dumpperl.t
trunk/contrib/perl/dist/Data-Dumper/t/freezer_useperl.t
trunk/contrib/perl/dist/Data-Dumper/t/indent.t
trunk/contrib/perl/dist/Data-Dumper/t/lib/
trunk/contrib/perl/dist/Data-Dumper/t/misc.t
trunk/contrib/perl/dist/Data-Dumper/t/names.t
trunk/contrib/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t
trunk/contrib/perl/dist/Data-Dumper/t/qr.t
trunk/contrib/perl/dist/Data-Dumper/t/quotekeys.t
trunk/contrib/perl/dist/Data-Dumper/t/seen.t
trunk/contrib/perl/dist/Data-Dumper/t/sortkeys.t
trunk/contrib/perl/dist/Data-Dumper/t/sparseseen.t
trunk/contrib/perl/dist/Data-Dumper/t/toaster.t
trunk/contrib/perl/dist/Data-Dumper/t/values.t
trunk/contrib/perl/dist/ExtUtils-CBuilder/Changes
trunk/contrib/perl/dist/ExtUtils-CBuilder/LICENSE
trunk/contrib/perl/dist/ExtUtils-CBuilder/Makefile.PL
trunk/contrib/perl/dist/ExtUtils-CBuilder/README.patching
trunk/contrib/perl/dist/ExtUtils-CBuilder/README.release
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxs.pod
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/001-basic.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/002-more.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/003-usage.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/103-tidy_type.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/104-map_type.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/106-process_typemaps.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/107-make_targetable.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/108-map_type.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/110-assign_func_args.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/112-set_cond.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/501-t-compile.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/510-t-bare.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/511-t-whitespace.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/512-t-file.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/513-t-merge.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/514-t-embed.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/515-t-cmd.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/600-t-compat.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/data/
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/ExtUtils/
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/TypemapTest/
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/pseudotypemap1
trunk/contrib/perl/dist/Filter-Simple/t/code_no_comments.t
trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm
trunk/contrib/perl/dist/IO/t/cachepropagate-tcp.t
trunk/contrib/perl/dist/IO/t/cachepropagate-udp.t
trunk/contrib/perl/dist/IO/t/cachepropagate-unix.t
trunk/contrib/perl/dist/IO/t/io_utf8argv.t
trunk/contrib/perl/dist/Math-BigInt/t/rt-16221.t
trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList/
trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pod
trunk/contrib/perl/dist/Module-CoreList/t/utils.t
trunk/contrib/perl/dist/Net-Ping/t/520_icmp_ttl.t
trunk/contrib/perl/dist/Safe/t/safenamedcap.t
trunk/contrib/perl/dist/Safe/t/saferegexp.t
trunk/contrib/perl/dist/Search-Dict/
trunk/contrib/perl/dist/Storable/t/robust.t
trunk/contrib/perl/dist/Term-Complete/
trunk/contrib/perl/dist/Term-ReadLine/
trunk/contrib/perl/dist/Text-Abbrev/
trunk/contrib/perl/dist/Thread-Queue/t/09_ended.t
trunk/contrib/perl/dist/Thread-Queue/t/10_timed.t
trunk/contrib/perl/dist/Tie-File/
trunk/contrib/perl/dist/autouse/t/lib/MyTestModule2.pm
trunk/contrib/perl/dist/bignum/t/overrides.t
trunk/contrib/perl/dist/threads-shared/t/dualvar.t
trunk/contrib/perl/dist/threads-shared/t/object2.t
trunk/contrib/perl/regen/embed_lib.pl
trunk/contrib/perl/regen/feature.pl
trunk/contrib/perl/regen/mg_vtable.pl
trunk/contrib/perl/regen/mk_invlists.pl
trunk/contrib/perl/regen/regcharclass_multi_char_folds.pl
trunk/contrib/perl/regen/unicode_constants.pl
trunk/contrib/perl/utils/pod2html.PL
trunk/contrib/perl/utils/zipdetails.PL
Property Changed:
----------------
trunk/contrib/perl/dist/Attribute-Handlers/Changes
trunk/contrib/perl/dist/Attribute-Handlers/README
trunk/contrib/perl/dist/Attribute-Handlers/demo/Demo.pm
trunk/contrib/perl/dist/Attribute-Handlers/demo/Descriptions.pm
trunk/contrib/perl/dist/Attribute-Handlers/demo/MyClass.pm
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo2.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo3.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo4.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_call.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_chain.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_cycle.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_hashdir.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_phases.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_range.pl
trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_rawdata.pl
trunk/contrib/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm
trunk/contrib/perl/dist/Attribute-Handlers/t/constants.t
trunk/contrib/perl/dist/Attribute-Handlers/t/data_convert.t
trunk/contrib/perl/dist/Attribute-Handlers/t/linerep.t
trunk/contrib/perl/dist/Attribute-Handlers/t/multi.t
trunk/contrib/perl/dist/B-Deparse/Deparse.pm
trunk/contrib/perl/dist/B-Deparse/t/deparse.t
trunk/contrib/perl/dist/B-Lint/lib/B/Lint/Debug.pm
trunk/contrib/perl/dist/B-Lint/lib/B/Lint.pm
trunk/contrib/perl/dist/B-Lint/t/lint.t
trunk/contrib/perl/dist/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm
trunk/contrib/perl/dist/Cwd/Cwd.pm
trunk/contrib/perl/dist/Cwd/Cwd.xs
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Cygwin.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Epoc.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Functions.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Mac.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/OS2.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Unix.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/VMS.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec/Win32.pm
trunk/contrib/perl/dist/Cwd/lib/File/Spec.pm
trunk/contrib/perl/dist/Cwd/t/Functions.t
trunk/contrib/perl/dist/Cwd/t/Spec.t
trunk/contrib/perl/dist/Cwd/t/crossplatform.t
trunk/contrib/perl/dist/Cwd/t/cwd.t
trunk/contrib/perl/dist/Cwd/t/rel2abs2rel.t
trunk/contrib/perl/dist/Cwd/t/taint.t
trunk/contrib/perl/dist/Cwd/t/tmpdir.t
trunk/contrib/perl/dist/Cwd/t/win32.t
trunk/contrib/perl/dist/Data-Dumper/Changes
trunk/contrib/perl/dist/Data-Dumper/Dumper.pm
trunk/contrib/perl/dist/Data-Dumper/Dumper.xs
trunk/contrib/perl/dist/Data-Dumper/Todo
trunk/contrib/perl/dist/Data-Dumper/t/bless.t
trunk/contrib/perl/dist/Data-Dumper/t/bugs.t
trunk/contrib/perl/dist/Data-Dumper/t/dumper.t
trunk/contrib/perl/dist/Data-Dumper/t/freezer.t
trunk/contrib/perl/dist/Data-Dumper/t/overload.t
trunk/contrib/perl/dist/Data-Dumper/t/pair.t
trunk/contrib/perl/dist/Data-Dumper/t/perl-74170.t
trunk/contrib/perl/dist/Data-Dumper/t/terse.t
trunk/contrib/perl/dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm
trunk/contrib/perl/dist/Devel-SelfStubber/t/Devel-SelfStubber.t
trunk/contrib/perl/dist/Dumpvalue/lib/Dumpvalue.pm
trunk/contrib/perl/dist/Dumpvalue/t/Dumpvalue.t
trunk/contrib/perl/dist/Env/lib/Env.pm
trunk/contrib/perl/dist/Env/t/array.t
trunk/contrib/perl/dist/Env/t/env.t
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
trunk/contrib/perl/dist/ExtUtils-CBuilder/t/00-have-compiler.t
trunk/contrib/perl/dist/ExtUtils-CBuilder/t/01-basic.t
trunk/contrib/perl/dist/ExtUtils-CBuilder/t/02-link.t
trunk/contrib/perl/dist/ExtUtils-CBuilder/t/03-cplusplus.t
trunk/contrib/perl/dist/ExtUtils-CBuilder/t/04-base.t
trunk/contrib/perl/dist/ExtUtils-Command/lib/ExtUtils/Command.pm
trunk/contrib/perl/dist/ExtUtils-Command/t/cp.t
trunk/contrib/perl/dist/ExtUtils-Command/t/eu_command.t
trunk/contrib/perl/dist/ExtUtils-Command/t/lib/TieOut.pm
trunk/contrib/perl/dist/ExtUtils-Install/Changes
trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm
trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Packlist.pm
trunk/contrib/perl/dist/ExtUtils-Install/t/Install.t
trunk/contrib/perl/dist/ExtUtils-Install/t/InstallWithMM.t
trunk/contrib/perl/dist/ExtUtils-Install/t/Installapi2.t
trunk/contrib/perl/dist/ExtUtils-Install/t/Installed.t
trunk/contrib/perl/dist/ExtUtils-Install/t/Packlist.t
trunk/contrib/perl/dist/ExtUtils-Install/t/can_write_dir.t
trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm
trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm
trunk/contrib/perl/dist/ExtUtils-Install/t/lib/TieOut.pm
trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP
trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
trunk/contrib/perl/dist/ExtUtils-Manifest/t/Manifest.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/Changes
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSInclude.xsh
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSMore.xs
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.pm
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.xs
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.pm
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.xs
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/basic.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/IncludeTester.pm
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/more.t
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/typemap
trunk/contrib/perl/dist/ExtUtils-ParseXS/t/usage.t
trunk/contrib/perl/dist/File-CheckTree/lib/File/CheckTree.pm
trunk/contrib/perl/dist/File-CheckTree/t/CheckTree.t
trunk/contrib/perl/dist/Filter-Simple/lib/Filter/Simple.pm
trunk/contrib/perl/dist/Filter-Simple/t/data.t
trunk/contrib/perl/dist/Filter-Simple/t/export.t
trunk/contrib/perl/dist/Filter-Simple/t/filter.t
trunk/contrib/perl/dist/Filter-Simple/t/filter_only.t
trunk/contrib/perl/dist/Filter-Simple/t/import.t
trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ExportTest.pm
trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterOnlyTest.pm
trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterTest.pm
trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ImportTest.pm
trunk/contrib/perl/dist/I18N-Collate/lib/I18N/Collate.pm
trunk/contrib/perl/dist/I18N-Collate/t/I18N-Collate.t
trunk/contrib/perl/dist/I18N-LangTags/ChangeLog
trunk/contrib/perl/dist/I18N-LangTags/README
trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm
trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm
trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm
trunk/contrib/perl/dist/I18N-LangTags/t/01_about_verbose.t
trunk/contrib/perl/dist/I18N-LangTags/t/05_main.t
trunk/contrib/perl/dist/I18N-LangTags/t/07_listy.t
trunk/contrib/perl/dist/I18N-LangTags/t/10_http.t
trunk/contrib/perl/dist/I18N-LangTags/t/20_locales.t
trunk/contrib/perl/dist/I18N-LangTags/t/50_super.t
trunk/contrib/perl/dist/I18N-LangTags/t/55_supers_strict.t
trunk/contrib/perl/dist/I18N-LangTags/t/80_all_env.t
trunk/contrib/perl/dist/IO/ChangeLog
trunk/contrib/perl/dist/IO/IO.pm
trunk/contrib/perl/dist/IO/IO.xs
trunk/contrib/perl/dist/IO/Makefile.PL
trunk/contrib/perl/dist/IO/README
trunk/contrib/perl/dist/IO/hints/sco.pl
trunk/contrib/perl/dist/IO/lib/IO/Dir.pm
trunk/contrib/perl/dist/IO/lib/IO/File.pm
trunk/contrib/perl/dist/IO/lib/IO/Handle.pm
trunk/contrib/perl/dist/IO/lib/IO/Pipe.pm
trunk/contrib/perl/dist/IO/lib/IO/Poll.pm
trunk/contrib/perl/dist/IO/lib/IO/Seekable.pm
trunk/contrib/perl/dist/IO/lib/IO/Select.pm
trunk/contrib/perl/dist/IO/lib/IO/Socket/INET.pm
trunk/contrib/perl/dist/IO/lib/IO/Socket/UNIX.pm
trunk/contrib/perl/dist/IO/lib/IO/Socket.pm
trunk/contrib/perl/dist/IO/poll.c
trunk/contrib/perl/dist/IO/poll.h
trunk/contrib/perl/dist/IO/t/IO.t
trunk/contrib/perl/dist/IO/t/io_const.t
trunk/contrib/perl/dist/IO/t/io_dir.t
trunk/contrib/perl/dist/IO/t/io_dup.t
trunk/contrib/perl/dist/IO/t/io_file.t
trunk/contrib/perl/dist/IO/t/io_file_export.t
trunk/contrib/perl/dist/IO/t/io_linenum.t
trunk/contrib/perl/dist/IO/t/io_multihomed.t
trunk/contrib/perl/dist/IO/t/io_pipe.t
trunk/contrib/perl/dist/IO/t/io_poll.t
trunk/contrib/perl/dist/IO/t/io_sel.t
trunk/contrib/perl/dist/IO/t/io_sock.t
trunk/contrib/perl/dist/IO/t/io_taint.t
trunk/contrib/perl/dist/IO/t/io_tell.t
trunk/contrib/perl/dist/IO/t/io_udp.t
trunk/contrib/perl/dist/IO/t/io_unix.t
trunk/contrib/perl/dist/IO/t/io_utf8.t
trunk/contrib/perl/dist/IO/t/io_xs.t
trunk/contrib/perl/dist/Locale-Maketext/ChangeLog
trunk/contrib/perl/dist/Locale-Maketext/README
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm
trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod
trunk/contrib/perl/dist/Locale-Maketext/t/01_about_verbose.t
trunk/contrib/perl/dist/Locale-Maketext/t/04_use_external_lex_cache.t
trunk/contrib/perl/dist/Locale-Maketext/t/09_compile.t
trunk/contrib/perl/dist/Locale-Maketext/t/10_make.t
trunk/contrib/perl/dist/Locale-Maketext/t/20_get.t
trunk/contrib/perl/dist/Locale-Maketext/t/30_eval_dollar_at.t
trunk/contrib/perl/dist/Locale-Maketext/t/40_super.t
trunk/contrib/perl/dist/Locale-Maketext/t/50_super.t
trunk/contrib/perl/dist/Locale-Maketext/t/60_super.t
trunk/contrib/perl/dist/Locale-Maketext/t/70_fail_auto.t
trunk/contrib/perl/dist/Locale-Maketext/t/90_utf8.t
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigFloat.pm
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/Calc.pm
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt.pm
trunk/contrib/perl/dist/Math-BigInt/t/Math/BigFloat/Subclass.pm
trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/BareCalc.pm
trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Scalar.pm
trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Subclass.pm
trunk/contrib/perl/dist/Math-BigInt/t/_e_math.t
trunk/contrib/perl/dist/Math-BigInt/t/alias.inc
trunk/contrib/perl/dist/Math-BigInt/t/bare_mbf.t
trunk/contrib/perl/dist/Math-BigInt/t/bare_mbi.t
trunk/contrib/perl/dist/Math-BigInt/t/bare_mif.t
trunk/contrib/perl/dist/Math-BigInt/t/big_pi_e.t
trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.inc
trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.t
trunk/contrib/perl/dist/Math-BigInt/t/bigintc.t
trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.inc
trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.t
trunk/contrib/perl/dist/Math-BigInt/t/bigints.t
trunk/contrib/perl/dist/Math-BigInt/t/biglog.t
trunk/contrib/perl/dist/Math-BigInt/t/bigroot.t
trunk/contrib/perl/dist/Math-BigInt/t/calling.t
trunk/contrib/perl/dist/Math-BigInt/t/config.t
trunk/contrib/perl/dist/Math-BigInt/t/const_mbf.t
trunk/contrib/perl/dist/Math-BigInt/t/constant.t
trunk/contrib/perl/dist/Math-BigInt/t/downgrade.t
trunk/contrib/perl/dist/Math-BigInt/t/inf_nan.t
trunk/contrib/perl/dist/Math-BigInt/t/isa.t
trunk/contrib/perl/dist/Math-BigInt/t/lib_load.t
trunk/contrib/perl/dist/Math-BigInt/t/mbf_ali.t
trunk/contrib/perl/dist/Math-BigInt/t/mbi_ali.t
trunk/contrib/perl/dist/Math-BigInt/t/mbi_rand.t
trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.inc
trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.t
trunk/contrib/perl/dist/Math-BigInt/t/nan_cmp.t
trunk/contrib/perl/dist/Math-BigInt/t/new_overloaded.t
trunk/contrib/perl/dist/Math-BigInt/t/req_mbf0.t
trunk/contrib/perl/dist/Math-BigInt/t/req_mbf1.t
trunk/contrib/perl/dist/Math-BigInt/t/req_mbfa.t
trunk/contrib/perl/dist/Math-BigInt/t/req_mbfi.t
trunk/contrib/perl/dist/Math-BigInt/t/req_mbfn.t
trunk/contrib/perl/dist/Math-BigInt/t/req_mbfw.t
trunk/contrib/perl/dist/Math-BigInt/t/require.t
trunk/contrib/perl/dist/Math-BigInt/t/round.t
trunk/contrib/perl/dist/Math-BigInt/t/sub_ali.t
trunk/contrib/perl/dist/Math-BigInt/t/sub_mbf.t
trunk/contrib/perl/dist/Math-BigInt/t/sub_mbi.t
trunk/contrib/perl/dist/Math-BigInt/t/sub_mif.t
trunk/contrib/perl/dist/Math-BigInt/t/trap.t
trunk/contrib/perl/dist/Math-BigInt/t/upgrade.inc
trunk/contrib/perl/dist/Math-BigInt/t/upgrade.t
trunk/contrib/perl/dist/Math-BigInt/t/upgrade2.t
trunk/contrib/perl/dist/Math-BigInt/t/upgradef.t
trunk/contrib/perl/dist/Math-BigInt/t/use.t
trunk/contrib/perl/dist/Math-BigInt/t/use_lib1.t
trunk/contrib/perl/dist/Math-BigInt/t/use_lib2.t
trunk/contrib/perl/dist/Math-BigInt/t/use_lib3.t
trunk/contrib/perl/dist/Math-BigInt/t/use_lib4.t
trunk/contrib/perl/dist/Math-BigInt/t/use_mbfw.t
trunk/contrib/perl/dist/Math-BigInt/t/with_sub.t
trunk/contrib/perl/dist/Math-BigInt-FastCalc/FastCalc.xs
trunk/contrib/perl/dist/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm
trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bigintfc.t
trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bootstrap.t
trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/leak.t
trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/mbi_rand.t
trunk/contrib/perl/dist/Math-BigRat/lib/Math/BigRat.pm
trunk/contrib/perl/dist/Math-BigRat/t/Math/BigRat/Test.pm
trunk/contrib/perl/dist/Math-BigRat/t/big_ap.t
trunk/contrib/perl/dist/Math-BigRat/t/bigfltpm.inc
trunk/contrib/perl/dist/Math-BigRat/t/bigfltrt.t
trunk/contrib/perl/dist/Math-BigRat/t/biglog.t
trunk/contrib/perl/dist/Math-BigRat/t/bigrat.t
trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.inc
trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.t
trunk/contrib/perl/dist/Math-BigRat/t/bigratup.t
trunk/contrib/perl/dist/Math-BigRat/t/bigroot.t
trunk/contrib/perl/dist/Math-BigRat/t/bitwise.t
trunk/contrib/perl/dist/Math-BigRat/t/hang.t
trunk/contrib/perl/dist/Math-BigRat/t/requirer.t
trunk/contrib/perl/dist/Math-BigRat/t/trap.t
trunk/contrib/perl/dist/Module-CoreList/Changes
trunk/contrib/perl/dist/Module-CoreList/MANIFEST
trunk/contrib/perl/dist/Module-CoreList/Makefile.PL
trunk/contrib/perl/dist/Module-CoreList/README
trunk/contrib/perl/dist/Module-CoreList/corelist
trunk/contrib/perl/dist/Module-CoreList/identify-dependencies
trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pm
trunk/contrib/perl/dist/Module-CoreList/t/corelist.t
trunk/contrib/perl/dist/Module-CoreList/t/deprecated.t
trunk/contrib/perl/dist/Module-CoreList/t/find_modules.t
trunk/contrib/perl/dist/Module-CoreList/t/pod.t
trunk/contrib/perl/dist/Net-Ping/Changes
trunk/contrib/perl/dist/Net-Ping/lib/Net/Ping.pm
trunk/contrib/perl/dist/Net-Ping/t/100_load.t
trunk/contrib/perl/dist/Net-Ping/t/110_icmp_inst.t
trunk/contrib/perl/dist/Net-Ping/t/120_udp_inst.t
trunk/contrib/perl/dist/Net-Ping/t/130_tcp_inst.t
trunk/contrib/perl/dist/Net-Ping/t/140_stream_inst.t
trunk/contrib/perl/dist/Net-Ping/t/150_syn_inst.t
trunk/contrib/perl/dist/Net-Ping/t/190_alarm.t
trunk/contrib/perl/dist/Net-Ping/t/200_ping_tcp.t
trunk/contrib/perl/dist/Net-Ping/t/250_ping_hires.t
trunk/contrib/perl/dist/Net-Ping/t/300_ping_stream.t
trunk/contrib/perl/dist/Net-Ping/t/400_ping_syn.t
trunk/contrib/perl/dist/Net-Ping/t/410_syn_host.t
trunk/contrib/perl/dist/Net-Ping/t/450_service.t
trunk/contrib/perl/dist/Net-Ping/t/500_ping_icmp.t
trunk/contrib/perl/dist/Net-Ping/t/510_ping_udp.t
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc.pm
trunk/contrib/perl/dist/Pod-Perldoc/t/01_about_verbose.t
trunk/contrib/perl/dist/Pod-Perldoc/t/checkerbasic.t
trunk/contrib/perl/dist/Pod-Perldoc/t/perldocbasic.t
trunk/contrib/perl/dist/Pod-Perldoc/t/textbasic.t
trunk/contrib/perl/dist/Safe/Changes
trunk/contrib/perl/dist/Safe/MANIFEST
trunk/contrib/perl/dist/Safe/META.yml
trunk/contrib/perl/dist/Safe/Makefile.PL
trunk/contrib/perl/dist/Safe/README
trunk/contrib/perl/dist/Safe/Safe.pm
trunk/contrib/perl/dist/Safe/t/safe1.t
trunk/contrib/perl/dist/Safe/t/safe2.t
trunk/contrib/perl/dist/Safe/t/safe3.t
trunk/contrib/perl/dist/Safe/t/safeload.t
trunk/contrib/perl/dist/Safe/t/safeops.t
trunk/contrib/perl/dist/Safe/t/safesort.t
trunk/contrib/perl/dist/Safe/t/safeuniversal.t
trunk/contrib/perl/dist/Safe/t/safeutf8.t
trunk/contrib/perl/dist/Safe/t/safewrap.t
trunk/contrib/perl/dist/SelfLoader/lib/SelfLoader.pm
trunk/contrib/perl/dist/SelfLoader/t/01SelfLoader.t
trunk/contrib/perl/dist/SelfLoader/t/02SelfLoader-buggy.t
trunk/contrib/perl/dist/SelfLoader/t/03taint.t
trunk/contrib/perl/dist/Storable/ChangeLog
trunk/contrib/perl/dist/Storable/Makefile.PL
trunk/contrib/perl/dist/Storable/README
trunk/contrib/perl/dist/Storable/Storable.pm
trunk/contrib/perl/dist/Storable/Storable.xs
trunk/contrib/perl/dist/Storable/hints/gnukfreebsd.pl
trunk/contrib/perl/dist/Storable/hints/gnuknetbsd.pl
trunk/contrib/perl/dist/Storable/hints/hpux.pl
trunk/contrib/perl/dist/Storable/hints/linux.pl
trunk/contrib/perl/dist/Storable/t/HAS_ATTACH.pm
trunk/contrib/perl/dist/Storable/t/HAS_HOOK.pm
trunk/contrib/perl/dist/Storable/t/HAS_OVERLOAD.pm
trunk/contrib/perl/dist/Storable/t/attach_errors.t
trunk/contrib/perl/dist/Storable/t/attach_singleton.t
trunk/contrib/perl/dist/Storable/t/blessed.t
trunk/contrib/perl/dist/Storable/t/canonical.t
trunk/contrib/perl/dist/Storable/t/circular_hook.t
trunk/contrib/perl/dist/Storable/t/code.t
trunk/contrib/perl/dist/Storable/t/compat01.t
trunk/contrib/perl/dist/Storable/t/compat06.t
trunk/contrib/perl/dist/Storable/t/croak.t
trunk/contrib/perl/dist/Storable/t/dclone.t
trunk/contrib/perl/dist/Storable/t/downgrade.t
trunk/contrib/perl/dist/Storable/t/file_magic.t
trunk/contrib/perl/dist/Storable/t/forgive.t
trunk/contrib/perl/dist/Storable/t/freeze.t
trunk/contrib/perl/dist/Storable/t/integer.t
trunk/contrib/perl/dist/Storable/t/interwork56.t
trunk/contrib/perl/dist/Storable/t/just_plain_nasty.t
trunk/contrib/perl/dist/Storable/t/lock.t
trunk/contrib/perl/dist/Storable/t/make_56_interwork.pl
trunk/contrib/perl/dist/Storable/t/make_downgrade.pl
trunk/contrib/perl/dist/Storable/t/make_overload.pl
trunk/contrib/perl/dist/Storable/t/malice.t
trunk/contrib/perl/dist/Storable/t/overload.t
trunk/contrib/perl/dist/Storable/t/recurse.t
trunk/contrib/perl/dist/Storable/t/restrict.t
trunk/contrib/perl/dist/Storable/t/retrieve.t
trunk/contrib/perl/dist/Storable/t/sig_die.t
trunk/contrib/perl/dist/Storable/t/st-dump.pl
trunk/contrib/perl/dist/Storable/t/store.t
trunk/contrib/perl/dist/Storable/t/testlib.pl
trunk/contrib/perl/dist/Storable/t/threads.t
trunk/contrib/perl/dist/Storable/t/tied.t
trunk/contrib/perl/dist/Storable/t/tied_hook.t
trunk/contrib/perl/dist/Storable/t/tied_items.t
trunk/contrib/perl/dist/Storable/t/utf8.t
trunk/contrib/perl/dist/Storable/t/utf8hash.t
trunk/contrib/perl/dist/Storable/t/weak.t
trunk/contrib/perl/dist/Thread-Queue/lib/Thread/Queue.pm
trunk/contrib/perl/dist/Thread-Queue/t/01_basic.t
trunk/contrib/perl/dist/Thread-Queue/t/02_refs.t
trunk/contrib/perl/dist/Thread-Queue/t/03_peek.t
trunk/contrib/perl/dist/Thread-Queue/t/04_errs.t
trunk/contrib/perl/dist/Thread-Queue/t/05_extract.t
trunk/contrib/perl/dist/Thread-Queue/t/06_insert.t
trunk/contrib/perl/dist/Thread-Queue/t/07_lock.t
trunk/contrib/perl/dist/Thread-Queue/t/08_nothreads.t
trunk/contrib/perl/dist/Thread-Semaphore/lib/Thread/Semaphore.pm
trunk/contrib/perl/dist/Thread-Semaphore/t/01_basic.t
trunk/contrib/perl/dist/Thread-Semaphore/t/02_errs.t
trunk/contrib/perl/dist/Thread-Semaphore/t/03_nothreads.t
trunk/contrib/perl/dist/Thread-Semaphore/t/04_nonblocking.t
trunk/contrib/perl/dist/Thread-Semaphore/t/05_force.t
trunk/contrib/perl/dist/XSLoader/Makefile.PL
trunk/contrib/perl/dist/XSLoader/XSLoader_pm.PL
trunk/contrib/perl/dist/XSLoader/t/XSLoader.t
trunk/contrib/perl/dist/autouse/lib/autouse.pm
trunk/contrib/perl/dist/autouse/t/autouse.t
trunk/contrib/perl/dist/autouse/t/lib/MyTestModule.pm
trunk/contrib/perl/dist/base/Changes
trunk/contrib/perl/dist/base/MANIFEST
trunk/contrib/perl/dist/base/META.yml
trunk/contrib/perl/dist/base/lib/base.pm
trunk/contrib/perl/dist/base/lib/fields.pm
trunk/contrib/perl/dist/base/t/base.t
trunk/contrib/perl/dist/base/t/compile-time.t
trunk/contrib/perl/dist/base/t/fields-5_6_0.t
trunk/contrib/perl/dist/base/t/fields-5_8_0.t
trunk/contrib/perl/dist/base/t/fields-base.t
trunk/contrib/perl/dist/base/t/fields.t
trunk/contrib/perl/dist/base/t/isa.t
trunk/contrib/perl/dist/base/t/lib/Dummy.pm
trunk/contrib/perl/dist/base/t/lib/HasSigDie.pm
trunk/contrib/perl/dist/base/t/sigdie.t
trunk/contrib/perl/dist/base/t/version.t
trunk/contrib/perl/dist/base/t/warnings.t
trunk/contrib/perl/dist/bignum/lib/Math/BigFloat/Trace.pm
trunk/contrib/perl/dist/bignum/lib/Math/BigInt/Trace.pm
trunk/contrib/perl/dist/bignum/lib/bigint.pm
trunk/contrib/perl/dist/bignum/lib/bignum.pm
trunk/contrib/perl/dist/bignum/lib/bigrat.pm
trunk/contrib/perl/dist/bignum/t/big_e_pi.t
trunk/contrib/perl/dist/bignum/t/bigexp.t
trunk/contrib/perl/dist/bignum/t/bigint.t
trunk/contrib/perl/dist/bignum/t/bignum.t
trunk/contrib/perl/dist/bignum/t/bigrat.t
trunk/contrib/perl/dist/bignum/t/bii_e_pi.t
trunk/contrib/perl/dist/bignum/t/biinfnan.t
trunk/contrib/perl/dist/bignum/t/bir_e_pi.t
trunk/contrib/perl/dist/bignum/t/bn_lite.t
trunk/contrib/perl/dist/bignum/t/bninfnan.t
trunk/contrib/perl/dist/bignum/t/br_lite.t
trunk/contrib/perl/dist/bignum/t/brinfnan.t
trunk/contrib/perl/dist/bignum/t/in_effect.t
trunk/contrib/perl/dist/bignum/t/infnan.inc
trunk/contrib/perl/dist/bignum/t/option_a.t
trunk/contrib/perl/dist/bignum/t/option_l.t
trunk/contrib/perl/dist/bignum/t/option_p.t
trunk/contrib/perl/dist/bignum/t/ratopt_a.t
trunk/contrib/perl/dist/bignum/t/scope_f.t
trunk/contrib/perl/dist/bignum/t/scope_i.t
trunk/contrib/perl/dist/bignum/t/scope_r.t
trunk/contrib/perl/dist/constant/lib/constant.pm
trunk/contrib/perl/dist/constant/t/constant.t
trunk/contrib/perl/dist/constant/t/utf8.t
trunk/contrib/perl/dist/if/if.pm
trunk/contrib/perl/dist/if/t/if.t
trunk/contrib/perl/dist/lib/Makefile.PL
trunk/contrib/perl/dist/lib/lib_pm.PL
trunk/contrib/perl/dist/lib/t/01lib.t
trunk/contrib/perl/dist/threads/hints/hpux.pl
trunk/contrib/perl/dist/threads/hints/linux.pl
trunk/contrib/perl/dist/threads/lib/threads.pm
trunk/contrib/perl/dist/threads/t/basic.t
trunk/contrib/perl/dist/threads/t/blocks.t
trunk/contrib/perl/dist/threads/t/context.t
trunk/contrib/perl/dist/threads/t/end.t
trunk/contrib/perl/dist/threads/t/err.t
trunk/contrib/perl/dist/threads/t/exit.t
trunk/contrib/perl/dist/threads/t/free.t
trunk/contrib/perl/dist/threads/t/free2.t
trunk/contrib/perl/dist/threads/t/join.t
trunk/contrib/perl/dist/threads/t/kill.t
trunk/contrib/perl/dist/threads/t/kill2.t
trunk/contrib/perl/dist/threads/t/libc.t
trunk/contrib/perl/dist/threads/t/list.t
trunk/contrib/perl/dist/threads/t/no_threads.t
trunk/contrib/perl/dist/threads/t/problems.t
trunk/contrib/perl/dist/threads/t/stack.t
trunk/contrib/perl/dist/threads/t/stack_env.t
trunk/contrib/perl/dist/threads/t/state.t
trunk/contrib/perl/dist/threads/t/stress_cv.t
trunk/contrib/perl/dist/threads/t/stress_re.t
trunk/contrib/perl/dist/threads/t/stress_string.t
trunk/contrib/perl/dist/threads/t/thread.t
trunk/contrib/perl/dist/threads/threads.xs
trunk/contrib/perl/dist/threads-shared/hints/linux.pl
trunk/contrib/perl/dist/threads-shared/lib/threads/shared.pm
trunk/contrib/perl/dist/threads-shared/shared.xs
trunk/contrib/perl/dist/threads-shared/t/0nothread.t
trunk/contrib/perl/dist/threads-shared/t/av_refs.t
trunk/contrib/perl/dist/threads-shared/t/av_simple.t
trunk/contrib/perl/dist/threads-shared/t/blessed.t
trunk/contrib/perl/dist/threads-shared/t/clone.t
trunk/contrib/perl/dist/threads-shared/t/cond.t
trunk/contrib/perl/dist/threads-shared/t/disabled.t
trunk/contrib/perl/dist/threads-shared/t/hv_refs.t
trunk/contrib/perl/dist/threads-shared/t/hv_simple.t
trunk/contrib/perl/dist/threads-shared/t/no_share.t
trunk/contrib/perl/dist/threads-shared/t/object.t
trunk/contrib/perl/dist/threads-shared/t/shared_attr.t
trunk/contrib/perl/dist/threads-shared/t/stress.t
trunk/contrib/perl/dist/threads-shared/t/sv_refs.t
trunk/contrib/perl/dist/threads-shared/t/sv_simple.t
trunk/contrib/perl/dist/threads-shared/t/utf8.t
trunk/contrib/perl/dist/threads-shared/t/wait.t
trunk/contrib/perl/dist/threads-shared/t/waithires.t
trunk/contrib/perl/regen/embed.pl
trunk/contrib/perl/regen/keywords.pl
trunk/contrib/perl/regen/mk_PL_charclass.pl
trunk/contrib/perl/regen/opcode.pl
trunk/contrib/perl/regen/opcodes
trunk/contrib/perl/regen/overload.pl
trunk/contrib/perl/regen/reentr.pl
trunk/contrib/perl/regen/regcharclass.pl
trunk/contrib/perl/regen/regcomp.pl
trunk/contrib/perl/regen/regen_lib.pl
trunk/contrib/perl/regen/uconfig_h.pl
trunk/contrib/perl/regen/warnings.pl
trunk/contrib/perl/utils/Makefile
trunk/contrib/perl/utils/Makefile.SH
trunk/contrib/perl/utils/c2ph.PL
trunk/contrib/perl/utils/config_data.PL
trunk/contrib/perl/utils/corelist.PL
trunk/contrib/perl/utils/cpan.PL
trunk/contrib/perl/utils/cpan2dist.PL
trunk/contrib/perl/utils/cpanp-run-perl.PL
trunk/contrib/perl/utils/cpanp.PL
trunk/contrib/perl/utils/dprofpp.PL
trunk/contrib/perl/utils/enc2xs.PL
trunk/contrib/perl/utils/h2ph.PL
trunk/contrib/perl/utils/h2xs.PL
trunk/contrib/perl/utils/instmodsh.PL
trunk/contrib/perl/utils/json_pp.PL
trunk/contrib/perl/utils/libnetcfg.PL
trunk/contrib/perl/utils/perlbug.PL
trunk/contrib/perl/utils/perldoc.PL
trunk/contrib/perl/utils/perlivp.PL
trunk/contrib/perl/utils/piconv.PL
trunk/contrib/perl/utils/pl2pm.PL
trunk/contrib/perl/utils/prove.PL
trunk/contrib/perl/utils/ptar.PL
trunk/contrib/perl/utils/ptardiff.PL
trunk/contrib/perl/utils/ptargrep.PL
trunk/contrib/perl/utils/shasum.PL
trunk/contrib/perl/utils/splain.PL
trunk/contrib/perl/utils/xsubpp.PL
trunk/contrib/perl/utils.lst
Modified: trunk/contrib/perl/dist/Attribute-Handlers/Changes
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -133,7 +133,7 @@
- Add resources (bugtracker, ...) section to META.yml
0.86_01 Thu Sep 17 10:01:00 CET 2009
- - From perl change 09330df80caf214f375fcf0c04857347e3b17c69 (Zefram):
+ - From perl change 09330df80caf214f375fcf0c04857347e3b17c69 (Zefram):
Fix [perl #66970] Incorrect coderef in MODIFY_CODE_ATTRIBUTES
@@ -154,6 +154,15 @@
0.87 Mon Sep 21 15:55:00 CET 2009
- Promote to stable release
-0.88 Mon Apr 5 16:33:00 CET 2010
+0.88 Mon Apr 5 16:33:00 CET 2010
- Avoid clobbering $_ (perl #74052, LanX)
+0.91 Fri May 20 20:00:00 CET 2011
+ - Typo fixes in documentation
+ - POD link fix.
+
+0.93 Mon Dec 19 09:19:00 CET 2011
+ - documentation: "my" should be "till" (Frederic Briere)
+ - Spelling fixes (Father Chrysostomos)
+ - Indentation fixes (Father Chrysostomos)
+
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/README
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/README 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/README 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/README
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/Demo.pm
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/Demo.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/Demo.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/Demo.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/Descriptions.pm
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/Descriptions.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/Descriptions.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/Descriptions.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/MyClass.pm
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/MyClass.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/MyClass.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/MyClass.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo2.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo2.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo2.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo2.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo3.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo3.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo3.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo3.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo4.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo4.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo4.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo4.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_call.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_call.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_call.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_call.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_chain.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_chain.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_chain.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_chain.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_cycle.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_cycle.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_cycle.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_cycle.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_hashdir.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_hashdir.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_hashdir.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_hashdir.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_phases.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_phases.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_phases.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_phases.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_range.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_range.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_range.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_range.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_rawdata.pl
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_rawdata.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_rawdata.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/demo/demo_rawdata.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
use warnings;
use strict;
use vars qw($VERSION $AUTOLOAD);
-$VERSION = '0.89'; # remember to update version in POD!
+$VERSION = '0.94'; # remember to update version in POD!
# $DB::single=1;
my %symcache;
@@ -266,68 +266,68 @@
=head1 VERSION
-This document describes version 0.89 of Attribute::Handlers,
-released April 5, 2010.
+This document describes version 0.93 of Attribute::Handlers,
+released July 20, 2011.
=head1 SYNOPSIS
- package MyClass;
- require 5.006;
- use Attribute::Handlers;
- no warnings 'redefine';
+ package MyClass;
+ require 5.006;
+ use Attribute::Handlers;
+ no warnings 'redefine';
- sub Good : ATTR(SCALAR) {
- my ($package, $symbol, $referent, $attr, $data) = @_;
+ sub Good : ATTR(SCALAR) {
+ my ($package, $symbol, $referent, $attr, $data) = @_;
- # Invoked for any scalar variable with a :Good attribute,
- # provided the variable was declared in MyClass (or
- # a derived class) or typed to MyClass.
+ # Invoked for any scalar variable with a :Good attribute,
+ # provided the variable was declared in MyClass (or
+ # a derived class) or typed to MyClass.
- # Do whatever to $referent here (executed in CHECK phase).
- ...
- }
+ # Do whatever to $referent here (executed in CHECK phase).
+ ...
+ }
- sub Bad : ATTR(SCALAR) {
- # Invoked for any scalar variable with a :Bad attribute,
- # provided the variable was declared in MyClass (or
- # a derived class) or typed to MyClass.
- ...
- }
+ sub Bad : ATTR(SCALAR) {
+ # Invoked for any scalar variable with a :Bad attribute,
+ # provided the variable was declared in MyClass (or
+ # a derived class) or typed to MyClass.
+ ...
+ }
- sub Good : ATTR(ARRAY) {
- # Invoked for any array variable with a :Good attribute,
- # provided the variable was declared in MyClass (or
- # a derived class) or typed to MyClass.
- ...
- }
+ sub Good : ATTR(ARRAY) {
+ # Invoked for any array variable with a :Good attribute,
+ # provided the variable was declared in MyClass (or
+ # a derived class) or typed to MyClass.
+ ...
+ }
- sub Good : ATTR(HASH) {
- # Invoked for any hash variable with a :Good attribute,
- # provided the variable was declared in MyClass (or
- # a derived class) or typed to MyClass.
- ...
- }
+ sub Good : ATTR(HASH) {
+ # Invoked for any hash variable with a :Good attribute,
+ # provided the variable was declared in MyClass (or
+ # a derived class) or typed to MyClass.
+ ...
+ }
- sub Ugly : ATTR(CODE) {
- # Invoked for any subroutine declared in MyClass (or a
- # derived class) with an :Ugly attribute.
- ...
- }
+ sub Ugly : ATTR(CODE) {
+ # Invoked for any subroutine declared in MyClass (or a
+ # derived class) with an :Ugly attribute.
+ ...
+ }
- sub Omni : ATTR {
- # Invoked for any scalar, array, hash, or subroutine
- # with an :Omni attribute, provided the variable or
- # subroutine was declared in MyClass (or a derived class)
- # or the variable was typed to MyClass.
- # Use ref($_[2]) to determine what kind of referent it was.
- ...
- }
+ sub Omni : ATTR {
+ # Invoked for any scalar, array, hash, or subroutine
+ # with an :Omni attribute, provided the variable or
+ # subroutine was declared in MyClass (or a derived class)
+ # or the variable was typed to MyClass.
+ # Use ref($_[2]) to determine what kind of referent it was.
+ ...
+ }
- use Attribute::Handlers autotie => { Cycle => Tie::Cycle };
+ use Attribute::Handlers autotie => { Cycle => Tie::Cycle };
- my $next : Cycle(['A'..'Z']);
+ my $next : Cycle(['A'..'Z']);
=head1 DESCRIPTION
@@ -349,7 +349,8 @@
use Attribute::Handlers;
sub Loud :ATTR {
- my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
+ my ($package, $symbol, $referent, $attr, $data, $phase,
+ $filename, $linenum) = @_;
print STDERR
ref($referent), " ",
*{$symbol}{NAME}, " ",
@@ -364,9 +365,9 @@
Thereafter, any subroutine declared with a C<:Loud> attribute in the class
LoudDecl:
- package LoudDecl;
+ package LoudDecl;
- sub foo: Loud {...}
+ sub foo: Loud {...}
causes the above handler to be invoked, and passed:
@@ -409,11 +410,11 @@
Likewise, declaring any variables with the C<:Loud> attribute within the
package:
- package LoudDecl;
+ package LoudDecl;
- my $foo :Loud;
- my @foo :Loud;
- my %foo :Loud;
+ my $foo :Loud;
+ my @foo :Loud;
+ my %foo :Loud;
will cause the handler to be called with a similar argument list (except,
of course, that C<$_[2]> will be a reference to the variable).
@@ -436,7 +437,7 @@
C<"turn it up to 11, man!"> would be passed as the last argument.
Attribute::Handlers makes strenuous efforts to convert
-the data argument (C<$_[4]>) to a useable form before passing it to
+the data argument (C<$_[4]>) to a usable form before passing it to
the handler (but see L<"Non-interpretive attribute handlers">).
If those efforts succeed, the interpreted data is passed in an array
reference; if they fail, the raw data is passed as a string.
@@ -444,7 +445,7 @@
sub foo :Loud(till=>ears=>are=>bleeding) {...}
sub foo :Loud(qw/till ears are bleeding/) {...}
- sub foo :Loud(qw/my, ears, are, bleeding/) {...}
+ sub foo :Loud(qw/till, ears, are, bleeding/) {...}
sub foo :Loud(till,ears,are,bleeding) {...}
causes it to pass C<['till','ears','are','bleeding']> as the handler's
@@ -474,11 +475,11 @@
ascribed an attribute, the handler that is invoked is the one belonging to
the package to which it is typed. For example, the following declarations:
- package OtherClass;
+ package OtherClass;
- my LoudDecl $loudobj : Loud;
- my LoudDecl @loudobjs : Loud;
- my LoudDecl %loudobjex : Loud;
+ my LoudDecl $loudobj : Loud;
+ my LoudDecl @loudobjs : Loud;
+ my LoudDecl %loudobjex : Loud;
causes the LoudDecl::Loud handler to be invoked (even if OtherClass also
defines a handler for C<:Loud> attributes).
@@ -491,40 +492,40 @@
the handler is only applied to declarations of that type. For example,
the following definition:
- package LoudDecl;
+ package LoudDecl;
- sub RealLoud :ATTR(SCALAR) { print "Yeeeeow!" }
+ sub RealLoud :ATTR(SCALAR) { print "Yeeeeow!" }
creates an attribute handler that applies only to scalars:
- package Painful;
- use base LoudDecl;
+ package Painful;
+ use base LoudDecl;
- my $metal : RealLoud; # invokes &LoudDecl::RealLoud
- my @metal : RealLoud; # error: unknown attribute
- my %metal : RealLoud; # error: unknown attribute
- sub metal : RealLoud {...} # error: unknown attribute
+ my $metal : RealLoud; # invokes &LoudDecl::RealLoud
+ my @metal : RealLoud; # error: unknown attribute
+ my %metal : RealLoud; # error: unknown attribute
+ sub metal : RealLoud {...} # error: unknown attribute
You can, of course, declare separate handlers for these types as well
(but you'll need to specify C<no warnings 'redefine'> to do it quietly):
- package LoudDecl;
- use Attribute::Handlers;
- no warnings 'redefine';
+ package LoudDecl;
+ use Attribute::Handlers;
+ no warnings 'redefine';
- sub RealLoud :ATTR(SCALAR) { print "Yeeeeow!" }
- sub RealLoud :ATTR(ARRAY) { print "Urrrrrrrrrr!" }
- sub RealLoud :ATTR(HASH) { print "Arrrrrgggghhhhhh!" }
- sub RealLoud :ATTR(CODE) { croak "Real loud sub torpedoed" }
+ sub RealLoud :ATTR(SCALAR) { print "Yeeeeow!" }
+ sub RealLoud :ATTR(ARRAY) { print "Urrrrrrrrrr!" }
+ sub RealLoud :ATTR(HASH) { print "Arrrrrgggghhhhhh!" }
+ sub RealLoud :ATTR(CODE) { croak "Real loud sub torpedoed" }
You can also explicitly indicate that a single handler is meant to be
used for all types of referents like so:
- package LoudDecl;
- use Attribute::Handlers;
+ package LoudDecl;
+ use Attribute::Handlers;
- sub SeriousLoud :ATTR(ANY) { warn "Hearing loss imminent" }
+ sub SeriousLoud :ATTR(ANY) { warn "Hearing loss imminent" }
(I.e. C<ATTR(ANY)> is a synonym for C<:ATTR>).
@@ -532,20 +533,20 @@
=head2 Non-interpretive attribute handlers
Occasionally the strenuous efforts Attribute::Handlers makes to convert
-the data argument (C<$_[4]>) to a useable form before passing it to
+the data argument (C<$_[4]>) to a usable form before passing it to
the handler get in the way.
You can turn off that eagerness-to-help by declaring
an attribute handler with the keyword C<RAWDATA>. For example:
- sub Raw : ATTR(RAWDATA) {...}
- sub Nekkid : ATTR(SCALAR,RAWDATA) {...}
- sub Au::Naturale : ATTR(RAWDATA,ANY) {...}
+ sub Raw : ATTR(RAWDATA) {...}
+ sub Nekkid : ATTR(SCALAR,RAWDATA) {...}
+ sub Au::Naturale : ATTR(RAWDATA,ANY) {...}
Then the handler makes absolutely no attempt to interpret the data it
receives and simply passes it as a string:
- my $power : Raw(1..100); # handlers receives "1..100"
+ my $power : Raw(1..100); # handlers receives "1..100"
=head2 Phase-specific attribute handlers
@@ -559,11 +560,11 @@
stating the phase (or phases) in which you wish the attribute handler to
be called. For example:
- sub Early :ATTR(SCALAR,BEGIN) {...}
- sub Normal :ATTR(SCALAR,CHECK) {...}
- sub Late :ATTR(SCALAR,INIT) {...}
- sub Final :ATTR(SCALAR,END) {...}
- sub Bookends :ATTR(SCALAR,BEGIN,END) {...}
+ sub Early :ATTR(SCALAR,BEGIN) {...}
+ sub Normal :ATTR(SCALAR,CHECK) {...}
+ sub Late :ATTR(SCALAR,INIT) {...}
+ sub Final :ATTR(SCALAR,END) {...}
+ sub Bookends :ATTR(SCALAR,BEGIN,END) {...}
As the last example indicates, a handler may be set up to be (re)called in
two or more phases. The phase name is passed as the handler's final argument.
@@ -578,24 +579,24 @@
Attributes make an excellent and intuitive interface through which to tie
variables. For example:
- use Attribute::Handlers;
- use Tie::Cycle;
+ use Attribute::Handlers;
+ use Tie::Cycle;
- sub UNIVERSAL::Cycle : ATTR(SCALAR) {
- my ($package, $symbol, $referent, $attr, $data, $phase) = @_;
- $data = [ $data ] unless ref $data eq 'ARRAY';
- tie $$referent, 'Tie::Cycle', $data;
- }
+ sub UNIVERSAL::Cycle : ATTR(SCALAR) {
+ my ($package, $symbol, $referent, $attr, $data, $phase) = @_;
+ $data = [ $data ] unless ref $data eq 'ARRAY';
+ tie $$referent, 'Tie::Cycle', $data;
+ }
- # and thereafter...
+ # and thereafter...
- package main;
+ package main;
- my $next : Cycle('A'..'Z'); # $next is now a tied variable
+ my $next : Cycle('A'..'Z'); # $next is now a tied variable
- while (<>) {
- print $next;
- }
+ while (<>) {
+ print $next;
+ }
Note that, because the C<Cycle> attribute receives its arguments in the
C<$data> variable, if the attribute is given a list of arguments, C<$data>
@@ -604,16 +605,16 @@
be passed as an array reference, this means that we need to wrap
non-array-reference arguments in an array constructor:
- $data = [ $data ] unless ref $data eq 'ARRAY';
+ $data = [ $data ] unless ref $data eq 'ARRAY';
Typically, however, things are the other way around: the tieable class expects
its arguments as a flattened list, so the attribute looks like:
- sub UNIVERSAL::Cycle : ATTR(SCALAR) {
- my ($package, $symbol, $referent, $attr, $data, $phase) = @_;
- my @data = ref $data eq 'ARRAY' ? @$data : $data;
- tie $$referent, 'Tie::Whatever', @data;
- }
+ sub UNIVERSAL::Cycle : ATTR(SCALAR) {
+ my ($package, $symbol, $referent, $attr, $data, $phase) = @_;
+ my @data = ref $data eq 'ARRAY' ? @$data : $data;
+ tie $$referent, 'Tie::Whatever', @data;
+ }
This software pattern is so widely applicable that Attribute::Handlers
@@ -621,16 +622,17 @@
C<use Attribute::Handlers> statement. So, the cycling example,
could also be written:
- use Attribute::Handlers autotie => { Cycle => 'Tie::Cycle' };
+ use Attribute::Handlers autotie => { Cycle => 'Tie::Cycle' };
- # and thereafter...
+ # and thereafter...
- package main;
+ package main;
- my $next : Cycle(['A'..'Z']); # $next is now a tied variable
+ my $next : Cycle(['A'..'Z']); # $next is now a tied variable
- while (<>) {
- print $next;
+ while (<>) {
+ print $next;
+ }
Note that we now have to pass the cycling values as an array reference,
since the C<autotie> mechanism passes C<tie> a list of arguments as a list
@@ -646,19 +648,19 @@
arguments to the module's C<import> subroutine, by appending them to the
class name. For example:
- use Attribute::Handlers
- autotie => { Dir => 'Tie::Dir qw(DIR_UNLINK)' };
+ use Attribute::Handlers
+ autotie => { Dir => 'Tie::Dir qw(DIR_UNLINK)' };
If the attribute name is unqualified, the attribute is installed in the
current package. Otherwise it is installed in the qualifier's package:
- package Here;
+ package Here;
- use Attribute::Handlers autotie => {
- Other::Good => Tie::SecureHash, # tie attr installed in Other::
- Bad => Tie::Taxes, # tie attr installed in Here::
- UNIVERSAL::Ugly => Software::Patent # tie attr installed everywhere
- };
+ use Attribute::Handlers autotie => {
+ Other::Good => Tie::SecureHash, # tie attr installed in Other::
+ Bad => Tie::Taxes, # tie attr installed in Here::
+ UNIVERSAL::Ugly => Software::Patent # tie attr installed everywhere
+ };
Autoties are most commonly used in the module to which they actually tie,
and need to export their attributes to any module that calls them. To
@@ -665,9 +667,10 @@
facilitate this, Attribute::Handlers recognizes a special "pseudo-class" --
C<__CALLER__>, which may be specified as the qualifier of an attribute:
- package Tie::Me::Kangaroo:Down::Sport;
+ package Tie::Me::Kangaroo:Down::Sport;
- use Attribute::Handlers autotie => { '__CALLER__::Roo' => __PACKAGE__ };
+ use Attribute::Handlers autotie =>
+ { '__CALLER__::Roo' => __PACKAGE__ };
This causes Attribute::Handlers to define the C<Roo> attribute in the package
that imports the Tie::Me::Kangaroo:Down::Sport module.
@@ -682,166 +685,166 @@
The C<autotie> mechanism supports this too. The following code:
- use Attribute::Handlers autotieref => { Selfish => Tie::Selfish };
- my $var : Selfish(@args);
+ use Attribute::Handlers autotieref => { Selfish => Tie::Selfish };
+ my $var : Selfish(@args);
has the same effect as:
- tie my $var, 'Tie::Selfish', @args;
+ tie my $var, 'Tie::Selfish', @args;
But when C<"autotieref"> is used instead of C<"autotie">:
- use Attribute::Handlers autotieref => { Selfish => Tie::Selfish };
- my $var : Selfish(@args);
+ use Attribute::Handlers autotieref => { Selfish => Tie::Selfish };
+ my $var : Selfish(@args);
the effect is to pass the C<tie> call an extra reference to the variable
being tied:
- tie my $var, 'Tie::Selfish', \$var, @args;
+ tie my $var, 'Tie::Selfish', \$var, @args;
=head1 EXAMPLES
-If the class shown in L<SYNOPSIS> were placed in the MyClass.pm
+If the class shown in L</SYNOPSIS> were placed in the MyClass.pm
module, then the following code:
- package main;
- use MyClass;
+ package main;
+ use MyClass;
- my MyClass $slr :Good :Bad(1**1-1) :Omni(-vorous);
+ my MyClass $slr :Good :Bad(1**1-1) :Omni(-vorous);
- package SomeOtherClass;
- use base MyClass;
+ package SomeOtherClass;
+ use base MyClass;
- sub tent { 'acle' }
+ sub tent { 'acle' }
- sub fn :Ugly(sister) :Omni('po',tent()) {...}
- my @arr :Good :Omni(s/cie/nt/);
- my %hsh :Good(q/bye/) :Omni(q/bus/);
+ sub fn :Ugly(sister) :Omni('po',tent()) {...}
+ my @arr :Good :Omni(s/cie/nt/);
+ my %hsh :Good(q/bye/) :Omni(q/bus/);
would cause the following handlers to be invoked:
- # my MyClass $slr :Good :Bad(1**1-1) :Omni(-vorous);
+ # my MyClass $slr :Good :Bad(1**1-1) :Omni(-vorous);
- MyClass::Good:ATTR(SCALAR)( 'MyClass', # class
- 'LEXICAL', # no typeglob
- \$slr, # referent
- 'Good', # attr name
- undef # no attr data
- 'CHECK', # compiler phase
- );
+ MyClass::Good:ATTR(SCALAR)( 'MyClass', # class
+ 'LEXICAL', # no typeglob
+ \$slr, # referent
+ 'Good', # attr name
+ undef # no attr data
+ 'CHECK', # compiler phase
+ );
- MyClass::Bad:ATTR(SCALAR)( 'MyClass', # class
- 'LEXICAL', # no typeglob
- \$slr, # referent
- 'Bad', # attr name
- 0 # eval'd attr data
- 'CHECK', # compiler phase
- );
+ MyClass::Bad:ATTR(SCALAR)( 'MyClass', # class
+ 'LEXICAL', # no typeglob
+ \$slr, # referent
+ 'Bad', # attr name
+ 0 # eval'd attr data
+ 'CHECK', # compiler phase
+ );
- MyClass::Omni:ATTR(SCALAR)( 'MyClass', # class
- 'LEXICAL', # no typeglob
- \$slr, # referent
- 'Omni', # attr name
- '-vorous' # eval'd attr data
- 'CHECK', # compiler phase
- );
+ MyClass::Omni:ATTR(SCALAR)( 'MyClass', # class
+ 'LEXICAL', # no typeglob
+ \$slr, # referent
+ 'Omni', # attr name
+ '-vorous' # eval'd attr data
+ 'CHECK', # compiler phase
+ );
- # sub fn :Ugly(sister) :Omni('po',tent()) {...}
+ # sub fn :Ugly(sister) :Omni('po',tent()) {...}
- MyClass::UGLY:ATTR(CODE)( 'SomeOtherClass', # class
- \*SomeOtherClass::fn, # typeglob
- \&SomeOtherClass::fn, # referent
- 'Ugly', # attr name
- 'sister' # eval'd attr data
- 'CHECK', # compiler phase
- );
+ MyClass::UGLY:ATTR(CODE)( 'SomeOtherClass', # class
+ \*SomeOtherClass::fn, # typeglob
+ \&SomeOtherClass::fn, # referent
+ 'Ugly', # attr name
+ 'sister' # eval'd attr data
+ 'CHECK', # compiler phase
+ );
- MyClass::Omni:ATTR(CODE)( 'SomeOtherClass', # class
- \*SomeOtherClass::fn, # typeglob
- \&SomeOtherClass::fn, # referent
- 'Omni', # attr name
- ['po','acle'] # eval'd attr data
- 'CHECK', # compiler phase
- );
+ MyClass::Omni:ATTR(CODE)( 'SomeOtherClass', # class
+ \*SomeOtherClass::fn, # typeglob
+ \&SomeOtherClass::fn, # referent
+ 'Omni', # attr name
+ ['po','acle'] # eval'd attr data
+ 'CHECK', # compiler phase
+ );
- # my @arr :Good :Omni(s/cie/nt/);
+ # my @arr :Good :Omni(s/cie/nt/);
- MyClass::Good:ATTR(ARRAY)( 'SomeOtherClass', # class
- 'LEXICAL', # no typeglob
- \@arr, # referent
- 'Good', # attr name
- undef # no attr data
- 'CHECK', # compiler phase
- );
+ MyClass::Good:ATTR(ARRAY)( 'SomeOtherClass', # class
+ 'LEXICAL', # no typeglob
+ \@arr, # referent
+ 'Good', # attr name
+ undef # no attr data
+ 'CHECK', # compiler phase
+ );
- MyClass::Omni:ATTR(ARRAY)( 'SomeOtherClass', # class
- 'LEXICAL', # no typeglob
- \@arr, # referent
- 'Omni', # attr name
- "" # eval'd attr data
- 'CHECK', # compiler phase
- );
+ MyClass::Omni:ATTR(ARRAY)( 'SomeOtherClass', # class
+ 'LEXICAL', # no typeglob
+ \@arr, # referent
+ 'Omni', # attr name
+ "" # eval'd attr data
+ 'CHECK', # compiler phase
+ );
- # my %hsh :Good(q/bye) :Omni(q/bus/);
-
- MyClass::Good:ATTR(HASH)( 'SomeOtherClass', # class
- 'LEXICAL', # no typeglob
- \%hsh, # referent
- 'Good', # attr name
- 'q/bye' # raw attr data
- 'CHECK', # compiler phase
- );
-
- MyClass::Omni:ATTR(HASH)( 'SomeOtherClass', # class
- 'LEXICAL', # no typeglob
- \%hsh, # referent
- 'Omni', # attr name
- 'bus' # eval'd attr data
- 'CHECK', # compiler phase
- );
+ # my %hsh :Good(q/bye) :Omni(q/bus/);
+ MyClass::Good:ATTR(HASH)( 'SomeOtherClass', # class
+ 'LEXICAL', # no typeglob
+ \%hsh, # referent
+ 'Good', # attr name
+ 'q/bye' # raw attr data
+ 'CHECK', # compiler phase
+ );
+ MyClass::Omni:ATTR(HASH)( 'SomeOtherClass', # class
+ 'LEXICAL', # no typeglob
+ \%hsh, # referent
+ 'Omni', # attr name
+ 'bus' # eval'd attr data
+ 'CHECK', # compiler phase
+ );
+
+
Installing handlers into UNIVERSAL, makes them...err..universal.
For example:
- package Descriptions;
- use Attribute::Handlers;
+ package Descriptions;
+ use Attribute::Handlers;
- my %name;
- sub name { return $name{$_[2]}||*{$_[1]}{NAME} }
+ my %name;
+ sub name { return $name{$_[2]}||*{$_[1]}{NAME} }
- sub UNIVERSAL::Name :ATTR {
- $name{$_[2]} = $_[4];
- }
+ sub UNIVERSAL::Name :ATTR {
+ $name{$_[2]} = $_[4];
+ }
- sub UNIVERSAL::Purpose :ATTR {
- print STDERR "Purpose of ", &name, " is $_[4]\n";
- }
+ sub UNIVERSAL::Purpose :ATTR {
+ print STDERR "Purpose of ", &name, " is $_[4]\n";
+ }
- sub UNIVERSAL::Unit :ATTR {
- print STDERR &name, " measured in $_[4]\n";
- }
+ sub UNIVERSAL::Unit :ATTR {
+ print STDERR &name, " measured in $_[4]\n";
+ }
Let's you write:
- use Descriptions;
+ use Descriptions;
- my $capacity : Name(capacity)
- : Purpose(to store max storage capacity for files)
- : Unit(Gb);
+ my $capacity : Name(capacity)
+ : Purpose(to store max storage capacity for files)
+ : Unit(Gb);
- package Other;
+ package Other;
- sub foo : Purpose(to foo all data before barring it) { }
+ sub foo : Purpose(to foo all data before barring it) { }
- # etc.
+ # etc.
=head1 UTILITY FUNCTIONS
@@ -851,7 +854,7 @@
=item findsym
- my $symbol = Attribute::Handlers::findsym($package, $referent);
+ my $symbol = Attribute::Handlers::findsym($package, $referent);
The function looks in the symbol table of C<$package> for the typeglob for
C<$referent>, which is a reference to a variable or subroutine (SCALAR, ARRAY,
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/t/constants.t
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/t/constants.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/t/constants.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/t/constants.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/t/data_convert.t
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/t/data_convert.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/t/data_convert.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/t/data_convert.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/t/linerep.t
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/t/linerep.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/t/linerep.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/t/linerep.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Attribute-Handlers/t/multi.t
===================================================================
--- trunk/contrib/perl/dist/Attribute-Handlers/t/multi.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Attribute-Handlers/t/multi.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Attribute-Handlers/t/multi.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/B-Deparse/Deparse.pm
===================================================================
--- trunk/contrib/perl/dist/B-Deparse/Deparse.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/B-Deparse/Deparse.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -14,29 +14,28 @@
OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL OPf_MOD
OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpCONST_BARE
OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY
- OPpCONST_ARYBASE OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER
+ OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER
OPpSORT_REVERSE
SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG
CVf_METHOD CVf_LVALUE
PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE
- PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED),
- ($] < 5.008004 ? () : 'OPpSORT_INPLACE'),
- ($] < 5.008006 ? () : qw(OPpSORT_DESCEND OPpITER_REVERSED)),
- ($] < 5.008009 ? () : qw(OPpCONST_NOVER OPpPAD_STATE)),
- ($] < 5.009 ? 'PMf_SKIPWHITE' : qw(RXf_SKIPWHITE)),
- ($] < 5.011 ? 'CVf_LOCKED' : 'OPpREVERSE_INPLACE'),
- ($] < 5.013 ? () : 'PMf_NONDESTRUCT');
-$VERSION = "1.04";
+ PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED);
+$VERSION = '1.20';
use strict;
use vars qw/$AUTOLOAD/;
use warnings ();
+require feature;
BEGIN {
+ # List version-specific constants here.
# Easiest way to keep this code portable between version looks to
# be to fake up a dummy constant that will never actually be true.
foreach (qw(OPpSORT_INPLACE OPpSORT_DESCEND OPpITER_REVERSED OPpCONST_NOVER
- OPpPAD_STATE RXf_SKIPWHITE CVf_LOCKED OPpREVERSE_INPLACE
- PMf_NONDESTRUCT)) {
+ OPpPAD_STATE PMf_SKIPWHITE RXf_SKIPWHITE
+ RXf_PMf_CHARSET RXf_PMf_KEEPCOPY
+ CVf_LOCKED OPpREVERSE_INPLACE OPpSUBSTR_REPL_FIRST
+ PMf_NONDESTRUCT OPpCONST_ARYBASE OPpEVAL_BYTES)) {
+ eval { import B $_ };
no strict 'refs';
*{$_} = sub () {0} unless *{$_}{CODE};
}
@@ -47,10 +46,10 @@
# - fixed reference constants (\"str")
# - handle empty programs gracefully
# - handle infinite loops (for (;;) {}, while (1) {})
-# - differentiate between `for my $x ...' and `my $x; for $x ...'
+# - differentiate between 'for my $x ...' and 'my $x; for $x ...'
# - various minor cleanups
# - moved globals into an object
-# - added `-u', like B::C
+# - added '-u', like B::C
# - package declarations using cop_stash
# - subs, formats and code sorted by cop_seq
# Changes between 0.51 and 0.52:
@@ -58,10 +57,10 @@
# - added documentation
# Changes between 0.52 and 0.53:
# - many changes adding precedence contexts and associativity
-# - added `-p' and `-s' output style options
+# - added '-p' and '-s' output style options
# - various other minor fixes
# Changes between 0.53 and 0.54:
-# - added support for new `for (1..100)' optimization,
+# - added support for new 'for (1..100)' optimization,
# thanks to Gisle Aas
# Changes between 0.54 and 0.55:
# - added support for new qr// construct
@@ -70,16 +69,16 @@
# - tested on base/*.t, cmd/*.t, comp/*.t, io/*.t
# - fixed $# on non-lexicals broken in last big rewrite
# - added temporary fix for change in opcode of OP_STRINGIFY
-# - fixed problem in 0.54's for() patch in `for (@ary)'
+# - fixed problem in 0.54's for() patch in 'for (@ary)'
# - fixed precedence in conditional of ?:
-# - tweaked list paren elimination in `my($x) = @_'
+# - tweaked list paren elimination in 'my($x) = @_'
# - made continue-block detection trickier wrt. null ops
# - fixed various prototype problems in pp_entersub
# - added support for sub prototypes that never get GVs
# - added unquoting for special filehandle first arg in truncate
-# - print doubled rv2gv (a bug) as `*{*GV}' instead of illegal `**GV'
+# - print doubled rv2gv (a bug) as '*{*GV}' instead of illegal '**GV'
# - added semicolons at the ends of blocks
-# - added -l `#line' declaration option -- fixes cmd/subval.t 27,28
+# - added -l '#line' declaration option -- fixes cmd/subval.t 27,28
# Changes between 0.56 and 0.561:
# - fixed multiply-declared my var in pp_truncate (thanks to Sarathy)
# - used new B.pm symbolic constants (done by Nick Ing-Simmons)
@@ -92,7 +91,7 @@
# Changes after 0.57:
# - added parens in \&foo (patch by Albert Dvornik)
# Changes between 0.57 and 0.58:
-# - fixed `0' statements that weren't being printed
+# - fixed '0' statements that weren't being printed
# - added methods for use from other programs
# (based on patches from James Duncan and Hugo van der Sanden)
# - added -si and -sT to control indenting (also based on a patch from Hugo)
@@ -104,7 +103,7 @@
# Changes between 0.58 and 0.59
# - added support for Chip's OP_METHOD_NAMED
# - added support for Ilya's OPpTARGET_MY optimization
-# - elided arrows before `()' subscripts when possible
+# - elided arrows before '()' subscripts when possible
# Changes between 0.59 and 0.60
# - support for method attributes was added
# - some warnings fixed
@@ -154,7 +153,7 @@
# - configurable syntax highlighting: ANSI color, HTML, TeX, etc.
# - more style options: brace style, hex vs. octal, quotes, ...
# - print big ints as hex/octal instead of decimal (heuristic?)
-# - handle `my $x if 0'?
+# - handle 'my $x if 0'?
# - version using op_next instead of op_first/sibling?
# - avoid string copies (pass arrays, one big join?)
# - here-docs?
@@ -220,7 +219,8 @@
# CV for current sub (or main program) being deparsed
#
# curcvlex:
-# Cached hash of lexical variables for curcv: keys are names,
+# Cached hash of lexical variables for curcv: keys are
+# names prefixed with "m" or "o" (representing my/our), and
# each value is an array of pairs, indicating the cop_seq of scopes
# in which a var of that name is valid.
#
@@ -243,7 +243,8 @@
#
# subs_declared
# keys are names of subs for which we've printed declarations.
-# That means we can omit parentheses from the arguments.
+# That means we can omit parentheses from the arguments. It also means we
+# need to put CORE:: on core functions of the same name.
#
# subs_deparsed
# Keeps track of fully qualified names of all deparsed subs.
@@ -251,7 +252,7 @@
# parens: -p
# linenums: -l
# unquote: -q
-# cuddle: ` ' or `\n', depending on -sC
+# cuddle: ' ' or '\n', depending on -sC
# indent_size: -si
# use_tabs: -sT
# ex_const: -sv
@@ -265,7 +266,7 @@
# they're inside an expression or at statement level, etc. (see
# chart below). When ops with children call deparse on them, they pass
# along their precedence. Fractional values are used to implement
-# associativity (`($x + $y) + $z' => `$x + $y + $y') and related
+# associativity ('($x + $y) + $z' => '$x + $y + $y') and related
# parentheses hacks. The major disadvantage of this scheme is that
# it doesn't know about right sides and left sides, so say if you
# assign a listop to a variable, it can't tell it's allowed to leave
@@ -300,15 +301,125 @@
# 1 statement modifiers
# 0.5 statements, but still print scopes as do { ... }
# 0 statement level
+# -1 format body
# Nonprinting characters with special meaning:
# \cS - steal parens (see maybe_parens_unop)
# \n - newline and indent
# \t - increase indent
-# \b - decrease indent (`outdent')
+# \b - decrease indent ('outdent')
# \f - flush left (no indent)
# \cK - kill following semicolon, if any
+
+
+
+# _pessimise_walk(): recursively walk the optree of a sub,
+# possibly undoing optimisations along the way.
+
+sub _pessimise_walk {
+ my ($self, $startop) = @_;
+
+ return unless $$startop;
+ my ($op, $prevop);
+ for ($op = $startop; $$op; $prevop = $op, $op = $op->sibling) {
+ my $ppname = $op->name;
+
+ # pessimisations start here
+
+ if ($ppname eq "padrange") {
+ # remove PADRANGE:
+ # the original optimisation either (1) changed this:
+ # pushmark -> (various pad and list and null ops) -> the_rest
+ # or (2), for the = @_ case, changed this:
+ # pushmark -> gv[_] -> rv2av -> (pad stuff) -> the_rest
+ # into this:
+ # padrange ----------------------------------------> the_rest
+ # so we just need to convert the padrange back into a
+ # pushmark, and in case (1), set its op_next to op_sibling,
+ # which is the head of the original chain of optimised-away
+ # pad ops, or for (2), set it to sibling->first, which is
+ # the original gv[_].
+
+ $B::overlay->{$$op} = {
+ name => 'pushmark',
+ private => ($op->private & OPpLVAL_INTRO),
+ next => ($op->flags & OPf_SPECIAL)
+ ? $op->sibling->first
+ : $op->sibling,
+ };
+ }
+
+ # pessimisations end here
+
+ if (class($op) eq 'PMOP'
+ && ref($op->pmreplroot)
+ && ${$op->pmreplroot}
+ && $op->pmreplroot->isa( 'B::OP' ))
+ {
+ $self-> _pessimise_walk($op->pmreplroot);
+ }
+
+ if ($op->flags & OPf_KIDS) {
+ $self-> _pessimise_walk($op->first);
+ }
+
+ }
+}
+
+
+# _pessimise_walk_exe(): recursively walk the op_next chain of a sub,
+# possibly undoing optimisations along the way.
+
+sub _pessimise_walk_exe {
+ my ($self, $startop, $visited) = @_;
+
+ return unless $$startop;
+ return if $visited->{$$startop};
+ my ($op, $prevop);
+ for ($op = $startop; $$op; $prevop = $op, $op = $op->next) {
+ last if $visited->{$$op};
+ $visited->{$$op} = 1;
+ my $ppname = $op->name;
+ if ($ppname =~
+ /^((and|d?or)(assign)?|(map|grep)while|range|cond_expr|once)$/
+ # entertry is also a logop, but its op_other invariably points
+ # into the same chain as the main execution path, so we skip it
+ ) {
+ $self->_pessimise_walk_exe($op->other, $visited);
+ }
+ elsif ($ppname eq "subst") {
+ $self->_pessimise_walk_exe($op->pmreplstart, $visited);
+ }
+ elsif ($ppname =~ /^(enter(loop|iter))$/) {
+ # redoop and nextop will already be covered by the main block
+ # of the loop
+ $self->_pessimise_walk_exe($op->lastop, $visited);
+ }
+
+ # pessimisations start here
+ }
+}
+
+# Go through an optree and and "remove" some optimisations by using an
+# overlay to selectively modify or un-null some ops. Deparsing in the
+# absence of those optimisations is then easier.
+#
+# Note that older optimisations are not removed, as Deparse was already
+# written to recognise them before the pessimise/overlay system was added.
+
+sub pessimise {
+ my ($self, $root, $start) = @_;
+
+ # walk tree in root-to-branch order
+ $self->_pessimise_walk($root);
+
+ my %visited;
+ # walk tree in execution order
+ $self->_pessimise_walk_exe($start, \%visited);
+}
+
+
sub null {
my $op = shift;
return class($op) eq "NULL";
@@ -375,6 +486,8 @@
my ($self, $cv) = @_;
my $root = $cv->ROOT;
local @$self{qw'curcv curcvlex'} = ($cv);
+ local $B::overlay = {};
+ $self->pessimise($root, $cv->START);
#require B::Debug;
#B::walkoptree($cv->ROOT, "debug");
my $lineseq = $root->first;
@@ -471,7 +584,7 @@
}
sub stash_subs {
- my ($self, $pack) = @_;
+ my ($self, $pack, $seen) = @_;
my (@ret, $stash);
if (!defined $pack) {
$pack = '';
@@ -482,6 +595,10 @@
no strict 'refs';
$stash = \%{"main::$pack"};
}
+ return
+ if ($seen ||= {})->{
+ $INC{"overload.pm"} ? overload::StrVal($stash) : $stash
+ }++;
my %stash = svref_2object($stash)->ARRAY;
while (my ($key, $val) = each %stash) {
my $class = class($val);
@@ -520,9 +637,7 @@
$self->todo($cv, 1);
}
if (class($val->HV) ne "SPECIAL" && $key =~ /::$/) {
- $self->stash_subs($pack . $key)
- unless $pack eq '' && $key eq 'main::';
- # avoid infinite recursion
+ $self->stash_subs($pack . $key, $seen);
}
}
}
@@ -676,8 +791,12 @@
print $self->print_protos;
@{$self->{'subs_todo'}} =
sort {$a->[0] <=> $b->[0]} @{$self->{'subs_todo'}};
- print $self->indent($self->deparse_root(main_root)), "\n"
- unless null main_root;
+ my $root = main_root;
+ local $B::overlay = {};
+ unless (null $root) {
+ $self->pessimise($root, main_start);
+ print $self->indent($self->deparse_root($root)), "\n";
+ }
my @text;
while (scalar(@{$self->{'subs_todo'}})) {
push @text, $self->next_todo;
@@ -706,6 +825,11 @@
return $self->indent($self->deparse_sub(svref_2object($sub)));
}
+my %strict_bits = do {
+ local $^H;
+ map +($_ => strict::bits($_)), qw/refs subs vars/
+};
+
sub ambient_pragmas {
my $self = shift;
my ($arybase, $hint_bits, $warning_bits, $hinthash) = (0, 0);
@@ -718,7 +842,7 @@
require strict;
if ($val eq 'none') {
- $hint_bits &= ~strict::bits(qw/refs subs vars/);
+ $hint_bits &= $strict_bits{$_} for qw/refs subs vars/;
next();
}
@@ -732,11 +856,15 @@
else {
@names = split' ', $val;
}
- $hint_bits |= strict::bits(@names);
+ $hint_bits |= $strict_bits{$_} for @names;
}
elsif ($name eq '$[') {
- $arybase = $val;
+ if (OPpCONST_ARYBASE) {
+ $arybase = $val;
+ } else {
+ croak "\$[ can't be non-zero on this perl" unless $val == 0;
+ }
}
elsif ($name eq 'integer'
@@ -876,14 +1004,17 @@
local(@$self{qw'curstash warnings hints hinthash'})
= @$self{qw'curstash warnings hints hinthash'};
my $body;
- if (not null $cv->ROOT) {
- my $lineseq = $cv->ROOT->first;
+ my $root = $cv->ROOT;
+ local $B::overlay = {};
+ if (not null $root) {
+ $self->pessimise($root, $cv->START);
+ my $lineseq = $root->first;
if ($lineseq->name eq "lineseq") {
my @ops;
for(my$o=$lineseq->first; $$o; $o=$o->sibling) {
push @ops, $o;
}
- $body = $self->lineseq(undef, @ops).";";
+ $body = $self->lineseq(undef, 0, @ops).";";
my $scope_en = $self->find_scope_en($lineseq);
if (defined $scope_en) {
my $subs = join"", $self->seq_subs($scope_en);
@@ -891,7 +1022,7 @@
}
}
else {
- $body = $self->deparse($cv->ROOT->first, 0);
+ $body = $self->deparse($root->first, 0);
}
}
else {
@@ -916,6 +1047,8 @@
local(@$self{qw'curstash warnings hints hinthash'})
= @$self{qw'curstash warnings hints hinthash'};
my $op = $form->ROOT;
+ local $B::overlay = {};
+ $self->pessimise($op, $form->START);
my $kid;
return "\f." if $op->first->name eq 'stub'
|| $op->first->name eq 'nextstate';
@@ -927,7 +1060,8 @@
push @text, "\f".$self->const_sv($kid)->PV;
$kid = $kid->sibling;
for (; not null $kid; $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 0);
+ push @exprs, $self->deparse($kid, -1);
+ $exprs[-1] =~ s/;\z//;
}
push @text, "\f".join(", ", @exprs)."\n" if @exprs;
$op = $op->sibling;
@@ -948,7 +1082,7 @@
return $name eq "nextstate" || $name eq "dbstate" || $name eq "setstate";
}
-sub is_miniwhile { # check for one-line loop (`foo() while $y--')
+sub is_miniwhile { # check for one-line loop ('foo() while $y--')
my $op = shift;
return (!null($op) and null($op->sibling)
and $op->name eq "null" and class($op) eq "UNOP"
@@ -1008,7 +1142,7 @@
}
}
-# same as above, but get around the `if it looks like a function' rule
+# same as above, but get around the 'if it looks like a function' rule
sub maybe_parens_unop {
my $self = shift;
my($name, $kid, $cx) = @_;
@@ -1017,18 +1151,19 @@
if ($name eq "umask" && $kid =~ /^\d+$/) {
$kid = sprintf("%#o", $kid);
}
- return "$name($kid)";
+ return $self->keyword($name) . "($kid)";
} else {
$kid = $self->deparse($kid, 16);
if ($name eq "umask" && $kid =~ /^\d+$/) {
$kid = sprintf("%#o", $kid);
}
+ $name = $self->keyword($name);
if (substr($kid, 0, 1) eq "\cS") {
# use kid's parens
return $name . substr($kid, 1);
} elsif (substr($kid, 0, 1) eq "(") {
# avoid looks-like-a-function trap with extra parens
- # (`+' can lead to ambiguities)
+ # ('+' can lead to ambiguities)
return "$name(" . $kid . ")";
} else {
return "$name $kid";
@@ -1093,7 +1228,9 @@
my $self = shift;
my($op, $cx, $text) = @_;
if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{$$op}) {
- my $my = $op->private & OPpPAD_STATE ? "state" : "my";
+ my $my = $op->private & OPpPAD_STATE
+ ? $self->keyword("state")
+ : "my";
if (want_scalar($op)) {
return "$my $text";
} else {
@@ -1124,7 +1261,7 @@
# any subroutine declarations to the deparsed ops, otherwise we
# append appropriate declarations.
sub lineseq {
- my($self, $root, @ops) = @_;
+ my($self, $root, $cx, @ops) = @_;
my($expr, @exprs);
my $out_cop = $self->{'curcop'};
@@ -1145,12 +1282,13 @@
$self->walk_lineseq($root, \@ops,
sub { push @exprs, $_[0]} );
- my $body = join(";\n", grep {length} @exprs);
+ my $sep = $cx ? '; ' : ";\n";
+ my $body = join($sep, grep {length} @exprs);
my $subs = "";
if (defined $root && defined $limit_seq && !$self->{'in_format'}) {
$subs = join "\n", $self->seq_subs($limit_seq);
}
- return join(";\n", grep {length} $body, $subs);
+ return join($sep, grep {length} $body, $subs);
}
sub scopeop {
@@ -1185,9 +1323,10 @@
push @kids, $kid;
}
if ($cx > 0) { # inside an expression, (a do {} while for lineseq)
- return "do {\n\t" . $self->lineseq($op, @kids) . "\n\b}";
+ my $body = $self->lineseq($op, 0, @kids);
+ return is_lexical_subs(@kids) ? $body : "do {\n\t$body\n\b}";
} else {
- my $lineseq = $self->lineseq($op, @kids);
+ my $lineseq = $self->lineseq($op, $cx, @kids);
return (length ($lineseq) ? "$lineseq;" : "");
}
}
@@ -1247,22 +1386,24 @@
sub gv_name {
my $self = shift;
my $gv = shift;
+ my $raw = shift;
Carp::confess() unless ref($gv) eq "B::GV";
my $stash = $gv->STASH->NAME;
- my $name = $gv->SAFENAME;
+ my $name = $raw ? $gv->NAME : $gv->SAFENAME;
if ($stash eq 'main' && $name =~ /^::/) {
$stash = '::';
}
- elsif (($stash eq 'main' && $globalnames{$name})
+ elsif (($stash eq 'main'
+ && ($globalnames{$name} || $name =~ /^[^A-Za-z_:]/))
or ($stash eq $self->{'curstash'} && !$globalnames{$name}
&& ($stash eq 'main' || $name !~ /::/))
- or $name =~ /^[^A-Za-z_:]/)
+ )
{
$stash = "";
} else {
$stash = $stash . "::";
}
- if ($name =~ /^(\^..|{)/) {
+ if (!$raw and $name =~ /^(\^..|{)/) {
$name = "{$name}"; # ${^WARNING_BITS}, etc and ${
}
return $stash . $name;
@@ -1269,10 +1410,11 @@
}
# Return the name to use for a stash variable.
-# If a lexical with the same name is in scope, it may need to be
+# If a lexical with the same name is in scope, or
+# if strictures are enabled, it may need to be
# fully-qualified.
sub stash_variable {
- my ($self, $prefix, $name) = @_;
+ my ($self, $prefix, $name, $cx) = @_;
return "$prefix$name" if $name =~ /::/;
@@ -1281,13 +1423,55 @@
return "$prefix$name";
}
+ if ($name =~ /^[^\w+-]$/) {
+ if (defined $cx && $cx == 26) {
+ if ($prefix eq '@') {
+ return "$prefix\{$name}";
+ }
+ elsif ($name eq '#') { return '${#}' } # "${#}a" vs "$#a"
+ }
+ if ($prefix eq '$#') {
+ return "\$#{$name}";
+ }
+ }
+
+ return $prefix . $self->maybe_qualify($prefix, $name);
+}
+
+# Return just the name, without the prefix. It may be returned as a quoted
+# string. The second return value is a boolean indicating that.
+sub stash_variable_name {
+ my($self, $prefix, $gv) = @_;
+ my $name = $self->gv_name($gv, 1);
+ $name = $self->maybe_qualify($prefix,$name);
+ if ($name =~ /^(?:\S|(?!\d)[\ca-\cz]?(?:\w|::)*|\d+)\z/) {
+ $name =~ s/^([\ca-\cz])/'^'.($1|'@')/e;
+ $name =~ /^(\^..|{)/ and $name = "{$name}";
+ return $name, 0; # not quoted
+ }
+ else {
+ single_delim("q", "'", $name), 1;
+ }
+}
+
+sub maybe_qualify {
+ my ($self,$prefix,$name) = @_;
my $v = ($prefix eq '$#' ? '@' : $prefix) . $name;
- return $prefix .$self->{'curstash'}.'::'. $name if $self->lex_in_scope($v);
- return "$prefix$name";
+ return $name if !$prefix || $name =~ /::/;
+ return $self->{'curstash'}.'::'. $name
+ if
+ $name =~ /^(?!\d)\w/ # alphabetic
+ && $v !~ /^\$[ab]\z/ # not $a or $b
+ && !$globalnames{$name} # not a global name
+ && $self->{hints} & $strict_bits{vars} # strict vars
+ && !$self->lex_in_scope($v,1) # no "our"
+ or $self->lex_in_scope($v); # conflicts with "my" variable
+ return $name;
}
sub lex_in_scope {
- my ($self, $name) = @_;
+ my ($self, $name, $our) = @_;
+ substr $name, 0, 0, = $our ? 'o' : 'm'; # our/my
$self->populate_curcvlex() if !defined $self->{'curcvlex'};
return 0 if !defined($self->{'curcop'});
@@ -1311,7 +1495,6 @@
for (my $i=0; $i<@ns; ++$i) {
next if class($ns[$i]) eq "SPECIAL";
- next if $ns[$i]->FLAGS & SVpad_OUR; # Skip "our" vars
if (class($ns[$i]) eq "PV") {
# Probably that pesky lexical @_
next;
@@ -1322,7 +1505,9 @@
? (0, 999999)
: ($ns[$i]->COP_SEQ_RANGE_LOW, $ns[$i]->COP_SEQ_RANGE_HIGH);
- push @{$self->{'curcvlex'}{$name}}, [$seq_st, $seq_en];
+ push @{$self->{'curcvlex'}{
+ ($ns[$i]->FLAGS & SVpad_OUR ? 'o' : 'm') . $name
+ }}, [$seq_st, $seq_en];
}
}
}
@@ -1388,6 +1573,14 @@
return @text;
}
+sub _features_from_bundle {
+ my ($hints, $hh) = @_;
+ foreach (@{$feature::feature_bundle{@feature::hint_bundles[$hints >> $feature::hint_shift]}}) {
+ $hh->{$feature::feature{$_}} = 1;
+ }
+ return $hh;
+}
+
# Notice how subs and formats are inserted between statements here;
# also $[ assignments and pragmas.
sub pp_nextstate {
@@ -1402,7 +1595,7 @@
$self->{'curstash'} = $stash;
}
- if ($self->{'arybase'} != $op->arybase) {
+ if (OPpCONST_ARYBASE && $self->{'arybase'} != $op->arybase) {
push @text, '$[ = '. $op->arybase .";\n";
$self->{'arybase'} = $op->arybase;
}
@@ -1429,19 +1622,49 @@
}
my $hints = $] < 5.008009 ? $op->private : $op->hints;
+ my $old_hints = $self->{'hints'};
if ($self->{'hints'} != $hints) {
push @text, declare_hints($self->{'hints'}, $hints);
$self->{'hints'} = $hints;
}
- # hack to check that the hint hash hasn't changed
- if ($] > 5.009 &&
- "@{[sort %{$self->{'hinthash'} || {}}]}"
- ne "@{[sort %{$op->hints_hash->HASH || {}}]}") {
- push @text, declare_hinthash($self->{'hinthash'}, $op->hints_hash->HASH, $self->{indent_size});
- $self->{'hinthash'} = $op->hints_hash->HASH;
+ my $newhh;
+ if ($] > 5.009) {
+ $newhh = $op->hints_hash->HASH;
}
+ if ($] >= 5.015006) {
+ # feature bundle hints
+ my $from = $old_hints & $feature::hint_mask;
+ my $to = $ hints & $feature::hint_mask;
+ if ($from != $to) {
+ if ($to == $feature::hint_mask) {
+ if ($self->{'hinthash'}) {
+ delete $self->{'hinthash'}{$_}
+ for grep /^feature_/, keys %{$self->{'hinthash'}};
+ }
+ else { $self->{'hinthash'} = {} }
+ $self->{'hinthash'}
+ = _features_from_bundle($from, $self->{'hinthash'});
+ }
+ else {
+ my $bundle =
+ $feature::hint_bundles[$to >> $feature::hint_shift];
+ $bundle =~ s/(\d[13579])\z/$1+1/e; # 5.11 => 5.12
+ push @text, "no feature;\n",
+ "use feature ':$bundle';\n";
+ }
+ }
+ }
+
+ if ($] > 5.009) {
+ push @text, declare_hinthash(
+ $self->{'hinthash'}, $newhh,
+ $self->{indent_size}, $self->{hints},
+ );
+ $self->{'hinthash'} = $newhh;
+ }
+
# This should go after of any branches that add statements, to
# increase the chances that it refers to the same line it did in
# the original program.
@@ -1486,32 +1709,77 @@
'open<' => 1,
'open>' => 1,
':' => 1,
+ 'strict/refs' => 1,
+ 'strict/subs' => 1,
+ 'strict/vars' => 1,
);
+my %rev_feature;
+
sub declare_hinthash {
- my ($from, $to, $indent) = @_;
+ my ($from, $to, $indent, $hints) = @_;
+ my $doing_features =
+ ($hints & $feature::hint_mask) == $feature::hint_mask;
my @decls;
- for my $key (keys %$to) {
+ my @features;
+ my @unfeatures; # bugs?
+ for my $key (sort keys %$to) {
next if $ignored_hints{$key};
- if (!defined $from->{$key} or $from->{$key} ne $to->{$key}) {
- push @decls, qq(\$^H{'$key'} = q($to->{$key}););
+ my $is_feature = $key =~ /^feature_/ && $^V ge 5.15.6;
+ next if $is_feature and not $doing_features;
+ if (!exists $from->{$key} or $from->{$key} ne $to->{$key}) {
+ push(@features, $key), next if $is_feature;
+ push @decls,
+ qq(\$^H{) . single_delim("q", "'", $key) . qq(} = )
+ . (
+ defined $to->{$key}
+ ? single_delim("q", "'", $to->{$key})
+ : 'undef'
+ )
+ . qq(;);
}
}
- for my $key (keys %$from) {
+ for my $key (sort keys %$from) {
next if $ignored_hints{$key};
+ my $is_feature = $key =~ /^feature_/ && $^V ge 5.15.6;
+ next if $is_feature and not $doing_features;
if (!exists $to->{$key}) {
+ push(@unfeatures, $key), next if $is_feature;
push @decls, qq(delete \$^H{'$key'};);
}
}
- @decls or return '';
- return join("\n" . (" " x $indent), "BEGIN {", @decls) . "\n}\n";
+ my @ret;
+ if (@features || @unfeatures) {
+ if (!%rev_feature) { %rev_feature = reverse %feature::feature }
+ }
+ if (@features) {
+ push @ret, "use feature "
+ . join(", ", map "'$rev_feature{$_}'", @features) . ";\n";
+ }
+ if (@unfeatures) {
+ push @ret, "no feature "
+ . join(", ", map "'$rev_feature{$_}'", @unfeatures)
+ . ";\n";
+ }
+ @decls and
+ push @ret,
+ join("\n" . (" " x $indent), "BEGIN {", @decls) . "\n}\n";
+ return @ret;
}
sub hint_pragmas {
my ($bits) = @_;
- my @pragmas;
+ my (@pragmas, @strict);
push @pragmas, "integer" if $bits & 0x1;
- push @pragmas, "strict 'refs'" if $bits & 0x2;
+ for (sort keys %strict_bits) {
+ push @strict, "'$_'" if $bits & $strict_bits{$_};
+ }
+ if (@strict == keys %strict_bits) {
+ push @pragmas, "strict";
+ }
+ elsif (@strict) {
+ push @pragmas, "strict " . join ', ', @strict;
+ }
push @pragmas, "bytes" if $bits & 0x8;
return @pragmas;
}
@@ -1521,10 +1789,63 @@
sub pp_unstack { return "" } # see also leaveloop
+my %feature_keywords = (
+ # keyword => 'feature',
+ state => 'state',
+ say => 'say',
+ given => 'switch',
+ when => 'switch',
+ default => 'switch',
+ break => 'switch',
+ evalbytes=>'evalbytes',
+ __SUB__ => '__SUB__',
+ fc => 'fc',
+);
+
+# keywords that are strong and also have a prototype
+#
+my %strong_proto_keywords = map { $_ => 1 } qw(
+ glob
+ pos
+ prototype
+ scalar
+ study
+ undef
+);
+
+sub keyword {
+ my $self = shift;
+ my $name = shift;
+ return $name if $name =~ /^CORE::/; # just in case
+ if (exists $feature_keywords{$name}) {
+ my $hh;
+ my $hints = $self->{hints} & $feature::hint_mask;
+ if ($hints && $hints != $feature::hint_mask) {
+ $hh = _features_from_bundle($hints);
+ }
+ elsif ($hints) { $hh = $self->{'hinthash'} }
+ return "CORE::$name"
+ if !$hh
+ || !$hh->{"feature_$feature_keywords{$name}"}
+ }
+ if ($strong_proto_keywords{$name}
+ || ($name !~ /^(?:chom?p|do|exec|glob|s(?:elect|ystem))\z/
+ && !defined eval{prototype "CORE::$name"})
+ ) { return $name }
+ if (
+ exists $self->{subs_declared}{$name}
+ or
+ exists &{"$self->{curstash}::$name"}
+ ) {
+ return "CORE::$name"
+ }
+ return $name;
+}
+
sub baseop {
my $self = shift;
my($op, $cx, $name) = @_;
- return $name;
+ return $self->keyword($name);
}
sub pp_stub {
@@ -1569,7 +1890,13 @@
my($op, $cx, $name, $prec, $flags) = (@_, 0);
my $kid = $op->first;
$kid = $self->deparse($kid, $prec);
- return $self->maybe_parens(($flags & POSTFIX) ? "$kid$name" : "$name$kid",
+ return $self->maybe_parens(($flags & POSTFIX)
+ ? "$kid$name"
+ # avoid confusion with filetests
+ : $name eq '-'
+ && $kid =~ /^[a-zA-Z](?!\w)/
+ ? "$name($kid)"
+ : "$name$kid",
$cx, $prec);
}
@@ -1600,7 +1927,7 @@
my $self = shift;
my($op, $cx) = @_;
if ($cx <= 4) {
- $self->pfixop($op, $cx, "not ", 4);
+ $self->listop($op, $cx, "not", $op->first);
} else {
$self->pfixop($op, $cx, "!", 21);
}
@@ -1608,7 +1935,7 @@
sub unop {
my $self = shift;
- my($op, $cx, $name) = @_;
+ my($op, $cx, $name, $nollafr) = @_;
my $kid;
if ($op->flags & OPf_KIDS) {
$kid = $op->first;
@@ -1624,9 +1951,18 @@
$kid = $kid->first;
}
+ if ($nollafr) {
+ ($kid = $self->deparse($kid, 16)) =~ s/^\cS//;
+ return $self->maybe_parens(
+ $self->keyword($name) . " $kid", $cx, 16
+ );
+ }
return $self->maybe_parens_unop($name, $kid, $cx);
} else {
- return $name . ($op->flags & OPf_SPECIAL ? "()" : "");
+ return $self->maybe_parens(
+ $self->keyword($name) . ($op->flags & OPf_SPECIAL ? "()" : ""),
+ $cx, 16,
+ );
}
}
@@ -1659,6 +1995,7 @@
sub pp_each { unop(@_, "each") }
sub pp_values { unop(@_, "values") }
sub pp_keys { unop(@_, "keys") }
+{ no strict 'refs'; *{"pp_r$_"} = *{"pp_$_"} for qw< keys each values >; }
sub pp_boolkeys {
# no name because its an optimisation op that has no keyword
unop(@_,"");
@@ -1700,8 +2037,17 @@
sub pp_alarm { unop(@_, "alarm") }
sub pp_sleep { maybe_targmy(@_, \&unop, "sleep") }
-sub pp_dofile { unop(@_, "do") }
-sub pp_entereval { unop(@_, "eval") }
+sub pp_dofile {
+ my $code = unop(@_, "do", 1); # llafr does not apply
+ if ($code =~ s/^((?:CORE::)?do) \{/$1({/) { $code .= ')' }
+ $code;
+}
+sub pp_entereval {
+ unop(
+ @_,
+ $_[1]->private & OPpEVAL_BYTES ? $_[0]->keyword('evalbytes') : "eval"
+ )
+}
sub pp_ghbyname { unop(@_, "gethostbyname") }
sub pp_gnbyname { unop(@_, "getnetbyname") }
@@ -1718,11 +2064,7 @@
sub pp_lock { unop(@_, "lock") }
sub pp_continue { unop(@_, "continue"); }
-sub pp_break {
- my ($self, $op) = @_;
- return "" if $op->flags & OPf_SPECIAL;
- unop(@_, "break");
-}
+sub pp_break { unop(@_, "break"); }
sub givwhen {
my $self = shift;
@@ -1731,7 +2073,7 @@
my $enterop = $op->first;
my ($head, $block);
if ($enterop->flags & OPf_SPECIAL) {
- $head = "default";
+ $head = $self->keyword("default");
$block = $self->deparse($enterop->first, 0);
}
else {
@@ -1746,8 +2088,8 @@
"\b}\cK";
}
-sub pp_leavegiven { givwhen(@_, "given"); }
-sub pp_leavewhen { givwhen(@_, "when"); }
+sub pp_leavegiven { givwhen(@_, $_[0]->keyword("given")); }
+sub pp_leavewhen { givwhen(@_, $_[0]->keyword("when")); }
sub pp_exists {
my $self = shift;
@@ -1804,9 +2146,16 @@
my $name = $self->const_sv($op->first)->PV;
$name =~ s[/][::]g;
$name =~ s/\.pm//g;
- return "$opname $name";
+ return $self->maybe_parens("$opname $name", $cx, 16);
} else {
- $self->unop($op, $cx, $op->first->private & OPpCONST_NOVER ? "no" : $opname);
+ $self->unop(
+ $op, $cx,
+ $op->first->name eq 'const'
+ && $op->first->private & OPpCONST_NOVER
+ ? "no"
+ : $opname,
+ 1, # llafr does not apply
+ );
}
}
@@ -1931,19 +2280,20 @@
sub pp_uc { dq_unop(@_, "uc") }
sub pp_lc { dq_unop(@_, "lc") }
sub pp_quotemeta { maybe_targmy(@_, \&dq_unop, "quotemeta") }
+sub pp_fc { dq_unop(@_, "fc") }
sub loopex {
my $self = shift;
my ($op, $cx, $name) = @_;
if (class($op) eq "PVOP") {
- return "$name " . $op->pv;
+ $name .= " " . $op->pv;
} elsif (class($op) eq "OP") {
- return $name;
+ # no-op
} elsif (class($op) eq "UNOP") {
- # Note -- loop exits are actually exempt from the
- # looks-like-a-func rule, but a few extra parens won't hurt
- return $self->maybe_parens_unop($name, $op->first, $cx);
+ (my $kid = $self->deparse($op->first, 7)) =~ s/^\cS//;
+ $name .= " $kid";
}
+ return $self->maybe_parens($name, $cx, 7);
}
sub pp_last { loopex(@_, "last") }
@@ -1950,14 +2300,18 @@
sub pp_next { loopex(@_, "next") }
sub pp_redo { loopex(@_, "redo") }
sub pp_goto { loopex(@_, "goto") }
-sub pp_dump { loopex(@_, "dump") }
+sub pp_dump { loopex(@_, "CORE::dump") }
sub ftst {
my $self = shift;
my($op, $cx, $name) = @_;
if (class($op) eq "UNOP") {
- # Genuine `-X' filetests are exempt from the LLAFR, but not
- # l?stat(); for the sake of clarity, give'em all parens
+ # Genuine '-X' filetests are exempt from the LLAFR, but not
+ # l?stat()
+ if ($name =~ /^-/) {
+ (my $kid = $self->deparse($op->first, 16)) =~ s/^\cS//;
+ return $self->maybe_parens("$name $kid", $cx, 16);
+ }
return $self->maybe_parens_unop($name, $op->first, $cx);
} elsif (class($op) =~ /^(SV|PAD)OP$/) {
return $self->maybe_parens_func($name, $self->pp_gv($op, 1), $cx, 16);
@@ -2006,7 +2360,7 @@
my $op = shift;
my $name = $op->name;
if ($name eq "concat" and $op->first->name eq "concat") {
- # avoid spurious `=' -- see comment in pp_concat
+ # avoid spurious '=' -- see comment in pp_concat
return "concat";
}
if ($name eq "null" and class($op) eq "UNOP"
@@ -2023,7 +2377,7 @@
return $name . ($op->flags & OPf_STACKED ? "=" : "");
}
-# Left associative operators, like `+', for which
+# Left associative operators, like '+', for which
# $a + $b + $c is equivalent to ($a + $b) + $c
BEGIN {
@@ -2054,7 +2408,7 @@
}
}
-# Right associative operators, like `=', for which
+# Right associative operators, like '=', for which
# $a = $b = $c is equivalent to $a = ($b = $c)
BEGIN {
@@ -2161,9 +2515,9 @@
}
}
-# `.' is special because concats-of-concats are optimized to save copying
+# '.' is special because concats-of-concats are optimized to save copying
# by making all but the first concat stacked. The effect is as if the
-# programmer had written `($a . $b) .= $c', except legal.
+# programmer had written '($a . $b) .= $c', except legal.
sub pp_concat { maybe_targmy(@_, \&real_concat) }
sub real_concat {
my $self = shift;
@@ -2181,7 +2535,7 @@
return $self->maybe_parens("$left .$eq $right", $cx, $prec);
}
-# `x' is weird when the left arg is a list
+# 'x' is weird when the left arg is a list
sub pp_repeat {
my $self = shift;
my($op, $cx) = @_;
@@ -2277,20 +2631,45 @@
sub pp_orassign { logassignop(@_, "||=") }
sub pp_dorassign { logassignop(@_, "//=") }
+sub rv2gv_or_string {
+ my($self,$op) = @_;
+ if ($op->name eq "gv") { # could be open("open") or open("###")
+ my($name,$quoted) =
+ $self->stash_variable_name("", $self->gv_or_padgv($op));
+ $quoted ? $name : "*$name";
+ }
+ else {
+ $self->deparse($op, 6);
+ }
+}
+
sub listop {
my $self = shift;
- my($op, $cx, $name) = @_;
+ my($op, $cx, $name, $kid, $nollafr) = @_;
my(@exprs);
my $parens = ($cx >= 5) || $self->{'parens'};
- my $kid = $op->first->sibling;
- return $name if null $kid;
+ $kid ||= $op->first->sibling;
+ # If there are no arguments, add final parentheses (or parenthesize the
+ # whole thing if the llafr does not apply) to account for cases like
+ # (return)+1 or setpgrp()+1. When the llafr does not apply, we use a
+ # precedence of 6 (< comma), as "return, 1" does not need parentheses.
+ if (null $kid) {
+ return $nollafr
+ ? $self->maybe_parens($self->keyword($name), $cx, 7)
+ : $self->keyword($name) . '()' x (7 < $cx);
+ }
my $first;
$name = "socketpair" if $name eq "sockpair";
+ my $fullname = $self->keyword($name);
my $proto = prototype("CORE::$name");
- if (defined $proto
- && $proto =~ /^;?\*/
- && $kid->name eq "rv2gv") {
- $first = $self->deparse($kid->first, 6);
+ if (
+ ( (defined $proto && $proto =~ /^;?\*/)
+ || $name eq 'select' # select(F) doesn't have a proto
+ )
+ && $kid->name eq "rv2gv"
+ && !($kid->private & OPpLVAL_INTRO)
+ ) {
+ $first = $self->rv2gv_or_string($kid->first);
}
else {
$first = $self->deparse($kid, 6);
@@ -2298,11 +2677,13 @@
if ($name eq "chmod" && $first =~ /^\d+$/) {
$first = sprintf("%#o", $first);
}
- $first = "+$first" if not $parens and substr($first, 0, 1) eq "(";
+ $first = "+$first"
+ if not $parens and not $nollafr and substr($first, 0, 1) eq "(";
push @exprs, $first;
$kid = $kid->sibling;
- if (defined $proto && $proto =~ /^\*\*/ && $kid->name eq "rv2gv") {
- push @exprs, $self->deparse($kid->first, 6);
+ if (defined $proto && $proto =~ /^\*\*/ && $kid->name eq "rv2gv"
+ && !($kid->private & OPpLVAL_INTRO)) {
+ push @exprs, $first = $self->rv2gv_or_string($kid->first);
$kid = $kid->sibling;
}
for (; !null($kid); $kid = $kid->sibling) {
@@ -2309,18 +2690,39 @@
push @exprs, $self->deparse($kid, 6);
}
if ($name eq "reverse" && ($op->private & OPpREVERSE_INPLACE)) {
- return "$exprs[0] = $name" . ($parens ? "($exprs[0])" : " $exprs[0]");
+ return "$exprs[0] = $fullname"
+ . ($parens ? "($exprs[0])" : " $exprs[0]");
}
- if ($parens) {
- return "$name(" . join(", ", @exprs) . ")";
+ if ($name =~ /^(system|exec)$/
+ && ($op->flags & OPf_STACKED)
+ && @exprs > 1)
+ {
+ # handle the "system prog a1,a2,.." form
+ my $prog = shift @exprs;
+ $exprs[0] = "$prog $exprs[0]";
+ }
+
+ if ($parens && $nollafr) {
+ return "($fullname " . join(", ", @exprs) . ")";
+ } elsif ($parens) {
+ return "$fullname(" . join(", ", @exprs) . ")";
} else {
- return "$name " . join(", ", @exprs);
+ return "$fullname " . join(", ", @exprs);
}
}
sub pp_bless { listop(@_, "bless") }
sub pp_atan2 { maybe_targmy(@_, \&listop, "atan2") }
-sub pp_substr { maybe_local(@_, listop(@_, "substr")) }
+sub pp_substr {
+ my ($self,$op,$cx) = @_;
+ if ($op->private & OPpSUBSTR_REPL_FIRST) {
+ return
+ listop($self, $op, 7, "substr", $op->first->sibling->sibling)
+ . " = "
+ . $self->deparse($op->first->sibling, 7);
+ }
+ maybe_local(@_, listop(@_, "substr"))
+}
sub pp_vec { maybe_local(@_, listop(@_, "vec")) }
sub pp_index { maybe_targmy(@_, \&listop, "index") }
sub pp_rindex { maybe_targmy(@_, \&listop, "rindex") }
@@ -2336,9 +2738,7 @@
sub pp_reverse { listop(@_, "reverse") }
sub pp_warn { listop(@_, "warn") }
sub pp_die { listop(@_, "die") }
-# Actually, return is exempt from the LLAFR (see examples in this very
-# module!), but for consistency's sake, ignore that fact
-sub pp_return { listop(@_, "return") }
+sub pp_return { listop(@_, "return", undef, 1) } # llafr does not apply
sub pp_open { listop(@_, "open") }
sub pp_pipe_op { listop(@_, "pipe") }
sub pp_tie { listop(@_, "tie") }
@@ -2404,13 +2804,13 @@
sub pp_glob {
my $self = shift;
my($op, $cx) = @_;
- if ($op->flags & OPf_SPECIAL) {
- return $self->deparse($op->first->sibling);
- }
my $text = $self->dq($op->first->sibling); # skip pushmark
+ my $keyword =
+ $op->flags & OPf_SPECIAL ? 'glob' : $self->keyword('glob');
if ($text =~ /^\$?(\w|::|\`)+$/ # could look like a readline
- or $text =~ /[<>]/) {
- return 'glob(' . single_delim('qq', '"', $text) . ')';
+ or $keyword =~ /^CORE::/
+ or $text =~ /[<>]/) {
+ return "$keyword(" . single_delim('qq', '"', $text) . ')';
} else {
return '<' . $text . '>';
}
@@ -2435,10 +2835,11 @@
$fh = "+$fh" if not $parens and substr($fh, 0, 1) eq "(";
}
my $len = $self->deparse($kid->sibling, 6);
+ my $name = $self->keyword('truncate');
if ($parens) {
- return "truncate($fh, $len)";
+ return "$name($fh, $len)";
} else {
- return "truncate $fh, $len";
+ return "$name $fh, $len";
}
}
@@ -2446,7 +2847,7 @@
my $self = shift;
my($op, $cx, $name) = @_;
my($expr, @exprs);
- my $kid = $op->first->sibling;
+ my $firstkid = my $kid = $op->first->sibling;
my $indir = "";
if ($op->flags & OPf_STACKED) {
$indir = $kid;
@@ -2470,19 +2871,20 @@
$indir = '{$b cmp $a} ';
}
for (; !null($kid); $kid = $kid->sibling) {
- $expr = $self->deparse($kid, 6);
+ $expr = $self->deparse($kid, !$indir && $kid == $firstkid && $name eq "sort" && $firstkid->name eq "entersub" ? 16 : 6);
push @exprs, $expr;
}
- my $name2 = $name;
+ my $name2;
if ($name eq "sort" && $op->private & OPpSORT_REVERSE) {
- $name2 = 'reverse sort';
+ $name2 = $self->keyword('reverse') . ' ' . $self->keyword('sort');
}
+ else { $name2 = $self->keyword($name) }
if ($name eq "sort" && ($op->private & OPpSORT_INPLACE)) {
return "$exprs[0] = $name2 $indir $exprs[0]";
}
my $args = $indir . join(", ", @exprs);
- if ($indir ne "" and $name eq "sort") {
+ if ($indir ne "" && $name eq "sort") {
# We don't want to say "sort(f 1, 2, 3)", since perl -w will
# give bareword warnings in that case. Therefore if context
# requires, we'll put parens around the outside "(sort f 1, 2,
@@ -2494,6 +2896,14 @@
} else {
return "$name2 $args";
}
+ } elsif (
+ !$indir && $name eq "sort"
+ && !null($op->first->sibling)
+ && $op->first->sibling->name eq 'entersub'
+ ) {
+ # We cannot say sort foo(bar), as foo will be interpreted as a
+ # comparison routine. We have to say sort(...) in that case.
+ return "$name2($args)";
} else {
return $self->maybe_parens_func($name2, $args, $cx, 5);
}
@@ -2515,7 +2925,8 @@
if (is_scope $code) {
$code = "{" . $self->deparse($code, 0) . "} ";
} else {
- $code = $self->deparse($code, 24) . ", ";
+ $code = $self->deparse($code, 24);
+ $code .= ", " if !null($kid->sibling);
}
$kid = $kid->sibling;
for (; !null($kid); $kid = $kid->sibling) {
@@ -2535,6 +2946,7 @@
my($op, $cx) = @_;
my($expr, @exprs);
my $kid = $op->first->sibling; # skip pushmark
+ return '' if class($kid) eq 'NULL';
my $lop;
my $local = "either"; # could be local(...), my(...), state(...) or our(...)
for ($lop = $kid; !null($lop); $lop = $lop->sibling) {
@@ -2712,7 +3124,7 @@
$var = "\$" . $self->deparse($var, 1);
}
$body = $kid->first->first->sibling; # skip OP_AND and OP_ITER
- if (!is_state $body->first and $body->first->name ne "stub") {
+ if (!is_state $body->first and $body->first->name !~ /^(?:stub|leave|scope)$/) {
confess unless $var eq '$_';
$body = $body->first;
return $self->deparse($body, 2) . " foreach ($ary)";
@@ -2749,7 +3161,7 @@
for (; $$state != $$cont; $state = $state->sibling) {
push @states, $state;
}
- $body = $self->lineseq(undef, @states);
+ $body = $self->lineseq(undef, 0, @states);
if (defined $cond and not is_scope $cont and $self->{'expand'} < 3) {
$head = "for ($init; $cond; " . $self->deparse($cont, 1) .") ";
$cont = "\cK";
@@ -2786,10 +3198,9 @@
return "eval {\n\t" . $self->pp_leave(@_) . "\n\b}";
}
-BEGIN { eval "sub OP_CONST () {" . opnumber("const") . "}" }
-BEGIN { eval "sub OP_STRINGIFY () {" . opnumber("stringify") . "}" }
-BEGIN { eval "sub OP_RV2SV () {" . opnumber("rv2sv") . "}" }
-BEGIN { eval "sub OP_LIST () {" . opnumber("list") . "}" }
+BEGIN { for (qw[ const stringify rv2sv list glob ]) {
+ eval "sub OP_\U$_ () { " . opnumber($_) . "}"
+}}
sub pp_null {
my $self = shift;
@@ -2807,6 +3218,14 @@
return $self->pp_scope($op->first, $cx);
} elsif ($op->targ == OP_STRINGIFY) {
return $self->dquote($op, $cx);
+ } elsif ($op->targ == OP_GLOB) {
+ return $self->pp_glob(
+ $op->first # entersub
+ ->first # ex-list
+ ->first # pushmark
+ ->sibling, # glob
+ $cx
+ );
} elsif (!null($op->first->sibling) and
$op->first->sibling->name eq "readline" and
$op->first->sibling->flags & OPf_STACKED) {
@@ -2877,7 +3296,7 @@
my($op, $cx) = @_;
my $gv = $self->gv_or_padgv($op);
return $self->maybe_local($op, $cx, $self->stash_variable("\$",
- $self->gv_name($gv)));
+ $self->gv_name($gv), $cx));
}
sub pp_gv {
@@ -2887,22 +3306,23 @@
return $self->gv_name($gv);
}
+sub pp_aelemfast_lex {
+ my $self = shift;
+ my($op, $cx) = @_;
+ my $name = $self->padname($op->targ);
+ $name =~ s/^@/\$/;
+ return $name . "[" . ($op->private + $self->{'arybase'}) . "]";
+}
+
sub pp_aelemfast {
my $self = shift;
my($op, $cx) = @_;
- my $name;
- if ($op->flags & OPf_SPECIAL) { # optimised PADAV
- $name = $self->padname($op->targ);
- $name =~ s/^@/\$/;
- }
- else {
- my $gv = $self->gv_or_padgv($op);
- $name = $self->gv_name($gv);
- $name = $self->{'curstash'}."::$name"
- if $name !~ /::/ && $self->lex_in_scope('@'.$name);
- $name = '$' . $name;
- }
+ # optimised PADAV, pre 5.15
+ return $self->pp_aelemfast_lex(@_) if ($op->flags & OPf_SPECIAL);
+ my $gv = $self->gv_or_padgv($op);
+ my($name,$quoted) = $self->stash_variable_name('@',$gv);
+ $name = $quoted ? "$name->" : '$' . $name;
return $name . "[" . ($op->private + $self->{'arybase'}) . "]";
}
@@ -2916,7 +3336,7 @@
}
my $kid = $op->first;
if ($kid->name eq "gv") {
- return $self->stash_variable($type, $self->deparse($kid, 0));
+ return $self->stash_variable($type, $self->deparse($kid, 0), $cx);
} elsif (is_scalar $kid) {
my $str = $self->deparse($kid, 0);
if ($str =~ /^\$([^\w\d])\z/) {
@@ -3007,7 +3427,7 @@
$kid = $kid->sibling until null $kid->sibling;
return 0 if is_scope($kid);
$kid = $kid->first;
- return 0 if $kid->name eq "gv";
+ return 0 if $kid->name eq "gv" || $kid->name eq "padcv";
return 0 if is_scalar($kid);
return is_subscriptable($kid);
} else {
@@ -3025,13 +3445,15 @@
} elsif (is_scope($array)) { # ${expr}[0]
return "{" . $self->deparse($array, 0) . "}";
} elsif ($array->name eq "gv") {
- $array = $self->gv_name($self->gv_or_padgv($array));
- if ($array !~ /::/) {
- my $prefix = ($left eq '[' ? '@' : '%');
- $array = $self->{curstash}.'::'.$array
- if $self->lex_in_scope($prefix . $array);
+ ($array, my $quoted) =
+ $self->stash_variable_name(
+ $left eq '[' ? '@' : '%', $self->gv_or_padgv($array)
+ );
+ if (!$allow_arrow && $quoted) {
+ # This cannot happen.
+ die "Invalid variable name $array for slice";
}
- return $array;
+ return $quoted ? "$array->" : $array;
} elsif (!$allow_arrow || is_scalar $array) { # $x[0], $$x[0], ...
return $self->deparse($array, 24);
} else {
@@ -3089,7 +3511,8 @@
}
if (my $array_name=$self->elem_or_slice_array_name
($array, $left, $padname, 1)) {
- return "\$" . $array_name . $left . $idx . $right;
+ return ($array_name =~ /->\z/ ? $array_name : "\$" . $array_name)
+ . $left . $idx . $right;
} else {
# $x[20][3]{hi} or expr->[20]
my $arrow = is_subscriptable($array) ? "" : "->";
@@ -3177,7 +3600,7 @@
# doesn't get flattened by the append_elem that adds the method,
# making a (object, arg1, arg2, ...) list where the object
# usually is. This can be distinguished from
- # `($obj, $arg1, $arg2)->meth()' (which is legal if $arg2 is an
+ # '($obj, $arg1, $arg2)->meth()' (which is legal if $arg2 is an
# object) because in the later the list is in scalar context
# as the left side of -> always is, while in the former
# the list is in list context as method arguments always are.
@@ -3192,7 +3615,7 @@
} else {
$obj = $kid;
$kid = $kid->sibling;
- for (; !null ($kid->sibling) && $kid->name ne "method_named";
+ for (; !null ($kid->sibling) && $kid->name!~/^method(?:_named)?\z/;
$kid = $kid->sibling) {
push @exprs, $kid
}
@@ -3211,7 +3634,8 @@
}
return { method => $meth, variable_method => ref($meth),
- object => $obj, args => \@exprs };
+ object => $obj, args => \@exprs },
+ $cx;
}
# compat function only
@@ -3222,12 +3646,22 @@
}
sub e_method {
- my ($self, $info) = @_;
+ my ($self, $info, $cx) = @_;
my $obj = $self->deparse($info->{object}, 24);
my $meth = $info->{method};
$meth = $self->deparse($meth, 1) if $info->{variable_method};
my $args = join(", ", map { $self->deparse($_, 6) } @{$info->{args}} );
+ if ($info->{object}->name eq 'scope' && want_list $info->{object}) {
+ # method { $object }
+ # This must be deparsed this way to preserve list context
+ # of $object.
+ my $need_paren = $cx >= 6;
+ return '(' x $need_paren
+ . $meth . substr($obj,2) # chop off the "do"
+ . " $args"
+ . ')' x $need_paren;
+ }
my $kid = $obj . "->" . $meth;
if (length $args) {
return $kid . "(" . $args . ")"; # parens mandatory
@@ -3310,7 +3744,7 @@
}
}
}
- return "&" if $proto and !$doneok; # too few args and no `;'
+ return "&" if $proto and !$doneok; # too few args and no ';'
return "&" if @args; # too many args
return ("", join ", ", @reals);
}
@@ -3357,7 +3791,7 @@
$kid = $self->deparse($kid, 24);
} else {
$prefix = "";
- my $arrow = is_subscriptable($kid->first) ? "" : "->";
+ my $arrow = is_subscriptable($kid->first) || $kid->first->name eq "padcv" ? "" : "->";
$kid = $self->deparse($kid, 24) . $arrow;
}
@@ -3390,6 +3824,7 @@
$args = join(", ", map($self->deparse($_, 6), @exprs));
}
if ($prefix or $amper) {
+ if ($kid eq '&') { $kid = "{$kid}" } # &{&} cannot be written as &&
if ($op->flags & OPf_STACKED) {
return $prefix . $amper . $kid . "(" . $args . ")";
} else {
@@ -3396,7 +3831,7 @@
return $prefix . $amper. $kid;
}
} else {
- # It's a syntax error to call CORE::GLOBAL::foo without a prefix,
+ # It's a syntax error to call CORE::GLOBAL::foo with a prefix,
# so it must have been translated from a keyword call. Translate
# it back.
$kid =~ s/^CORE::GLOBAL:://;
@@ -3732,6 +4167,16 @@
}
return "{" . join(", ", @elts) . "}";
} elsif (class($ref) eq "CV") {
+ BEGIN {
+ if ($] > 5.0150051) {
+ require overloading;
+ unimport overloading;
+ }
+ }
+ if ($] > 5.0150051 && $self->{curcv} &&
+ $self->{curcv}->object_2svref == $ref->object_2svref) {
+ return $self->keyword("__SUB__");
+ }
return "sub " . $self->deparse_sub($ref);
}
if ($ref->FLAGS & SVs_SMG) {
@@ -3785,7 +4230,7 @@
if ($op->private & OPpCONST_ARYBASE) {
return '$[';
}
-# if ($op->private & OPpCONST_BARE) { # trouble with `=>' autoquoting
+# if ($op->private & OPpCONST_BARE) { # trouble with '=>' autoquoting
# return $self->const_sv($op)->PV;
# }
my $sv = $self->const_sv($op);
@@ -3820,6 +4265,8 @@
return '\l' . $self->dq($op->first->sibling);
} elsif ($type eq "quotemeta") {
return '\Q' . $self->dq($op->first->sibling) . '\E';
+ } elsif ($type eq "fc") {
+ return '\F' . $self->dq($op->first->sibling) . '\E';
} elsif ($type eq "join") {
return $self->deparse($op->last, 26); # was join($", @ary)
} else {
@@ -3833,7 +4280,10 @@
# skip pushmark if it exists (readpipe() vs ``)
my $child = $op->first->sibling->isa('B::NULL')
? $op->first : $op->first->sibling;
- return single_delim("qx", '`', $self->dq($child));
+ if ($self->pure_string($child)) {
+ return single_delim("qx", '`', $self->dq($child, 1));
+ }
+ unop($self, @_, "readpipe");
}
sub dquote {
@@ -3859,7 +4309,7 @@
if (($succeed, $to) = balanced_delim($to) and $succeed) {
return "$from$to";
} else {
- for $delim ('/', '"', '#') { # note no `'' -- s''' is special
+ for $delim ('/', '"', '#') { # note no "'" -- s''' is special
return "$from$delim$to$delim" if index($to, $delim) == -1;
}
$to =~ s[/][\\/]g;
@@ -4138,10 +4588,14 @@
return '\l' . $self->re_dq($op->first->sibling, $extended);
} elsif ($type eq "quotemeta") {
return '\Q' . $self->re_dq($op->first->sibling, $extended) . '\E';
+ } elsif ($type eq "fc") {
+ return '\F' . $self->re_dq($op->first->sibling, $extended) . '\E';
} elsif ($type eq "join") {
return $self->deparse($op->last, 26); # was join($", @ary)
} else {
- return $self->deparse($op, 26);
+ my $ret = $self->deparse($op, 26);
+ $ret =~ s/^\$([(|)])\z/\${$1}/; # $( $| $) need braces
+ return $ret;
}
}
@@ -4150,10 +4604,10 @@
return 0 if null $op;
my $type = $op->name;
- if ($type eq 'const') {
+ if ($type eq 'const' || $type eq 'av2arylen') {
return 1;
}
- elsif ($type =~ /^[ul]c(first)?$/ || $type eq 'quotemeta') {
+ elsif ($type =~ /^(?:[ul]c(first)?|fc)$/ || $type eq 'quotemeta') {
return $self->pure_string($op->first->sibling);
}
elsif ($type eq 'join') {
@@ -4175,9 +4629,12 @@
return 1;
}
elsif ($type eq "null" and $op->can('first') and not null $op->first and
- $op->first->name eq "null" and $op->first->can('first')
+ ($op->first->name eq "null" and $op->first->can('first')
and not null $op->first->first and
- $op->first->first->name eq "aelemfast") {
+ $op->first->first->name eq "aelemfast"
+ or
+ $op->first->name =~ /^aelemfast(?:_lex)?\z/
+ )) {
return 1;
}
else {
@@ -4216,6 +4673,38 @@
return (($self->regcomp($op, $cx, 0))[0]);
}
+sub re_flags {
+ my ($self, $op) = @_;
+ my $flags = '';
+ my $pmflags = $op->pmflags;
+ $flags .= "g" if $pmflags & PMf_GLOBAL;
+ $flags .= "i" if $pmflags & PMf_FOLD;
+ $flags .= "m" if $pmflags & PMf_MULTILINE;
+ $flags .= "o" if $pmflags & PMf_KEEP;
+ $flags .= "s" if $pmflags & PMf_SINGLELINE;
+ $flags .= "x" if $pmflags & PMf_EXTENDED;
+ $flags .= "p" if $pmflags & RXf_PMf_KEEPCOPY;
+ if (my $charset = $pmflags & RXf_PMf_CHARSET) {
+ # Hardcoding this is fragile, but B does not yet export the
+ # constants we need.
+ $flags .= qw(d l u a aa)[$charset >> 5]
+ }
+ # The /d flag is indicated by 0; only show it if necessary.
+ elsif ($self->{hinthash} and
+ $self->{hinthash}{reflags_charset}
+ || $self->{hinthash}{feature_unicode}
+ or $self->{hints} & $feature::hint_mask
+ && ($self->{hints} & $feature::hint_mask)
+ != $feature::hint_mask
+ && do {
+ $self->{hints} & $feature::hint_uni8bit;
+ }
+ ) {
+ $flags .= 'd';
+ }
+ $flags;
+}
+
# osmic acid -- see osmium tetroxide
my %matchwords;
@@ -4234,7 +4723,8 @@
$kid = $kid->sibling;
}
my $quote = 1;
- my $extended = ($op->pmflags & PMf_EXTENDED);
+ my $pmflags = $op->pmflags;
+ my $extended = ($pmflags & PMf_EXTENDED);
my $rhs_bound_to_defsv;
if (null $kid) {
my $unbacked = re_unback($op->precomp);
@@ -4247,18 +4737,21 @@
carp("found ".$kid->name." where regcomp expected");
} else {
($re, $quote) = $self->regcomp($kid, 21, $extended);
- $rhs_bound_to_defsv = 1 if $kid->first->first->flags & OPf_SPECIAL;
+ my $matchop = $kid->first;
+ if ($matchop->name eq 'regcrest') {
+ $matchop = $matchop->first;
+ }
+ if ($matchop->name =~ /^(?:match|transr?|subst)\z/
+ && $matchop->flags & OPf_SPECIAL) {
+ $rhs_bound_to_defsv = 1;
+ }
}
my $flags = "";
- $flags .= "c" if $op->pmflags & PMf_CONTINUE;
- $flags .= "g" if $op->pmflags & PMf_GLOBAL;
- $flags .= "i" if $op->pmflags & PMf_FOLD;
- $flags .= "m" if $op->pmflags & PMf_MULTILINE;
- $flags .= "o" if $op->pmflags & PMf_KEEP;
- $flags .= "s" if $op->pmflags & PMf_SINGLELINE;
- $flags .= "x" if $op->pmflags & PMf_EXTENDED;
+ $flags .= "c" if $pmflags & PMf_CONTINUE;
+ $flags .= $self->re_flags($op);
+ $flags = join '', sort split //, $flags;
$flags = $matchwords{$flags} if $matchwords{$flags};
- if ($op->pmflags & PMf_ONCE) { # only one kind of delimiter works here
+ if ($pmflags & PMf_ONCE) { # only one kind of delimiter works here
$re =~ s/\?/\\?/g;
$re = "?$re?";
} elsif ($quote) {
@@ -4282,6 +4775,8 @@
sub pp_pushre { matchop(@_, "m", "/") }
sub pp_qr { matchop(@_, "qr", "") }
+sub pp_runcv { unop(@_, "__SUB__"); }
+
sub pp_split {
my $self = shift;
my($op, $cx) = @_;
@@ -4301,7 +4796,7 @@
} elsif (!ref($replroot) and $replroot > 0) {
$gv = $self->padval($replroot);
}
- $ary = $self->stash_variable('@', $self->gv_name($gv)) if $gv;
+ $ary = $self->stash_variable('@', $self->gv_name($gv), $cx) if $gv;
for (; !null($kid); $kid = $kid->sibling) {
push @exprs, $self->deparse($kid, 6);
@@ -4309,10 +4804,16 @@
# handle special case of split(), and split(' ') that compiles to /\s+/
# Under 5.10, the reflags may be undef if the split regexp isn't a constant
+ # Under 5.17.5-5.17.9, the special flag is on split itself.
$kid = $op->first;
- if ( $kid->flags & OPf_SPECIAL
- and ( $] < 5.009 ? $kid->pmflags & PMf_SKIPWHITE()
- : ($kid->reflags || 0) & RXf_SKIPWHITE() ) ) {
+ if ( $op->flags & OPf_SPECIAL
+ or (
+ $kid->flags & OPf_SPECIAL
+ and ( $] < 5.009 ? $kid->pmflags & PMf_SKIPWHITE()
+ : ($kid->reflags || 0) & RXf_SKIPWHITE()
+ )
+ )
+ ) {
$exprs[0] = "' '";
}
@@ -4332,7 +4833,7 @@
map($substwords{join "", sort split //, $_} = $_, 'ego', 'egoism', 'em',
'es', 'ex', 'exes', 'gee', 'go', 'goes', 'ie', 'ism', 'iso', 'me',
'meese', 'meso', 'mig', 'mix', 'os', 'ox', 'oxime', 'see', 'seem',
- 'seg', 'sex', 'sig', 'six', 'smog', 'sog', 'some', 'xi',
+ 'seg', 'sex', 'sig', 'six', 'smog', 'sog', 'some', 'xi', 'rogue',
'sir', 'rise', 'smore', 'more', 'seer', 'rome', 'gore', 'grim', 'grime',
'or', 'rose', 'rosie');
@@ -4347,22 +4848,23 @@
$kid = $kid->sibling;
}
my $flags = "";
+ my $pmflags = $op->pmflags;
if (null($op->pmreplroot)) {
- $repl = $self->dq($kid);
+ $repl = $kid;
$kid = $kid->sibling;
} else {
$repl = $op->pmreplroot->first; # skip substcont
- while ($repl->name eq "entereval") {
+ }
+ while ($repl->name eq "entereval") {
$repl = $repl->first;
$flags .= "e";
- }
- if ($op->pmflags & PMf_EVAL) {
+ }
+ if ($pmflags & PMf_EVAL) {
$repl = $self->deparse($repl->first, 0);
- } else {
+ } else {
$repl = $self->dq($repl);
- }
}
- my $extended = ($op->pmflags & PMf_EXTENDED);
+ my $extended = ($pmflags & PMf_EXTENDED);
if (null $kid) {
my $unbacked = re_unback($op->precomp);
if ($extended) {
@@ -4374,14 +4876,10 @@
} else {
($re) = $self->regcomp($kid, 1, $extended);
}
- $flags .= "e" if $op->pmflags & PMf_EVAL;
- $flags .= "r" if $op->pmflags & PMf_NONDESTRUCT;
- $flags .= "g" if $op->pmflags & PMf_GLOBAL;
- $flags .= "i" if $op->pmflags & PMf_FOLD;
- $flags .= "m" if $op->pmflags & PMf_MULTILINE;
- $flags .= "o" if $op->pmflags & PMf_KEEP;
- $flags .= "s" if $op->pmflags & PMf_SINGLELINE;
- $flags .= "x" if $extended;
+ $flags .= "r" if $pmflags & PMf_NONDESTRUCT;
+ $flags .= "e" if $pmflags & PMf_EVAL;
+ $flags .= $self->re_flags($op);
+ $flags = join '', sort split //, $flags;
$flags = $substwords{$flags} if $substwords{$flags};
if ($binop) {
return $self->maybe_parens("$var =~ s"
@@ -4392,6 +4890,36 @@
}
}
+sub is_lexical_subs {
+ my (@ops) = shift;
+ for my $op (@ops) {
+ return 0 if $op->name !~ /\A(?:introcv|clonecv)\z/;
+ }
+ return 1;
+}
+
+sub pp_introcv {
+ my $self = shift;
+ my($op, $cx) = @_;
+ # For now, deparsing doesn't worry about the distinction between introcv
+ # and clonecv, so pretend this op doesn't exist:
+ return '';
+}
+
+sub pp_clonecv {
+ my $self = shift;
+ my($op, $cx) = @_;
+ my $sv = $self->padname_sv($op->targ);
+ my $name = substr $sv->PVX, 1; # skip &/$/@/%, like $self->padany
+ return "my sub $name";
+}
+
+sub pp_padcv {
+ my $self = shift;
+ my($op, $cx) = @_;
+ return $self->padany($op);
+}
+
1;
__END__
@@ -4408,11 +4936,11 @@
B::Deparse is a backend module for the Perl compiler that generates
perl source code, based on the internal compiled structure that perl
-itself creates after parsing a program. The output of B::Deparse won't
+itself creates after parsing a program. The output of B::Deparse won't
be exactly the same as the original source, since perl doesn't keep
track of comments or whitespace, and there isn't a one-to-one
correspondence between perl's syntactical constructions and their
-compiled form, but it will often be close. When you use the B<-p>
+compiled form, but it will often be close. When you use the B<-p>
option, the output also includes parentheses even when they are not
required by precedence, which can make it easy to see if perl is
parsing your expressions the way you intended.
@@ -4419,7 +4947,7 @@
While B::Deparse goes to some lengths to try to figure out what your
original program was doing, some parts of the language can still trip
-it up; it still fails even on some parts of Perl's own test suite. If
+it up; it still fails even on some parts of Perl's own test suite. If
you encounter a failure other than the most common ones described in
the BUGS section below, you can help contribute to B::Deparse's
ongoing development by submitting a bug report with a small
@@ -4436,7 +4964,7 @@
Output data values (when they appear as constants) using Data::Dumper.
Without this option, B::Deparse will use some simple routines of its
-own for the same purpose. Currently, Data::Dumper is better for some
+own for the same purpose. Currently, Data::Dumper is better for some
kinds of data (such as complex structures with sharing and
self-reference) while the built-in routines are better for others
(such as odd floating-point values).
@@ -4444,8 +4972,9 @@
=item B<-f>I<FILE>
Normally, B::Deparse deparses the main code of a program, and all the subs
-defined in the same file. To include subs defined in other files, pass the
-B<-f> option with the filename. You can pass the B<-f> option several times, to
+defined in the same file. To include subs defined in
+other files, pass the B<-f> option with the filename.
+You can pass the B<-f> option several times, to
include more than one secondary file. (Most of the time you don't want to
use it at all.) You can also use this option to include subs which are
defined in the scope of a B<#line> directive with two parameters.
@@ -4457,11 +4986,11 @@
=item B<-p>
-Print extra parentheses. Without this option, B::Deparse includes
+Print extra parentheses. Without this option, B::Deparse includes
parentheses in its output only when they are needed, based on the
-structure of your program. With B<-p>, it uses parentheses (almost)
-whenever they would be legal. This can be useful if you are used to
-LISP, or if you want to see how perl parses your input. If you say
+structure of your program. With B<-p>, it uses parentheses (almost)
+whenever they would be legal. This can be useful if you are used to
+LISP, or if you want to see how perl parses your input. If you say
if ($var & 0x7f == 65) {print "Gimme an A!"}
print ($which ? $a : $b), "\n";
@@ -4480,8 +5009,8 @@
=item B<-P>
-Disable prototype checking. With this option, all function calls are
-deparsed as if no prototype was defined for them. In other words,
+Disable prototype checking. With this option, all function calls are
+deparsed as if no prototype was defined for them. In other words,
perl -MO=Deparse,-P -e 'sub foo (\@) { 1 } foo @x'
@@ -4497,7 +5026,7 @@
=item B<-q>
Expand double-quoted strings into the corresponding combinations of
-concatenation, uc, ucfirst, lc, lcfirst, quotemeta, and join. For
+concatenation, uc, ucfirst, lc, lcfirst, quotemeta, and join. For
instance, print
print "Hello, $world, @ladies, \u$gentlemen\E, \u\L$me!";
@@ -4509,14 +5038,14 @@
Note that the expanded form represents the way perl handles such
constructions internally -- this option actually turns off the reverse
-translation that B::Deparse usually does. On the other hand, note that
+translation that B::Deparse usually does. On the other hand, note that
C<$x = "$y"> is not the same as C<$x = $y>: the former makes the value
of $y into a string before doing the assignment.
=item B<-s>I<LETTERS>
-Tweak the style of B::Deparse's output. The letters should follow
-directly after the 's', with no space or punctuation. The following
+Tweak the style of B::Deparse's output. The letters should follow
+directly after the 's', with no space or punctuation. The following
options are available:
=over 4
@@ -4523,7 +5052,7 @@
=item B<C>
-Cuddle C<elsif>, C<else>, and C<continue> blocks. For example, print
+Cuddle C<elsif>, C<else>, and C<continue> blocks. For example, print
if (...) {
...
@@ -4544,11 +5073,11 @@
=item B<i>I<NUMBER>
-Indent lines by multiples of I<NUMBER> columns. The default is 4 columns.
+Indent lines by multiples of I<NUMBER> columns. The default is 4 columns.
=item B<T>
-Use tabs for each 8 columns of indent. The default is to use only spaces.
+Use tabs for each 8 columns of indent. The default is to use only spaces.
For instance, if the style options are B<-si4T>, a line that's indented
3 times will be preceded by one tab and four spaces; if the options were
B<-si8T>, the same line would be preceded by three tabs.
@@ -4557,14 +5086,14 @@
Print I<STRING> for the value of a constant that can't be determined
because it was optimized away (mnemonic: this happens when a constant
-is used in B<v>oid context). The end of the string is marked by a period.
+is used in B<v>oid context). The end of the string is marked by a period.
The string should be a valid perl expression, generally a constant.
Note that unless it's a number, it probably needs to be quoted, and on
-a command line quotes need to be protected from the shell. Some
+a command line quotes need to be protected from the shell. Some
conventional values include 0, 1, 42, '', 'foo', and
'Useless use of constant omitted' (which may need to be
B<-sv"'Useless use of constant omitted'.">
-or something similar depending on your shell). The default is '???'.
+or something similar depending on your shell). The default is '???'.
If you're using B::Deparse on a module or other file that's require'd,
you shouldn't use a value that evaluates to false, since the customary
true constant at the end of a module will be in void context when the
@@ -4575,8 +5104,8 @@
=item B<-x>I<LEVEL>
Expand conventional syntax constructions into equivalent ones that expose
-their internal operation. I<LEVEL> should be a digit, with higher values
-meaning more expansion. As with B<-q>, this actually involves turning off
+their internal operation. I<LEVEL> should be a digit, with higher values
+meaning more expansion. As with B<-q>, this actually involves turning off
special cases in B::Deparse's normal operations.
If I<LEVEL> is at least 3, C<for> loops will be translated into equivalent
@@ -4657,7 +5186,7 @@
$deparse = B::Deparse->new(OPTIONS)
Create an object to store the state of a deparsing operation and any
-options. The options are the same as those that can be given on the
+options. The options are the same as those that can be given on the
command line (see L</OPTIONS>); options that are separated by commas
after B<-MO=Deparse> should be given as separate strings.
@@ -4666,7 +5195,7 @@
$deparse->ambient_pragmas(strict => 'all', '$[' => $[);
The compilation of a subroutine can be affected by a few compiler
-directives, B<pragmas>. These are:
+directives, B<pragmas>. These are:
=over 4
@@ -4703,15 +5232,15 @@
Ordinarily, if you use B::Deparse on a subroutine which has
been compiled in the presence of one or more of these pragmas,
the output will include statements to turn on the appropriate
-directives. So if you then compile the code returned by coderef2text,
+directives. So if you then compile the code returned by coderef2text,
it will behave the same way as the subroutine which you deparsed.
However, you may know that you intend to use the results in a
-particular context, where some pragmas are already in scope. In
+particular context, where some pragmas are already in scope. In
this case, you use the B<ambient_pragmas> method to describe the
assumptions you wish to make.
-Not all of the options currently have any useful effect. See
+Not all of the options currently have any useful effect. See
L</BUGS> for more details.
The parameters it accepts are:
@@ -4721,7 +5250,7 @@
=item strict
Takes a string, possibly containing several values separated
-by whitespace. The special values "all" and "none" mean what you'd
+by whitespace. The special values "all" and "none" mean what you'd
expect.
$deparse->ambient_pragmas(strict => 'subs refs');
@@ -4729,6 +5258,7 @@
=item $[
Takes a number, the value of the array base $[.
+Cannot be non-zero on Perl 5.15.3 or later.
=item bytes
@@ -4742,7 +5272,7 @@
=item re
Takes a string, possibly containing a whitespace-separated list of
-values. The values "all" and "none" are special. It's also permissible
+values. The values "all" and "none" are special. It's also permissible
to pass an array reference here.
$deparser->ambient_pragmas(re => 'eval');
@@ -4751,7 +5281,7 @@
=item warnings
Takes a string, possibly containing a whitespace-separated list of
-values. The values "all" and "none" are special, again. It's also
+values. The values "all" and "none" are special, again. It's also
permissible to pass an array reference here.
$deparser->ambient_pragmas(warnings => [qw[void io]]);
@@ -4758,7 +5288,7 @@
If one of the values is the string "FATAL", then all the warnings
in that list will be considered fatal, just as with the B<warnings>
-pragma itself. Should you need to specify that some warnings are
+pragma itself. Should you need to specify that some warnings are
fatal, and others are merely enabled, you can pass the B<warnings>
parameter twice:
@@ -4803,10 +5333,10 @@
Return source code for the body of a subroutine (a block, optionally
preceded by a prototype in parens), given a reference to the
-sub. Because a subroutine can have no names, or more than one name,
+sub. Because a subroutine can have no names, or more than one name,
this method doesn't return a complete subroutine definition -- if you
want to eval the result, you should prepend "sub subname ", or "sub "
-for an anonymous function constructor. Unless the sub was defined in
+for an anonymous function constructor. Unless the sub was defined in
the main:: package, the code will include a package declaration.
=head1 BUGS
@@ -4816,7 +5346,8 @@
=item *
The only pragmas to be completely supported are: C<use warnings>,
-C<use strict 'refs'>, C<use bytes>, and C<use integer>. (C<$[>, which
+C<use strict>, C<use bytes>, C<use integer>
+and C<use feature>. (C<$[>, which
behaves like a pragma, is also supported.)
Excepting those listed above, we're currently unable to guarantee that
@@ -4831,7 +5362,7 @@
In fact, the above is a specific instance of a more general problem:
we can't guarantee to produce BEGIN blocks or C<use> declarations in
-exactly the right place. So if you use a module which affects compilation
+exactly the right place. So if you use a module which affects compilation
(such as by over-riding keywords, overloading constants or whatever)
then the output code might not work as intended.
@@ -4840,14 +5371,6 @@
=item *
-If a keyword is over-ridden, and your program explicitly calls
-the built-in version by using CORE::keyword, the output of B::Deparse
-will not reflect this. If you run the resulting code, it will call
-the over-ridden version rather than the built-in one. (Maybe there
-should be an option to B<always> print keyword calls as C<CORE::name>.)
-
-=item *
-
Some constants don't print correctly either with or without B<-d>.
For instance, neither B::Deparse nor Data::Dumper know how to print
dual-valued scalars correctly, as in:
@@ -4865,7 +5388,8 @@
=item *
-Optimised away statements are rendered as '???'. This includes statements that
+Optimised away statements are rendered as
+'???'. This includes statements that
have a compile-time side-effect, such as the obscure
my $x if 0;
@@ -4879,7 +5403,7 @@
=item *
Lexical (my) variables declared in scopes external to a subroutine
-appear in code2ref output text as package variables. This is a tricky
+appear in code2ref output text as package variables. This is a tricky
problem, as perl has no native facility for referring to a lexical variable
defined within a different scope, although L<PadWalker> is a good start.
@@ -4887,6 +5411,23 @@
There are probably many more bugs on non-ASCII platforms (EBCDIC).
+=item *
+
+Lexical C<my> subroutines are not deparsed properly at the moment. They are
+emitted as pure declarations, without their body; and the declaration may
+appear in the wrong place (before any lexicals the body closes over, or
+before the C<use feature> declaration that permits use of this feature).
+
+We expect to resolve this before the lexical-subroutine feature is no longer
+considered experimental.
+
+=item *
+
+Lexical C<state> subroutines are not deparsed at all at the moment.
+
+We expect to resolve this before the lexical-subroutine feature is no longer
+considered experimental.
+
=back
=head1 AUTHOR
Property changes on: trunk/contrib/perl/dist/B-Deparse/Deparse.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Copied: trunk/contrib/perl/dist/B-Deparse/t/core.t (from rev 6437, vendor/perl/5.18.1/dist/B-Deparse/t/core.t)
===================================================================
--- trunk/contrib/perl/dist/B-Deparse/t/core.t (rev 0)
+++ trunk/contrib/perl/dist/B-Deparse/t/core.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,622 @@
+#!./perl
+
+# Test the core keywords.
+#
+# Initially this test file just checked that CORE::foo got correctly
+# deparsed as CORE::foo, hence the name. It's since been expanded
+# to fully test both CORE:: verses none, plus that any arguments
+# are correctly deparsed. It also cross-checks against regen/keywords.pl
+# to make sure we've tested all keywords, and with the correct strength.
+#
+# A keyword can be either weak or strong. Strong keywords can never be
+# overridden, while weak ones can. So deparsing of weak keywords depends
+# on whether a sub of that name has been created:
+#
+# for both: keyword(..) deparsed as keyword(..)
+# for weak: CORE::keyword(..) deparsed as CORE::keyword(..)
+# for strong: CORE::keyword(..) deparsed as keyword(..)
+#
+# Three permutations of lex/nonlex args are checked for:
+#
+# foo($a,$b,$c,...)
+# foo(my $a,$b,$c,...)
+# my ($a,$b,$c,...); foo($a,$b,$c,...)
+#
+# Note that tests for prefixing feature.pm-enabled keywords with CORE:: when
+# feature.pm is not enabled are in deparse.t, as they fit that format better.
+
+
+BEGIN {
+ require Config;
+ if (($Config::Config{extensions} !~ /\bB\b/) ){
+ print "1..0 # Skip -- Perl configured without B module\n";
+ exit 0;
+ }
+}
+
+use strict;
+use Test::More;
+plan tests => 2063;
+
+use feature (sprintf(":%vd", $^V)); # to avoid relying on the feature
+ # logic to add CORE::
+use B::Deparse;
+my $deparse = new B::Deparse;
+
+my %SEEN;
+my %SEEN_STRENGH;
+
+# for a given keyword, create a sub of that name, then
+# deparse "() = $expr", and see if it matches $expected_expr
+
+sub testit {
+ my ($keyword, $expr, $expected_expr) = @_;
+
+ $expected_expr //= $expr;
+ $SEEN{$keyword} = 1;
+
+
+ # lex=0: () = foo($a,$b,$c)
+ # lex=1: my ($a,$b); () = foo($a,$b,$c)
+ # lex=2: () = foo(my $a,$b,$c)
+ for my $lex (0, 1, 2) {
+ if ($lex) {
+ next if $keyword =~ /local|our|state|my/;
+ # XXX glob(my $x) incorrectly becomes <my $x>
+ next if $keyword eq 'glob';
+ }
+ my $vars = $lex == 1 ? 'my($a, $b, $c, $d, $e);' . "\n " : "";
+
+ if ($lex == 2) {
+ my $repl = 'my $a';
+ if ($expr =~ /\bmap\(\$a|CORE::(chomp|chop|lstat|stat)\b/) {
+ # for some reason only these do:
+ # 'foo my $a, $b,' => foo my($a), $b, ...
+ # the rest don't parenthesize the my var.
+ $repl = 'my($a)';
+ }
+ s/\$a/$repl/ for $expr, $expected_expr;
+ }
+
+ my $desc = "$keyword: lex=$lex $expr => $expected_expr";
+
+
+ my $code_ref;
+ {
+ package test;
+ use subs ();
+ import subs $keyword;
+ $code_ref = eval "no strict 'vars'; sub { ${vars}() = $expr }"
+ or die "$@ in $expr";
+ }
+
+ my $got_text = $deparse->coderef2text($code_ref);
+
+ unless ($got_text =~ /^{
+ package test;
+ use strict 'refs', 'subs';
+ use feature [^\n]+
+ \Q$vars\E\(\) = (.*)
+}/s) {
+ ::fail($desc);
+ ::diag("couldn't extract line from boilerplate\n");
+ ::diag($got_text);
+ return;
+ }
+
+ my $got_expr = $1;
+ is $got_expr, $expected_expr, $desc;
+ }
+}
+
+
+# Deparse can't distinguish 'and' from '&&' etc
+my %infix_map = qw(and && or ||);
+
+
+# test a keyword that is a binary infix operator, like 'cmp'.
+# $parens - "$a op $b" is deparsed as "($a op $b)"
+# $strong - keyword is strong
+
+sub do_infix_keyword {
+ my ($keyword, $parens, $strong) = @_;
+ $SEEN_STRENGH{$keyword} = $strong;
+ my $expr = "(\$a $keyword \$b)";
+ my $nkey = $infix_map{$keyword} // $keyword;
+ my $expr = "(\$a $keyword \$b)";
+ my $exp = "\$a $nkey \$b";
+ $exp = "($exp)" if $parens;
+ $exp .= ";";
+ # with infix notation, a keyword is always interpreted as core,
+ # so no need for Deparse to disambiguate with CORE::
+ testit $keyword, "(\$a CORE::$keyword \$b)", $exp;
+ testit $keyword, "(\$a $keyword \$b)", $exp;
+ if (!$strong) {
+ testit $keyword, "$keyword(\$a, \$b)", "$keyword(\$a, \$b);";
+ }
+}
+
+# test a keyword that is as tandard op/function, like 'index(...)'.
+# narg - how many args to test it with
+# $parens - "foo $a, $b" is deparsed as "foo($a, $b)"
+# $dollar - an extra '$_' arg will appear in the deparsed output
+# $strong - keyword is strong
+
+
+sub do_std_keyword {
+ my ($keyword, $narg, $parens, $dollar, $strong) = @_;
+
+ $SEEN_STRENGH{$keyword} = $strong;
+
+ for my $core (0,1) { # if true, add CORE:: to keyword being deparsed
+ my @code;
+ for my $do_exp(0, 1) { # first create expr, then expected-expr
+ my @args = map "\$$_", (undef,"a".."z")[1..$narg];
+ push @args, '$_' if $dollar && $do_exp && ($strong || $core);
+ my $args = join(', ', @args);
+ $args = ((!$core && !$strong) || $parens)
+ ? "($args)"
+ : @args ? " $args" : "";
+ push @code, (($core && !($do_exp && $strong)) ? "CORE::" : "")
+ . "$keyword$args;";
+ }
+ testit $keyword, @code; # code[0]: to run; code[1]: expected
+ }
+}
+
+
+while (<DATA>) {
+ chomp;
+ s/#.*//;
+ next unless /\S/;
+
+ my @fields = split;
+ die "not 3 fields" unless @fields == 3;
+ my ($keyword, $args, $flags) = @fields;
+
+ $args = '012' if $args eq '@';
+
+ my $parens = $flags =~ s/p//;
+ my $invert1 = $flags =~ s/1//;
+ my $dollar = $flags =~ s/\$//;
+ my $strong = $flags =~ s/\+//;
+ die "unrecognised flag(s): '$flags'" unless $flags =~ /^-?$/;
+
+ if ($args eq 'B') { # binary infix
+ die "$keyword: binary (B) op can't have '\$' flag\\n" if $dollar;
+ die "$keyword: binary (B) op can't have '1' flag\\n" if $invert1;
+ do_infix_keyword($keyword, $parens, $strong);
+ }
+ else {
+ my @narg = split //, $args;
+ for my $n (0..$#narg) {
+ my $narg = $narg[$n];
+ my $p = $parens;
+ $p = !$p if ($n == 0 && $invert1);
+ do_std_keyword($keyword, $narg, $p, (!$n && $dollar), $strong);
+ }
+ }
+}
+
+
+# Special cases
+
+testit dbmopen => 'CORE::dbmopen(%foo, $bar, $baz);';
+testit dbmclose => 'CORE::dbmclose %foo;';
+
+testit delete => 'CORE::delete $h{\'foo\'};', 'delete $h{\'foo\'};';
+testit delete => 'delete $h{\'foo\'};', 'delete $h{\'foo\'};';
+
+# do is listed as strong, but only do { block } is strong;
+# do $file is weak, so test it separately here
+testit do => 'CORE::do $a;';
+testit do => 'do $a;', 'do($a);';
+testit do => 'CORE::do { 1 }',
+ "do {\n 1\n };";
+testit do => 'do { 1 };',
+ "do {\n 1\n };";
+
+testit each => 'CORE::each %bar;';
+
+testit eof => 'CORE::eof();';
+
+testit exists => 'CORE::exists $h{\'foo\'};', 'exists $h{\'foo\'};';
+testit exists => 'exists $h{\'foo\'};', 'exists $h{\'foo\'};';
+
+testit exec => 'CORE::exec($foo $bar);';
+
+# glob($x) gets deparsed as glob("$x").
+# Whether this is correct, I don't know; but I didn't want
+# to start messing with the whole glob/readline/<> mess - DAPM.
+testit glob => 'glob;', 'glob("$_");';
+testit glob => 'CORE::glob;', 'glob("$_");';
+testit glob => 'glob $a;', 'glob("$a");';
+testit glob => 'CORE::glob $a;', 'glob("$a");';
+
+testit grep => 'CORE::grep { $a } $b, $c', 'grep({$a;} $b, $c);';
+
+testit keys => 'CORE::keys %bar;';
+
+testit map => 'CORE::map { $a } $b, $c', 'map({$a;} $b, $c);';
+
+testit not => '3 unless CORE::not $a && $b;';
+
+testit readline => 'CORE::readline $a . $b;';
+
+testit readpipe => 'CORE::readpipe $a + $b;';
+
+testit reverse => 'CORE::reverse sort(@foo);';
+
+# note that the test does '() = split...' which is why the
+# limit is optimised to 1
+testit split => 'split;', q{split(' ', $_, 1);};
+testit split => 'CORE::split;', q{split(' ', $_, 1);};
+testit split => 'split $a;', q{split(/$a/u, $_, 1);};
+testit split => 'CORE::split $a;', q{split(/$a/u, $_, 1);};
+testit split => 'split $a, $b;', q{split(/$a/u, $b, 1);};
+testit split => 'CORE::split $a, $b;', q{split(/$a/u, $b, 1);};
+testit split => 'split $a, $b, $c;', q{split(/$a/u, $b, $c);};
+testit split => 'CORE::split $a, $b, $c;', q{split(/$a/u, $b, $c);};
+
+testit sub => 'CORE::sub { $a, $b }',
+ "sub {\n \$a, \$b;\n }\n ;";
+
+testit system => 'CORE::system($foo $bar);';
+
+testit values => 'CORE::values %bar;';
+
+
+# XXX These are deparsed wrapped in parens.
+# whether they should be, I don't know!
+
+testit dump => '(CORE::dump);';
+testit dump => '(CORE::dump FOO);';
+testit goto => '(CORE::goto);', '(goto);';
+testit goto => '(CORE::goto FOO);', '(goto FOO);';
+testit last => '(CORE::last);', '(last);';
+testit last => '(CORE::last FOO);', '(last FOO);';
+testit next => '(CORE::next);', '(next);';
+testit next => '(CORE::next FOO);', '(next FOO);';
+testit redo => '(CORE::redo);', '(redo);';
+testit redo => '(CORE::redo FOO);', '(redo FOO);';
+testit redo => '(CORE::redo);', '(redo);';
+testit redo => '(CORE::redo FOO);', '(redo FOO);';
+testit return => '(return);', '(return);';
+testit return => '(CORE::return);', '(return);';
+
+# these are the keywords I couldn't think how to test within this framework
+
+my %not_tested = map { $_ => 1} qw(
+ __DATA__
+ __END__
+ __FILE__
+ __LINE__
+ __PACKAGE__
+ __SUB__
+ AUTOLOAD
+ BEGIN
+ CHECK
+ CORE
+ DESTROY
+ END
+ INIT
+ UNITCHECK
+ default
+ else
+ elsif
+ for
+ foreach
+ format
+ given
+ if
+ m
+ no
+ package
+ q
+ qq
+ qr
+ qw
+ qx
+ require
+ s
+ tr
+ unless
+ until
+ use
+ when
+ while
+ y
+);
+
+
+
+# Sanity check against keyword data:
+# make sure we haven't missed any keywords,
+# and that we got the strength right.
+
+SKIP:
+{
+ skip "sanity checks when not PERL_CORE", 1 unless defined $ENV{PERL_CORE};
+ my $count = 0;
+ my $file = '../../regen/keywords.pl';
+ my $pass = 1;
+ if (open my $fh, '<', $file) {
+ while (<$fh>) {
+ last if /^__END__$/;
+ }
+ while (<$fh>) {
+ next unless /^([+\-])(\w+)$/;
+ my ($strength, $key) = ($1, $2);
+ $strength = ($strength eq '+') ? 1 : 0;
+ $count++;
+ if (!$SEEN{$key} && !$not_tested{$key}) {
+ diag("keyword '$key' seen in $file, but not tested here!!");
+ $pass = 0;
+ }
+ if (exists $SEEN_STRENGH{$key} and $SEEN_STRENGH{$key} != $strength) {
+ diag("keyword '$key' strengh as seen in $file doen't match here!!");
+ $pass = 0;
+ }
+ }
+ }
+ else {
+ diag("Can't open $file: $!");
+ $pass = 0;
+ }
+ # insanity check
+ if ($count < 200) {
+ diag("Saw $count keywords: less than 200!");
+ $pass = 0;
+ }
+ ok($pass, "sanity checks");
+}
+
+
+
+__DATA__
+#
+# format:
+# keyword args flags
+#
+# args consists of:
+# * one of more digits indictating which lengths of args the function accepts,
+# * or 'B' to indiate a binary infix operator,
+# * or '@' to indicate a list function.
+#
+# Flags consists of the following (or '-' if no flags):
+# + : strong keyword: can't be overrriden
+# p : the args are parenthesised on deparsing;
+# 1 : parenthesising of 1st arg length is inverted
+# so '234 p1' means: foo a1,a2; foo(a1,a2,a3); foo(a1,a2,a3,a4)
+# $ : on the first argument length, there is an implicit extra
+# '$_' arg which will appear on deparsing;
+# e.g. 12p$ will be tested as: foo(a1); foo(a1,a2);
+# and deparsed as: foo(a1, $_); foo(a1,a2);
+#
+# XXX Note that we really should get this data from regen/keywords.pl
+# and regen/opcodes (augmented if necessary), rather than duplicating it
+# here.
+
+__SUB__ 0 -
+abs 01 $
+accept 2 p
+alarm 01 $
+and B -
+atan2 2 p
+bind 2 p
+binmode 12 p
+bless 1 p
+break 0 -
+caller 0 -
+chdir 01 -
+chmod @ p1
+chomp @ $
+chop @ $
+chown @ p1
+chr 01 $
+chroot 01 $
+close 01 -
+closedir 1 -
+cmp B -
+connect 2 p
+continue 0 -
+cos 01 $
+crypt 2 p
+# dbmopen handled specially
+# dbmclose handled specially
+defined 01 $+
+# delete handled specially
+die @ p1
+# do handled specially
+# dump handled specially
+each 1 - # also tested specially
+endgrent 0 -
+endhostent 0 -
+endnetent 0 -
+endprotoent 0 -
+endpwent 0 -
+endservent 0 -
+eof 01 - # also tested specially
+eq B -
+eval 01 $+
+evalbytes 01 $
+exec @ p1 # also tested specially
+# exists handled specially
+exit 01 -
+exp 01 $
+fc 01 $
+fcntl 3 p
+fileno 1 -
+flock 2 p
+fork 0 -
+formline 2 p
+ge B -
+getc 01 -
+getgrent 0 -
+getgrgid 1 -
+getgrnam 1 -
+gethostbyaddr 2 p
+gethostbyname 1 -
+gethostent 0 -
+getlogin 0 -
+getnetbyaddr 2 p
+getnetbyname 1 -
+getnetent 0 -
+getpeername 1 -
+getpgrp 1 -
+getppid 0 -
+getpriority 2 p
+getprotobyname 1 -
+getprotobynumber 1 p
+getprotoent 0 -
+getpwent 0 -
+getpwnam 1 -
+getpwuid 1 -
+getservbyname 2 p
+getservbyport 2 p
+getservent 0 -
+getsockname 1 -
+getsockopt 3 p
+# given handled specially
+grep 123 p+ # also tested specially
+# glob handled specially
+# goto handled specially
+gmtime 01 -
+gt B -
+hex 01 $
+index 23 p
+int 01 $
+ioctl 3 p
+join 123 p
+keys 1 - # also tested specially
+kill 123 p
+# last handled specially
+lc 01 $
+lcfirst 01 $
+le B -
+length 01 $
+link 2 p
+listen 2 p
+local 1 p+
+localtime 01 -
+lock 1 -
+log 01 $
+lstat 01 $
+lt B -
+map 123 p+ # also tested specially
+mkdir @ p$
+msgctl 3 p
+msgget 2 p
+msgrcv 5 p
+msgsnd 3 p
+my 123 p+ # skip with 0 args, as my() => ()
+ne B -
+# next handled specially
+# not handled specially
+oct 01 $
+open 12345 p
+opendir 2 p
+or B -
+ord 01 $
+our 123 p+ # skip with 0 args, as our() => ()
+pack 123 p
+pipe 2 p
+pop 01 1
+pos 01 $+
+print @ p$+
+printf @ p$+
+prototype 1 +
+push 123 p
+quotemeta 01 $
+rand 01 -
+read 34 p
+readdir 1 -
+# readline handled specially
+readlink 01 $
+# readpipe handled specially
+recv 4 p
+# redo handled specially
+ref 01 $
+rename 2 p
+# XXX This code prints 'Undefined subroutine &main::require called':
+# use subs (); import subs 'require';
+# eval q[no strict 'vars'; sub { () = require; }]; print $@;
+# so disable for now
+#require 01 $+
+reset 01 -
+# return handled specially
+reverse @ p1 # also tested specially
+rewinddir 1 -
+rindex 23 p
+rmdir 01 $
+say @ p$+
+scalar 1 +
+seek 3 p
+seekdir 2 p
+select 014 p1
+semctl 4 p
+semget 3 p
+semop 2 p
+send 34 p
+setgrent 0 -
+sethostent 1 -
+setnetent 1 -
+setpgrp 2 p
+setpriority 3 p
+setprotoent 1 -
+setpwent 0 -
+setservent 1 -
+setsockopt 4 p
+shift 01 1
+shmctl 3 p
+shmget 3 p
+shmread 4 p
+shmwrite 4 p
+shutdown 2 p
+sin 01 $
+sleep 01 -
+socket 4 p
+socketpair 5 p
+sort @ p+
+# split handled specially
+splice 12345 p
+sprintf 123 p
+sqrt 01 $
+srand 01 -
+stat 01 $
+state 123 p+ # skip with 0 args, as state() => ()
+study 01 $+
+# sub handled specially
+substr 234 p
+symlink 2 p
+syscall 2 p
+sysopen 34 p
+sysread 34 p
+sysseek 3 p
+system @ p1 # also tested specially
+syswrite 234 p
+tell 01 -
+telldir 1 -
+tie 234 p
+tied 1 -
+time 0 -
+times 0 -
+truncate 2 p
+uc 01 $
+ucfirst 01 $
+umask 01 -
+undef 01 +
+unlink @ p$
+unpack 12 p$
+unshift 1 p
+untie 1 -
+utime @ p1
+values 1 - # also tested specially
+vec 3 p
+wait 0 -
+waitpid 2 p
+wantarray 0 -
+warn @ p1
+write 01 -
+x B -
+xor B p
Modified: trunk/contrib/perl/dist/B-Deparse/t/deparse.t
===================================================================
--- trunk/contrib/perl/dist/B-Deparse/t/deparse.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/B-Deparse/t/deparse.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -11,47 +11,31 @@
use warnings;
use strict;
-BEGIN {
- # BEGIN block is actually a subroutine :-)
- return unless $] > 5.009;
- require feature;
- feature->import(':5.10');
-}
use Test::More;
-use Config ();
+my $tests = 18; # not counting those in the __DATA__ section
+
use B::Deparse;
my $deparse = B::Deparse->new();
isa_ok($deparse, 'B::Deparse', 'instantiate a B::Deparse object');
-# Tell B::Deparse about our ambient pragmas
-{ my ($hint_bits, $warning_bits, $hinthash);
- BEGIN { ($hint_bits, $warning_bits, $hinthash) = ($^H, ${^WARNING_BITS}, \%^H); }
- $deparse->ambient_pragmas (
- hint_bits => $hint_bits,
- warning_bits => $warning_bits,
- '$[' => 0 + $[,
- '%^H' => $hinthash,
- );
-}
-
$/ = "\n####\n";
while (<DATA>) {
chomp;
+ $tests ++;
# This code is pinched from the t/lib/common.pl for TODO.
# It's not clear how to avoid duplication
- # Now tweaked a bit to do skip or todo
- my %reason;
- foreach my $what (qw(skip todo)) {
- s/^#\s*\U$what\E\s*(.*)\n//m and $reason{$what} = $1;
+ my %meta = (context => '');
+ foreach my $what (qw(skip todo context)) {
+ s/^#\s*\U$what\E\s*(.*)\n//m and $meta{$what} = $1;
# If the SKIP reason starts ? then it's taken as a code snippet to
# evaluate. This provides the flexibility to have conditional SKIPs
- if ($reason{$what} && $reason{$what} =~ s/^\?//) {
- my $temp = eval $reason{$what};
+ if ($meta{$what} && $meta{$what} =~ s/^\?//) {
+ my $temp = eval $meta{$what};
if ($@) {
- die "# In \U$what\E code reason:\n# $reason{$what}\n$@";
+ die "# In \U$what\E code reason:\n# $meta{$what}\n$@";
}
- $reason{$what} = $temp;
+ $meta{$what} = $temp;
}
}
@@ -59,9 +43,9 @@
my $desc = $1;
die "Missing name in test $_" unless defined $desc;
- if ($reason{skip}) {
+ if ($meta{skip}) {
# Like this to avoid needing a label SKIP:
- Test::More->builder->skip($reason{skip});
+ Test::More->builder->skip($meta{skip});
next;
}
@@ -73,7 +57,18 @@
($input, $expected) = ($_, $_);
}
- my $coderef = eval "sub {$input}";
+ my $coderef = eval "$meta{context};\n" . <<'EOC' . "sub {$input}";
+# Tell B::Deparse about our ambient pragmas
+my ($hint_bits, $warning_bits, $hinthash);
+BEGIN {
+ ($hint_bits, $warning_bits, $hinthash) = ($^H, ${^WARNING_BITS}, \%^H);
+}
+$deparse->ambient_pragmas (
+ hint_bits => $hint_bits,
+ warning_bits => $warning_bits,
+ '%^H' => $hinthash,
+);
+EOC
if ($@) {
is($@, "", "compilation of $desc");
@@ -85,7 +80,7 @@
$regex =~ s/\s+/\\s+/g;
$regex = '^\{\s*' . $regex . '\s*\}$';
- local $::TODO = $reason{todo};
+ local $::TODO = $meta{todo};
like($deparsed, qr/$regex/, $desc);
}
}
@@ -109,6 +104,7 @@
$a = `$^X $path "-MO=Deparse" -anlwi.bak -e 1 2>&1`;
$a =~ s/-e syntax OK\n//g;
$a =~ s/.*possible typo.*\n//; # Remove warning line
+$a =~ s/.*-i used with no filenames.*\n//; # Remove warning line
$a =~ s{\\340\\242}{\\s} if (ord("\\") == 224); # EBCDIC, cp 1047 or 037
$a =~ s{\\274\\242}{\\s} if (ord("\\") == 188); # $^O eq 'posix-bc'
$b = <<'EOF';
@@ -195,8 +191,71 @@
is $deparsed, $code, 'our $funny_Unicode_chars';
}
-done_testing();
+# [perl #62500]
+$a =
+ `$^X $path "-MO=Deparse" -e "BEGIN{*CORE::GLOBAL::require=sub{1}}" 2>&1`;
+$a =~ s/-e syntax OK\n//g;
+is($a, <<'EOCODF', "CORE::GLOBAL::require override causing panick");
+sub BEGIN {
+ *CORE::GLOBAL::require = sub {
+ 1;
+ }
+ ;
+}
+EOCODF
+# [perl #91384]
+$a =
+ `$^X $path "-MO=Deparse" -e "BEGIN{*Acme::Acme:: = *Acme::}" 2>&1`;
+like($a, qr/-e syntax OK/,
+ "Deparse does not hang when traversing stash circularities");
+
+# [perl #93990]
+@] = ();
+is($deparse->coderef2text(sub{ print "@{]}" }),
+q<{
+ print "@{]}";
+}>, 'curly around to interpolate "@{]}"');
+is($deparse->coderef2text(sub{ print "@{-}" }),
+q<{
+ print "@-";
+}>, 'no need to curly around to interpolate "@-"');
+
+# Strict hints in %^H are mercilessly suppressed
+$a =
+ `$^X $path "-MO=Deparse" -e "use strict; print;" 2>&1`;
+unlike($a, qr/BEGIN/,
+ "Deparse does not emit strict hh hints");
+
+# ambient_pragmas should not mess with strict settings.
+SKIP: {
+ skip "requires 5.11", 1 unless $] >= 5.011;
+ eval q`
+ BEGIN {
+ # Clear out all hints
+ %^H = ();
+ $^H = 0;
+ new B::Deparse -> ambient_pragmas(strict => 'all');
+ }
+ use 5.011; # should enable strict
+ ok !eval '$do_noT_create_a_variable_with_this_name = 1',
+ 'ambient_pragmas do not mess with compiling scope';
+ `;
+}
+
+# multiple statements on format lines
+$a = `$^X $path "-MO=Deparse" -e "format =" -e "\@" -e "x();z()" -e. 2>&1`;
+$a =~ s/-e syntax OK\n//g;
+is($a, <<'EOCODH', 'multiple statements on format lines');
+format STDOUT =
+@
+x(); z()
+.
+EOCODH
+
+
+done_testing($tests);
+
__DATA__
# A constant
1;
@@ -263,6 +322,8 @@
####
# s///e
s/x/'y';/e;
+s/x/$a;/e;
+s/x/complex_expression();/e;
####
# block
{ my $x; }
@@ -376,9 +437,17 @@
# bug #43010
&::::;
####
+# [perl #77172]
+package rt77172;
+sub foo {} foo & & & foo;
+>>>>
+package rt77172;
+foo(&{&} & foo());
+####
# variables as method names
my $bar;
'Foo'->$bar('orz');
+'Foo'->$bar('orz') = 'a stranger stranger than before';
####
# constants as method names
'Foo'->bar('orz');
@@ -386,15 +455,114 @@
# constants as method names without ()
'Foo'->bar;
####
+# [perl #47359] "indirect" method call notation
+our @bar;
+foo{@bar}+1,->foo;
+(foo{@bar}+1),foo();
+foo{@bar}1 xor foo();
+>>>>
+our @bar;
+(foo { @bar } 1)->foo;
+(foo { @bar } 1), foo();
+foo { @bar } 1 xor foo();
+####
# SKIP ?$] < 5.010 && "say not implemented on this Perl version"
+# CONTEXT use feature ':5.10';
# say
say 'foo';
####
+# SKIP ?$] < 5.010 && "say not implemented on this Perl version"
+# CONTEXT use 5.10.0;
+# say in the context of use 5.10.0
+say 'foo';
+####
+# SKIP ?$] < 5.010 && "say not implemented on this Perl version"
+# say with use 5.10.0
+use 5.10.0;
+say 'foo';
+>>>>
+no feature;
+use feature ':5.10';
+say 'foo';
+####
+# SKIP ?$] < 5.010 && "say not implemented on this Perl version"
+# say with use feature ':5.10';
+use feature ':5.10';
+say 'foo';
+>>>>
+use feature 'say', 'state', 'switch';
+say 'foo';
+####
+# SKIP ?$] < 5.010 && "say not implemented on this Perl version"
+# CONTEXT use feature ':5.10';
+# say with use 5.10.0 in the context of use feature
+use 5.10.0;
+say 'foo';
+>>>>
+no feature;
+use feature ':5.10';
+say 'foo';
+####
+# SKIP ?$] < 5.010 && "say not implemented on this Perl version"
+# CONTEXT use 5.10.0;
+# say with use feature ':5.10' in the context of use 5.10.0
+use feature ':5.10';
+say 'foo';
+>>>>
+say 'foo';
+####
+# SKIP ?$] < 5.015 && "__SUB__ not implemented on this Perl version"
+# CONTEXT use feature ':5.15';
+# __SUB__
+__SUB__;
+####
+# SKIP ?$] < 5.015 && "__SUB__ not implemented on this Perl version"
+# CONTEXT use 5.15.0;
+# __SUB__ in the context of use 5.15.0
+__SUB__;
+####
+# SKIP ?$] < 5.015 && "__SUB__ not implemented on this Perl version"
+# __SUB__ with use 5.15.0
+use 5.15.0;
+__SUB__;
+>>>>
+no feature;
+use feature ':5.16';
+__SUB__;
+####
+# SKIP ?$] < 5.015 && "__SUB__ not implemented on this Perl version"
+# __SUB__ with use feature ':5.15';
+use feature ':5.15';
+__SUB__;
+>>>>
+use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch', 'unicode_strings', 'unicode_eval';
+__SUB__;
+####
+# SKIP ?$] < 5.015 && "__SUB__ not implemented on this Perl version"
+# CONTEXT use feature ':5.15';
+# __SUB__ with use 5.15.0 in the context of use feature
+use 5.15.0;
+__SUB__;
+>>>>
+no feature;
+use feature ':5.16';
+__SUB__;
+####
+# SKIP ?$] < 5.015 && "__SUB__ not implemented on this Perl version"
+# CONTEXT use 5.15.0;
+# __SUB__ with use feature ':5.15' in the context of use 5.15.0
+use feature ':5.15';
+__SUB__;
+>>>>
+__SUB__;
+####
# SKIP ?$] < 5.010 && "state vars not implemented on this Perl version"
+# CONTEXT use feature ':5.10';
# state vars
state $x = 42;
####
# SKIP ?$] < 5.010 && "state vars not implemented on this Perl version"
+# CONTEXT use feature ':5.10';
# state var assignment
{
my $y = (state $x = 42);
@@ -401,6 +569,7 @@
}
####
# SKIP ?$] < 5.010 && "state vars not implemented on this Perl version"
+# CONTEXT use feature ':5.10';
# state vars in anonymous subroutines
$a = sub {
state $x;
@@ -425,6 +594,7 @@
my $d = \[];
####
# SKIP ?$] < 5.010 && "smartmatch and given/when not implemented on this Perl version"
+# CONTEXT use feature ':5.10'; no warnings 'experimental::smartmatch';
# implicit smartmatch in given/when
given ('foo') {
when ('bar') { continue; }
@@ -605,9 +775,16 @@
# tests for deparsing of blessed constant with overloaded numification
warn OVERLOADED_NUMIFICATION;
####
-# TODO Only strict 'refs' currently supported
# strict
no strict;
+print $x;
+use strict 'vars';
+print $main::x;
+use strict 'subs';
+print $main::x;
+use strict 'refs';
+print $main::x;
+no strict 'vars';
$x;
####
# TODO Subsets of warnings could be encoded textually, rather than as bitflips.
@@ -690,12 +867,63 @@
#[perl #20444]
"foo" =~ (1 ? /foo/ : /bar/);
"foo" =~ (1 ? y/foo// : /bar/);
+"foo" =~ (1 ? y/foo//r : /bar/);
"foo" =~ (1 ? s/foo// : /bar/);
>>>>
'foo' =~ ($_ =~ /foo/);
'foo' =~ ($_ =~ tr/fo//);
+'foo' =~ ($_ =~ tr/fo//r);
'foo' =~ ($_ =~ s/foo//);
####
+# The fix for [perl #20444] broke this.
+'foo' =~ do { () };
+####
+# [perl #81424] match against aelemfast_lex
+my @s;
+print /$s[1]/;
+####
+# /$#a/
+print /$#main::a/;
+####
+# [perl #91318] /regexp/applaud
+print /a/a, s/b/c/a;
+print /a/aa, s/b/c/aa;
+print /a/p, s/b/c/p;
+print /a/l, s/b/c/l;
+print /a/u, s/b/c/u;
+{
+ use feature "unicode_strings";
+ print /a/d, s/b/c/d;
+}
+{
+ use re "/u";
+ print /a/d, s/b/c/d;
+}
+{
+ use 5.012;
+ print /a/d, s/b/c/d;
+}
+>>>>
+print /a/a, s/b/c/a;
+print /a/aa, s/b/c/aa;
+print /a/p, s/b/c/p;
+print /a/l, s/b/c/l;
+print /a/u, s/b/c/u;
+{
+ use feature 'unicode_strings';
+ print /a/d, s/b/c/d;
+}
+{
+ BEGIN { $^H{'reflags'} = '0';
+ $^H{'reflags_charset'} = '2'; }
+ print /a/d, s/b/c/d;
+}
+{
+ no feature;
+ use feature ':5.12';
+ print /a/d, s/b/c/d;
+}
+####
# Test @threadsv_names under 5005threads
foreach $' (1, 2) {
sleep $';
@@ -706,3 +934,456 @@
####
# y/uni/code/
tr/\x{345}/\x{370}/;
+####
+# [perl #90898]
+<a,>;
+####
+# [perl #91008]
+each $@;
+keys $~;
+values $!;
+####
+# readpipe with complex expression
+readpipe $a + $b;
+####
+# aelemfast
+$b::a[0] = 1;
+####
+# aelemfast for a lexical
+my @a;
+$a[0] = 1;
+####
+# feature features without feature
+# CONTEXT no warnings 'experimental::smartmatch';
+CORE::state $x;
+CORE::say $x;
+CORE::given ($x) {
+ CORE::when (3) {
+ continue;
+ }
+ CORE::default {
+ CORE::break;
+ }
+}
+CORE::evalbytes '';
+() = CORE::__SUB__;
+() = CORE::fc $x;
+####
+# feature features when feature has been disabled by use VERSION
+# CONTEXT no warnings 'experimental::smartmatch';
+use feature (sprintf(":%vd", $^V));
+use 1;
+CORE::state $x;
+CORE::say $x;
+CORE::given ($x) {
+ CORE::when (3) {
+ continue;
+ }
+ CORE::default {
+ CORE::break;
+ }
+}
+CORE::evalbytes '';
+() = CORE::__SUB__;
+>>>>
+CORE::state $x;
+CORE::say $x;
+CORE::given ($x) {
+ CORE::when (3) {
+ continue;
+ }
+ CORE::default {
+ CORE::break;
+ }
+}
+CORE::evalbytes '';
+() = CORE::__SUB__;
+####
+# (the above test with CONTEXT, and the output is equivalent but different)
+# CONTEXT use feature ':5.10'; no warnings 'experimental::smartmatch';
+# feature features when feature has been disabled by use VERSION
+use feature (sprintf(":%vd", $^V));
+use 1;
+CORE::state $x;
+CORE::say $x;
+CORE::given ($x) {
+ CORE::when (3) {
+ continue;
+ }
+ CORE::default {
+ CORE::break;
+ }
+}
+CORE::evalbytes '';
+() = CORE::__SUB__;
+>>>>
+no feature;
+use feature ':default';
+CORE::state $x;
+CORE::say $x;
+CORE::given ($x) {
+ CORE::when (3) {
+ continue;
+ }
+ CORE::default {
+ CORE::break;
+ }
+}
+CORE::evalbytes '';
+() = CORE::__SUB__;
+####
+# Feature hints
+use feature 'current_sub', 'evalbytes';
+print;
+use 1;
+print;
+use 5.014;
+print;
+no feature 'unicode_strings';
+print;
+>>>>
+use feature 'current_sub', 'evalbytes';
+print $_;
+no feature;
+use feature ':default';
+print $_;
+no feature;
+use feature ':5.12';
+print $_;
+no feature 'unicode_strings';
+print $_;
+####
+# $#- $#+ $#{%} etc.
+my @x;
+ at x = ($#{`}, $#{~}, $#{!}, $#{@}, $#{$}, $#{%}, $#{^}, $#{&}, $#{*});
+ at x = ($#{(}, $#{)}, $#{[}, $#{{}, $#{]}, $#{}}, $#{'}, $#{"}, $#{,});
+ at x = ($#{<}, $#{.}, $#{>}, $#{/}, $#{?}, $#{=}, $#+, $#{\}, $#{|}, $#-);
+ at x = ($#{;}, $#{:});
+####
+# ${#} interpolated
+# It's a known TODO that warnings are deparsed as bits, not textually.
+no warnings;
+() = "${#}a";
+####
+# [perl #86060] $( $| $) in regexps need braces
+/${(}/;
+/${|}/;
+/${)}/;
+/${(}${|}${)}/;
+####
+# ()[...]
+my(@a) = ()[()];
+####
+# sort(foo(bar))
+# sort(foo(bar)) is interpreted as sort &foo(bar)
+# sort foo(bar) is interpreted as sort foo bar
+# parentheses are not optional in this case
+print sort(foo('bar'));
+>>>>
+print sort(foo('bar'));
+####
+# substr assignment
+substr(my $a, 0, 0) = (foo(), bar());
+$a++;
+####
+# This following line works around an unfixed bug that we are not trying to
+# test for here:
+# CONTEXT BEGIN { $^H{a} = "b"; delete $^H{a} } # make %^H localised
+# hint hash
+BEGIN { $^H{'foo'} = undef; }
+{
+ BEGIN { $^H{'bar'} = undef; }
+ {
+ BEGIN { $^H{'baz'} = undef; }
+ {
+ print $_;
+ }
+ print $_;
+ }
+ print $_;
+}
+BEGIN { $^H{q[']} = '('; }
+print $_;
+####
+# This following line works around an unfixed bug that we are not trying to
+# test for here:
+# CONTEXT BEGIN { $^H{a} = "b"; delete $^H{a} } # make %^H localised
+# hint hash changes that serialise the same way with sort %hh
+BEGIN { $^H{'a'} = 'b'; }
+{
+ BEGIN { $^H{'b'} = 'a'; delete $^H{'a'}; }
+ print $_;
+}
+print $_;
+####
+# [perl #47361] do({}) and do +{} (variants of do-file)
+do({});
+do +{};
+sub foo::do {}
+package foo;
+CORE::do({});
+CORE::do +{};
+>>>>
+do({});
+do({});
+package foo;
+CORE::do({});
+CORE::do({});
+####
+# [perl #77096] functions that do not follow the llafr
+() = (return 1) + time;
+() = (return ($1 + $2) * $3) + time;
+() = (return ($a xor $b)) + time;
+() = (do 'file') + time;
+() = (do ($1 + $2) * $3) + time;
+() = (do ($1 xor $2)) + time;
+() = (goto 1) + 3;
+() = (require 'foo') + 3;
+() = (require foo) + 3;
+() = (CORE::dump 1) + 3;
+() = (last 1) + 3;
+() = (next 1) + 3;
+() = (redo 1) + 3;
+() = (-R $_) + 3;
+() = (-W $_) + 3;
+() = (-X $_) + 3;
+() = (-r $_) + 3;
+() = (-w $_) + 3;
+() = (-x $_) + 3;
+####
+# [perl #97476] not() *does* follow the llafr
+$_ = ($a xor not +($1 || 2) ** 2);
+####
+# Precedence conundrums with argument-less function calls
+() = (eof) + 1;
+() = (return) + 1;
+() = (return, 1);
+() = warn;
+() = warn() + 1;
+() = setpgrp() + 1;
+####
+# loopexes have assignment prec
+() = (CORE::dump a) | 'b';
+() = (goto a) | 'b';
+() = (last a) | 'b';
+() = (next a) | 'b';
+() = (redo a) | 'b';
+####
+# [perl #63558] open local(*FH)
+open local *FH;
+pipe local *FH, local *FH;
+####
+# [perl #91416] open "string"
+open 'open';
+open '####';
+open '^A';
+open "\ca";
+>>>>
+open *open;
+open '####';
+open '^A';
+open *^A;
+####
+# "string"->[] ->{}
+no strict 'vars';
+() = 'open'->[0]; #aelemfast
+() = '####'->[0];
+() = '^A'->[0];
+() = "\ca"->[0];
+() = 'a::]b'->[0];
+() = 'open'->[$_]; #aelem
+() = '####'->[$_];
+() = '^A'->[$_];
+() = "\ca"->[$_];
+() = 'a::]b'->[$_];
+() = 'open'->{0}; #helem
+() = '####'->{0};
+() = '^A'->{0};
+() = "\ca"->{0};
+() = 'a::]b'->{0};
+>>>>
+no strict 'vars';
+() = $open[0];
+() = '####'->[0];
+() = '^A'->[0];
+() = $^A[0];
+() = 'a::]b'->[0];
+() = $open[$_];
+() = '####'->[$_];
+() = '^A'->[$_];
+() = $^A[$_];
+() = 'a::]b'->[$_];
+() = $open{'0'};
+() = '####'->{'0'};
+() = '^A'->{'0'};
+() = $^A{'0'};
+() = 'a::]b'->{'0'};
+####
+# [perl #74740] -(f()) vs -f()
+$_ = -(f());
+####
+# require <binop>
+require 'a' . $1;
+####
+#[perl #30504] foreach-my postfix/prefix difference
+$_ = 'foo' foreach my ($foo1, $bar1, $baz1);
+foreach (my ($foo2, $bar2, $baz2)) { $_ = 'foo' }
+foreach my $i (my ($foo3, $bar3, $baz3)) { $i = 'foo' }
+>>>>
+$_ = 'foo' foreach (my($foo1, $bar1, $baz1));
+foreach $_ (my($foo2, $bar2, $baz2)) {
+ $_ = 'foo';
+}
+foreach my $i (my($foo3, $bar3, $baz3)) {
+ $i = 'foo';
+}
+####
+#[perl #108224] foreach with continue block
+foreach (1 .. 3) { print } continue { print "\n" }
+foreach (1 .. 3) { } continue { }
+foreach my $i (1 .. 3) { print $i } continue { print "\n" }
+foreach my $i (1 .. 3) { } continue { }
+>>>>
+foreach $_ (1 .. 3) {
+ print $_;
+}
+continue {
+ print "\n";
+}
+foreach $_ (1 .. 3) {
+ ();
+}
+continue {
+ ();
+}
+foreach my $i (1 .. 3) {
+ print $i;
+}
+continue {
+ print "\n";
+}
+foreach my $i (1 .. 3) {
+ ();
+}
+continue {
+ ();
+}
+####
+# file handles
+no strict;
+my $mfh;
+open F;
+open *F;
+open $fh;
+open $mfh;
+open 'a+b';
+select *F;
+select F;
+select $f;
+select $mfh;
+select 'a+b';
+####
+# 'my' works with padrange op
+my($z, @z);
+my $m1;
+$m1 = 1;
+$z = $m1;
+my $m2 = 2;
+my($m3, $m4);
+($m3, $m4) = (1, 2);
+ at z = ($m3, $m4);
+my($m5, $m6) = (1, 2);
+my($m7, undef, $m8) = (1, 2, 3);
+ at z = ($m7, undef, $m8);
+($m7, undef, $m8) = (1, 2, 3);
+####
+# 'our/local' works with padrange op
+no strict;
+our($z, @z);
+our $o1;
+local $o11;
+$o1 = 1;
+local $o1 = 1;
+$z = $o1;
+$z = local $o1;
+our $o2 = 2;
+our($o3, $o4);
+($o3, $o4) = (1, 2);
+local($o3, $o4) = (1, 2);
+ at z = ($o3, $o4);
+ at z = local($o3, $o4);
+our($o5, $o6) = (1, 2);
+our($o7, undef, $o8) = (1, 2, 3);
+ at z = ($o7, undef, $o8);
+ at z = local($o7, undef, $o8);
+($o7, undef, $o8) = (1, 2, 3);
+local($o7, undef, $o8) = (1, 2, 3);
+####
+# 'state' works with padrange op
+no strict;
+use feature 'state';
+state($z, @z);
+state $s1;
+$s1 = 1;
+$z = $s1;
+state $s2 = 2;
+state($s3, $s4);
+($s3, $s4) = (1, 2);
+ at z = ($s3, $s4);
+# assignment of state lists isn't implemented yet
+#state($s5, $s6) = (1, 2);
+#state($s7, undef, $s8) = (1, 2, 3);
+#@z = ($s7, undef, $s8);
+($s7, undef, $s8) = (1, 2, 3);
+####
+# anon lists with padrange
+my($a, $b);
+my $c = [$a, $b];
+my $d = {$a, $b};
+####
+# slices with padrange
+my($a, $b);
+my(@x, %y);
+ at x = @x[$a, $b];
+ at x = @y{$a, $b};
+####
+# binops with padrange
+my($a, $b, $c);
+$c = $a cmp $b;
+$c = $a + $b;
+$a += $b;
+$c = $a - $b;
+$a -= $b;
+$c = my $a1 cmp $b;
+$c = my $a2 + $b;
+$a += my $b1;
+$c = my $a3 - $b;
+$a -= my $b2;
+####
+# 'x' with padrange
+my($a, $b, $c, $d, @e);
+$c = $a x $b;
+$a x= $b;
+ at e = ($a) x $d;
+ at e = ($a, $b) x $d;
+ at e = ($a, $b, $c) x $d;
+ at e = ($a, 1) x $d;
+####
+# @_ with padrange
+my($a, $b, $c) = @_;
+####
+# SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version"
+# TODO unimplemented in B::Deparse; RT #116553
+# lexical subroutine
+use feature 'lexical_subs';
+no warnings "experimental::lexical_subs";
+my sub f {}
+print f();
+####
+# SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version"
+# TODO unimplemented in B::Deparse; RT #116553
+# lexical "state" subroutine
+use feature 'state', 'lexical_subs';
+no warnings 'experimental::lexical_subs';
+state sub f {}
+print f();
Property changes on: trunk/contrib/perl/dist/B-Deparse/t/deparse.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/dist/B-Lint/lib/B/Lint/Debug.pm
===================================================================
--- trunk/contrib/perl/dist/B-Lint/lib/B/Lint/Debug.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/B-Lint/lib/B/Lint/Debug.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/B-Lint/lib/B/Lint/Debug.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/B-Lint/lib/B/Lint.pm
===================================================================
--- trunk/contrib/perl/dist/B-Lint/lib/B/Lint.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/B-Lint/lib/B/Lint.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/B-Lint/lib/B/Lint.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/B-Lint/t/lint.t
===================================================================
--- trunk/contrib/perl/dist/B-Lint/t/lint.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/B-Lint/t/lint.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/B-Lint/t/lint.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm
===================================================================
--- trunk/contrib/perl/dist/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/Cwd.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/Cwd.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/Cwd.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -42,7 +42,7 @@
my $cwd = cwd();
-The cwd() is the most natural form for the current architecture. For
+The cwd() is the most natural form for the current architecture. For
most systems it is identical to `pwd` (but without the trailing line
terminator).
@@ -57,9 +57,9 @@
undef but will probably leave you in a different directory. For a
measure of extra security, if everything appears to have worked, the
fastcwd() function will check that it leaves you in the same directory
-that it started in. If it has changed it will C<die> with the message
+that it started in. If it has changed it will C<die> with the message
"Unstable directory path, current directory changed
-unexpectedly". That should never happen.
+unexpectedly". That should never happen.
=item fastgetcwd
@@ -136,8 +136,8 @@
=item *
Actually, on Mac OS, the C<getcwd()>, C<fastgetcwd()> and C<fastcwd()>
-functions are all aliases for the C<cwd()> function, which, on Mac OS,
-calls `pwd`. Likewise, the C<abs_path()> function is an alias for
+functions are all aliases for the C<cwd()> function, which, on Mac OS,
+calls `pwd`. Likewise, the C<abs_path()> function is an alias for
C<fast_abs_path()>.
=back
@@ -171,9 +171,9 @@
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
-$VERSION = '3.36';
+$VERSION = '3.40';
my $xs_version = $VERSION;
-$VERSION = eval $VERSION;
+$VERSION =~ tr/_//;
@ISA = qw/ Exporter /;
@EXPORT = qw(cwd getcwd fastcwd fastgetcwd);
@@ -253,9 +253,6 @@
}
};
-# Must be after the DynaLoader stuff:
-$VERSION = eval $VERSION;
-
# Big nasty table of function aliases
my %METHOD_MAP =
(
@@ -582,6 +579,7 @@
unless (opendir(PARENT, $dotdots))
{
# probably a permissions issue. Try the native command.
+ require File::Spec;
return File::Spec->rel2abs( $start, _backtick_pwd() );
}
unless (@cst = stat($dotdots))
@@ -626,8 +624,8 @@
# Detaint else we'll explode in taint mode. This is safe because
# we're not doing anything dangerous with it.
- ($path) = $path =~ /(.*)/;
- ($cwd) = $cwd =~ /(.*)/;
+ ($path) = $path =~ /(.*)/s;
+ ($cwd) = $cwd =~ /(.*)/s;
unless (-e $path) {
_croak("$path: No such file or directory");
@@ -755,7 +753,14 @@
}
sub _win32_cwd {
- if (eval 'defined &DynaLoader::boot_DynaLoader') {
+ # Need to avoid taking any sort of reference to the typeglob or the code in
+ # the optree, so that this tests the runtime state of things, as the
+ # ExtUtils::MakeMaker tests for "miniperl" need to be able to fake things at
+ # runtime by deleting the subroutine. *foo{THING} syntax on a symbol table
+ # lookup avoids needing a string eval, which has been reported to cause
+ # problems (for reasons that we haven't been able to get to the bottom of -
+ # rt.cpan.org #56225)
+ if (*{$DynaLoader::{boot_DynaLoader}}{CODE}) {
$ENV{'PWD'} = Win32::GetCwd();
}
else { # miniperl
Property changes on: trunk/contrib/perl/dist/Cwd/Cwd.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/Cwd.xs
===================================================================
--- trunk/contrib/perl/dist/Cwd/Cwd.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/Cwd.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,5 @@
+#define PERL_NO_GET_CONTEXT
+
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
@@ -34,7 +36,7 @@
* products derived from this software without specific prior written
* permission.
*
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
@@ -53,6 +55,7 @@
#define MAXSYMLINKS 8
#endif
+#ifndef VMS
/*
* char *realpath(const char *path, char resolved[MAXPATHLEN]);
*
@@ -64,15 +67,11 @@
char *
bsd_realpath(const char *path, char resolved[MAXPATHLEN])
{
-#ifdef VMS
- dTHX;
- return Perl_rmsexpand(aTHX_ (char*)path, resolved, NULL, 0);
-#else
char *p, *q, *s;
size_t left_len, resolved_len;
unsigned symlinks;
int serrno;
- char left[MAXPATHLEN], next_token[MAXPATHLEN], symlink[MAXPATHLEN];
+ char left[MAXPATHLEN], next_token[MAXPATHLEN];
serrno = errno;
symlinks = 0;
@@ -97,11 +96,11 @@
}
/*
- * Iterate over path components in `left'.
+ * Iterate over path components in 'left'.
*/
while (left_len != 0) {
/*
- * Extract the next path component and adjust `left'
+ * Extract the next path component and adjust 'left'
* and its length.
*/
p = strchr(left, '/');
@@ -151,7 +150,7 @@
errno = ENAMETOOLONG;
return (NULL);
}
- #if defined(HAS_LSTAT) && defined(HAS_READLINK) && defined(HAS_SYMLINK)
+#if defined(HAS_LSTAT) && defined(HAS_READLINK) && defined(HAS_SYMLINK)
{
struct stat sb;
if (lstat(resolved, &sb) != 0) {
@@ -163,6 +162,7 @@
}
if (S_ISLNK(sb.st_mode)) {
int slen;
+ char symlink[MAXPATHLEN];
if (symlinks++ > MAXSYMLINKS) {
errno = ELOOP;
@@ -186,27 +186,27 @@
/*
* If there are any path components left, then
* append them to symlink. The result is placed
- * in `left'.
+ * in 'left'.
*/
if (p != NULL) {
if (symlink[slen - 1] != '/') {
if ((STRLEN)(slen + 1) >= (STRLEN)sizeof(symlink)) {
- errno = ENAMETOOLONG;
+ errno = ENAMETOOLONG;
return (NULL);
- }
+ }
symlink[slen] = '/';
symlink[slen + 1] = 0;
- }
+ }
left_len = my_strlcat(symlink, left, sizeof(left));
if (left_len >= sizeof(left)) {
errno = ENAMETOOLONG;
return (NULL);
- }
- }
+ }
+ }
left_len = my_strlcpy(left, symlink, sizeof(left));
}
}
- #endif
+#endif
}
/*
@@ -216,8 +216,8 @@
if (resolved_len > 1 && resolved[resolved_len - 1] == '/')
resolved[resolved_len - 1] = '\0';
return (resolved);
+}
#endif
-}
#ifndef SV_CWD_RETURN_UNDEF
#define SV_CWD_RETURN_UNDEF \
@@ -247,7 +247,7 @@
#ifndef getcwd_sv
/* Taken from perl 5.8's util.c */
#define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a)
-int Perl_getcwd_sv(pTHX_ register SV *sv)
+int Perl_getcwd_sv(pTHX_ SV *sv)
{
#ifndef PERL_MICRO
@@ -399,27 +399,18 @@
MODULE = Cwd PACKAGE = Cwd
-PROTOTYPES: ENABLE
+PROTOTYPES: DISABLE
void
-fastcwd()
-PROTOTYPE: DISABLE
-PPCODE:
-{
- dXSTARG;
- getcwd_sv(TARG);
- XSprePUSH; PUSHTARG;
-#ifndef INCOMPLETE_TAINTS
- SvTAINTED_on(TARG);
-#endif
-}
-
-void
getcwd(...)
-PROTOTYPE: DISABLE
+ALIAS:
+ fastcwd=1
PPCODE:
{
dXSTARG;
+ /* fastcwd takes zero parameters: */
+ if (ix == 1 && items != 0)
+ croak_xs_usage(cv, "");
getcwd_sv(TARG);
XSprePUSH; PUSHTARG;
#ifndef INCOMPLETE_TAINTS
@@ -430,17 +421,20 @@
void
abs_path(pathsv=Nullsv)
SV *pathsv
-PROTOTYPE: DISABLE
PPCODE:
{
dXSTARG;
- char *path;
+ char *const path = pathsv ? SvPV_nolen(pathsv) : (char *)".";
char buf[MAXPATHLEN];
- path = pathsv ? SvPV_nolen(pathsv) : (char *)".";
-
- if (bsd_realpath(path, buf)) {
- sv_setpvn(TARG, buf, strlen(buf));
+ if (
+#ifdef VMS
+ Perl_rmsexpand(aTHX_ path, buf, NULL, 0)
+#else
+ bsd_realpath(path, buf)
+#endif
+ ) {
+ sv_setpv_mg(TARG, buf);
SvPOK_only(TARG);
SvTAINTED_on(TARG);
}
@@ -447,7 +441,7 @@
else
sv_setsv(TARG, &PL_sv_undef);
- XSprePUSH; PUSHTARG;
+ XSprePUSH; PUSHs(TARG);
#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(TARG);
#endif
@@ -457,6 +451,7 @@
void
getdcwd(...)
+PROTOTYPE: ENABLE
PPCODE:
{
dXSTARG;
@@ -475,7 +470,7 @@
New(0,dir,MAXPATHLEN,char);
if (_getdcwd(drive, dir, MAXPATHLEN)) {
- sv_setpvn(TARG, dir, strlen(dir));
+ sv_setpv_mg(TARG, dir);
SvPOK_only(TARG);
}
else
@@ -483,7 +478,7 @@
Safefree(dir);
- XSprePUSH; PUSHTARG;
+ XSprePUSH; PUSHs(TARG);
#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(TARG);
#endif
Property changes on: trunk/contrib/perl/dist/Cwd/Cwd.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Cygwin.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/Cygwin.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/Cygwin.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,8 +4,8 @@
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.33';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Cygwin.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Epoc.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/Epoc.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/Epoc.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -3,8 +3,8 @@
use strict;
use vars qw($VERSION @ISA);
-$VERSION = '3.33';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
require File::Spec::Unix;
@ISA = qw(File::Spec::Unix);
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Epoc.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Functions.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/Functions.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/Functions.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,8 +5,8 @@
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-$VERSION = '3.33';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
require Exporter;
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Functions.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Mac.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/Mac.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/Mac.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,8 +4,8 @@
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.34';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
@@ -156,13 +156,16 @@
Unix:
Unix->catdir("","") = "/"
Unix->catdir("",".") = "/"
- Unix->catdir("","..") = "/" # can't go beyond root
+ Unix->catdir("","..") = "/" # can't go
+ # beyond root
Unix->catdir("",".","..","..","a") = "/a"
Mac:
- Mac->catdir("","") = rootdir() # (e.g. "HD:")
+ Mac->catdir("","") = rootdir() # (e.g. "HD:")
Mac->catdir("",":") = rootdir()
- Mac->catdir("","::") = rootdir() # can't go beyond root
- Mac->catdir("",":","::","::","a") = rootdir() . "a:" # (e.g. "HD:a:")
+ Mac->catdir("","::") = rootdir() # can't go
+ # beyond root
+ Mac->catdir("",":","::","::","a") = rootdir() . "a:"
+ # (e.g. "HD:a:")
However, this approach is limited to the first arguments following
"root" (again, see C<Unix-E<gt>canonpath()> ). If there are more
@@ -400,10 +403,11 @@
E.g.
- File::Spec->file_name_is_absolute("a"); # false (relative)
- File::Spec->file_name_is_absolute(":a:b:"); # false (relative)
- File::Spec->file_name_is_absolute("MacintoshHD:"); # true (absolute)
- File::Spec->file_name_is_absolute(""); # true (absolute)
+ File::Spec->file_name_is_absolute("a"); # false (relative)
+ File::Spec->file_name_is_absolute(":a:b:"); # false (relative)
+ File::Spec->file_name_is_absolute("MacintoshHD:");
+ # true (absolute)
+ File::Spec->file_name_is_absolute(""); # true (absolute)
=cut
@@ -440,7 +444,8 @@
=item splitpath
($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
+ ($volume,$directories,$file) = File::Spec->splitpath( $path,
+ $no_file );
Splits a path into volume, directory, and filename portions.
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Mac.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/OS2.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/OS2.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/OS2.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,8 +4,8 @@
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.33';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/OS2.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Unix.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/Unix.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/Unix.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -3,8 +3,8 @@
use strict;
use vars qw($VERSION);
-$VERSION = '3.33';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
=head1 NAME
@@ -135,7 +135,7 @@
$ENV{TMPDIR}
/tmp
-Since perl 5.8.0, if running under taint mode, and if $ENV{TMPDIR}
+If running under taint mode, and if $ENV{TMPDIR}
is tainted, it is not used.
=cut
@@ -151,6 +151,9 @@
require Scalar::Util;
@dirlist = grep { ! Scalar::Util::tainted($_) } @dirlist;
}
+ elsif ($] < 5.007) { # No ${^TAINT} before 5.8
+ @dirlist = grep { eval { eval('1'.substr $_,0,0) } } @dirlist;
+ }
}
foreach (@dirlist) {
next unless defined && -d && -w _;
@@ -238,7 +241,8 @@
=item splitpath
($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
+ ($volume,$directories,$file) = File::Spec->splitpath( $path,
+ $no_file );
Splits a path into volume, directory, and filename portions. On systems
with no concept of volume, returns '' for volume.
@@ -348,9 +352,11 @@
If $path is relative, it is converted to absolute form using L</rel2abs()>.
This means that it is taken to be relative to L<cwd()|Cwd>.
-No checks against the filesystem are made. On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
+No checks against the filesystem are made, so the result may not be correct if
+C<$base> contains symbolic links. (Apply
+L<Cwd::abs_path()|Cwd/abs_path> beforehand if that
+is a concern.) On VMS, there is interaction with the working environment, as
+logicals and macros are expanded.
Based on code written by Shigio Yamaguchi.
@@ -362,29 +368,33 @@
($path, $base) = map $self->canonpath($_), $path, $base;
+ my $path_directories;
+ my $base_directories;
+
if (grep $self->file_name_is_absolute($_), $path, $base) {
($path, $base) = map $self->rel2abs($_), $path, $base;
- }
- else {
- # save a couple of cwd()s if both paths are relative
- ($path, $base) = map $self->catdir('/', $_), $path, $base;
- }
- my ($path_volume) = $self->splitpath($path, 1);
- my ($base_volume) = $self->splitpath($base, 1);
+ my ($path_volume) = $self->splitpath($path, 1);
+ my ($base_volume) = $self->splitpath($base, 1);
- # Can't relativize across volumes
- return $path unless $path_volume eq $base_volume;
+ # Can't relativize across volumes
+ return $path unless $path_volume eq $base_volume;
- my $path_directories = ($self->splitpath($path, 1))[1];
- my $base_directories = ($self->splitpath($base, 1))[1];
+ $path_directories = ($self->splitpath($path, 1))[1];
+ $base_directories = ($self->splitpath($base, 1))[1];
- # For UNC paths, the user might give a volume like //foo/bar that
- # strictly speaking has no directory portion. Treat it as if it
- # had the root directory for that volume.
- if (!length($base_directories) and $self->file_name_is_absolute($base)) {
- $base_directories = $self->rootdir;
+ # For UNC paths, the user might give a volume like //foo/bar that
+ # strictly speaking has no directory portion. Treat it as if it
+ # had the root directory for that volume.
+ if (!length($base_directories) and $self->file_name_is_absolute($base)) {
+ $base_directories = $self->rootdir;
+ }
}
+ else {
+ my $wd= ($self->splitpath($self->_cwd(), 1))[1];
+ $path_directories = $self->catdir($wd, $path);
+ $base_directories = $self->catdir($wd, $base);
+ }
# Now, remove all leading components that are the same
my @pathchunks = $self->splitdir( $path_directories );
@@ -391,19 +401,39 @@
my @basechunks = $self->splitdir( $base_directories );
if ($base_directories eq $self->rootdir) {
+ return $self->curdir if $path_directories eq $self->rootdir;
shift @pathchunks;
return $self->canonpath( $self->catpath('', $self->catdir( @pathchunks ), '') );
}
+ my @common;
while (@pathchunks && @basechunks && $self->_same($pathchunks[0], $basechunks[0])) {
- shift @pathchunks ;
+ push @common, shift @pathchunks ;
shift @basechunks ;
}
return $self->curdir unless @pathchunks || @basechunks;
- # $base now contains the directories the resulting relative path
- # must ascend out of before it can descend to $path_directory.
- my $result_dirs = $self->catdir( ($self->updir) x @basechunks, @pathchunks );
+ # @basechunks now contains the directories the resulting relative path
+ # must ascend out of before it can descend to $path_directory. If there
+ # are updir components, we must descend into the corresponding directories
+ # (this only works if they are no symlinks).
+ my @reverse_base;
+ while( defined(my $dir= shift @basechunks) ) {
+ if( $dir ne $self->updir ) {
+ unshift @reverse_base, $self->updir;
+ push @common, $dir;
+ }
+ elsif( @common ) {
+ if( @reverse_base && $reverse_base[0] eq $self->updir ) {
+ shift @reverse_base;
+ pop @common;
+ }
+ else {
+ unshift @reverse_base, pop @common;
+ }
+ }
+ }
+ my $result_dirs = $self->catdir( @reverse_base, @pathchunks );
return $self->canonpath( $self->catpath('', $result_dirs, '') );
}
@@ -469,6 +499,8 @@
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
+Please submit bug reports and patches to perlbug at perl.org.
+
=head1 SEE ALSO
L<File::Spec>
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Unix.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/VMS.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/VMS.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/VMS.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,8 +4,8 @@
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.34';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
@@ -27,16 +27,9 @@
the semantics.
The default behavior is to allow either VMS or Unix syntax on input and to
-return VMS syntax on output, even when Unix syntax was given on input.
+return VMS syntax on output unless Unix syntax has been explicity requested
+via the C<DECC$FILENAME_UNIX_REPORT> CRTL feature.
-When used with a Perl of version 5.10 or greater and a CRTL possessing the
-relevant capabilities, override behavior depends on the CRTL features
-C<DECC$FILENAME_UNIX_REPORT> and C<DECC$EFS_CHARSET>. When the
-C<DECC$EFS_CHARSET> feature is enabled and the input parameters are clearly
-in Unix syntax, the output will be in Unix syntax. If
-C<DECC$FILENAME_UNIX_REPORT> is enabled and the output syntax cannot be
-determined from the input syntax, the output will be in Unix syntax.
-
=over 4
=cut
@@ -64,23 +57,10 @@
return $unix_rpt;
}
-# Need to look up the EFS character set mode. This may become a dynamic
-# mode in the future.
-sub _efs {
- my $efs;
- if ($use_feature) {
- $efs = VMS::Feature::current("efs_charset");
- } else {
- my $env_efs = $ENV{'DECC$EFS_CHARSET'} || '';
- $efs = $env_efs =~ /^[ET1]/i;
- }
- return $efs;
-}
-
=item canonpath (override)
-Removes redundant portions of file specifications according to the syntax
-detected.
+Removes redundant portions of file specifications and returns results
+in native syntax unless Unix filename reporting has been enabled.
=cut
@@ -90,30 +70,24 @@
return undef unless defined $path;
- my $efs = $self->_efs;
+ my $unix_rpt = $self->_unix_rpt;
- if ($path =~ m|/|) { # Fake Unix
+ if ($path =~ m|/|) {
my $pathify = $path =~ m|/\Z(?!\n)|;
$path = $self->SUPER::canonpath($path);
- # Do not convert to VMS when EFS character sets are in use
- return $path if $efs;
-
- if ($pathify) { return vmspath($path); }
- else { return vmsify($path); }
+ return $path if $unix_rpt;
+ $path = $pathify ? vmspath($path) : vmsify($path);
}
- else {
-#FIXME - efs parsing has different rules. Characters in a VMS filespec
-# are only delimiters if not preceded by '^';
-
- $path =~ tr/<>/[]/; # < and > ==> [ and ]
- $path =~ s/\]\[\./\.\]\[/g; # ][. ==> .][
- $path =~ s/\[000000\.\]\[/\[/g; # [000000.][ ==> [
- $path =~ s/\[000000\./\[/g; # [000000. ==> [
- $path =~ s/\.\]\[000000\]/\]/g; # .][000000] ==> ]
- $path =~ s/\.\]\[/\./g; # foo.][bar ==> foo.bar
- 1 while ($path =~ s/([\[\.])(-+)\.(-+)([\.\]])/$1$2$3$4/);
+ $path =~ s/(?<!\^)</[/; # < and > ==> [ and ]
+ $path =~ s/(?<!\^)>/]/;
+ $path =~ s/(?<!\^)\]\[\./\.\]\[/g; # ][. ==> .][
+ $path =~ s/(?<!\^)\[000000\.\]\[/\[/g; # [000000.][ ==> [
+ $path =~ s/(?<!\^)\[000000\./\[/g; # [000000. ==> [
+ $path =~ s/(?<!\^)\.\]\[000000\]/\]/g; # .][000000] ==> ]
+ $path =~ s/(?<!\^)\.\]\[/\./g; # foo.][bar ==> foo.bar
+ 1 while ($path =~ s/(?<!\^)([\[\.])(-+)\.(-+)([\.\]])/$1$2$3$4/);
# That loop does the following
# with any amount of dashes:
# .-.-. ==> .--.
@@ -120,7 +94,7 @@
# [-.-. ==> [--.
# .-.-] ==> .--]
# [-.-] ==> [--]
- 1 while ($path =~ s/([\[\.])[^\]\.]+\.-(-+)([\]\.])/$1$2$3/);
+ 1 while ($path =~ s/(?<!\^)([\[\.])[^\]\.]+\.-(-+)([\]\.])/$1$2$3/);
# That loop does the following
# with any amount (minimum 2)
# of dashes:
@@ -130,21 +104,23 @@
# [foo.--] ==> [-]
#
# And then, the remaining cases
- $path =~ s/\[\.-/[-/; # [.- ==> [-
- $path =~ s/\.[^\]\.]+\.-\./\./g; # .foo.-. ==> .
- $path =~ s/\[[^\]\.]+\.-\./\[/g; # [foo.-. ==> [
- $path =~ s/\.[^\]\.]+\.-\]/\]/g; # .foo.-] ==> ]
- $path =~ s/\[[^\]\.]+\.-\]/\[000000\]/g;# [foo.-] ==> [000000]
- $path =~ s/\[\]// unless $path eq '[]'; # [] ==>
- return $path;
- }
+ $path =~ s/(?<!\^)\[\.-/[-/; # [.- ==> [-
+ $path =~ s/(?<!\^)\.[^\]\.]+\.-\./\./g; # .foo.-. ==> .
+ $path =~ s/(?<!\^)\[[^\]\.]+\.-\./\[/g; # [foo.-. ==> [
+ $path =~ s/(?<!\^)\.[^\]\.]+\.-\]/\]/g; # .foo.-] ==> ]
+ # [foo.-] ==> [000000]
+ $path =~ s/(?<!\^)\[[^\]\.]+\.-\]/\[000000\]/g;
+ # [] ==>
+ $path =~ s/(?<!\^)\[\]// unless $path eq '[]';
+ return $unix_rpt ? unixify($path) : $path;
}
=item catdir (override)
Concatenates a list of file specifications, and returns the result as a
-directory specification. No check is made for "impossible"
-cases (e.g. elements other than the first being absolute filespecs).
+native directory specification unless the Unix filename reporting feature
+has been enabled. No check is made for "impossible" cases (e.g. elements
+other than the first being absolute filespecs).
=cut
@@ -152,171 +128,39 @@
my $self = shift;
my $dir = pop;
- my $efs = $self->_efs;
my $unix_rpt = $self->_unix_rpt;
-
my @dirs = grep {defined() && length()} @_;
- if ($efs) {
- # Legacy mode removes blank entries.
- # But that breaks existing generic perl code that
- # uses a blank path at the beginning of the array
- # to indicate an absolute path.
- # So put it back if found.
- if (@_) {
- if ($_[0] eq '') {
- unshift @dirs, '';
- }
- }
- }
my $rslt;
if (@dirs) {
my $path = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
my ($spath,$sdir) = ($path,$dir);
+ $spath =~ s/\.dir\Z(?!\n)//i; $sdir =~ s/\.dir\Z(?!\n)//i;
- if ($efs) {
- # Extended character set in use, go into DWIM mode.
+ if ($unix_rpt) {
+ $spath = unixify($spath) unless $spath =~ m#/#;
+ $sdir= unixify($sdir) unless $sdir =~ m#/#;
+ return $self->SUPER::catdir($spath, $sdir)
+ }
- # Now we need to identify what the directory is in
- # of the specification in order to merge them.
- my $path_unix = 0;
- $path_unix = 1 if ($path =~ m#/#);
- $path_unix = 1 if ($path =~ /^\.\.?$/);
- my $path_vms = 0;
- $path_vms = 1 if ($path =~ m#(?<!\^)[\[<\]:]#);
- $path_vms = 1 if ($path =~ /^--?$/);
- my $dir_unix = 0;
- $dir_unix = 1 if ($dir =~ m#/#);
- $dir_unix = 1 if ($dir =~ /^\.\.?$/);
- my $dir_vms = 0;
- $dir_vms = 1 if ($dir =~ m#(?<!\^)[\[<\]:]#);
- $dir_vms = 1 if ($dir =~ /^--?$/);
+ $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+\Z(?!\n)/s;
+ $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
- my $unix_mode = 0;
- if (($path_unix != $dir_unix) && ($path_vms != $dir_vms)) {
- # Ambiguous, so if in $unix_rpt mode then assume UNIX.
- $unix_mode = 1 if $unix_rpt;
- } else {
- $unix_mode = 1 if (!$path_vms && !$dir_vms && $unix_rpt);
- $unix_mode = 1 if ($path_unix || $dir_unix);
- }
+ # Special case for VMS absolute directory specs: these will have
+ # had device prepended during trip through Unix syntax in
+ # eliminate_macros(), since Unix syntax has no way to express
+ # "absolute from the top of this device's directory tree".
+ if ($spath =~ /^[\[<][^.\-]/s) { $rslt =~ s/^[^\[<]+//s; }
- if ($unix_mode) {
-
- # Fix up mixed syntax input as good as possible - GIGO
- $path = unixify($path) if $path_vms;
- $dir = unixify($dir) if $dir_vms;
-
- $rslt = $path;
- # Append a path delimiter
- $rslt .= '/' unless ($rslt =~ m#/$#);
-
- $rslt .= $dir;
- return $self->SUPER::canonpath($rslt);
- } else {
-
- #with <> possible instead of [.
- # Normalize the brackets
- # Fixme - need to not switch when preceded by ^.
- $path =~ s/</\[/g;
- $path =~ s/>/\]/g;
- $dir =~ s/</\[/g;
- $dir =~ s/>/\]/g;
-
- # Fix up mixed syntax input as good as possible - GIGO
- $path = vmsify($path) if $path_unix;
- $dir = vmsify($dir) if $dir_unix;
-
- #Possible path values: foo: [.foo] [foo] foo, and $(foo)
- #or starting with '-', or foo.dir
- #If path is foo, it needs to be converted to [.foo]
-
- # Fix up a bare path name.
- unless ($path_vms) {
- $path =~ s/\.dir\Z(?!\n)//i;
- if (($path ne '') && ($path !~ /^-/)) {
- # Non blank and not prefixed with '-', add a dot
- $path = '[.' . $path;
- } else {
- # Just start a directory.
- $path = '[' . $path;
- }
- } else {
- $path =~ s/\]$//;
- }
-
- #Possible dir values: [.dir] dir and $(foo)
-
- # No punctuation may have a trailing .dir
- unless ($dir_vms) {
- $dir =~ s/\.dir\Z(?!\n)//i;
- } else {
-
- #strip off the brackets
- $dir =~ s/^\[//;
- $dir =~ s/\]$//;
- }
-
- #strip off the leading dot if present.
- $dir =~ s/^\.//;
-
- # Now put the specifications together.
- if ($dir ne '') {
- # Add a separator unless this is an absolute path
- $path .= '.' if ($path ne '[');
- $rslt = $path . $dir . ']';
- } else {
- $rslt = $path . ']';
- }
- }
-
- } else {
- # Traditional ODS-2 mode.
- $spath =~ s/\.dir\Z(?!\n)//i; $sdir =~ s/\.dir\Z(?!\n)//i;
-
- $sdir = $self->eliminate_macros($sdir)
- unless $sdir =~ /^[\w\-]+\Z(?!\n)/s;
- $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
-
- # Special case for VMS absolute directory specs: these will have
- # had device prepended during trip through Unix syntax in
- # eliminate_macros(), since Unix syntax has no way to express
- # "absolute from the top of this device's directory tree".
- if ($spath =~ /^[\[<][^.\-]/s) { $rslt =~ s/^[^\[<]+//s; }
- }
} else {
- # Single directory, just make sure it is in directory format
- # Return an empty string on null input, and pass through macros.
+ # Single directory. Return an empty string on null input; otherwise
+ # just return a canonical path.
- if (not defined $dir or not length $dir) { $rslt = ''; }
- elsif ($dir =~ /^\$\([^\)]+\)\Z(?!\n)/s) {
- $rslt = $dir;
+ if (not defined $dir or not length $dir) {
+ $rslt = '';
} else {
- my $unix_mode = 0;
-
- if ($efs) {
- my $dir_unix = 0;
- $dir_unix = 1 if ($dir =~ m#/#);
- $dir_unix = 1 if ($dir =~ /^\.\.?$/);
- my $dir_vms = 0;
- $dir_vms = 1 if ($dir =~ m#(?<!\^)[\[<\]:]#);
- $dir_vms = 1 if ($dir =~ /^--?$/);
-
- if ($dir_vms == $dir_unix) {
- # Ambiguous, so if in $unix_rpt mode then assume UNIX.
- $unix_mode = 1 if $unix_rpt;
- } else {
- $unix_mode = 1 if $dir_unix;
- }
- }
-
- if ($unix_mode) {
- return $dir;
- } else {
- # For VMS, force it to be in directory format
- $rslt = vmspath($dir);
- }
+ $rslt = $unix_rpt ? $dir : vmspath($dir);
}
}
return $self->canonpath($rslt);
@@ -335,137 +179,32 @@
my $file = $self->canonpath($tfile);
my @files = grep {defined() && length()} @_;
- my $efs = $self->_efs;
my $unix_rpt = $self->_unix_rpt;
- # Assume VMS mode
- my $unix_mode = 0;
- my $file_unix = 0;
- my $file_vms = 0;
- if ($efs) {
-
- # Now we need to identify format the file is in
- # of the specification in order to merge them.
- $file_unix = 1 if ($tfile =~ m#/#);
- $file_unix = 1 if ($tfile =~ /^\.\.?$/);
- $file_vms = 1 if ($tfile =~ m#(?<!\^)[\[<\]:]#);
- $file_vms = 1 if ($tfile =~ /^--?$/);
-
- # We may know for sure what the format is.
- if (($file_unix != $file_vms)) {
- $unix_mode = 1 if ($file_unix && $unix_rpt);
- }
- }
-
my $rslt;
if (@files) {
- # concatenate the directories.
- my $path;
- if (@files == 1) {
- $path = $files[0];
- } else {
- if ($file_vms) {
- # We need to make sure this is in VMS mode to avoid doing
- # both a vmsify and unixfy on the same path, as that may
- # lose significant data.
- my $i = @files - 1;
- my $tdir = $files[$i];
- my $tdir_vms = 0;
- my $tdir_unix = 0;
- $tdir_vms = 1 if ($tdir =~ m#(?<!\^)[\[<\]:]#);
- $tdir_unix = 1 if ($tdir =~ m#/#);
- $tdir_unix = 1 if ($tdir =~ /^\.\.?$/);
-
- if (!$tdir_vms) {
- if ($tdir_unix) {
- $tdir = vmspath($tdir);
- } else {
- $tdir =~ s/\.dir\Z(?!\n)//i;
- $tdir = '[.' . $tdir . ']';
- }
- $files[$i] = $tdir;
- }
- }
- $path = $self->catdir(@files);
- }
+ my $path = (@files == 1 ? $files[0] : $self->catdir(@files));
my $spath = $path;
- # Some thing building a VMS path in pieces may try to pass a
+ # Something building a VMS path in pieces may try to pass a
# directory name in filename format, so normalize it.
$spath =~ s/\.dir\Z(?!\n)//i;
- # if the spath ends with a directory delimiter and the file is bare,
- # then just concat them.
+ # If the spath ends with a directory delimiter and the file is bare,
+ # then just concatenate them.
if ($spath =~ /^(?<!\^)[^\)\]\/:>]+\)\Z(?!\n)/s && basename($file) eq $file) {
$rslt = "$spath$file";
} else {
- if ($efs) {
-
- # Now we need to identify what the directory is in
- # of the specification in order to merge them.
- my $spath_unix = 0;
- $spath_unix = 1 if ($spath =~ m#/#);
- $spath_unix = 1 if ($spath =~ /^\.\.?$/);
- my $spath_vms = 0;
- $spath_vms = 1 if ($spath =~ m#(?<!\^)[\[<\]:]#);
- $spath_vms = 1 if ($spath =~ /^--?$/);
-
- # Assume VMS mode
- if (($spath_unix == $spath_vms) &&
- ($file_unix == $file_vms)) {
- # Ambiguous, so if in $unix_rpt mode then assume UNIX.
- $unix_mode = 1 if $unix_rpt;
- } else {
- $unix_mode = 1
- if (($spath_unix || $file_unix) && $unix_rpt);
- }
-
- if (!$unix_mode) {
- if ($spath_vms) {
- $spath = '[' . $spath . ']' if $spath =~ /^-/;
- $rslt = vmspath($spath);
- } else {
- $rslt = '[.' . $spath . ']';
- }
- $file = vmsify($file) if ($file_unix);
- } else {
- $spath = unixify($spath) if ($spath_vms);
- $rslt = $spath;
- $file = unixify($file) if ($file_vms);
-
- # Unix merge may need a directory delimiter.
- # A null path indicates root on Unix.
- $rslt .= '/' unless ($rslt =~ m#/$#);
- }
-
- $rslt .= $file;
- $rslt =~ s/\]\[//;
-
- } else {
- # Traditional VMS Perl mode expects that this is done.
- # Note for future maintainers:
- # This is left here for compatibility with perl scripts
- # that have come to expect this behavior, even though
- # usually the Perl scripts ported to VMS have to be
- # patched because of it changing Unix syntax file
- # to VMS format.
-
- $rslt = $self->eliminate_macros($spath);
-
-
- $rslt = vmsify($rslt.((defined $rslt) &&
- ($rslt ne '') ? '/' : '').unixify($file));
- }
+ $rslt = $self->eliminate_macros($spath);
+ $rslt .= (defined($rslt) && length($rslt) ? '/' : '') . unixify($file);
+ $rslt = vmsify($rslt) unless $unix_rpt;
}
}
else {
# Only passed a single file?
- my $xfile = $file;
+ my $xfile = (defined($file) && length($file)) ? $file : '';
- # Traditional VMS perl expects this conversion.
- $xfile = vmsify($file) unless ($efs);
-
- $rslt = (defined($file) && length($file)) ? $xfile : '';
+ $rslt = $unix_rpt ? $file : vmsify($file);
}
return $self->canonpath($rslt) unless $unix_rpt;
@@ -602,7 +341,8 @@
=item splitpath (override)
($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
+ ($volume,$directories,$file) = File::Spec->splitpath( $path,
+ $no_file );
Passing a true value for C<$no_file> indicates that the path being
split only contains directory components, even on systems where you
@@ -614,17 +354,7 @@
sub splitpath {
my($self,$path, $nofile) = @_;
my($dev,$dir,$file) = ('','','');
- my $efs = $self->_efs;
my $vmsify_path = vmsify($path);
- if ($efs) {
- my $path_vms = 0;
- $path_vms = 1 if ($path =~ m#(?<!\^)[\[<\]:]#);
- $path_vms = 1 if ($path =~ /^--?$/);
- if (!$path_vms) {
- return $self->SUPER::splitpath($path, $nofile);
- }
- $vmsify_path = $path;
- }
if ( $nofile ) {
#vmsify('d1/d2/d3') returns '[.d1.d2]d3'
@@ -653,25 +383,13 @@
my @dirs = ();
return @dirs if ( (!defined $dirspec) || ('' eq $dirspec) );
- my $efs = $self->_efs;
-
- my $dir_unix = 0;
- $dir_unix = 1 if ($dirspec =~ m#/#);
- $dir_unix = 1 if ($dirspec =~ /^\.\.?$/);
-
- # Unix filespecs in EFS mode handled by Unix routines.
- if ($efs && $dir_unix) {
- return $self->SUPER::splitdir($dirspec);
- }
-
- # FIX ME, only split for VMS delimiters not prefixed with '^'.
-
- $dirspec =~ tr/<>/[]/; # < and > ==> [ and ]
- $dirspec =~ s/\]\[\./\.\]\[/g; # ][. ==> .][
- $dirspec =~ s/\[000000\.\]\[/\[/g; # [000000.][ ==> [
- $dirspec =~ s/\[000000\./\[/g; # [000000. ==> [
- $dirspec =~ s/\.\]\[000000\]/\]/g; # .][000000] ==> ]
- $dirspec =~ s/\.\]\[/\./g; # foo.][bar ==> foo.bar
+ $dirspec =~ s/(?<!\^)</[/; # < and > ==> [ and ]
+ $dirspec =~ s/(?<!\^)>/]/;
+ $dirspec =~ s/(?<!\^)\]\[\./\.\]\[/g; # ][. ==> .][
+ $dirspec =~ s/(?<!\^)\[000000\.\]\[/\[/g; # [000000.][ ==> [
+ $dirspec =~ s/(?<!\^)\[000000\./\[/g; # [000000. ==> [
+ $dirspec =~ s/(?<!\^)\.\]\[000000\]/\]/g; # .][000000] ==> ]
+ $dirspec =~ s/(?<!\^)\.\]\[/\./g; # foo.][bar ==> foo.bar
while ($dirspec =~ s/(^|[\[\<\.])\-(\-+)($|[\]\>\.])/$1-.$2$3/g) {}
# That loop does the following
# with any amount of dashes:
@@ -696,48 +414,16 @@
sub catpath {
my($self,$dev,$dir,$file) = @_;
- my $efs = $self->_efs;
- my $unix_rpt = $self->_unix_rpt;
-
- my $unix_mode = 0;
- my $dir_unix = 0;
- $dir_unix = 1 if ($dir =~ m#/#);
- $dir_unix = 1 if ($dir =~ /^\.\.?$/);
- my $dir_vms = 0;
- $dir_vms = 1 if ($dir =~ m#(?<!\^)[\[<\]:]#);
- $dir_vms = 1 if ($dir =~ /^--?$/);
-
- if ($efs && (length($dev) == 0)) {
- if ($dir_unix == $dir_vms) {
- $unix_mode = $unix_rpt;
- } else {
- $unix_mode = $dir_unix;
- }
- }
-
# We look for a volume in $dev, then in $dir, but not both
- # but only if using VMS syntax.
- if (!$unix_mode) {
- $dir = vmspath($dir) if $dir_unix;
- my ($dir_volume, $dir_dir, $dir_file) = $self->splitpath($dir);
- $dev = $dir_volume unless length $dev;
- $dir = length $dir_file ? $self->catfile($dir_dir, $dir_file) :
- $dir_dir;
- }
- if ($dev =~ m|^/+([^/]+)|) { $dev = "$1:"; }
+ my ($dir_volume, $dir_dir, $dir_file) = $self->splitpath($dir);
+ $dev = $dir_volume unless length $dev;
+ $dir = length $dir_file ? $self->catfile($dir_dir, $dir_file) : $dir_dir;
+
+ if ($dev =~ m|^(?<!\^)/+([^/]+)|) { $dev = "$1:"; }
else { $dev .= ':' unless $dev eq '' or $dev =~ /:\Z(?!\n)/; }
if (length($dev) or length($dir)) {
- if ($efs) {
- if ($unix_mode) {
- $dir .= '/' unless ($dir =~ m#/$#);
- } else {
- $dir = vmspath($dir) if (($dir =~ m#/#) || ($dir =~ /^\.\.?$/));
- $dir = "[$dir]" unless $dir =~ /^[\[<]/;
- }
- } else {
- $dir = "[$dir]" unless $dir =~ /[\[<\/]/;
- $dir = vmspath($dir);
- }
+ $dir = "[$dir]" unless $dir =~ /(?<!\^)[\[<\/]/;
+ $dir = vmspath($dir);
}
$dir = '' if length($dev) && ($dir eq '[]' || $dir eq '<>');
"$dev$dir$file";
@@ -745,93 +431,18 @@
=item abs2rel (override)
-Attempt to convert a file specification to a relative specification.
-On a system with volumes, like VMS, this may not be possible.
+Attempt to convert an absolute file specification to a relative specification.
=cut
sub abs2rel {
my $self = shift;
+ return vmspath(File::Spec::Unix::abs2rel( $self, @_ ))
+ if grep m{/}, @_;
+
my($path,$base) = @_;
+ $base = $self->_cwd() unless defined $base and length $base;
- my $efs = $self->_efs;
- my $unix_rpt = $self->_unix_rpt;
-
- # We need to identify what the directory is in
- # of the specification in order to process them
- my $path_unix = 0;
- $path_unix = 1 if ($path =~ m#/#);
- $path_unix = 1 if ($path =~ /^\.\.?$/);
- my $path_vms = 0;
- $path_vms = 1 if ($path =~ m#(?<!\^)[\[<\]:]#);
- $path_vms = 1 if ($path =~ /^--?$/);
-
- my $unix_mode = 0;
- if ($path_vms == $path_unix) {
- $unix_mode = $unix_rpt;
- } else {
- $unix_mode = $path_unix;
- }
-
- my $base_unix = 0;
- my $base_vms = 0;
-
- if (defined $base) {
- $base_unix = 1 if ($base =~ m#/#);
- $base_unix = 1 if ($base =~ /^\.\.?$/);
- $base_vms = 1 if ($base =~ m#(?<!\^)[\[<\]:]#);
- $base_vms = 1 if ($base =~ /^--?$/);
-
- if ($path_vms == $path_unix) {
- if ($base_vms == $base_unix) {
- $unix_mode = $unix_rpt;
- } else {
- $unix_mode = $base_unix;
- }
- } else {
- $unix_mode = 0 if $base_vms;
- }
- }
-
- if ($efs) {
- if ($unix_mode) {
- # We are UNIX mode.
- $base = unixpath($base) if $base_vms;
- $base = unixify($path) if $path_vms;
-
- # Here VMS is different, and in order to do this right
- # we have to take the realpath for both the path and the base
- # so that we can remove the common components.
-
- if ($path =~ m#^/#) {
- if (defined $base) {
-
- # For the shorterm, if the starting directories are
- # common, remove them.
- my $bq = qq($base);
- $bq =~ s/\$/\\\$/;
- $path =~ s/^$bq//i;
- }
- return $path;
- }
-
- return File::Spec::Unix::abs2rel( $self, $path, $base );
-
- } else {
- $base = vmspath($base) if $base_unix;
- $path = vmsify($path) if $path_unix;
- }
- }
-
- unless (defined $base and length $base) {
- $base = $self->_cwd();
- if ($efs) {
- $base_unix = 1 if ($base =~ m#/#);
- $base_unix = 1 if ($base =~ /^\.\.?$/);
- $base = vmspath($base) if $base_unix;
- }
- }
-
for ($path, $base) { $_ = $self->canonpath($_) }
# Are we even starting $path on the same (node::)device as $base? Note that
@@ -889,58 +500,13 @@
my $self = shift ;
my ($path,$base ) = @_;
return undef unless defined $path;
-
- my $efs = $self->_efs;
- my $unix_rpt = $self->_unix_rpt;
-
- # We need to identify what the directory is in
- # of the specification in order to process them
- my $path_unix = 0;
- $path_unix = 1 if ($path =~ m#/#);
- $path_unix = 1 if ($path =~ /^\.\.?$/);
- my $path_vms = 0;
- $path_vms = 1 if ($path =~ m#(?<!\^)[\[<\]:]#);
- $path_vms = 1 if ($path =~ /^--?$/);
-
- my $unix_mode = 0;
- if ($path_vms == $path_unix) {
- $unix_mode = $unix_rpt;
- } else {
- $unix_mode = $path_unix;
+ if ($path =~ m/\//) {
+ $path = ( -d $path || $path =~ m/\/\z/ # educated guessing about
+ ? vmspath($path) # whether it's a directory
+ : vmsify($path) );
}
+ $base = vmspath($base) if defined $base && $base =~ m/\//;
- my $base_unix = 0;
- my $base_vms = 0;
-
- if (defined $base) {
- $base_unix = 1 if ($base =~ m#/#);
- $base_unix = 1 if ($base =~ /^\.\.?$/);
- $base_vms = 1 if ($base =~ m#(?<!\^)[\[<\]:]#);
- $base_vms = 1 if ($base =~ /^--?$/);
-
- # If we could not determine the path mode, see if we can find out
- # from the base.
- if ($path_vms == $path_unix) {
- if ($base_vms != $base_unix) {
- $unix_mode = $base_unix;
- }
- }
- }
-
- if (!$efs) {
- # Legacy behavior, convert to VMS syntax.
- $unix_mode = 0;
- if (defined $base) {
- $base = vmspath($base) if $base =~ m/\//;
- }
-
- if ($path =~ m/\//) {
- $path = ( -d $path || $path =~ m/\/\z/ # educated guessing about
- ? vmspath($path) # whether it's a directory
- : vmsify($path) );
- }
- }
-
# Clean up and split up $path
if ( ! $self->file_name_is_absolute( $path ) ) {
# Figure out the effective $base and clean it up.
@@ -954,20 +520,6 @@
$base = $self->canonpath( $base ) ;
}
- if ($efs) {
- # base may have changed, so need to look up format again.
- if ($unix_mode) {
- $base_vms = 1 if ($base =~ m#(?<!\^)[\[<\]:]#);
- $base_vms = 1 if ($base =~ /^--?$/);
- $base = unixpath($base) if $base_vms;
- $base .= '/' unless ($base =~ m#/$#);
- } else {
- $base_unix = 1 if ($base =~ m#/#);
- $base_unix = 1 if ($base =~ /^\.\.?$/);
- $base = vmspath($base) if $base_unix;
- }
- }
-
# Split up paths
my ( $path_directories, $path_file ) =
($self->splitpath( $path ))[1,2] ;
@@ -978,24 +530,13 @@
$path_directories = '' if $path_directories eq '[]' ||
$path_directories eq '<>';
my $sep = '' ;
+ $sep = '.'
+ if ( $base_directories =~ m{[^.\]>]\Z(?!\n)} &&
+ $path_directories =~ m{^[^.\[<]}s
+ ) ;
+ $base_directories = "$base_directories$sep$path_directories";
+ $base_directories =~ s{\.?[\]>][\[<]\.?}{.};
- if ($efs) {
- # Merge the paths assuming that the base is absolute.
- $base_directories = $self->catdir('',
- $base_directories,
- $path_directories);
- } else {
- # Legacy behavior assumes VMS only paths
- $sep = '.'
- if ( $base_directories =~ m{[^.\]>]\Z(?!\n)} &&
- $path_directories =~ m{^[^.\[<]}s
- ) ;
- $base_directories = "$base_directories$sep$path_directories";
- $base_directories =~ s{\.?[\]>][\[<]\.?}{.};
- }
-
- $path_file = '' if ($path_file eq '.') && $unix_mode;
-
$path = $self->catpath( $base_volume, $base_directories, $path_file );
}
@@ -1014,10 +555,6 @@
#
# Update: MakeMaker 6.48 is still using these routines on VMS.
# so they need to be kept up to date with ExtUtils::MM_VMS.
-#
-# The traditional VMS mode using ODS-2 disks depends on these routines
-# being here. These routines should not be called in when the
-# C<DECC$EFS_CHARSET> or C<DECC$FILENAME_UNIX_REPORT> modes are enabled.
sub eliminate_macros {
my($self,$path) = @_;
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/VMS.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Win32.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec/Win32.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec/Win32.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,8 +5,8 @@
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.33';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
@@ -189,7 +189,8 @@
=item splitpath
($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
+ ($volume,$directories,$file) = File::Spec->splitpath( $path,
+ $no_file );
Splits a path into volume, directory, and filename portions. Assumes that
the last file is a path unless the path ends in '\\', '\\.', '\\..'
@@ -231,7 +232,7 @@
=item splitdir
-The opposite of L<catdir()|File::Spec/catdir()>.
+The opposite of L<catdir()|File::Spec/catdir>.
@dirs = File::Spec->splitdir( $directories );
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec/Win32.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/lib/File/Spec.pm
===================================================================
--- trunk/contrib/perl/dist/Cwd/lib/File/Spec.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/lib/File/Spec.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -3,8 +3,8 @@
use strict;
use vars qw(@ISA $VERSION);
-$VERSION = '3.33';
-$VERSION = eval $VERSION;
+$VERSION = '3.40';
+$VERSION =~ tr/_//;
my %module = (MacOS => 'Mac',
MSWin32 => 'Win32',
@@ -199,8 +199,10 @@
Splits a path in to volume, directory, and filename portions. On systems
with no concept of volume, returns '' for volume.
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
+ ($volume,$directories,$file) =
+ File::Spec->splitpath( $path );
+ ($volume,$directories,$file) =
+ File::Spec->splitpath( $path, $no_file );
For systems with no syntax differentiating filenames from directories,
assumes that the last file is a path unless C<$no_file> is true or a
@@ -329,7 +331,7 @@
=head1 COPYRIGHT
-Copyright (c) 2004-2010 by the Perl 5 Porters. All rights reserved.
+Copyright (c) 2004-2013 by the Perl 5 Porters. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
Property changes on: trunk/contrib/perl/dist/Cwd/lib/File/Spec.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Cwd/t/Functions.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/Functions.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/Functions.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Cwd/t/Functions.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Cwd/t/Spec-taint.t (from rev 6437, vendor/perl/5.18.1/dist/Cwd/t/Spec-taint.t)
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/Spec-taint.t (rev 0)
+++ trunk/contrib/perl/dist/Cwd/t/Spec-taint.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,17 @@
+#!./perl -Tw
+# Testing File::Spec under taint mode.
+
+use strict;
+
+chdir 't' unless $ENV{PERL_CORE};
+
+use File::Spec;
+use lib File::Spec->catdir('t', 'lib');
+use Test::More tests => 2;
+
+use Scalar::Util qw/tainted/;
+
+my $ret;
+eval { $ret = File::Spec->tmpdir };
+is( $@, '', "tmpdir should not explode under taint mode" );
+ok( !tainted($ret), "its return value should not be tainted" );
Modified: trunk/contrib/perl/dist/Cwd/t/Spec.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/Spec.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/Spec.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -7,28 +7,24 @@
require Cwd;
-eval {
- require VMS::Filespec ;
-} ;
-
my $vms_unix_rpt;
-my $vms_efs;
if ($^O eq 'VMS') {
if (eval 'require VMS::Feature') {
$vms_unix_rpt = VMS::Feature::current("filename_unix_report");
- $vms_efs = VMS::Feature::current("efs_charset");
} else {
my $unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || '';
- my $efs_charset = $ENV{'DECC$EFS_CHARSET'} || '';
$vms_unix_rpt = $unix_rpt =~ /^[ET1]/i;
- $vms_efs = $efs_charset =~ /^[ET1]/i;
}
}
-my $skip_exception = "Install VMS::Filespec (from vms/ext)" ;
+my $skip_exception = "Needs VMS::Filespec (and thus VMS)" ;
+eval {
+ require VMS::Filespec ;
+} ;
+
if ( $@ ) {
# Not pretty, but it allows testing of things not implemented solely
# on VMS. It might be better to change File::Spec::VMS to do this,
@@ -124,6 +120,10 @@
[ "Unix->abs2rel('/t1/t2/t3', '/t1')", 't2/t3' ],
[ "Unix->abs2rel('t1/t2/t3', 't1')", 't2/t3' ],
[ "Unix->abs2rel('t1/t2/t3', 't4')", '../t1/t2/t3' ],
+ [ "Unix->abs2rel('.', '.')", '.' ],
+ [ "Unix->abs2rel('/', '/')", '.' ],
+ [ "Unix->abs2rel('../t1', 't2/t3')", '../../../t1' ],
+ [ "Unix->abs2rel('t1', 't2/../t3')", '../t1' ],
[ "Unix->rel2abs('t4','/t1/t2/t3')", '/t1/t2/t3/t4' ],
[ "Unix->rel2abs('t4/t5','/t1/t2/t3')", '/t1/t2/t3/t4/t5' ],
@@ -289,9 +289,10 @@
[ "VMS->case_tolerant()", '1' ],
-[ "VMS->catfile('a','b','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ],
-[ "VMS->catfile('a','b','[]c')", '[.a.b]c' ],
-[ "VMS->catfile('[.a]','b','c')", '[.a.b]c' ],
+[ "VMS->catfile('a','b','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ],
+[ "VMS->catfile('a','b','[]c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ],
+[ "VMS->catfile('[.a]','b','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ],
+[ "VMS->catfile('a/b/','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ],
[ "VMS->catfile('c')", 'c' ],
[ "VMS->catfile('[]c')", 'c' ],
@@ -309,9 +310,9 @@
[ "VMS->splitpath('[.d1.d2.d3]')", ',[.d1.d2.d3],' ],
[ "VMS->splitpath('[d1.d2.d3]file')", ',[d1.d2.d3],file' ],
[ "VMS->splitpath('d1/d2/d3/file')",
- $vms_efs ? ',d1/d2/d3/,file' : ',[.d1.d2.d3],file' ],
+ $vms_unix_rpt ? ',d1/d2/d3/,file' : ',[.d1.d2.d3],file' ],
[ "VMS->splitpath('/d1/d2/d3/file')",
- $vms_efs ? ',/d1/d2/d3/,file' : 'd1:,[d2.d3],file' ],
+ $vms_unix_rpt ? ',/d1/d2/d3/,file' : 'd1:,[d2.d3],file' ],
[ "VMS->splitpath('[.d1.d2.d3]file')", ',[.d1.d2.d3],file' ],
[ "VMS->splitpath('node::volume:[d1.d2.d3]')", 'node::volume:,[d1.d2.d3],' ],
[ "VMS->splitpath('node::volume:[d1.d2.d3]file')", 'node::volume:,[d1.d2.d3],file' ],
@@ -331,16 +332,16 @@
[ "VMS->splitpath('[0]0')", ',[0],0' ],
[ "VMS->splitpath('[0.0.0]0')", ',[0.0.0],0' ],
[ "VMS->splitpath('[.0.0.0]0')", ',[.0.0.0],0' ],
-[ "VMS->splitpath('0/0')", $vms_efs ? ',0/,0' : ',[.0],0' ],
-[ "VMS->splitpath('0/0/0')", $vms_efs ? ',0/0/,0' : ',[.0.0],0' ],
-[ "VMS->splitpath('/0/0')", $vms_efs ? ',/0/,0' : '0:,[000000],0' ],
-[ "VMS->splitpath('/0/0/0')", $vms_efs ? ',/0/0/,0' : '0:,[0],0' ],
+[ "VMS->splitpath('0/0')", $vms_unix_rpt ? ',0/,0' : ',[.0],0' ],
+[ "VMS->splitpath('0/0/0')", $vms_unix_rpt ? ',0/0/,0' : ',[.0.0],0' ],
+[ "VMS->splitpath('/0/0')", $vms_unix_rpt ? ',/0/,0' : '0:,[000000],0' ],
+[ "VMS->splitpath('/0/0/0')", $vms_unix_rpt ? ',/0/0/,0' : '0:,[0],0' ],
[ "VMS->splitpath('d1',1)", ',d1,' ],
# $no_file tests
[ "VMS->splitpath('[d1.d2.d3]',1)", ',[d1.d2.d3],' ],
[ "VMS->splitpath('[.d1.d2.d3]',1)", ',[.d1.d2.d3],' ],
-[ "VMS->splitpath('d1/d2/d3',1)", $vms_efs ? ',d1/d2/d3,' : ',[.d1.d2.d3],' ],
-[ "VMS->splitpath('/d1/d2/d3',1)", $vms_efs ? ',/d1/d2/d3,' : 'd1:,[d2.d3],' ],
+[ "VMS->splitpath('d1/d2/d3',1)", $vms_unix_rpt ? ',d1/d2/d3,' : ',[.d1.d2.d3],' ],
+[ "VMS->splitpath('/d1/d2/d3',1)", $vms_unix_rpt ? ',/d1/d2/d3,' : 'd1:,[d2.d3],' ],
[ "VMS->splitpath('node::volume:[d1.d2.d3]',1)", 'node::volume:,[d1.d2.d3],' ],
[ "VMS->splitpath('node\"access_spec\"::volume:[d1.d2.d3]',1)", 'node"access_spec"::volume:,[d1.d2.d3],' ],
[ "VMS->splitpath('[]',1)", ',[],' ],
@@ -351,10 +352,10 @@
[ "VMS->splitpath('[.0]',1)", ',[.0],' ],
[ "VMS->splitpath('[0.0.0]',1)", ',[0.0.0],' ],
[ "VMS->splitpath('[.0.0.0]',1)", ',[.0.0.0],' ],
-[ "VMS->splitpath('0/0',1)", $vms_efs ? ',0/0,' : ',[.0.0],' ],
-[ "VMS->splitpath('0/0/0',1)", $vms_efs ? ',0/0/0,' : ',[.0.0.0],' ],
-[ "VMS->splitpath('/0/0',1)", $vms_efs ? ',/0/0,' : '0:,[000000.0],' ],
-[ "VMS->splitpath('/0/0/0',1)", $vms_efs ? ',/0/0/0,' : '0:,[0.0],' ],
+[ "VMS->splitpath('0/0',1)", $vms_unix_rpt ? ',0/0,' : ',[.0.0],' ],
+[ "VMS->splitpath('0/0/0',1)", $vms_unix_rpt ? ',0/0/0,' : ',[.0.0.0],' ],
+[ "VMS->splitpath('/0/0',1)", $vms_unix_rpt ? ',/0/0,' : '0:,[000000.0],' ],
+[ "VMS->splitpath('/0/0/0',1)", $vms_unix_rpt ? ',/0/0/0,' : '0:,[0.0],' ],
[ "VMS->catpath('','','file')", 'file' ],
[ "VMS->catpath('','[d1.d2.d3]','')", '[d1.d2.d3]' ],
@@ -362,7 +363,7 @@
[ "VMS->catpath('','[d1.d2.d3]','file')", '[d1.d2.d3]file' ],
[ "VMS->catpath('','[.d1.d2.d3]','file')", '[.d1.d2.d3]file' ],
[ "VMS->catpath('','d1/d2/d3','file')",
- $vms_efs ? 'd1/d2/d3/file' : '[.d1.d2.d3]file' ],
+ $vms_unix_rpt ? 'd1/d2/d3/file' : '[.d1.d2.d3]file' ],
[ "VMS->catpath('v','d1/d2/d3','file')", 'v:[.d1.d2.d3]file' ],
[ "VMS->catpath('v','','file')", 'v:file' ],
[ "VMS->catpath('v','w:[d1.d2.d3]','file')", 'v:[d1.d2.d3]file' ],
@@ -371,37 +372,47 @@
[ "VMS->catpath('node\"access_spec\"::volume:','[d1.d2.d3]','')", 'node"access_spec"::volume:[d1.d2.d3]' ],
[ "VMS->catpath('node\"access_spec\"::volume:','[d1.d2.d3]','file')", 'node"access_spec"::volume:[d1.d2.d3]file' ],
-[ "VMS->canonpath('')", '' ],
-[ "VMS->canonpath('volume:[d1]file')", 'volume:[d1]file' ],
-[ "VMS->canonpath('volume:[d1.-.d2.][d3.d4.-]')", 'volume:[d2.d3]' ],
-[ "VMS->canonpath('volume:[000000.d1]d2.dir;1')", 'volume:[d1]d2.dir;1' ],
-[ "VMS->canonpath('volume:[d1.d2.d3]file.txt')", 'volume:[d1.d2.d3]file.txt' ],
-[ "VMS->canonpath('[d1.d2.d3]file.txt')", '[d1.d2.d3]file.txt' ],
-[ "VMS->canonpath('volume:[-.d1.d2.d3]file.txt')", 'volume:[-.d1.d2.d3]file.txt' ],
-[ "VMS->canonpath('[-.d1.d2.d3]file.txt')", '[-.d1.d2.d3]file.txt' ],
-[ "VMS->canonpath('volume:[--.d1.d2.d3]file.txt')", 'volume:[--.d1.d2.d3]file.txt' ],
-[ "VMS->canonpath('[--.d1.d2.d3]file.txt')", '[--.d1.d2.d3]file.txt' ],
-[ "VMS->canonpath('volume:[d1.-.d2.d3]file.txt')", 'volume:[d2.d3]file.txt' ],
-[ "VMS->canonpath('[d1.-.d2.d3]file.txt')", '[d2.d3]file.txt' ],
-[ "VMS->canonpath('volume:[d1.--.d2.d3]file.txt')", 'volume:[-.d2.d3]file.txt' ],
-[ "VMS->canonpath('[d1.--.d2.d3]file.txt')", '[-.d2.d3]file.txt' ],
-[ "VMS->canonpath('volume:[d1.d2.-.d3]file.txt')", 'volume:[d1.d3]file.txt' ],
-[ "VMS->canonpath('[d1.d2.-.d3]file.txt')", '[d1.d3]file.txt' ],
-[ "VMS->canonpath('volume:[d1.d2.--.d3]file.txt')", 'volume:[d3]file.txt' ],
-[ "VMS->canonpath('[d1.d2.--.d3]file.txt')", '[d3]file.txt' ],
-[ "VMS->canonpath('volume:[d1.d2.d3.-]file.txt')", 'volume:[d1.d2]file.txt' ],
-[ "VMS->canonpath('[d1.d2.d3.-]file.txt')", '[d1.d2]file.txt' ],
-[ "VMS->canonpath('volume:[d1.d2.d3.--]file.txt')", 'volume:[d1]file.txt' ],
-[ "VMS->canonpath('[d1.d2.d3.--]file.txt')", '[d1]file.txt' ],
-[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--]file.txt')", 'volume:[d1]file.txt' ],
-[ "VMS->canonpath('[d1.000000.][000000.][d3.--]file.txt')", '[d1]file.txt' ],
-[ "VMS->canonpath('volume:[d1.000000.][000000.][d2.000000]file.txt')", 'volume:[d1.000000.d2.000000]file.txt' ],
-[ "VMS->canonpath('[d1.000000.][000000.][d2.000000]file.txt')", '[d1.000000.d2.000000]file.txt' ],
-[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--.000000]file.txt')",'volume:[d1.000000]file.txt' ],
-[ "VMS->canonpath('[d1.000000.][000000.][d3.--.000000]file.txt')", '[d1.000000]file.txt' ],
-[ "VMS->canonpath('volume:[d1.000000.][000000.][-.-.000000]file.txt')", 'volume:[000000]file.txt' ],
-[ "VMS->canonpath('[d1.000000.][000000.][--.-.000000]file.txt')", '[-.000000]file.txt' ],
-[ "VMS->canonpath('[d1.d2.--]file')", '[000000]file' ],
+[ "VMS->canonpath('')", '' ],
+[ "VMS->canonpath('volume:[d1]file')", $vms_unix_rpt ? '/volume/d1/file' : 'volume:[d1]file' ],
+[ "VMS->canonpath('volume:[d1.-.d2.][d3.d4.-]')", $vms_unix_rpt ? '/volume/d2/d3/' : 'volume:[d2.d3]' ],
+[ "VMS->canonpath('volume:[000000.d1]d2.dir;1')", $vms_unix_rpt ? '/volume/d1/d2.dir.1' : 'volume:[d1]d2.dir;1' ],
+[ "VMS->canonpath('volume:[d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/d1/d2/d3/file.txt' : 'volume:[d1.d2.d3]file.txt' ],
+[ "VMS->canonpath('[d1.d2.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d2/d3/file.txt' : '[d1.d2.d3]file.txt' ],
+[ "VMS->canonpath('volume:[-.d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../d1/d2/d3/file.txt' : 'volume:[-.d1.d2.d3]file.txt' ],
+[ "VMS->canonpath('[-.d1.d2.d3]file.txt')", $vms_unix_rpt ? '../d1/d2/d3/file.txt' : '[-.d1.d2.d3]file.txt' ],
+[ "VMS->canonpath('volume:[--.d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../../d1/d2/d3/file.txt' : 'volume:[--.d1.d2.d3]file.txt' ],
+[ "VMS->canonpath('[--.d1.d2.d3]file.txt')", $vms_unix_rpt ? '../../d1/d2/d3/file.txt' : '[--.d1.d2.d3]file.txt' ],
+[ "VMS->canonpath('volume:[d1.-.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/d2/d3/file.txt' : 'volume:[d2.d3]file.txt' ],
+[ "VMS->canonpath('[d1.-.d2.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d2/d3/file.txt' : '[d2.d3]file.txt' ],
+[ "VMS->canonpath('volume:[d1.--.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../d2/d3/file.txt' : 'volume:[-.d2.d3]file.txt' ],
+[ "VMS->canonpath('[d1.--.d2.d3]file.txt')", $vms_unix_rpt ? '../d2/d3/file.txt' : '[-.d2.d3]file.txt' ],
+[ "VMS->canonpath('volume:[d1.d2.-.d3]file.txt')", $vms_unix_rpt ? '/volume/d1/d3/file.txt' : 'volume:[d1.d3]file.txt' ],
+[ "VMS->canonpath('[d1.d2.-.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d3/file.txt' : '[d1.d3]file.txt' ],
+[ "VMS->canonpath('volume:[d1.d2.--.d3]file.txt')", $vms_unix_rpt ? '/volume/d3/file.txt' : 'volume:[d3]file.txt' ],
+[ "VMS->canonpath('[d1.d2.--.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d3/file.txt' : '[d3]file.txt' ],
+[ "VMS->canonpath('volume:[d1.d2.d3.-]file.txt')", $vms_unix_rpt ? '/volume/d1/d2/file.txt' : 'volume:[d1.d2]file.txt' ],
+[ "VMS->canonpath('[d1.d2.d3.-]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d2/file.txt' : '[d1.d2]file.txt' ],
+[ "VMS->canonpath('volume:[d1.d2.d3.--]file.txt')", $vms_unix_rpt ? '/volume/d1/file.txt' : 'volume:[d1]file.txt' ],
+[ "VMS->canonpath('[d1.d2.d3.--]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/file.txt' : '[d1]file.txt' ],
+[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--]file.txt')", $vms_unix_rpt ? '/volume/d1/file.txt'
+ : 'volume:[d1]file.txt' ],
+[ "VMS->canonpath('[d1.000000.][000000.][d3.--]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/file.txt'
+ : '[d1]file.txt' ],
+[ "VMS->canonpath('volume:[d1.000000.][000000.][d2.000000]file.txt')", $vms_unix_rpt ? '/volume/d1/000000/d2/000000/file.txt'
+ : 'volume:[d1.000000.d2.000000]file.txt' ],
+[ "VMS->canonpath('[d1.000000.][000000.][d2.000000]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/000000/d2/000000/file.txt'
+ : '[d1.000000.d2.000000]file.txt' ],
+[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--.000000]file.txt')", $vms_unix_rpt ? '/volume/d1/000000/file.txt'
+ : 'volume:[d1.000000]file.txt' ],
+[ "VMS->canonpath('[d1.000000.][000000.][d3.--.000000]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/000000/file.txt'
+ : '[d1.000000]file.txt' ],
+[ "VMS->canonpath('volume:[d1.000000.][000000.][-.-.000000]file.txt')", $vms_unix_rpt ? '/volume/file.txt'
+ : 'volume:[000000]file.txt' ],
+[ "VMS->canonpath('[d1.000000.][000000.][--.-.000000]file.txt')", $vms_unix_rpt ? '../file.txt' : '[-.000000]file.txt' ],
+[ "VMS->canonpath('[d1.d2.--]file')", $vms_unix_rpt ? '../file.txt' : '[000000]file' ],
+# During the Perl 5.8 era, FS::Unix stopped eliminating redundant path elements, so mimic that here.
+[ "VMS->canonpath('a/../../b/c.dat')", $vms_unix_rpt ? 'a/../../b/c.dat' : '[-.b]c.dat' ],
+[ "VMS->canonpath('^<test^.new.-.caret^ escapes^>')", '^<test^.new.-.caret^ escapes^>' ],
[ "VMS->splitdir('')", '' ],
[ "VMS->splitdir('[]')", '' ],
@@ -420,41 +431,42 @@
[ "VMS->splitdir('[.d1.d2^.d3]')", 'd1,d2^.d3' ],
[ "VMS->catdir('')", '' ],
+[ "VMS->catdir('foo')", $vms_unix_rpt ? 'foo' : '[.foo]' ],
[ "VMS->catdir('d1','d2','d3')", $vms_unix_rpt ? 'd1/d2/d3' : '[.d1.d2.d3]' ],
-[ "VMS->catdir('d1','d2/','d3')", $vms_efs ? 'd1/d2/d3' : '[.d1.d2.d3]' ],
-[ "VMS->catdir('','d1','d2','d3')",
- $vms_unix_rpt ? '/d1/d2/d3' :
- $vms_efs ? '[d1.d2.d3]' : '[.d1.d2.d3]' ],
-[ "VMS->catdir('','-','d2','d3')", '[-.d2.d3]' ],
-[ "VMS->catdir('','-','','d3')", '[-.d3]' ],
-[ "VMS->catdir('dir.dir','d2.dir','d3.dir')",
- $vms_unix_rpt ? 'dir.dir/d2.dir/d3.dir' : '[.dir.d2.d3]' ],
-[ "VMS->catdir('[.name]')", '[.name]' ],
-[ "VMS->catdir('[.name]','[.name]')", '[.name.name]'],
+[ "VMS->catdir('d1','d2/','d3')", $vms_unix_rpt ? 'd1/d2/d3' : '[.d1.d2.d3]' ],
+[ "VMS->catdir('','d1','d2','d3')",$vms_unix_rpt ? '/d1/d2/d3' : '[.d1.d2.d3]' ],
+[ "VMS->catdir('','-','d2','d3')", $vms_unix_rpt ? '-/d2/d3' : '[-.d2.d3]' ],
+[ "VMS->catdir('','-','','d3')", $vms_unix_rpt ? '-/d3' : '[-.d3]' ],
+[ "VMS->catdir('dir.dir','d2.dir','d3.dir')", $vms_unix_rpt ? 'dir/d2/d3'
+ : '[.dir.d2.d3]' ],
+[ "VMS->catdir('[.name]')", $vms_unix_rpt ? 'name/' : '[.name]' ],
+[ "VMS->catdir('[.name]','[.name]')", $vms_unix_rpt ? 'name/name' :'[.name.name]' ],
+[ "VMS->catdir('/a/b/c','[-]')", $vms_unix_rpt ? '/a/b/c/..' : 'a:[b]'],
+[ "VMS->catdir('a:[b.c]','..')", $vms_unix_rpt ? '/a/b/c/..' : 'a:[b]'],
-[ "VMS->abs2rel('node::volume:[t1.t2.t3]','node::volume:[t1.t2.t3]')", '[]' ],
-[ "VMS->abs2rel('node::volume:[t1.t2.t3]','[t1.t2.t3]')", 'node::volume:[t1.t2.t3]' ],
-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','node::volume:[t1.t2.t3]')", '[-.t4]' ],
-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','[t1.t2.t3]')", 'node::volume:[t1.t2.t4]' ],
-[ "VMS->abs2rel('[t1.t2.t3]','[t1.t2.t3]')", '[]' ],
-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2.t3]')", 'file' ],
-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2]')", '[.t3]file' ],
-[ "VMS->abs2rel('v:[t1.t2.t3]file','v:[t1.t2]')", '[.t3]file' ],
-[ "VMS->abs2rel('[t1.t2.t4]','[t1.t2.t3]')", '[-.t4]' ],
-[ "VMS->abs2rel('[t1.t2]file','[t1.t2.t3]')", '[-]file' ],
-[ "VMS->abs2rel('[t1.t2.t3.t4]','[t1.t2.t3]')", '[.t4]' ],
-[ "VMS->abs2rel('[t4.t5.t6]','[t1.t2.t3]')", '[---.t4.t5.t6]' ],
-[ "VMS->abs2rel('[000000]','[t1.t2.t3]')", '[---]' ],
-[ "VMS->abs2rel('a:[t1.t2.t4]','a:[t1.t2.t3]')", '[-.t4]' ],
-[ "VMS->abs2rel('a:[t1.t2.t4]','[t1.t2.t3]')", 'a:[t1.t2.t4]' ],
-[ "VMS->abs2rel('[a.-.b.c.-]','[t1.t2.t3]')", '[---.b]' ],
+[ "VMS->abs2rel('node::volume:[t1.t2.t3]','node::volume:[t1.t2.t3]')", $vms_unix_rpt ? './' : '[]' ],
+[ "VMS->abs2rel('node::volume:[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t3/' : 'node::volume:[t1.t2.t3]' ],
+[ "VMS->abs2rel('node::volume:[t1.t2.t4]','node::volume:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ],
+[ "VMS->abs2rel('node::volume:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t4/' : 'node::volume:[t1.t2.t4]' ],
+[ "VMS->abs2rel('[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? './' : '[]' ],
+[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2.t3]')", 'file' ],
+[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2]')", $vms_unix_rpt ? 't3/file' : '[.t3]file' ],
+[ "VMS->abs2rel('v:[t1.t2.t3]file','v:[t1.t2]')", $vms_unix_rpt ? 't3/file' : '[.t3]file' ],
+[ "VMS->abs2rel('[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ],
+[ "VMS->abs2rel('[t1.t2]file','[t1.t2.t3]')", $vms_unix_rpt ? '../file' : '[-]file' ],
+[ "VMS->abs2rel('[t1.t2.t3.t4]','[t1.t2.t3]')", $vms_unix_rpt ? 't4/' : '[.t4]' ],
+[ "VMS->abs2rel('[t4.t5.t6]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../t4/t5/t6/' : '[---.t4.t5.t6]' ],
+[ "VMS->abs2rel('[000000]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../' : '[---]' ],
+[ "VMS->abs2rel('a:[t1.t2.t4]','a:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ],
+[ "VMS->abs2rel('a:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/a/t1/t2/t4/' : 'a:[t1.t2.t4]' ],
+[ "VMS->abs2rel('[a.-.b.c.-]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../b/' : '[---.b]' ],
-[ "VMS->rel2abs('[.t4]','[t1.t2.t3]')", '[t1.t2.t3.t4]' ],
-[ "VMS->rel2abs('[.t4.t5]','[t1.t2.t3]')", '[t1.t2.t3.t4.t5]' ],
-[ "VMS->rel2abs('[]','[t1.t2.t3]')", '[t1.t2.t3]' ],
-[ "VMS->rel2abs('[-]','[t1.t2.t3]')", '[t1.t2]' ],
-[ "VMS->rel2abs('[-.t4]','[t1.t2.t3]')", '[t1.t2.t4]' ],
-[ "VMS->rel2abs('[t1]','[t1.t2.t3]')", '[t1]' ],
+[ "VMS->rel2abs('[.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/t4/' : '[t1.t2.t3.t4]' ],
+[ "VMS->rel2abs('[.t4.t5]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/t4/t5/' : '[t1.t2.t3.t4.t5]' ],
+[ "VMS->rel2abs('[]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/' : '[t1.t2.t3]' ],
+[ "VMS->rel2abs('[-]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/' : '[t1.t2]' ],
+[ "VMS->rel2abs('[-.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t4/' : '[t1.t2.t4]' ],
+[ "VMS->rel2abs('[t1]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/' : '[t1]' ],
[ "OS2->case_tolerant()", '1' ],
Property changes on: trunk/contrib/perl/dist/Cwd/t/Spec.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Cwd/t/crossplatform.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/crossplatform.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/crossplatform.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Cwd/t/crossplatform.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/t/cwd.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/cwd.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/cwd.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -36,7 +36,7 @@
$vms_mode = 0 if ($vms_unix_rpt);
}
-my $tests = 30;
+my $tests = 31;
# _perl_abs_path() currently only works when the directory separator
# is '/', so don't test it when it won't work.
my $EXTRA_ABSPATH_TESTS = ($Config{prefix} =~ m/\//) && $^O ne 'cygwin';
@@ -245,7 +245,17 @@
if $EXTRA_ABSPATH_TESTS;
}
+SKIP: {
+ my $dir = "${$}a\nx";
+ mkdir $dir or skip "OS does not support dir names containing LF";
+ chdir $dir or skip "OS cannot chdir into LF";
+ eval { Cwd::fast_abs_path() };
+ is $@, "", 'fast_abs_path does not die in dir whose name contains LF';
+ chdir File::Spec->updir;
+ rmdir $dir;
+}
+
#############################################
# These routines give us sort of a poor-man's cross-platform
# directory or path comparison capability.
Property changes on: trunk/contrib/perl/dist/Cwd/t/cwd.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/t/rel2abs2rel.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/rel2abs2rel.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/rel2abs2rel.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -58,10 +58,10 @@
print "# Checking manipulations of \$^X=$^X\n";
my $perl = safe_rel($^X);
-is( sayok($perl), "ok\n", "`$perl rel2abs2rel$$.pl` works" );
+is( sayok($perl), "ok\n", "'$perl rel2abs2rel$$.pl' works" );
$perl = File::Spec->rel2abs($^X);
-is( sayok($perl), "ok\n", "`$perl rel2abs2rel$$.pl` works" );
+is( sayok($perl), "ok\n", "'$perl rel2abs2rel$$.pl' works" );
$perl = File::Spec->canonpath($perl);
is( sayok($perl), "ok\n", "canonpath(rel2abs($^X)) = $perl" );
Property changes on: trunk/contrib/perl/dist/Cwd/t/rel2abs2rel.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Cwd/t/taint.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/taint.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/taint.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -8,7 +8,14 @@
use File::Spec;
use lib File::Spec->catdir('t', 'lib');
-use Test::More tests => 17;
+use Test::More;
+BEGIN {
+ plan(
+ ${^TAINT}
+ ? (tests => 17)
+ : (skip_all => "A perl without taint support")
+ );
+}
use Scalar::Util qw/tainted/;
Property changes on: trunk/contrib/perl/dist/Cwd/t/taint.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Cwd/t/tmpdir.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/tmpdir.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/tmpdir.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Cwd/t/tmpdir.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Cwd/t/win32.t
===================================================================
--- trunk/contrib/perl/dist/Cwd/t/win32.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Cwd/t/win32.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Cwd/t/win32.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Data-Dumper/Changes
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,13 +1,103 @@
=head1 NAME
-HISTORY - public release history for Data::Dumper
+Changes - public release history for Data::Dumper
=head1 DESCRIPTION
=over 8
-=item 2.130 (date here)
+=item 2.145 (Mar 15 2013)
+Test refactoring and fixing wide and far.
+
+Various old-perl compat fixes.
+
+=item 2.143 (Feb 26 2013)
+
+Address vstring related test failures on 5.8: Skip tests for
+obscure case.
+
+Major improvements to test coverage and significant refactoring.
+
+Make Data::Dumper XS ignore Freezer return value. Fixes RT #116364.
+
+Change call of isALNUM to equivalent but more clearly named isWORDCHAR
+
+=item 2.139 (Dec 12 2012)
+
+Supply an explicit dynamic_config => 0 in META
+
+Properly list BUILD_REQUIRES prereqs (P5-RT#116028)
+
+Some optimizations. Removed useless "register" declarations.
+
+=item 2.136 (Oct 04 2012)
+
+Promote to stable release.
+
+Drop some "register" declarations.
+
+=item 2.135_07 (Aug 06 2012)
+
+Use the new utf8 to code point functions - fixing a potential
+reading buffer overrun.
+
+Data::Dumper: Sparseseen option to avoid building much of the seen
+hash: This has been measured to, in some cases, provide a 50% speed-up
+
+Dumper.xs: Avoid scan_vstring on 5.17.3 and up
+
+Avoid a warning from clang when compiling Data::Dumper
+
+Fix DD's dumping of qr|\/|
+
+Data::Dumper's Perl implementation was not working with overloaded
+blessed globs, which it thought were strings.
+
+Allow Data::Dumper to load on miniperl
+
+=item 2.135_02 (Dec 29 2011)
+
+Makes DD dump *{''} properly.
+
+[perl #101162] DD support for vstrings:
+Support for vstrings to Data::Dumper, in both Perl and XS
+implementations.
+
+=item 2.135_01 (Dec 19 2011)
+
+Make Data::Dumper UTF8- and null-clean with GVs.
+
+In Dumper.xs, use sv_newmortal() instead of sv_mortalcopy(&PL_sv_undef)
+for efficiency.
+
+Suppress compiler warning
+
+Keep verbatim pod in Data::Dumper within 80 cols
+
+=item 2.131 (May 27 2011)
+
+Essentially the same as version 2.130_02, but a production release.
+
+=item 2.130_03 (May 20 2011)
+
+Essentially the same as version 2.130_02, but a CPAN release
+for the eventual 2.131.
+
+=item 2.130_02
+
+This was only shipped with the perl core, never released to CPAN.
+
+Convert overload.t to Test::More
+
+Fix some spelling errors
+
+Fix some compiler warnings
+
+Fix an out of bounds write in Data-Dumper with malformed utf8 input
+
+=item 2.130 (Nov 20 2010)
+
C<Dumpxs> can now handle malformed UTF-8.
=item 2.129 (Oct 20 2010)
@@ -106,7 +196,7 @@
=item 2.08 (7 December 1997)
-Glob dumps don't output superfluous 'undef' anymore.
+Glob dumps don't output superflous 'undef' anymore.
Fixes from Gisle Aas <gisle at aas.no> to make Dumper() work with
overloaded strings in recent perls, and his new testsuite.
Property changes on: trunk/contrib/perl/dist/Data-Dumper/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Data-Dumper/Dumper.pm
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/Dumper.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/Dumper.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -9,7 +9,9 @@
package Data::Dumper;
-$VERSION = '2.130_02'; # Don't forget to set version and release date in POD!
+BEGIN {
+ $VERSION = '2.145'; # Don't forget to set version and release
+} # date in POD below!
#$| = 1;
@@ -28,13 +30,13 @@
# XSLoader should be attempted to load, or the pure perl flag
# toggled on load failure.
eval {
- require XSLoader;
- };
- $Useperl = 1 if $@;
+ require XSLoader;
+ XSLoader::load( 'Data::Dumper' );
+ 1
+ }
+ or $Useperl = 1;
}
-XSLoader::load( 'Data::Dumper' ) unless $Useperl;
-
# module vars and their defaults
$Indent = 2 unless defined $Indent;
$Purity = 0 unless defined $Purity;
@@ -53,6 +55,7 @@
$Useperl = 0 unless defined $Useperl;
$Sortkeys = 0 unless defined $Sortkeys;
$Deparse = 0 unless defined $Deparse;
+$Sparseseen = 0 unless defined $Sparseseen;
#
# expects an arrayref of values to be dumped.
@@ -63,36 +66,37 @@
sub new {
my($c, $v, $n) = @_;
- croak "Usage: PACKAGE->new(ARRAYREF, [ARRAYREF])"
+ croak "Usage: PACKAGE->new(ARRAYREF, [ARRAYREF])"
unless (defined($v) && (ref($v) eq 'ARRAY'));
$n = [] unless (defined($n) && (ref($n) eq 'ARRAY'));
- my($s) = {
- level => 0, # current recursive depth
- indent => $Indent, # various styles of indenting
- pad => $Pad, # all lines prefixed by this string
- xpad => "", # padding-per-level
- apad => "", # added padding for hash keys n such
- sep => "", # list separator
- pair => $Pair, # hash key/value separator: defaults to ' => '
- seen => {}, # local (nested) refs (id => [name, val])
- todump => $v, # values to dump []
- names => $n, # optional names for values []
- varname => $Varname, # prefix to use for tagging nameless ones
- purity => $Purity, # degree to which output is evalable
- useqq => $Useqq, # use "" for strings (backslashitis ensues)
- terse => $Terse, # avoid name output (where feasible)
- freezer => $Freezer, # name of Freezer method for objects
- toaster => $Toaster, # name of method to revive objects
- deepcopy => $Deepcopy, # dont cross-ref, except to stop recursion
- quotekeys => $Quotekeys, # quote hash keys
- 'bless' => $Bless, # keyword to use for "bless"
-# expdepth => $Expdepth, # cutoff depth for explicit dumping
- maxdepth => $Maxdepth, # depth beyond which we give up
- useperl => $Useperl, # use the pure Perl implementation
- sortkeys => $Sortkeys, # flag or filter for sorting hash keys
- deparse => $Deparse, # use B::Deparse for coderefs
- };
+ my($s) = {
+ level => 0, # current recursive depth
+ indent => $Indent, # various styles of indenting
+ pad => $Pad, # all lines prefixed by this string
+ xpad => "", # padding-per-level
+ apad => "", # added padding for hash keys n such
+ sep => "", # list separator
+ pair => $Pair, # hash key/value separator: defaults to ' => '
+ seen => {}, # local (nested) refs (id => [name, val])
+ todump => $v, # values to dump []
+ names => $n, # optional names for values []
+ varname => $Varname, # prefix to use for tagging nameless ones
+ purity => $Purity, # degree to which output is evalable
+ useqq => $Useqq, # use "" for strings (backslashitis ensues)
+ terse => $Terse, # avoid name output (where feasible)
+ freezer => $Freezer, # name of Freezer method for objects
+ toaster => $Toaster, # name of method to revive objects
+ deepcopy => $Deepcopy, # dont cross-ref, except to stop recursion
+ quotekeys => $Quotekeys, # quote hash keys
+ 'bless' => $Bless, # keyword to use for "bless"
+# expdepth => $Expdepth, # cutoff depth for explicit dumping
+ maxdepth => $Maxdepth, # depth beyond which we give up
+ useperl => $Useperl, # use the pure Perl implementation
+ sortkeys => $Sortkeys, # flag or filter for sorting hash keys
+ deparse => $Deparse, # use B::Deparse for coderefs
+ noseen => $Sparseseen, # do not populate the seen hash unless necessary
+ };
if ($Indent > 0) {
$s->{xpad} = " ";
@@ -101,26 +105,39 @@
return bless($s, $c);
}
-if ($] >= 5.008) {
- # Packed numeric addresses take less memory. Plus pack is faster than sprintf
- *init_refaddr_format = sub {};
+# Packed numeric addresses take less memory. Plus pack is faster than sprintf
- *format_refaddr = sub {
+# Most users of current versions of Data::Dumper will be 5.008 or later.
+# Anyone on 5.6.1 and 5.6.2 upgrading will be rare (particularly judging by
+# the bug reports from users on those platforms), so for the common case avoid
+# complexity, and avoid even compiling the unneeded code.
+
+sub init_refaddr_format {
+}
+
+sub format_refaddr {
require Scalar::Util;
pack "J", Scalar::Util::refaddr(shift);
- };
-} else {
- *init_refaddr_format = sub {
- require Config;
- my $f = $Config::Config{uvxformat};
- $f =~ tr/"//d;
- our $refaddr_format = "0x%" . $f;
- };
+};
- *format_refaddr = sub {
- require Scalar::Util;
- sprintf our $refaddr_format, Scalar::Util::refaddr(shift);
- }
+if ($] < 5.008) {
+ eval <<'EOC' or die;
+ no warnings 'redefine';
+ my $refaddr_format;
+ sub init_refaddr_format {
+ require Config;
+ my $f = $Config::Config{uvxformat};
+ $f =~ tr/"//d;
+ $refaddr_format = "0x%" . $f;
+ }
+
+ sub format_refaddr {
+ require Scalar::Util;
+ sprintf $refaddr_format, Scalar::Util::refaddr(shift);
+ }
+
+ 1
+EOC
}
#
@@ -132,21 +149,26 @@
init_refaddr_format();
my($k, $v, $id);
while (($k, $v) = each %$g) {
- if (defined $v and ref $v) {
- $id = format_refaddr($v);
- if ($k =~ /^[*](.*)$/) {
- $k = (ref $v eq 'ARRAY') ? ( "\\\@" . $1 ) :
- (ref $v eq 'HASH') ? ( "\\\%" . $1 ) :
- (ref $v eq 'CODE') ? ( "\\\&" . $1 ) :
- ( "\$" . $1 ) ;
- }
- elsif ($k !~ /^\$/) {
- $k = "\$" . $k;
- }
- $s->{seen}{$id} = [$k, $v];
+ if (defined $v) {
+ if (ref $v) {
+ $id = format_refaddr($v);
+ if ($k =~ /^[*](.*)$/) {
+ $k = (ref $v eq 'ARRAY') ? ( "\\\@" . $1 ) :
+ (ref $v eq 'HASH') ? ( "\\\%" . $1 ) :
+ (ref $v eq 'CODE') ? ( "\\\&" . $1 ) :
+ ( "\$" . $1 ) ;
+ }
+ elsif ($k !~ /^\$/) {
+ $k = "\$" . $k;
+ }
+ $s->{seen}{$id} = [$k, $v];
+ }
+ else {
+ carp "Only refs supported, ignoring non-ref item \$$k";
+ }
}
else {
- carp "Only refs supported, ignoring non-ref item \$$k";
+ carp "Value of ref must be defined; ignoring undefined item \$$k";
}
}
return $s;
@@ -161,9 +183,14 @@
#
sub Values {
my($s, $v) = @_;
- if (defined($v) && (ref($v) eq 'ARRAY')) {
- $s->{todump} = [@$v]; # make a copy
- return $s;
+ if (defined($v)) {
+ if (ref($v) eq 'ARRAY') {
+ $s->{todump} = [@$v]; # make a copy
+ return $s;
+ }
+ else {
+ croak "Argument to Values, if provided, must be array ref";
+ }
}
else {
return @{$s->{todump}};
@@ -175,9 +202,14 @@
#
sub Names {
my($s, $n) = @_;
- if (defined($n) && (ref($n) eq 'ARRAY')) {
- $s->{names} = [@$n]; # make a copy
- return $s;
+ if (defined($n)) {
+ if (ref($n) eq 'ARRAY') {
+ $s->{names} = [@$n]; # make a copy
+ return $s;
+ }
+ else {
+ croak "Argument to Names, if provided, must be array ref";
+ }
}
else {
return @{$s->{names}};
@@ -188,9 +220,9 @@
sub Dump {
return &Dumpxs
- unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl}) ||
- $Data::Dumper::Useqq || (ref($_[0]) && $_[0]->{useqq}) ||
- $Data::Dumper::Deparse || (ref($_[0]) && $_[0]->{deparse});
+ unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl}) ||
+ $Data::Dumper::Useqq || (ref($_[0]) && $_[0]->{useqq}) ||
+ $Data::Dumper::Deparse || (ref($_[0]) && $_[0]->{deparse});
return &Dumpperl;
}
@@ -208,28 +240,9 @@
$s = $s->new(@_) unless ref $s;
for $val (@{$s->{todump}}) {
- my $out = "";
@post = ();
$name = $s->{names}[$i++];
- if (defined $name) {
- if ($name =~ /^[*](.*)$/) {
- if (defined $val) {
- $name = (ref $val eq 'ARRAY') ? ( "\@" . $1 ) :
- (ref $val eq 'HASH') ? ( "\%" . $1 ) :
- (ref $val eq 'CODE') ? ( "\*" . $1 ) :
- ( "\$" . $1 ) ;
- }
- else {
- $name = "\$" . $1;
- }
- }
- elsif ($name !~ /^\$/) {
- $name = "\$" . $name;
- }
- }
- else {
- $name = "\$" . $s->{varname} . $i;
- }
+ $name = $s->_refine_name($name, $val, $i);
my $valstr;
{
@@ -239,9 +252,7 @@
}
$valstr = "$name = " . $valstr . ';' if @post or !$s->{terse};
- $out .= $s->{pad} . $valstr . $s->{sep};
- $out .= $s->{pad} . join(';' . $s->{sep} . $s->{pad}, @post)
- . ';' . $s->{sep} if @post;
+ my $out = $s->_compose_out($valstr, \@post);
push @out, $out;
}
@@ -255,6 +266,10 @@
return "'" . $val . "'";
}
+# Old Perls (5.14-) have trouble resetting vstring magic when it is no
+# longer valid.
+use constant _bad_vsmg => defined &_vstring && (_vstring(~v0)||'') eq "v0";
+
#
# twist, toil and turn;
# and recurse, of course.
@@ -263,8 +278,7 @@
#
sub _dump {
my($s, $val, $name) = @_;
- my($sname);
- my($out, $realpack, $realtype, $type, $ipad, $id, $blesspad);
+ my($out, $type, $id, $sname);
$type = ref $val;
$out = "";
@@ -281,47 +295,44 @@
}
require Scalar::Util;
- $realpack = Scalar::Util::blessed($val);
- $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val;
+ my $realpack = Scalar::Util::blessed($val);
+ my $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val;
$id = format_refaddr($val);
- # if it has a name, we need to either look it up, or keep a tab
- # on it so we know when we hit it later
- if (defined($name) and length($name)) {
- # keep a tab on it so that we dont fall into recursive pit
- if (exists $s->{seen}{$id}) {
-# if ($s->{expdepth} < $s->{level}) {
- if ($s->{purity} and $s->{level} > 0) {
- $out = ($realtype eq 'HASH') ? '{}' :
- ($realtype eq 'ARRAY') ? '[]' :
- 'do{my $o}' ;
- push @post, $name . " = " . $s->{seen}{$id}[0];
- }
- else {
- $out = $s->{seen}{$id}[0];
- if ($name =~ /^([\@\%])/) {
- my $start = $1;
- if ($out =~ /^\\$start/) {
- $out = substr($out, 1);
- }
- else {
- $out = $start . '{' . $out . '}';
- }
- }
- }
- return $out;
-# }
+ # Note: By this point $name is always defined and of non-zero length.
+ # Keep a tab on it so that we dont fall into recursive pit.
+ if (exists $s->{seen}{$id}) {
+ if ($s->{purity} and $s->{level} > 0) {
+ $out = ($realtype eq 'HASH') ? '{}' :
+ ($realtype eq 'ARRAY') ? '[]' :
+ 'do{my $o}' ;
+ push @post, $name . " = " . $s->{seen}{$id}[0];
}
else {
- # store our name
- $s->{seen}{$id} = [ (($name =~ /^[@%]/) ? ('\\' . $name ) :
- ($realtype eq 'CODE' and
- $name =~ /^[*](.*)$/) ? ('\\&' . $1 ) :
- $name ),
- $val ];
+ $out = $s->{seen}{$id}[0];
+ if ($name =~ /^([\@\%])/) {
+ my $start = $1;
+ if ($out =~ /^\\$start/) {
+ $out = substr($out, 1);
+ }
+ else {
+ $out = $start . '{' . $out . '}';
+ }
+ }
}
+ return $out;
}
- my $no_bless = 0;
+ else {
+ # store our name
+ $s->{seen}{$id} = [ (
+ ($name =~ /^[@%]/)
+ ? ('\\' . $name )
+ : ($realtype eq 'CODE' and $name =~ /^[*](.*)$/)
+ ? ('\\&' . $1 )
+ : $name
+ ), $val ];
+ }
+ my $no_bless = 0;
my $is_regex = 0;
if ( $realpack and ($] >= 5.009005 ? re::is_regexp($val) : $realpack eq 'Regexp') ) {
$is_regex = 1;
@@ -328,18 +339,20 @@
$no_bless = $realpack eq 'Regexp';
}
- # If purity is not set and maxdepth is set, then check depth:
+ # If purity is not set and maxdepth is set, then check depth:
# if we have reached maximum depth, return the string
# representation of the thing we are currently examining
- # at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)').
+ # at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)').
if (!$s->{purity}
- and $s->{maxdepth} > 0
- and $s->{level} >= $s->{maxdepth})
+ and defined($s->{maxdepth})
+ and $s->{maxdepth} > 0
+ and $s->{level} >= $s->{maxdepth})
{
return qq['$val'];
}
# we have a blessed ref
+ my ($blesspad);
if ($realpack and !$no_bless) {
$out = $s->{'bless'} . '( ';
$blesspad = $s->{apad};
@@ -347,13 +360,13 @@
}
$s->{level}++;
- $ipad = $s->{xpad} x $s->{level};
+ my $ipad = $s->{xpad} x $s->{level};
if ($is_regex) {
my $pat;
- # This really sucks, re:regexp_pattern is in ext/re/re.xs and not in
+ # This really sucks, re:regexp_pattern is in ext/re/re.xs and not in
# universal.c, and even worse we cant just require that re to be loaded
- # we *have* to use() it.
+ # we *have* to use() it.
# We should probably move it to universal.c for 5.10.1 and fix this.
# Currently we only use re::regexp_pattern when the re is blessed into another
# package. This has the disadvantage of meaning that a DD dump won't round trip
@@ -363,23 +376,25 @@
# But since this means loading the full debugging engine in process we wont
# bother unless its necessary for accuracy.
if (($realpack ne 'Regexp') && defined(*re::regexp_pattern{CODE})) {
- $pat = re::regexp_pattern($val);
- } else {
- $pat = "$val";
+ $pat = re::regexp_pattern($val);
}
- $pat =~ s,/,\\/,g;
+ else {
+ $pat = "$val";
+ }
+ $pat =~ s <(\\.)|/> { $1 || '\\/' }ge;
$out .= "qr/$pat/";
}
- elsif ($realtype eq 'SCALAR' || $realtype eq 'REF') {
+ elsif ($realtype eq 'SCALAR' || $realtype eq 'REF'
+ || $realtype eq 'VSTRING') {
if ($realpack) {
- $out .= 'do{\\(my $o = ' . $s->_dump($$val, "\${$name}") . ')}';
+ $out .= 'do{\\(my $o = ' . $s->_dump($$val, "\${$name}") . ')}';
}
else {
- $out .= '\\' . $s->_dump($$val, "\${$name}");
+ $out .= '\\' . $s->_dump($$val, "\${$name}");
}
}
elsif ($realtype eq 'GLOB') {
- $out .= '\\' . $s->_dump($$val, "*{$name}");
+ $out .= '\\' . $s->_dump($$val, "*{$name}");
}
elsif ($realtype eq 'ARRAY') {
my($pad, $mname);
@@ -386,134 +401,148 @@
my($i) = 0;
$out .= ($name =~ /^\@/) ? '(' : '[';
$pad = $s->{sep} . $s->{pad} . $s->{apad};
- ($name =~ /^\@(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
+ ($name =~ /^\@(.*)$/) ? ($mname = "\$" . $1) :
+ # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
+ ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
+ ($mname = $name . '->');
$mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
for my $v (@$val) {
- $sname = $mname . '[' . $i . ']';
- $out .= $pad . $ipad . '#' . $i if $s->{indent} >= 3;
- $out .= $pad . $ipad . $s->_dump($v, $sname);
- $out .= "," if $i++ < $#$val;
+ $sname = $mname . '[' . $i . ']';
+ $out .= $pad . $ipad . '#' . $i
+ if $s->{indent} >= 3;
+ $out .= $pad . $ipad . $s->_dump($v, $sname);
+ $out .= "," if $i++ < $#$val;
}
$out .= $pad . ($s->{xpad} x ($s->{level} - 1)) if $i;
$out .= ($name =~ /^\@/) ? ')' : ']';
}
elsif ($realtype eq 'HASH') {
- my($k, $v, $pad, $lpad, $mname, $pair);
+ my ($k, $v, $pad, $lpad, $mname, $pair);
$out .= ($name =~ /^\%/) ? '(' : '{';
$pad = $s->{sep} . $s->{pad} . $s->{apad};
$lpad = $s->{apad};
$pair = $s->{pair};
($name =~ /^\%(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
+ # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
+ ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
+ ($mname = $name . '->');
$mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
- my ($sortkeys, $keys, $key) = ("$s->{sortkeys}");
+ my $sortkeys = defined($s->{sortkeys}) ? $s->{sortkeys} : '';
+ my $keys = [];
if ($sortkeys) {
- if (ref($s->{sortkeys}) eq 'CODE') {
- $keys = $s->{sortkeys}($val);
- unless (ref($keys) eq 'ARRAY') {
- carp "Sortkeys subroutine did not return ARRAYREF";
- $keys = [];
- }
- }
- else {
- $keys = [ sort keys %$val ];
- }
+ if (ref($s->{sortkeys}) eq 'CODE') {
+ $keys = $s->{sortkeys}($val);
+ unless (ref($keys) eq 'ARRAY') {
+ carp "Sortkeys subroutine did not return ARRAYREF";
+ $keys = [];
+ }
+ }
+ else {
+ $keys = [ sort keys %$val ];
+ }
}
# Ensure hash iterator is reset
keys(%$val);
+ my $key;
while (($k, $v) = ! $sortkeys ? (each %$val) :
- @$keys ? ($key = shift(@$keys), $val->{$key}) :
- () )
+ @$keys ? ($key = shift(@$keys), $val->{$key}) :
+ () )
{
- my $nk = $s->_dump($k, "");
- $nk = $1 if !$s->{quotekeys} and $nk =~ /^[\"\']([A-Za-z_]\w*)[\"\']$/;
- $sname = $mname . '{' . $nk . '}';
- $out .= $pad . $ipad . $nk . $pair;
+ my $nk = $s->_dump($k, "");
+ $nk = $1
+ if !$s->{quotekeys} and $nk =~ /^[\"\']([A-Za-z_]\w*)[\"\']$/;
+ $sname = $mname . '{' . $nk . '}';
+ $out .= $pad . $ipad . $nk . $pair;
- # temporarily alter apad
- $s->{apad} .= (" " x (length($nk) + 4)) if $s->{indent} >= 2;
- $out .= $s->_dump($val->{$k}, $sname) . ",";
- $s->{apad} = $lpad if $s->{indent} >= 2;
+ # temporarily alter apad
+ $s->{apad} .= (" " x (length($nk) + 4))
+ if $s->{indent} >= 2;
+ $out .= $s->_dump($val->{$k}, $sname) . ",";
+ $s->{apad} = $lpad
+ if $s->{indent} >= 2;
}
if (substr($out, -1) eq ',') {
- chop $out;
- $out .= $pad . ($s->{xpad} x ($s->{level} - 1));
+ chop $out;
+ $out .= $pad . ($s->{xpad} x ($s->{level} - 1));
}
$out .= ($name =~ /^\%/) ? ')' : '}';
}
elsif ($realtype eq 'CODE') {
if ($s->{deparse}) {
- require B::Deparse;
- my $sub = 'sub ' . (B::Deparse->new)->coderef2text($val);
- $pad = $s->{sep} . $s->{pad} . $s->{apad} . $s->{xpad} x ($s->{level} - 1);
- $sub =~ s/\n/$pad/gse;
- $out .= $sub;
- } else {
+ require B::Deparse;
+ my $sub = 'sub ' . (B::Deparse->new)->coderef2text($val);
+ $pad = $s->{sep} . $s->{pad} . $s->{apad} . $s->{xpad} x ($s->{level} - 1);
+ $sub =~ s/\n/$pad/gse;
+ $out .= $sub;
+ }
+ else {
$out .= 'sub { "DUMMY" }';
carp "Encountered CODE ref, using dummy placeholder" if $s->{purity};
}
}
else {
- croak "Can\'t handle $realtype type.";
+ croak "Can't handle '$realtype' type";
}
-
+
if ($realpack and !$no_bless) { # we have a blessed ref
$out .= ', ' . _quote($realpack) . ' )';
- $out .= '->' . $s->{toaster} . '()' if $s->{toaster} ne '';
+ $out .= '->' . $s->{toaster} . '()'
+ if $s->{toaster} ne '';
$s->{apad} = $blesspad;
}
$s->{level}--;
-
}
else { # simple scalar
my $ref = \$_[1];
+ my $v;
# first, catalog the scalar
if ($name ne '') {
$id = format_refaddr($ref);
if (exists $s->{seen}{$id}) {
if ($s->{seen}{$id}[2]) {
- $out = $s->{seen}{$id}[0];
- #warn "[<$out]\n";
- return "\${$out}";
- }
+ $out = $s->{seen}{$id}[0];
+ #warn "[<$out]\n";
+ return "\${$out}";
+ }
}
else {
- #warn "[>\\$name]\n";
- $s->{seen}{$id} = ["\\$name", $ref];
+ #warn "[>\\$name]\n";
+ $s->{seen}{$id} = ["\\$name", $ref];
}
}
- if (ref($ref) eq 'GLOB' or "$ref" =~ /=GLOB\([^()]+\)$/) { # glob
+ $ref = \$val;
+ if (ref($ref) eq 'GLOB') { # glob
my $name = substr($val, 1);
- if ($name =~ /^[A-Za-z_][\w:]*$/) {
- $name =~ s/^main::/::/;
- $sname = $name;
+ if ($name =~ /^[A-Za-z_][\w:]*$/ && $name ne 'main::') {
+ $name =~ s/^main::/::/;
+ $sname = $name;
}
else {
- $sname = $s->_dump($name, "");
- $sname = '{' . $sname . '}';
+ $sname = $s->_dump(
+ $name eq 'main::' || $] < 5.007 && $name eq "main::\0"
+ ? ''
+ : $name,
+ "",
+ );
+ $sname = '{' . $sname . '}';
}
if ($s->{purity}) {
- my $k;
- local ($s->{level}) = 0;
- for $k (qw(SCALAR ARRAY HASH)) {
- my $gval = *$val{$k};
- next unless defined $gval;
- next if $k eq "SCALAR" && ! defined $$gval; # always there
+ my $k;
+ local ($s->{level}) = 0;
+ for $k (qw(SCALAR ARRAY HASH)) {
+ my $gval = *$val{$k};
+ next unless defined $gval;
+ next if $k eq "SCALAR" && ! defined $$gval; # always there
- # _dump can push into @post, so we hold our place using $postlen
- my $postlen = scalar @post;
- $post[$postlen] = "\*$sname = ";
- local ($s->{apad}) = " " x length($post[$postlen]) if $s->{indent} >= 2;
- $post[$postlen] .= $s->_dump($gval, "\*$sname\{$k\}");
- }
+ # _dump can push into @post, so we hold our place using $postlen
+ my $postlen = scalar @post;
+ $post[$postlen] = "\*$sname = ";
+ local ($s->{apad}) = " " x length($post[$postlen]) if $s->{indent} >= 2;
+ $post[$postlen] .= $s->_dump($gval, "\*$sname\{$k\}");
+ }
}
$out .= '*' . $sname;
}
@@ -520,13 +549,21 @@
elsif (!defined($val)) {
$out .= "undef";
}
+ elsif (defined &_vstring and $v = _vstring($val)
+ and !_bad_vsmg || eval $v eq $val) {
+ $out .= $v;
+ }
+ elsif (!defined &_vstring
+ and ref $ref eq 'VSTRING' || eval{Scalar::Util::isvstring($val)}) {
+ $out .= sprintf "%vd", $val;
+ }
elsif ($val =~ /^(?:0|-?[1-9]\d{0,8})\z/) { # safe decimal number
$out .= $val;
}
- else { # string
+ else { # string
if ($s->{useqq} or $val =~ tr/\0-\377//c) {
# Fall back to qq if there's Unicode
- $out .= qquote($val, $s->{useqq});
+ $out .= qquote($val, $s->{useqq});
}
else {
$out .= _quote($val);
@@ -545,7 +582,7 @@
}
return $out;
}
-
+
#
# non-OO style of earlier version
#
@@ -558,12 +595,8 @@
return Data::Dumper->Dumpxs([@_], []);
}
-sub Dumpf { return Data::Dumper->Dump(@_) }
-
-sub Dumpp { print Data::Dumper->Dump(@_) }
-
#
-# reset the "seen" cache
+# reset the "seen" cache
#
sub Reset {
my($s) = shift;
@@ -665,8 +698,13 @@
defined($v) ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'};
}
+sub Sparseseen {
+ my($s, $v) = @_;
+ defined($v) ? (($s->{'noseen'} = $v), return $s) : $s->{'noseen'};
+}
+
# used by qquote below
-my %esc = (
+my %esc = (
"\a" => "\\a",
"\b" => "\\b",
"\t" => "\\t",
@@ -682,7 +720,7 @@
s/([\\\"\@\$])/\\$1/g;
my $bytes; { use bytes; $bytes = length }
s/([^\x00-\x7f])/'\x{'.sprintf("%x",ord($1)).'}'/ge if $bytes > length;
- return qq("$_") unless
+ return qq("$_") unless
/[^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~]/; # fast exit
my $high = shift || "";
@@ -719,6 +757,45 @@
# access to sortsv() from XS
sub _sortkeys { [ sort keys %{$_[0]} ] }
+sub _refine_name {
+ my $s = shift;
+ my ($name, $val, $i) = @_;
+ if (defined $name) {
+ if ($name =~ /^[*](.*)$/) {
+ if (defined $val) {
+ $name = (ref $val eq 'ARRAY') ? ( "\@" . $1 ) :
+ (ref $val eq 'HASH') ? ( "\%" . $1 ) :
+ (ref $val eq 'CODE') ? ( "\*" . $1 ) :
+ ( "\$" . $1 ) ;
+ }
+ else {
+ $name = "\$" . $1;
+ }
+ }
+ elsif ($name !~ /^\$/) {
+ $name = "\$" . $name;
+ }
+ }
+ else { # no names provided
+ $name = "\$" . $s->{varname} . $i;
+ }
+ return $name;
+}
+
+sub _compose_out {
+ my $s = shift;
+ my ($valstr, $postref) = @_;
+ my $out = "";
+ $out .= $s->{pad} . $valstr . $s->{sep};
+ if (@{$postref}) {
+ $out .= $s->{pad} .
+ join(';' . $s->{sep} . $s->{pad}, @{$postref}) .
+ ';' .
+ $s->{sep};
+ }
+ return $out;
+}
+
1;
__END__
@@ -759,7 +836,8 @@
structures correctly.
The return value can be C<eval>ed to get back an identical copy of the
-original reference structure.
+original reference structure. (Please do consider the security implications
+of eval'ing code from untrusted sources!)
Any references that are the same as one of those passed in will be named
C<$VAR>I<n> (where I<n> is a numeric suffix), and other duplicate references
@@ -777,7 +855,7 @@
you need to ensure that any variables it accesses are previously declared.
In the extended usage form, the references to be dumped can be given
-user-specified names. If a name begins with a C<*>, the output will
+user-specified names. If a name begins with a C<*>, the output will
describe the dereferenced type of the supplied reference for hashes and
arrays, and coderefs. Output of names will be avoided where possible if
the C<Terse> flag is set.
@@ -787,7 +865,7 @@
chained together.
Several styles of output are possible, all controlled by setting
-the C<Indent> flag. See L<Configuration Variables or Methods> below
+the C<Indent> flag. See L<Configuration Variables or Methods> below
for details.
@@ -839,15 +917,21 @@
=item I<$OBJ>->Values(I<[ARRAYREF]>)
-Queries or replaces the internal array of values that will be dumped.
-When called without arguments, returns the values. Otherwise, returns the
-object itself.
+Queries or replaces the internal array of values that will be dumped. When
+called without arguments, returns the values as a list. When called with a
+reference to an array of replacement values, returns the object itself. When
+called with any other type of argument, dies.
=item I<$OBJ>->Names(I<[ARRAYREF]>)
Queries or replaces the internal array of user supplied names for the values
-that will be dumped. When called without arguments, returns the names.
-Otherwise, returns the object itself.
+that will be dumped. When called without arguments, returns the names. When
+called with an array of replacement names, returns the object itself. If the
+number of replacment names exceeds the number of values to be named, the
+excess names will not be used. If the number of replacement names falls short
+of the number of values to be named, the list of replacment names will be
+exhausted and remaining values will not be renamed. When
+called with any other type of argument, dies.
=item I<$OBJ>->Reset
@@ -874,7 +958,7 @@
Several configuration variables can be used to control the kind of output
generated when using the procedural interface. These variables are usually
C<local>ized in a block so that other parts of the code are not affected by
-the change.
+the change.
These variables determine the default state of the object created by calling
the C<new> method, but cannot be used to alter the state of the object
@@ -987,7 +1071,7 @@
$Data::Dumper::Quotekeys I<or> $I<OBJ>->Quotekeys(I<[NEWVAL]>)
Can be set to a boolean value to control whether hash keys are quoted.
-A false value will avoid quoting hash keys when it looks like a simple
+A defined false value will avoid quoting hash keys when it looks like a simple
string. Default is 1, which will always enclose hash keys in quotes.
=item *
@@ -1019,8 +1103,8 @@
Can be set to a positive integer that specifies the depth beyond which
we don't venture into a structure. Has no effect when
C<Data::Dumper::Purity> is set. (Useful in debugger when we often don't
-want to see more than enough). Default is 0, which means there is
-no maximum depth.
+want to see more than enough). Default is 0, which means there is
+no maximum depth.
=item *
@@ -1064,6 +1148,26 @@
Caution : use this option only if you know that your coderefs will be
properly reconstructed by C<B::Deparse>.
+=item *
+
+$Data::Dumper::Sparseseen I<or> $I<OBJ>->Sparseseen(I<[NEWVAL]>)
+
+By default, Data::Dumper builds up the "seen" hash of scalars that
+it has encountered during serialization. This is very expensive.
+This seen hash is necessary to support and even just detect circular
+references. It is exposed to the user via the C<Seen()> call both
+for writing and reading.
+
+If you, as a user, do not need explicit access to the "seen" hash,
+then you can set the C<Sparseseen> option to allow Data::Dumper
+to eschew building the "seen" hash for scalars that are known not
+to possess more than one reference. This speeds up serialization
+considerably if you use the XS implementation.
+
+Note: If you turn on C<Sparseseen>, then you must not rely on the
+content of the seen hash since its contents will be an
+implementation detail!
+
=back
=head2 Exports
@@ -1095,7 +1199,7 @@
$foo = Foo->new;
$fuz = Fuz->new;
$boo = [ 1, [], "abcd", \*foo,
- {1 => 'a', 023 => 'b', 0x45 => 'c'},
+ {1 => 'a', 023 => 'b', 0x45 => 'c'},
\\"p\q\'r", $foo, $fuz];
########
@@ -1106,20 +1210,20 @@
print($@) if $@;
print Dumper($boo), Dumper($bar); # pretty print (no array indices)
- $Data::Dumper::Terse = 1; # don't output names where feasible
- $Data::Dumper::Indent = 0; # turn off all pretty print
+ $Data::Dumper::Terse = 1; # don't output names where feasible
+ $Data::Dumper::Indent = 0; # turn off all pretty print
print Dumper($boo), "\n";
- $Data::Dumper::Indent = 1; # mild pretty print
+ $Data::Dumper::Indent = 1; # mild pretty print
print Dumper($boo);
- $Data::Dumper::Indent = 3; # pretty print with array indices
+ $Data::Dumper::Indent = 3; # pretty print with array indices
print Dumper($boo);
- $Data::Dumper::Useqq = 1; # print strings in double quotes
+ $Data::Dumper::Useqq = 1; # print strings in double quotes
print Dumper($boo);
- $Data::Dumper::Pair = " : "; # specify hash key/value separator
+ $Data::Dumper::Pair = " : "; # specify hash key/value separator
print Dumper($boo);
@@ -1185,20 +1289,20 @@
sub new { bless { state => 'awake' }, shift }
sub Freeze {
my $s = shift;
- print STDERR "preparing to sleep\n";
- $s->{state} = 'asleep';
- return bless $s, 'Foo::ZZZ';
+ print STDERR "preparing to sleep\n";
+ $s->{state} = 'asleep';
+ return bless $s, 'Foo::ZZZ';
}
package Foo::ZZZ;
sub Thaw {
my $s = shift;
- print STDERR "waking up\n";
- $s->{state} = 'awake';
- return bless $s, 'Foo';
+ print STDERR "waking up\n";
+ $s->{state} = 'awake';
+ return bless $s, 'Foo';
}
- package Foo;
+ package main;
use Data::Dumper;
$a = Foo->new;
$b = Data::Dumper->new([$a], ['c']);
@@ -1297,7 +1401,7 @@
=head1 VERSION
-Version 2.130_02 (Dec 20 2010)
+Version 2.145 (March 15 2013))
=head1 SEE ALSO
Property changes on: trunk/contrib/perl/dist/Data-Dumper/Dumper.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Data-Dumper/Dumper.xs
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/Dumper.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/Dumper.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -12,10 +12,14 @@
# define DD_USE_OLD_ID_FORMAT
#endif
+#ifndef isWORDCHAR
+# define isWORDCHAR(c) isALNUM(c)
+#endif
+
static I32 num_q (const char *s, STRLEN slen);
static I32 esc_q (char *dest, const char *src, STRLEN slen);
static I32 esc_q_utf8 (pTHX_ SV *sv, const char *src, STRLEN slen);
-static I32 needs_quote(register const char *s);
+static I32 needs_quote(const char *s, STRLEN len);
static SV *sv_x (pTHX_ SV *sv, const char *str, STRLEN len, I32 n);
static I32 DD_dump (pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval,
HV *seenhv, AV *postav, I32 *levelp, I32 indent,
@@ -22,12 +26,16 @@
SV *pad, SV *xpad, SV *apad, SV *sep, SV *pair,
SV *freezer, SV *toaster,
I32 purity, I32 deepcopy, I32 quotekeys, SV *bless,
- I32 maxdepth, SV *sortkeys);
+ I32 maxdepth, SV *sortkeys, int use_sparse_seen_hash);
#ifndef HvNAME_get
#define HvNAME_get HvNAME
#endif
+/* Perls 7 through portions of 15 used utf8_to_uvchr() which didn't have a
+ * length parameter. This wrongly allowed reading beyond the end of buffer
+ * given malformed input */
+
#if PERL_VERSION <= 6 /* Perl 5.6 and earlier */
# ifdef EBCDIC
@@ -37,21 +45,43 @@
# endif
UV
-Perl_utf8_to_uvchr(pTHX_ U8 *s, STRLEN *retlen)
+Perl_utf8_to_uvchr_buf(pTHX_ U8 *s, U8 *send, STRLEN *retlen)
{
- const UV uv = utf8_to_uv(s, UTF8_MAXLEN, retlen,
+ const UV uv = utf8_to_uv(s, send - s, retlen,
ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY);
return UNI_TO_NATIVE(uv);
}
# if !defined(PERL_IMPLICIT_CONTEXT)
-# define utf8_to_uvchr Perl_utf8_to_uvchr
+# define utf8_to_uvchr_buf Perl_utf8_to_uvchr_buf
# else
-# define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b)
+# define utf8_to_uvchr_buf(a,b,c) Perl_utf8_to_uvchr_buf(aTHX_ a,b,c)
# endif
#endif /* PERL_VERSION <= 6 */
+/* Perl 5.7 through part of 5.15 */
+#if PERL_VERSION > 6 && PERL_VERSION <= 15 && ! defined(utf8_to_uvchr_buf)
+
+UV
+Perl_utf8_to_uvchr_buf(pTHX_ U8 *s, U8 *send, STRLEN *retlen)
+{
+ /* We have to discard <send> for these versions; hence can read off the
+ * end of the buffer if there is a malformation that indicates the
+ * character is longer than the space available */
+
+ const UV uv = utf8_to_uvchr(s, retlen);
+ return UNI_TO_NATIVE(uv);
+}
+
+# if !defined(PERL_IMPLICIT_CONTEXT)
+# define utf8_to_uvchr_buf Perl_utf8_to_uvchr_buf
+# else
+# define utf8_to_uvchr_buf(a,b,c) Perl_utf8_to_uvchr_buf(aTHX_ a,b,c)
+# endif
+
+#endif /* PERL_VERSION > 6 && <= 15 */
+
/* Changes in 5.7 series mean that now IOK is only set if scalar is
precisely integer but in 5.6 and earlier we need to do a more
complex test */
@@ -63,11 +93,12 @@
/* does a string need to be protected? */
static I32
-needs_quote(register const char *s)
+needs_quote(const char *s, STRLEN len)
{
+ const char *send = s+len;
TOP:
if (s[0] == ':') {
- if (*++s) {
+ if (++s<send) {
if (*s++ != ':')
return 1;
}
@@ -75,8 +106,8 @@
return 1;
}
if (isIDFIRST(*s)) {
- while (*++s)
- if (!isALNUM(*s)) {
+ while (++s<send)
+ if (!isWORDCHAR(*s)) {
if (*s == ':')
goto TOP;
else
@@ -90,9 +121,9 @@
/* count the number of "'"s and "\"s in string */
static I32
-num_q(register const char *s, register STRLEN slen)
+num_q(const char *s, STRLEN slen)
{
- register I32 ret = 0;
+ I32 ret = 0;
while (slen > 0) {
if (*s == '\'' || *s == '\\')
@@ -108,9 +139,9 @@
/* slen number of characters in s will be escaped */
/* destination must be long enough for additional chars */
static I32
-esc_q(register char *d, register const char *s, register STRLEN slen)
+esc_q(char *d, const char *s, STRLEN slen)
{
- register I32 ret = 0;
+ I32 ret = 0;
while (slen > 0) {
switch (*s) {
@@ -128,7 +159,7 @@
}
static I32
-esc_q_utf8(pTHX_ SV* sv, register const char *src, register STRLEN slen)
+esc_q_utf8(pTHX_ SV* sv, const char *src, STRLEN slen)
{
char *r, *rstart;
const char *s = src;
@@ -146,7 +177,7 @@
/* this will need EBCDICification */
for (s = src; s < send; s += increment) {
- const UV k = utf8_to_uvchr((U8*)s, NULL);
+ const UV k = utf8_to_uvchr_buf((U8*)s, (U8*) send, NULL);
/* check for invalid utf8 */
increment = (k == 0 && *s != '\0') ? 1 : UTF8SKIP(s);
@@ -183,7 +214,7 @@
*r++ = '"';
for (s = src; s < send; s += UTF8SKIP(s)) {
- const UV k = utf8_to_uvchr((U8*)s, NULL);
+ const UV k = utf8_to_uvchr_buf((U8*)s, (U8*) send, NULL);
if (k == '"' || k == '\\' || k == '$' || k == '@') {
*r++ = '\\';
@@ -266,7 +297,8 @@
DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
AV *postav, I32 *levelp, I32 indent, SV *pad, SV *xpad,
SV *apad, SV *sep, SV *pair, SV *freezer, SV *toaster, I32 purity,
- I32 deepcopy, I32 quotekeys, SV *bless, I32 maxdepth, SV *sortkeys)
+ I32 deepcopy, I32 quotekeys, SV *bless, I32 maxdepth, SV *sortkeys,
+ int use_sparse_seen_hash)
{
char tmpbuf[128];
U32 i;
@@ -316,7 +348,7 @@
{
dSP; ENTER; SAVETMPS; PUSHMARK(sp);
XPUSHs(val); PUTBACK;
- i = perl_call_method(SvPVX_const(freezer), G_EVAL|G_VOID);
+ i = perl_call_method(SvPVX_const(freezer), G_EVAL|G_VOID|G_DISCARD);
SPAGAIN;
if (SvTRUE(ERRSV))
warn("WARNING(Freezer method call failed): %"SVf"", ERRSV);
@@ -462,14 +494,17 @@
{
STRLEN rlen;
const char *rval = SvPV(val, rlen);
- const char *slash = strchr(rval, '/');
+ const char * const rend = rval+rlen;
+ const char *slash = rval;
sv_catpvn(retval, "qr/", 3);
- while (slash) {
+ for (;slash < rend; slash++) {
+ if (*slash == '\\') { ++slash; continue; }
+ if (*slash == '/') {
sv_catpvn(retval, rval, slash-rval);
sv_catpvn(retval, "\\/", 2);
rlen -= slash-rval+1;
rval = slash+1;
- slash = strchr(rval, '/');
+ }
}
sv_catpvn(retval, rval, rlen);
sv_catpvn(retval, "/", 1);
@@ -489,7 +524,7 @@
DD_dump(aTHX_ ival, SvPVX_const(namesv), SvCUR(namesv), retval, seenhv,
postav, levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
sv_catpvn(retval, ")}", 2);
} /* plain */
else {
@@ -497,7 +532,7 @@
DD_dump(aTHX_ ival, SvPVX_const(namesv), SvCUR(namesv), retval, seenhv,
postav, levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
}
SvREFCNT_dec(namesv);
}
@@ -509,7 +544,7 @@
DD_dump(aTHX_ ival, SvPVX_const(namesv), SvCUR(namesv), retval, seenhv,
postav, levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
SvREFCNT_dec(namesv);
}
else if (realtype == SVt_PVAV) {
@@ -582,7 +617,7 @@
DD_dump(aTHX_ elem, iname, ilen, retval, seenhv, postav,
levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
if (ix < ixmax)
sv_catpvn(retval, ",", 1);
}
@@ -647,7 +682,7 @@
(void)hv_iterinit((HV*)ival);
while ((entry = hv_iternext((HV*)ival))) {
sv = hv_iterkeysv(entry);
- SvREFCNT_inc(sv);
+ (void)SvREFCNT_inc(sv);
av_push(keys, sv);
}
# ifdef USE_LOCALE_NUMERIC
@@ -703,11 +738,11 @@
if (sortkeys) {
char *key;
svp = av_fetch(keys, i, FALSE);
- keysv = svp ? *svp : sv_mortalcopy(&PL_sv_undef);
+ keysv = svp ? *svp : sv_newmortal();
key = SvPV(keysv, keylen);
svp = hv_fetch((HV*)ival, key,
SvUTF8(keysv) ? -(I32)keylen : (I32)keylen, 0);
- hval = svp ? *svp : sv_mortalcopy(&PL_sv_undef);
+ hval = svp ? *svp : sv_newmortal();
}
else {
keysv = hv_iterkeysv(entry);
@@ -741,7 +776,7 @@
more common doesn't need quoting case.
The code is also smaller (22044 vs 22260) because I've been
able to pull the common logic out to both sides. */
- if (quotekeys || needs_quote(key)) {
+ if (quotekeys || needs_quote(key,keylen)) {
if (do_utf8) {
STRLEN ocur = SvCUR(retval);
nlen = esc_q_utf8(aTHX_ retval, key, klen);
@@ -789,7 +824,7 @@
DD_dump(aTHX_ hval, SvPVX_const(sname), SvCUR(sname), retval, seenhv,
postav, levelp, indent, pad, xpad, newapad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
SvREFCNT_dec(sname);
Safefree(nkey_buffer);
if (indent >= 2)
@@ -814,7 +849,7 @@
warn("Encountered CODE ref, using dummy placeholder");
}
else {
- warn("cannot handle ref type %ld", realtype);
+ warn("cannot handle ref type %d", (int)realtype);
}
if (realpack && !no_bless) { /* free blessed allocs */
@@ -856,6 +891,7 @@
}
else {
STRLEN i;
+ const MAGIC *mg;
if (namelen) {
#ifdef DD_USE_OLD_ID_FORMAT
@@ -878,7 +914,14 @@
return 1;
}
}
- else if (val != &PL_sv_undef) {
+ /* If we're allowed to keep only a sparse "seen" hash
+ * (IOW, the user does not expect it to contain everything
+ * after the dump, then only store in seen hash if the SV
+ * ref count is larger than 1. If it's 1, then we know that
+ * there is no other reference, duh. This is an optimization.
+ * Note that we'd have to check for weak-refs, too, but this is
+ * already the branch for non-refs only. */
+ else if (val != &PL_sv_undef && (!use_sparse_seen_hash || SvREFCNT(val) > 1)) {
SV * const namesv = newSVpvn("\\", 1);
sv_catpvn(namesv, name, namelen);
seenentry = newAV();
@@ -916,9 +959,29 @@
if(i) ++c, --i; /* just get the name */
if (i >= 6 && strncmp(c, "main::", 6) == 0) {
c += 4;
- i -= 4;
+#if PERL_VERSION < 7
+ if (i == 6 || (i == 7 && c[6] == '\0'))
+#else
+ if (i == 6)
+#endif
+ i = 0; else i -= 4;
}
- if (needs_quote(c)) {
+ if (needs_quote(c,i)) {
+#ifdef GvNAMEUTF8
+ if (GvNAMEUTF8(val)) {
+ sv_grow(retval, SvCUR(retval)+2);
+ r = SvPVX(retval)+SvCUR(retval);
+ r[0] = '*'; r[1] = '{';
+ SvCUR_set(retval, SvCUR(retval)+2);
+ esc_q_utf8(aTHX_ retval, c, i);
+ sv_grow(retval, SvCUR(retval)+2);
+ r = SvPVX(retval)+SvCUR(retval);
+ r[0] = '}'; r[1] = '\0';
+ i = 1;
+ }
+ else
+#endif
+ {
sv_grow(retval, SvCUR(retval)+6+2*i);
r = SvPVX(retval)+SvCUR(retval);
r[0] = '*'; r[1] = '{'; r[2] = '\'';
@@ -926,6 +989,7 @@
i += 3;
r[i++] = '\''; r[i++] = '}';
r[i] = '\0';
+ }
}
else {
sv_grow(retval, SvCUR(retval)+i+2);
@@ -969,7 +1033,7 @@
seenhv, postav, &nlevel, indent, pad, xpad,
newapad, sep, pair, freezer, toaster, purity,
deepcopy, quotekeys, bless, maxdepth,
- sortkeys);
+ sortkeys, use_sparse_seen_hash);
SvREFCNT_dec(e);
}
}
@@ -981,6 +1045,20 @@
else if (val == &PL_sv_undef || !SvOK(val)) {
sv_catpvn(retval, "undef", 5);
}
+#ifdef SvVOK
+ else if (SvMAGICAL(val) && (mg = mg_find(val, 'V'))) {
+# if !defined(PL_vtbl_vstring) && PERL_VERSION < 17
+ SV * const vecsv = sv_newmortal();
+# if PERL_VERSION < 10
+ scan_vstring(mg->mg_ptr, vecsv);
+# else
+ scan_vstring(mg->mg_ptr, mg->mg_ptr + mg->mg_len, vecsv);
+# endif
+ if (!sv_eq(vecsv, val)) goto integer_came_from_string;
+# endif
+ sv_catpvn(retval, (const char *)mg->mg_ptr, mg->mg_len);
+ }
+#endif
else {
integer_came_from_string:
c = SvPV(val, i);
@@ -1037,6 +1115,7 @@
I32 purity, deepcopy, quotekeys, maxdepth = 0;
char tmpbuf[1024];
I32 gimme = GIMME;
+ int use_sparse_seen_hash = 0;
if (!SvROK(href)) { /* call new to get an object first */
if (items < 2)
@@ -1046,10 +1125,11 @@
SAVETMPS;
PUSHMARK(sp);
- XPUSHs(href);
- XPUSHs(sv_2mortal(newSVsv(ST(1))));
+ EXTEND(SP, 3); /* 3 == max of all branches below */
+ PUSHs(href);
+ PUSHs(sv_2mortal(newSVsv(ST(1))));
if (items >= 3)
- XPUSHs(sv_2mortal(newSVsv(ST(2))));
+ PUSHs(sv_2mortal(newSVsv(ST(2))));
PUTBACK;
i = perl_call_method("new", G_SCALAR);
SPAGAIN;
@@ -1079,6 +1159,10 @@
if ((svp = hv_fetch(hv, "seen", 4, FALSE)) && SvROK(*svp))
seenhv = (HV*)SvRV(*svp);
+ else
+ use_sparse_seen_hash = 1;
+ if ((svp = hv_fetch(hv, "noseen", 6, FALSE)))
+ use_sparse_seen_hash = (SvOK(*svp) && SvIV(*svp) != 0);
if ((svp = hv_fetch(hv, "todump", 6, FALSE)) && SvROK(*svp))
todumpav = (AV*)SvRV(*svp);
if ((svp = hv_fetch(hv, "names", 5, FALSE)) && SvROK(*svp))
@@ -1196,7 +1280,7 @@
DD_dump(aTHX_ val, SvPVX_const(name), SvCUR(name), valstr, seenhv,
postav, &level, indent, pad, xpad, newapad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys,
- bless, maxdepth, sortkeys);
+ bless, maxdepth, sortkeys, use_sparse_seen_hash);
SPAGAIN;
if (indent >= 2 && !terse)
@@ -1244,3 +1328,21 @@
if (gimme == G_SCALAR)
XPUSHs(sv_2mortal(retval));
}
+
+SV *
+Data_Dumper__vstring(sv)
+ SV *sv;
+ PROTOTYPE: $
+ CODE:
+ {
+#ifdef SvVOK
+ const MAGIC *mg;
+ RETVAL =
+ SvMAGICAL(sv) && (mg = mg_find(sv, 'V'))
+ ? newSVpvn((const char *)mg->mg_ptr, mg->mg_len)
+ : &PL_sv_undef;
+#else
+ RETVAL = &PL_sv_undef;
+#endif
+ }
+ OUTPUT: RETVAL
Property changes on: trunk/contrib/perl/dist/Data-Dumper/Dumper.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Data-Dumper/Todo
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/Todo 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/Todo 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Data-Dumper/Todo
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Data-Dumper/t/bless.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/bless.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/bless.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,16 +5,22 @@
# Test::More 0.60 required because:
# - is_deeply(undef, $not_undef); now works. [rt.cpan.org 9441]
-BEGIN { plan tests => 1+5*2; }
+BEGIN { plan tests => 1+2*5; }
BEGIN { use_ok('Data::Dumper') };
# RT 39420: Data::Dumper fails to escape bless class name
-# test under XS and pure Perl version
-foreach $Data::Dumper::Useperl (0, 1) {
+run_tests_for_bless();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 5
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_bless();
+}
-#diag("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+sub run_tests_for_bless {
+note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
{
my $t = bless( {}, q{a'b} );
@@ -52,4 +58,5 @@
is($dt, $o, "We can dump blessed qr//'s properly");
}
-}
+
+} # END sub run_tests_for_bless()
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/bless.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Data-Dumper/t/bless_var_method.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/bless_var_method.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/bless_var_method.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/bless_var_method.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,86 @@
+#!./perl -w
+# t/bless.t - Test Bless()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_bless_var_method();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 4
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_bless_var_method();
+}
+
+sub run_tests_for_bless_var_method {
+ my ($obj, %dumps, $bless, $starting);
+
+ note("\$Data::Dumper::Bless and Bless() set to true value");
+
+ $starting = $Data::Dumper::Bless;
+ $bless = 1;
+ local $Data::Dumper::Bless = $bless;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddblessone'} = _dumptostr($obj);
+ local $Data::Dumper::Bless = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Bless($bless);
+ $dumps{'objblessone'} = _dumptostr($obj);
+
+ is($dumps{'ddblessone'}, $dumps{'objblessone'},
+ "\$Data::Dumper::Bless = 1 and Bless(1) are equivalent");
+ %dumps = ();
+
+ $bless = 0;
+ local $Data::Dumper::Bless = $bless;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddblesszero'} = _dumptostr($obj);
+ local $Data::Dumper::Bless = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Bless($bless);
+ $dumps{'objblesszero'} = _dumptostr($obj);
+
+ is($dumps{'ddblesszero'}, $dumps{'objblesszero'},
+ "\$Data::Dumper::Bless = 0 and Bless(0) are equivalent");
+
+ $bless = undef;
+ local $Data::Dumper::Bless = $bless;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddblessundef'} = _dumptostr($obj);
+ local $Data::Dumper::Bless = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Bless($bless);
+ $dumps{'objblessundef'} = _dumptostr($obj);
+
+ is($dumps{'ddblessundef'}, $dumps{'objblessundef'},
+ "\$Data::Dumper::Bless = undef and Bless(undef) are equivalent");
+ is($dumps{'ddblesszero'}, $dumps{'objblessundef'},
+ "\$Data::Dumper::Bless = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
Modified: trunk/contrib/perl/dist/Data-Dumper/t/bugs.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/bugs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/bugs.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,6 +1,6 @@
#!perl
#
-# regression tests for old bugs that don't fit other categories
+# regression tests for old bugs that do not fit other categories
BEGIN {
require Config; import Config;
@@ -12,7 +12,7 @@
}
use strict;
-use Test::More tests => 7;
+use Test::More tests => 15;
use Data::Dumper;
{
@@ -81,7 +81,7 @@
ok(1, "[perl #56766]"); # Still no core dump? We are fine.
SKIP: {
- skip "perl 5.10.1 crashes and DD cannot help it" if $] < 5.0119999;
+ skip "perl 5.10.1 crashes and DD cannot help it", 1 if $] < 5.0119999;
# [perl #72332] Segfault on empty-string glob
Data::Dumper->Dump([*{*STDERR{IO}}]);
ok("ok", #ok
@@ -100,4 +100,48 @@
ok("ok", "no crash dumping malformed utf8 with the utf8 flag on");
}
+{
+ # We have to test reference equivalence, rather than actual output, as
+ # Perl itself is buggy prior to 5.15.6. Output from DD should at least
+ # evaluate to the same typeglob, regardless of perl bugs.
+ my $tests = sub {
+ my $VAR1;
+ no strict 'refs';
+ is eval(Dumper \*{"foo::b\0ar"}), \*{"foo::b\0ar"},
+ 'GVs with nulls';
+ # There is a strange 5.6 bug that causes the eval to fail a supposed
+ # strict vars test (involving $VAR1). Mentioning the glob beforehand
+ # somehow makes it go away.
+ () = \*{chr 256};
+ is eval Dumper(\*{chr 256})||die ($@), \*{chr 256},
+ 'GVs with UTF8 names (or not, depending on perl version)';
+ () = \*{"\0".chr 256}; # same bug
+ is eval Dumper(\*{"\0".chr 256}), \*{"\0".chr 256},
+ 'GVs with UTF8 and nulls';
+ };
+ SKIP: {
+ skip "no XS", 3 if not defined &Data::Dumper::Dumpxs;
+ local $Data::Dumper::Useperl = 0;
+ &$tests;
+ }
+ local $Data::Dumper::Useperl = 1;
+ &$tests;
+}
+
+{
+ # Test reference equivalence of dumping *{""}.
+ my $tests = sub {
+ my $VAR1;
+ no strict 'refs';
+ is eval(Dumper \*{""}), \*{""}, 'dumping \*{""}';
+ };
+ SKIP: {
+ skip "no XS", 1 if not defined &Data::Dumper::Dumpxs;
+ local $Data::Dumper::Useperl = 0;
+ &$tests;
+ }
+ local $Data::Dumper::Useperl = 1;
+ &$tests;
+}
+
# EOF
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/bugs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Data-Dumper/t/deparse.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/deparse.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/deparse.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/deparse.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,80 @@
+#!./perl -w
+# t/deparse.t - Test Deparse()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+# Thanks to Arthur Axel "fREW" Schmidt:
+# http://search.cpan.org/~frew/Data-Dumper-Concise-2.020/lib/Data/Dumper/Concise.pm
+
+note("\$Data::Dumper::Deparse and Deparse()");
+
+{
+ my ($obj, %dumps, $deparse, $starting);
+ use strict;
+ my $struct = { foo => "bar\nbaz", quux => sub { "fleem" } };
+ $obj = Data::Dumper->new( [ $struct ] );
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $starting = $Data::Dumper::Deparse;
+ local $Data::Dumper::Deparse = 0;
+ $obj = Data::Dumper->new( [ $struct ] );
+ $dumps{'dddzero'} = _dumptostr($obj);
+ local $Data::Dumper::Deparse = $starting;
+
+ $obj = Data::Dumper->new( [ $struct ] );
+ $obj->Deparse();
+ $dumps{'objempty'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new( [ $struct ] );
+ $obj->Deparse(0);
+ $dumps{'objzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'dddzero'},
+ "No previous setting and \$Data::Dumper::Deparse = 0 are equivalent");
+ is($dumps{'noprev'}, $dumps{'objempty'},
+ "No previous setting and Deparse() are equivalent");
+ is($dumps{'noprev'}, $dumps{'objzero'},
+ "No previous setting and Deparse(0) are equivalent");
+
+ local $Data::Dumper::Deparse = 1;
+ $obj = Data::Dumper->new( [ $struct ] );
+ $dumps{'dddtrue'} = _dumptostr($obj);
+ local $Data::Dumper::Deparse = $starting;
+
+ $obj = Data::Dumper->new( [ $struct ] );
+ $obj->Deparse(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ is($dumps{'dddtrue'}, $dumps{'objone'},
+ "\$Data::Dumper::Deparse = 1 and Deparse(1) are equivalent");
+
+ isnt($dumps{'dddzero'}, $dumps{'dddtrue'},
+ "\$Data::Dumper::Deparse = 0 differs from \$Data::Dumper::Deparse = 1");
+
+ like($dumps{'dddzero'},
+ qr/quux.*?sub.*?DUMMY/s,
+ "\$Data::Dumper::Deparse = 0 reports DUMMY instead of deparsing coderef");
+ unlike($dumps{'dddtrue'},
+ qr/quux.*?sub.*?DUMMY/s,
+ "\$Data::Dumper::Deparse = 1 does not report DUMMY");
+ like($dumps{'dddtrue'},
+ qr/quux.*?sub.*?use\sstrict.*?fleem/s,
+ "\$Data::Dumper::Deparse = 1 deparses coderef");
+}
+
Modified: trunk/contrib/perl/dist/Data-Dumper/t/dumper.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/dumper.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/dumper.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -83,11 +83,11 @@
$Data::Dumper::Useperl = 1;
if (defined &Data::Dumper::Dumpxs) {
print "### XS extension loaded, will run XS tests\n";
- $TMAX = 378; $XS = 1;
+ $TMAX = 402; $XS = 1;
}
else {
print "### XS extensions not loaded, will NOT run XS tests\n";
- $TMAX = 189; $XS = 0;
+ $TMAX = 201; $XS = 0;
}
print "1..$TMAX\n";
@@ -125,6 +125,11 @@
TEST q(Data::Dumper->Dump([$a,$b,$c], [qw(a b), 6]));
TEST q(Data::Dumper->Dumpxs([$a,$b,$c], [qw(a b), 6])) if $XS;
+SCOPE: {
+ local $Data::Dumper::Sparseseen = 1;
+ TEST q(Data::Dumper->Dump([$a,$b,$c], [qw(a b), 6]));
+ TEST q(Data::Dumper->Dumpxs([$a,$b,$c], [qw(a b), 6])) if $XS;
+}
############# 7
##
@@ -150,6 +155,12 @@
TEST q(Data::Dumper->Dump([$a, $b], [qw(*a b)])); # print as @a
TEST q(Data::Dumper->Dumpxs([$a, $b], [qw(*a b)])) if $XS;
+SCOPE: {
+ local $Data::Dumper::Sparseseen = 1;
+ TEST q(Data::Dumper->Dump([$a, $b], [qw(*a b)])); # print as @a
+ TEST q(Data::Dumper->Dumpxs([$a, $b], [qw(*a b)])) if $XS;
+}
+
############# 13
##
$WANT = <<'EOT';
@@ -494,7 +505,7 @@
$dogs[2] = \%kennel;
$mutts = \%kennel;
$mutts = $mutts; # avoid warning
-
+
############# 85
##
$WANT = <<'EOT';
@@ -522,7 +533,7 @@
$d->Dumpxs;
);
}
-
+
############# 91
##
$WANT = <<'EOT';
@@ -533,7 +544,7 @@
TEST q($d->Dump);
TEST q($d->Dumpxs) if $XS;
-
+
############# 97
##
$WANT = <<'EOT';
@@ -549,7 +560,7 @@
#%mutts = %kennels;
EOT
-
+
TEST q($d->Reset; $d->Dump);
if ($XS) {
TEST q($d->Reset; $d->Dumpxs);
@@ -582,7 +593,7 @@
$d->Dumpxs;
);
}
-
+
############# 109
##
TEST q($d->Reset->Dump);
@@ -614,7 +625,7 @@
if ($XS) {
TEST q($d->Reset->Dumpxs);
}
-
+
}
{
@@ -914,7 +925,7 @@
local $Data::Dumper::Sortkeys = \&sort205;
sub sort205 {
my $hash = shift;
- return [
+ return [
$hash eq $c ? (sort { $a <=> $b } keys %$hash)
: (reverse sort keys %$hash)
];
@@ -1463,6 +1474,66 @@
$foo = [ join "", map chr, 0..255, 0x20ac ];
local $Data::Dumper::Useqq = 1;
- TEST q(Dumper($foo)), 'All latin1 characters with utf8 flag including a wide character';
+ if ($] < 5.007) {
+ print "not ok " . (++$TNUM) . " # TODO - fails under 5.6\n" for 1..3;
+ }
+ else {
+ TEST q(Dumper($foo)),
+ 'All latin1 characters with utf8 flag including a wide character';
+ }
for (1..3) { print "not ok " . (++$TNUM) . " # TODO NYI\n" if $XS } # TEST q(Data::Dumper::DumperX($foo)) if $XS;
}
+
+############# 378
+{
+ # If XS cannot load, the pure-Perl version cannot deparse vstrings with
+ # underscores properly. In 5.8.0, vstrings are just strings.
+ my $no_vstrings = <<'NOVSTRINGS';
+#$a = \'ABC';
+#$b = \'ABC';
+#$c = \'ABC';
+#$d = \'ABC';
+NOVSTRINGS
+ my $vstrings_corr = <<'VSTRINGS_CORRECT';
+#$a = \v65.66.67;
+#$b = \v65.66.067;
+#$c = \v65.66.6_7;
+#$d = \'ABC';
+VSTRINGS_CORRECT
+ $WANT = $] <= 5.0080001
+ ? $no_vstrings
+ : $vstrings_corr;
+
+ @::_v = (
+ \v65.66.67,
+ \($] < 5.007 ? v65.66.67 : eval 'v65.66.067'),
+ \v65.66.6_7,
+ \~v190.189.188
+ );
+ if ($] >= 5.010) {
+ TEST q(Data::Dumper->Dump(\@::_v, [qw(a b c d)])), 'vstrings';
+ TEST q(Data::Dumper->Dumpxs(\@::_v, [qw(a b c d)])), 'xs vstrings'
+ if $XS;
+ }
+ else { # Skip tests before 5.10. vstrings considered funny before
+ SKIP_TEST "vstrings considered funny before 5.10.0";
+ SKIP_TEST "vstrings considered funny before 5.10.0 (XS)"
+ if $XS;
+ }
+}
+
+############# 384
+{
+ # [perl #107372] blessed overloaded globs
+ $WANT = <<'EOW';
+#$VAR1 = bless( \*::finkle, 'overtest' );
+EOW
+ {
+ package overtest;
+ use overload fallback=>1, q\""\=>sub{"oaoaa"};
+ }
+ TEST q(Data::Dumper->Dump([bless \*finkle, "overtest"])),
+ 'blessed overloaded globs';
+ TEST q(Data::Dumper->Dumpxs([\*finkle])), 'blessed overloaded globs (xs)'
+ if $XS;
+}
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/dumper.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Data-Dumper/t/dumpperl.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/dumpperl.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/dumpperl.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/dumpperl.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,144 @@
+#!./perl -w
+# t/dumpperl.t - test all branches of, and modes of triggering, Dumpperl()
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+use Carp;
+use Data::Dumper;
+use Test::More tests => 31;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+$Data::Dumper::Indent=1;
+
+{
+ local $Data::Dumper::Useperl=1;
+ local $Data::Dumper::Useqq=0;
+ local $Data::Dumper::Deparse=0;
+ note('$Data::Dumper::Useperl => 1');
+ run_tests_for_pure_perl_implementations();
+}
+
+{
+ local $Data::Dumper::Useperl=0;
+ local $Data::Dumper::Useqq=1;
+ local $Data::Dumper::Deparse=0;
+ note('$Data::Dumper::Useqq => 1');
+ run_tests_for_pure_perl_implementations();
+}
+
+{
+ local $Data::Dumper::Useperl=0;
+ local $Data::Dumper::Useqq=0;
+ local $Data::Dumper::Deparse=1;
+ note('$Data::Dumper::Deparse => 1');
+ run_tests_for_pure_perl_implementations();
+}
+
+
+
+sub run_tests_for_pure_perl_implementations {
+
+ my ($a, $b, $obj);
+ my (@names);
+ my (@newnames, $objagain, %newnames);
+ my $dumpstr;
+ $a = 'alpha';
+ $b = 'beta';
+ my @c = ( qw| eta theta | );
+ my %d = ( iota => 'kappa' );
+
+ note('names not provided');
+ $obj = Data::Dumper->new([$a, $b]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+beta/s,
+ "Dump: two strings"
+ );
+
+ $obj = Data::Dumper->new([$a, \@c]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+\[.+eta.+theta.+\]/s,
+ "Dump: one string, one array ref"
+ );
+
+ $obj = Data::Dumper->new([$a, \%d]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+\{.+iota.+kappa.+\}/s,
+ "Dump: one string, one hash ref"
+ );
+
+ $obj = Data::Dumper->new([$a, undef]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+undef/s,
+ "Dump: one string, one undef"
+ );
+
+ note('names provided');
+
+ $obj = Data::Dumper->new([$a, $b], [ qw( a b ) ]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\$b.+beta/s,
+ "Dump: names: two strings"
+ );
+
+ $obj = Data::Dumper->new([$a, \@c], [ qw( a *c ) ]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\@c.+eta.+theta/s,
+ "Dump: names: one string, one array ref"
+ );
+
+ $obj = Data::Dumper->new([$a, \%d], [ qw( a *d ) ]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\%d.+iota.+kappa/s,
+ "Dump: names: one string, one hash ref"
+ );
+
+ $obj = Data::Dumper->new([$a,undef], [qw(a *c)]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\$c.+undef/s,
+ "Dump: names: one string, one undef"
+ );
+
+ $obj = Data::Dumper->new([$a, $b], [ 'a', '']);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\$.+beta/s,
+ "Dump: names: two strings: one name empty"
+ );
+
+ $obj = Data::Dumper->new([$a, $b], [ 'a', '$foo']);
+ $dumpstr = _dumptostr($obj);
+ no warnings 'uninitialized';
+ like($dumpstr,
+ qr/\$a.+alpha.+\$foo.+beta/s,
+ "Dump: names: two strings: one name start with '\$'"
+ );
+ use warnings;
+}
+
+{
+ my ($obj, $dumpstr, $realtype);
+ $obj = Data::Dumper->new([ {IO => *{$::{STDERR}}{IO}} ]);
+ $obj->Useperl(1);
+ eval { $dumpstr = _dumptostr($obj); };
+ $realtype = 'IO';
+ like($@, qr/Can't handle '$realtype' type/,
+ "Got expected error: pure-perl: Data-Dumper does not handle $realtype");
+}
Modified: trunk/contrib/perl/dist/Data-Dumper/t/freezer.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/freezer.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/freezer.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -7,74 +7,104 @@
require Config; import Config;
no warnings 'once';
if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
- print "1..0 # Skip: Data::Dumper was not built\n";
- exit 0;
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
}
}
use strict;
-use Test::More qw(no_plan);
+use Test::More tests => 8;
use Data::Dumper;
-$Data::Dumper::Freezer = 'freeze';
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
-# test for seg-fault bug when freeze() returns a non-ref
-my $foo = Test1->new("foo");
-my $dumped_foo = Dumper($foo);
-ok($dumped_foo,
- "Use of freezer sub which returns non-ref worked.");
-like($dumped_foo, qr/frozed/,
- "Dumped string has the key added by Freezer.");
+{
+ local $Data::Dumper::Freezer = 'freeze';
-# run the same tests with useperl. this always worked
+ # test for seg-fault bug when freeze() returns a non-ref
+ {
+ my $foo = Test1->new("foo");
+ my $dumped_foo = Dumper($foo);
+ ok($dumped_foo,
+ "Use of freezer sub which returns non-ref worked.");
+ like($dumped_foo, qr/frozed/,
+ "Dumped string has the key added by Freezer with useperl.");
+ like(join(" ", Dumper($foo)), qr/\A\$VAR1 = /,
+ "Dumped list doesn't begin with Freezer's return value with useperl");
+ }
+
+
+ # test for warning when an object does not have a freeze()
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++ };
+ my $bar = Test2->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 0, "A missing freeze() shouldn't warn.");
+ }
+
+
+ # a freeze() which die()s should still trigger the warning
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++; };
+ my $bar = Test3->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 1, "A freeze() which die()s should warn.");
+ }
+
+}
+
{
- local $Data::Dumper::Useperl = 1;
+ my ($obj, %dumps);
my $foo = Test1->new("foo");
- my $dumped_foo = Dumper($foo);
- ok($dumped_foo,
- "Use of freezer sub which returns non-ref worked with useperl");
- like($dumped_foo, qr/frozed/,
- "Dumped string has the key added by Freezer with useperl.");
+
+ local $Data::Dumper::Freezer = 'freeze';
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddftrue'} = _dumptostr($obj);
+ local $Data::Dumper::Freezer = '';
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer('freeze');
+ $dumps{'objset'} = _dumptostr($obj);
+
+ is($dumps{'ddftrue'}, $dumps{'objset'},
+ "\$Data::Dumper::Freezer and Freezer() are equivalent");
}
-# test for warning when an object doesn't have a freeze()
{
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++ };
- my $bar = Test2->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 0, "A missing freeze() shouldn't warn.");
-}
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+ local $Data::Dumper::Freezer = '';
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfemptystr'} = _dumptostr($obj);
-# run the same test with useperl, which always worked
-{
- local $Data::Dumper::Useperl = 1;
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++ };
- my $bar = Test2->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 0, "A missing freeze() shouldn't warn with useperl");
+ local $Data::Dumper::Freezer = undef;
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfundef'} = _dumptostr($obj);
+
+ is($dumps{'ddfundef'}, $dumps{'ddfemptystr'},
+ "\$Data::Dumper::Freezer same with empty string or undef");
}
-# a freeze() which die()s should still trigger the warning
{
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++; };
- my $bar = Test3->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 1, "A freeze() which die()s should warn.");
-}
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
-# the same should work in useperl
-{
- local $Data::Dumper::Useperl = 1;
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++; };
- my $bar = Test3->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 1, "A freeze() which die()s should warn with useperl.");
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer('');
+ $dumps{'objemptystr'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer(undef);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'objundef'}, $dumps{'objemptystr'},
+ "Freezer() same with empty string or undef");
}
+
# a package with a freeze() which returns a non-ref
package Test1;
sub new { bless({name => $_[1]}, $_[0]) }
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/freezer.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Data-Dumper/t/freezer_useperl.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/freezer_useperl.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/freezer_useperl.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/freezer_useperl.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,106 @@
+#!./perl -w
+#
+# test a few problems with the Freezer option, not a complete Freezer
+# test suite yet
+
+BEGIN {
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+}
+
+use strict;
+use Test::More tests => 7;
+use Data::Dumper;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+local $Data::Dumper::Useperl = 1;
+
+{
+ local $Data::Dumper::Freezer = 'freeze';
+
+ # test for seg-fault bug when freeze() returns a non-ref
+ {
+ my $foo = Test1->new("foo");
+ my $dumped_foo = Dumper($foo);
+ ok($dumped_foo,
+ "Use of freezer sub which returns non-ref worked.");
+ like($dumped_foo, qr/frozed/,
+ "Dumped string has the key added by Freezer with useperl.");
+ like(join(" ", Dumper($foo)), qr/\A\$VAR1 = /,
+ "Dumped list doesn't begin with Freezer's return value with useperl");
+ }
+
+ # test for warning when an object does not have a freeze()
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++ };
+ my $bar = Test2->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 0, "A missing freeze() shouldn't warn.");
+ }
+
+ # a freeze() which die()s should still trigger the warning
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++; };
+ my $bar = Test3->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 1, "A freeze() which die()s should warn.");
+ }
+
+}
+
+{
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+
+ local $Data::Dumper::Freezer = '';
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfemptystr'} = _dumptostr($obj);
+
+ local $Data::Dumper::Freezer = undef;
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfundef'} = _dumptostr($obj);
+
+ is($dumps{'ddfundef'}, $dumps{'ddfemptystr'},
+ "\$Data::Dumper::Freezer same with empty string or undef");
+}
+
+{
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer('');
+ $dumps{'objemptystr'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer(undef);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'objundef'}, $dumps{'objemptystr'},
+ "Freezer() same with empty string or undef");
+}
+
+
+# a package with a freeze() which returns a non-ref
+package Test1;
+sub new { bless({name => $_[1]}, $_[0]) }
+sub freeze {
+ my $self = shift;
+ $self->{frozed} = 1;
+}
+
+# a package without a freeze()
+package Test2;
+sub new { bless({name => $_[1]}, $_[0]) }
+
+# a package with a freeze() which dies
+package Test3;
+sub new { bless({name => $_[1]}, $_[0]) }
+sub freeze { die "freeze() is broken" }
Copied: trunk/contrib/perl/dist/Data-Dumper/t/indent.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/indent.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/indent.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/indent.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,110 @@
+#!./perl -w
+# t/indent.t - Test Indent()
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+
+my $hash = { foo => 42 };
+
+my (%dumpstr);
+my $dumper;
+
+$dumper = Data::Dumper->new([$hash]);
+$dumpstr{noindent} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent();
+$dumpstr{indent_no_arg} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(undef);
+$dumpstr{indent_undef} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(0);
+$dumpstr{indent_0} = _dumptostr($dumper);
+# $VAR1 = {'foo' => 42}; # no newline
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(1);
+$dumpstr{indent_1} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(2);
+$dumpstr{indent_2} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+is($dumpstr{noindent}, $dumpstr{indent_no_arg},
+ "absence of Indent is same as Indent()");
+is($dumpstr{noindent}, $dumpstr{indent_undef},
+ "absence of Indent is same as Indent(undef)");
+isnt($dumpstr{noindent}, $dumpstr{indent_0},
+ "absence of Indent is different from Indent(0)");
+isnt($dumpstr{indent_0}, $dumpstr{indent_1},
+ "Indent(0) is different from Indent(1)");
+cmp_ok(length($dumpstr{indent_0}), '<=', length($dumpstr{indent_1}),
+ "Indent(0) is more compact than Indent(1)");
+is($dumpstr{noindent}, $dumpstr{indent_2},
+ "absence of Indent is same as Indent(2), i.e., 2 is default");
+cmp_ok(length($dumpstr{indent_1}), '<=', length($dumpstr{indent_2}),
+ "Indent(1) is more compact than Indent(2)");
+
+my $array = [ qw| foo 42 | ];
+$dumper = Data::Dumper->new([$array]);
+$dumper->Indent(2);
+$dumpstr{ar_indent_2} = _dumptostr($dumper);
+# $VAR1 = [
+# 'foo',
+# '42'
+# ];
+
+$dumper = Data::Dumper->new([$array]);
+$dumper->Indent(3);
+$dumpstr{ar_indent_3} = _dumptostr($dumper);
+# $VAR1 = [
+# #0
+# 'foo',
+# #1
+# '42'
+# ];
+
+isnt($dumpstr{ar_indent_2}, $dumpstr{ar_indent_3},
+ "On arrays, Indent(2) is different from Indent(3)");
+like($dumpstr{ar_indent_3},
+ qr/\#0.+'foo'.+\#1.+42/s,
+ "Indent(3) annotates array elements with their indices"
+);
+is(scalar(split("\n" => $dumpstr{ar_indent_2})) + 2,
+ scalar(split("\n" => $dumpstr{ar_indent_3})),
+ "Indent(3) runs 2 lines longer than Indent(2)");
+
+__END__
+is($dumpstr{noindent}, $dumpstr{indent_0},
+ "absence of Indent is same as Indent(0)");
+isnt($dumpstr{noindent}, $dumpstr{indent_1},
+ "absence of Indent is different from Indent(1)");
+print STDERR $dumpstr{indent_0};
+print STDERR $dumpstr{ar_indent_3};
Copied: trunk/contrib/perl/dist/Data-Dumper/t/misc.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/misc.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/misc.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/misc.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,209 @@
+#!./perl -w
+# t/misc.t - Test various functionality
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 20;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, @c, %d);
+$a = 'alpha';
+$b = 'beta';
+ at c = ( qw| gamma delta epsilon | );
+%d = ( zeta => 'eta', theta => 'iota' );
+
+note("Argument validation for new()");
+{
+ local $@ = '';
+ eval { my $obj = Data::Dumper->new(undef); };
+ like($@,
+ qr/^Usage:\s+PACKAGE->new\(ARRAYREF,\s*\[ARRAYREF\]\)/,
+ "Got error message: new() needs defined argument"
+ );
+}
+
+{
+ local $@ = '';
+ eval { my $obj = Data::Dumper->new( { $a => $b } ); };
+ like($@,
+ qr/^Usage:\s+PACKAGE->new\(ARRAYREF,\s*\[ARRAYREF\]\)/,
+ "Got error message: new() needs array reference"
+ );
+}
+
+{
+ note("\$Data::Dumper::Useperl, Useqq, Deparse");
+ my ($obj, %dumpstr);
+
+ local $Data::Dumper::Useperl = 1;
+ $obj = Data::Dumper->new( [ \@c, \%d ] );
+ $dumpstr{useperl} = [ $obj->Values ];
+ local $Data::Dumper::Useperl = 0;
+
+ local $Data::Dumper::Useqq = 1;
+ $obj = Data::Dumper->new( [ \@c, \%d ] );
+ $dumpstr{useqq} = [ $obj->Values ];
+ local $Data::Dumper::Useqq = 0;
+
+ is_deeply($dumpstr{useperl}, $dumpstr{useqq},
+ "Useperl and Useqq return same");
+
+ local $Data::Dumper::Deparse = 1;
+ $obj = Data::Dumper->new( [ \@c, \%d ] );
+ $dumpstr{deparse} = [ $obj->Values ];
+ local $Data::Dumper::Deparse = 0;
+
+ is_deeply($dumpstr{useperl}, $dumpstr{deparse},
+ "Useperl and Deparse return same");
+}
+
+{
+ note("\$Data::Dumper::Pad and \$obj->Pad");
+ my ($obj, %dumps, $pad);
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Pad(undef);
+ $dumps{'undef'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Pad('');
+ $dumps{'emptystring'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'undef'},
+ "No setting for \$Data::Dumper::Pad and Pad(undef) give same result");
+
+ is($dumps{'noprev'}, $dumps{'emptystring'},
+ "No setting for \$Data::Dumper::Pad and Pad('') give same result");
+
+ $pad = 'XXX: ';
+ local $Data::Dumper::Pad = $pad;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'ddp'} = _dumptostr($obj);
+ local $Data::Dumper::Pad = '';
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Pad($pad);
+ $dumps{'obj'} = _dumptostr($obj);
+
+ is($dumps{'ddp'}, $dumps{'obj'},
+ "\$Data::Dumper::Pad and \$obj->Pad() give same result");
+
+ is( (grep {! /^$pad/} (split(/\n/, $dumps{'ddp'}))), 0,
+ "Each line of dumped output padded as expected");
+}
+
+{
+ note("\$Data::Dumper::Varname and \$obj->Varname");
+ my ($obj, %dumps, $varname);
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Varname(undef);
+ $dumps{'undef'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Varname('');
+ $dumps{'emptystring'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'undef'},
+ "No setting for \$Data::Dumper::Varname and Varname(undef) give same result");
+
+ # Because Varname defaults to '$VAR', providing an empty argument to
+ # Varname produces a non-default result.
+ isnt($dumps{'noprev'}, $dumps{'emptystring'},
+ "No setting for \$Data::Dumper::Varname and Varname('') give different results");
+
+ $varname = 'MIMI';
+ local $Data::Dumper::Varname = $varname;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'ddv'} = _dumptostr($obj);
+ local $Data::Dumper::Varname = undef;
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Varname($varname);
+ $dumps{'varname'} = _dumptostr($obj);
+
+ is($dumps{'ddv'}, $dumps{'varname'},
+ "Setting for \$Data::Dumper::Varname and Varname() give same result");
+
+ is( (grep { /^\$$varname/ } (split(/\n/, $dumps{'ddv'}))), 2,
+ "All lines of dumped output use provided varname");
+
+ is( (grep { /^\$VAR/ } (split(/\n/, $dumps{'ddv'}))), 0,
+ "No lines of dumped output use default \$VAR");
+}
+
+{
+ note("\$Data::Dumper::Useqq and \$obj->Useqq");
+ my ($obj, %dumps, $useqq);
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq(undef);
+ $dumps{'undef'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq('');
+ $dumps{'emptystring'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq(0);
+ $dumps{'zero'} = _dumptostr($obj);
+
+ my $current = $Data::Dumper::Useqq;
+ local $Data::Dumper::Useqq = 0;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'dduzero'} = _dumptostr($obj);
+ local $Data::Dumper::Useqq = $current;
+
+ is($dumps{'noprev'}, $dumps{'undef'},
+ "No setting for \$Data::Dumper::Useqq and Useqq(undef) give same result");
+
+ is($dumps{'noprev'}, $dumps{'zero'},
+ "No setting for \$Data::Dumper::Useqq and Useqq(0) give same result");
+
+ is($dumps{'noprev'}, $dumps{'emptystring'},
+ "No setting for \$Data::Dumper::Useqq and Useqq('') give same result");
+
+ is($dumps{'noprev'}, $dumps{'dduzero'},
+ "No setting for \$Data::Dumper::Useqq and Useqq(undef) give same result");
+
+ local $Data::Dumper::Useqq = 1;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'ddu'} = _dumptostr($obj);
+ local $Data::Dumper::Useqq = $current;
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq(1);
+ $dumps{'obj'} = _dumptostr($obj);
+
+ is($dumps{'ddu'}, $dumps{'obj'},
+ "\$Data::Dumper::Useqq=1 and Useqq(1) give same result");
+
+ like($dumps{'ddu'},
+ qr/"$a".+?"$b"/s,
+ "Double-quotes used around values"
+ );
+
+ unlike($dumps{'ddu'},
+ qr/'$a'.+?'$b'/s,
+ "Single-quotes not used around values"
+ );
+}
Copied: trunk/contrib/perl/dist/Data-Dumper/t/names.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/names.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/names.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/names.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,66 @@
+#!./perl -w
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+use Carp;
+use Data::Dumper;
+use Test::More tests => 15;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, $obj);
+my (@names);
+my (@newnames, $objagain, %newnames);
+my $dumpstr;
+$a = 'alpha';
+$b = 'beta';
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at names = $obj->Names;
+is_deeply(\@names, [qw(a b)], "Names() returned expected list");
+
+ at newnames = ( qw| gamma delta | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+ "Able to use Names() to set names to be dumped");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+%newnames = ( gamma => 'delta', epsilon => 'zeta' );
+eval { @names = $obj->Names(\%newnames); };
+like($@, qr/Argument to Names, if provided, must be array ref/,
+ "Got expected error message: bad argument to Names()");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at newnames = ( qw| gamma delta epsilon | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+ "Able to use Names() to set names to be dumped");
+$dumpstr = _dumptostr($obj);
+like($dumpstr, qr/gamma/s, "Got first name expected");
+like($dumpstr, qr/delta/s, "Got first name expected");
+unlike($dumpstr, qr/epsilon/s, "Did not get name which was not expected");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at newnames = ( qw| gamma | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+ "Able to use Names() to set names to be dumped");
+$dumpstr = _dumptostr($obj);
+like($dumpstr, qr/gamma/s, "Got name expected");
+unlike($dumpstr, qr/delta/s, "Did not get name which was not expected");
+unlike($dumpstr, qr/epsilon/s, "Did not get name which was not expected");
+like($dumpstr, qr/\$VAR2/s, "Got default name");
+
Index: trunk/contrib/perl/dist/Data-Dumper/t/overload.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/overload.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/overload.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/overload.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Data-Dumper/t/pair.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/pair.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/pair.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/pair.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Data-Dumper/t/perl-74170.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/perl-74170.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/perl-74170.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,20 +4,20 @@
# Since it’s so large, it gets its own file.
BEGIN {
- require Config; import Config;
- no warnings 'once';
- if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
- print "1..0 # Skip: Data::Dumper was not built\n";
- exit 0;
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
}
}
-
use strict;
use Test::More tests => 1;
use Data::Dumper;
-our %repos = ();
-&real_life_setup();
+our %repos = real_life_setup();
$Data::Dumper::Indent = 1;
# A custom sort sub is necessary for reproducing the bug, as this is where
@@ -25,13 +25,14 @@
$Data::Dumper::Sortkeys = sub { return [ reverse sort keys %{$_[0]} ]; }
unless exists $ENV{NO_SORT_SUB};
-ok +Data::Dumper->Dumpxs([\%repos], [qw(*repos)]);
+ok(Data::Dumper->Dump([\%repos], [qw(*repos)]), "RT 74170 test");
sub real_life_setup {
# set up the %repos hash in a manner that reflects a real run of
- # gitolite's "compiler" script:
+ # the gitolite "compiler" script:
# Yes, all this is necessary to get the stack in such a state that the
# custom sort sub will trigger a reallocation.
+ my %repos;
push @{ $repos{''}{'@all'} }, ();
push @{ $repos{''}{'guser86'} }, ();
push @{ $repos{''}{'guser87'} }, ();
@@ -140,4 +141,5 @@
$repos{''}{R}{'user8'} = 1;
$repos{''}{W}{'user8'} = 1;
push @{ $repos{''}{'user8'} }, ();
+ return %repos;
}
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/perl-74170.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,418 @@
+#!./perl -w
+# t/purity_deepcopy_maxdepth.t - Test Purity(), Deepcopy(),
+# Maxdepth() and recursive structures
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 24;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, $c, @d);
+my ($d, $e, $f);
+
+note("\$Data::Dumper::Purity and Purity()");
+
+{
+ my ($obj, %dumps, $purity);
+
+ # Adapted from example in Dumper.pm POD:
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Purity = undef");
+ local $Data::Dumper::Useperl = 1;
+ $purity = undef;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpundef'} = _dumptostr($obj);
+
+ $purity = 0;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'ddpundef'},
+ "No previous Purity setting equivalent to \$Data::Dumper::Purity = undef");
+
+ is($dumps{'noprev'}, $dumps{'ddpzero'},
+ "No previous Purity setting equivalent to \$Data::Dumper::Purity = 0");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $purity = 0;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity($purity);
+ $dumps{'objzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objzero'},
+ "No previous Purity setting equivalent to Purity(0)");
+
+ $purity = undef;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity($purity);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objundef'},
+ "No previous Purity setting equivalent to Purity(undef)");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $purity = 1;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'ddpone'},
+ "No previous Purity setting different from \$Data::Dumper::Purity = 1");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $purity = 1;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'objone'},
+ "No previous Purity setting different from Purity(0)");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $purity = 1;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpone'} = _dumptostr($obj);
+ local $Data::Dumper::Purity = undef;
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ is($dumps{'ddpone'}, $dumps{'objone'},
+ "\$Data::Dumper::Purity = 1 and Purity(1) are equivalent");
+}
+
+note("\$Data::Dumper::Deepcopy and Deepcopy()");
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ # Adapted from example in Dumper.pm POD:
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = undef;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddundef'} = _dumptostr($obj);
+
+ $deepcopy = 0;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'dddundef'},
+ "No previous Deepcopy setting equivalent to \$Data::Dumper::Deepcopy = undef");
+
+ is($dumps{'noprev'}, $dumps{'dddzero'},
+ "No previous Deepcopy setting equivalent to \$Data::Dumper::Deepcopy = 0");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = 0;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy($deepcopy);
+ $dumps{'objzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objzero'},
+ "No previous Deepcopy setting equivalent to Deepcopy(0)");
+
+ $deepcopy = undef;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy($deepcopy);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objundef'},
+ "No previous Deepcopy setting equivalent to Deepcopy(undef)");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = 1;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'dddone'},
+ "No previous Deepcopy setting different from \$Data::Dumper::Deepcopy = 1");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = 1;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'objone'},
+ "No previous Deepcopy setting different from Deepcopy(0)");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $deepcopy = 1;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddone'} = _dumptostr($obj);
+ local $Data::Dumper::Deepcopy = undef;
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ is($dumps{'dddone'}, $dumps{'objone'},
+ "\$Data::Dumper::Deepcopy = 1 and Deepcopy(1) are equivalent");
+}
+
+note("\$Data::Dumper::Maxdepth and Maxdepth()");
+
+{
+ # Adapted from Dumper.pm POD
+
+ my ($obj, %dumps, $maxdepth);
+
+ $a = "pearl";
+ $b = [ $a ];
+ $c = { 'b' => $b };
+ $d = [ $c ];
+ $e = { 'd' => $d };
+ $f = { 'e' => $e };
+
+ note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Maxdepth = undef");
+ local $Data::Dumper::Useperl = 1;
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $Data::Dumper::Maxdepth = undef;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'ddmundef'} = _dumptostr($obj);
+
+ $maxdepth = 3;
+ local $Data::Dumper::Maxdepth = $maxdepth;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'ddm'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'ddmundef'},
+ "No previous Maxdepth setting equivalent to \$Data::Dumper::Maxdepth = undef");
+
+ like($dumps{'noprev'}, qr/$a/s,
+ "Without Maxdepth, got output from deepest level");
+
+ isnt($dumps{'noprev'}, $dumps{'ddm'},
+ "No previous Maxdepth setting differs from setting a shallow Maxdepth");
+
+ unlike($dumps{'ddm'}, qr/$a/s,
+ "With Maxdepth, did not get output from deepest level");
+}
+
+{
+ # Adapted from Dumper.pm POD
+
+ my ($obj, %dumps, $maxdepth);
+
+ $a = "pearl";
+ $b = [ $a ];
+ $c = { 'b' => $b };
+ $d = [ $c ];
+ $e = { 'd' => $d };
+ $f = { 'e' => $e };
+
+ note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Maxdepth = undef");
+ local $Data::Dumper::Useperl = 1;
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $obj->Maxdepth();
+ $dumps{'maxdepthempty'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'maxdepthempty'},
+ "No previous Maxdepth setting equivalent to Maxdepth() with no argument");
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $obj->Maxdepth(undef);
+ $dumps{'maxdepthundef'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'maxdepthundef'},
+ "No previous Maxdepth setting equivalent to Maxdepth(undef)");
+
+ $maxdepth = 3;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $obj->Maxdepth($maxdepth);
+ $dumps{'maxdepthset'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'maxdepthset'},
+ "No previous Maxdepth setting differs from Maxdepth() with shallow depth");
+
+ local $Data::Dumper::Maxdepth = 3;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'ddmset'} = _dumptostr($obj);
+
+ is($dumps{'maxdepthset'}, $dumps{'ddmset'},
+ "Maxdepth set and \$Data::Dumper::Maxdepth are equivalent");
+}
+
+{
+ my ($obj, %dumps);
+
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ local $Data::Dumper::Deparse = 0;
+ local $Data::Dumper::Purity = 1;
+ local $Data::Dumper::Useperl = 1;
+ sub hello { print "Hello world\n"; }
+ $obj = Data::Dumper->new( [ \&hello ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ like($warning, qr/^Encountered CODE ref, using dummy placeholder/,
+ "Got expected warning: dummy placeholder under Purity = 1");
+}
+
+{
+ my ($obj, %dumps);
+
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ local $Data::Dumper::Deparse = 0;
+ local $Data::Dumper::Useperl = 1;
+ sub jello { print "Jello world\n"; }
+ $obj = Data::Dumper->new( [ \&hello ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ ok(! $warning, "Encountered CODE ref, but no Purity, hence no warning");
+}
Copied: trunk/contrib/perl/dist/Data-Dumper/t/qr.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/qr.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/qr.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/qr.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,24 @@
+#!perl -X
+
+BEGIN {
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+}
+
+use Test::More tests => 2;
+use Data::Dumper;
+
+{
+ my $q = q| \/ |;
+ use Data::Dumper;
+ my $qr = qr{$q};
+ eval Dumper $qr;
+ ok(!$@, "Dumping $qr with XS") or diag $@, Dumper $qr;
+ local $Data::Dumper::Useperl = 1;
+ eval Dumper $qr;
+ ok(!$@, "Dumping $qr with PP") or diag $@, Dumper $qr;
+}
Copied: trunk/contrib/perl/dist/Data-Dumper/t/quotekeys.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/quotekeys.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/quotekeys.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/quotekeys.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,94 @@
+#!./perl -w
+# t/quotekeys.t - Test Quotekeys()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_quotekeys();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 5
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_quotekeys();
+}
+
+sub run_tests_for_quotekeys {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my ($obj, %dumps, $quotekeys, $starting);
+
+ note("\$Data::Dumper::Quotekeys and Quotekeys() set to true value");
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkdefault'} = _dumptostr($obj);
+
+ $starting = $Data::Dumper::Quotekeys;
+ $quotekeys = 1;
+ local $Data::Dumper::Quotekeys = $quotekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkone'} = _dumptostr($obj);
+ local $Data::Dumper::Quotekeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Quotekeys($quotekeys);
+ $dumps{'objqkone'} = _dumptostr($obj);
+
+ is($dumps{'ddqkdefault'}, $dumps{'ddqkone'},
+ "\$Data::Dumper::Quotekeys = 1 is default");
+ is($dumps{'ddqkone'}, $dumps{'objqkone'},
+ "\$Data::Dumper::Quotekeys = 1 and Quotekeys(1) are equivalent");
+ %dumps = ();
+
+ $quotekeys = 0;
+ local $Data::Dumper::Quotekeys = $quotekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkzero'} = _dumptostr($obj);
+ local $Data::Dumper::Quotekeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Quotekeys($quotekeys);
+ $dumps{'objqkzero'} = _dumptostr($obj);
+
+ is($dumps{'ddqkzero'}, $dumps{'objqkzero'},
+ "\$Data::Dumper::Quotekeys = 0 and Quotekeys(0) are equivalent");
+
+ $quotekeys = undef;
+ local $Data::Dumper::Quotekeys = $quotekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkundef'} = _dumptostr($obj);
+ local $Data::Dumper::Quotekeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Quotekeys($quotekeys);
+ $dumps{'objqkundef'} = _dumptostr($obj);
+
+ note("Quotekeys(undef) will fall back to the default value\nfor \$Data::Dumper::Quotekeys, which is a true value.");
+ isnt($dumps{'ddqkundef'}, $dumps{'objqkundef'},
+ "\$Data::Dumper::Quotekeys = undef and Quotekeys(undef) are equivalent");
+ isnt($dumps{'ddqkzero'}, $dumps{'objqkundef'},
+ "\$Data::Dumper::Quotekeys = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
Copied: trunk/contrib/perl/dist/Data-Dumper/t/seen.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/seen.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/seen.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/seen.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,103 @@
+#!./perl -w
+# t/seen.t - Test Seen()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($obj, %dumps);
+
+my (@e, %f, @rv, @g, %h, $k);
+ at e = ( qw| alpha beta gamma | );
+%f = ( epsilon => 'zeta', eta => 'theta' );
+ at g = ( qw| iota kappa lambda | );
+%h = ( mu => 'nu', omicron => 'pi' );
+sub j { print "Hello world\n"; }
+$k = 'just another scalar';
+
+{
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { mark => 'snark' } );
+ like($warning,
+ qr/^Only refs supported, ignoring non-ref item \$mark/,
+ "Got expected warning for non-ref item");
+}
+
+{
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { mark => undef } );
+ like($warning,
+ qr/^Value of ref must be defined; ignoring undefined item \$mark/,
+ "Got expected warning for undefined value of item");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( undef );
+ is(@rv, 0, "Seen(undef) returned empty array");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( [ qw| mark snark | ] );
+ is(@rv, 0, "Seen(ref other than hashref) returned empty array");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*samba' => \@g } );
+ is_deeply($rv[0], $obj, "Got the object back: value array ref");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*canasta' => \%h } );
+ is_deeply($rv[0], $obj, "Got the object back: value hash ref");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*pinochle' => \&j } );
+ is_deeply($rv[0], $obj, "Got the object back: value code ref");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*poker' => \$k } );
+ is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
+{
+ my $l = 'loo';
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { $l => \$k } );
+ is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
+{
+ my $l = '$loo';
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { $l => \$k } );
+ is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
Copied: trunk/contrib/perl/dist/Data-Dumper/t/sortkeys.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/sortkeys.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/sortkeys.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/sortkeys.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,190 @@
+#!./perl -w
+# t/sortkeys.t - Test Sortkeys()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 26;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+run_tests_for_sortkeys();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 13
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_sortkeys();
+}
+
+sub run_tests_for_sortkeys {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+ );
+
+ {
+ my ($obj, %dumps, $sortkeys, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to true value");
+
+ $starting = $Data::Dumper::Sortkeys;
+ $sortkeys = 1;
+ local $Data::Dumper::Sortkeys = $sortkeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddskone'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys($sortkeys);
+ $dumps{'objskone'} = _dumptostr($obj);
+
+ is($dumps{'ddskone'}, $dumps{'objskone'},
+ "\$Data::Dumper::Sortkeys = 1 and Sortkeys(1) are equivalent");
+ like($dumps{'ddskone'},
+ qr/alpha.*?beta.*?delta.*?gamma/s,
+ "Sortkeys returned hash keys in Perl's default sort order");
+ %dumps = ();
+
+ }
+
+ {
+ my ($obj, %dumps, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef");
+
+ $starting = $Data::Dumper::Sortkeys;
+ local $Data::Dumper::Sortkeys = \&reversekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys(\&reversekeys);
+ $dumps{'objsksub'} = _dumptostr($obj);
+
+ is($dumps{'ddsksub'}, $dumps{'objsksub'},
+ "\$Data::Dumper::Sortkeys = CODEREF and Sortkeys(CODEREF) are equivalent");
+ like($dumps{'ddsksub'},
+ qr/gamma.*?delta.*?beta.*?alpha/s,
+ "Sortkeys returned hash keys per sorting subroutine");
+ %dumps = ();
+
+ }
+
+ {
+ my ($obj, %dumps, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef with filter");
+ $starting = $Data::Dumper::Sortkeys;
+ local $Data::Dumper::Sortkeys = \&reversekeystrim;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys(\&reversekeystrim);
+ $dumps{'objsksub'} = _dumptostr($obj);
+
+ is($dumps{'ddsksub'}, $dumps{'objsksub'},
+ "\$Data::Dumper::Sortkeys = CODEREF and Sortkeys(CODEREF) select same keys");
+ like($dumps{'ddsksub'},
+ qr/gamma.*?delta.*?beta/s,
+ "Sortkeys returned hash keys per sorting subroutine");
+ unlike($dumps{'ddsksub'},
+ qr/alpha/s,
+ "Sortkeys filtered out one key per request");
+ %dumps = ();
+
+ }
+
+ {
+ my ($obj, %dumps, $sortkeys, $starting);
+
+ note("\$Data::Dumper::Sortkeys(undef) and Sortkeys(undef)");
+
+ $starting = $Data::Dumper::Sortkeys;
+ $sortkeys = 0;
+ local $Data::Dumper::Sortkeys = $sortkeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddskzero'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys($sortkeys);
+ $dumps{'objskzero'} = _dumptostr($obj);
+
+ $sortkeys = undef;
+ local $Data::Dumper::Sortkeys = $sortkeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddskundef'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys($sortkeys);
+ $dumps{'objskundef'} = _dumptostr($obj);
+
+ is($dumps{'ddskzero'}, $dumps{'objskzero'},
+ "\$Data::Dumper::Sortkeys = 0 and Sortkeys(0) are equivalent");
+ is($dumps{'ddskzero'}, $dumps{'ddskundef'},
+ "\$Data::Dumper::Sortkeys = 0 and = undef equivalent");
+ is($dumps{'objkzero'}, $dumps{'objkundef'},
+ "Sortkeys(0) and Sortkeys(undef) are equivalent");
+ %dumps = ();
+
+ }
+
+ note("Internal subroutine _sortkeys");
+ my %e = (
+ nu => 'n',
+ lambda => 'l',
+ kappa => 'k',
+ mu => 'm',
+ omicron => 'o',
+ );
+ my $rv = Data::Dumper::_sortkeys(\%e);
+ is(ref($rv), 'ARRAY', "Data::Dumper::_sortkeys returned an array ref");
+ is_deeply($rv, [ qw( kappa lambda mu nu omicron ) ],
+ "Got keys in Perl default order");
+ {
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ my ($obj, %dumps, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef");
+
+ $starting = $Data::Dumper::Sortkeys;
+ local $Data::Dumper::Sortkeys = \&badreturnvalue;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ like($warning, qr/^Sortkeys subroutine did not return ARRAYREF/,
+ "Got expected warning: sorting routine did not return array ref");
+ }
+
+}
+
+sub reversekeys { return [ reverse sort keys %{+shift} ]; }
+
+sub reversekeystrim {
+ my $hr = shift;
+ my @keys = sort keys %{$hr};
+ shift(@keys);
+ return [ reverse @keys ];
+}
+
+sub badreturnvalue { return { %{+shift} }; }
Copied: trunk/contrib/perl/dist/Data-Dumper/t/sparseseen.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/sparseseen.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/sparseseen.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/sparseseen.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,88 @@
+#!./perl -w
+# t/sparseseen.t - Test Sparseseen()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_sparseseen();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 4
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_sparseseen();
+}
+
+sub run_tests_for_sparseseen {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my ($obj, %dumps, $sparseseen, $starting);
+
+ note("\$Data::Dumper::Sparseseen and Sparseseen() set to true value");
+
+ $starting = $Data::Dumper::Sparseseen;
+ $sparseseen = 1;
+ local $Data::Dumper::Sparseseen = $sparseseen;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddssone'} = _dumptostr($obj);
+ local $Data::Dumper::Sparseseen = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sparseseen($sparseseen);
+ $dumps{'objssone'} = _dumptostr($obj);
+
+ is($dumps{'ddssone'}, $dumps{'objssone'},
+ "\$Data::Dumper::Sparseseen = 1 and Sparseseen(1) are equivalent");
+ %dumps = ();
+
+ $sparseseen = 0;
+ local $Data::Dumper::Sparseseen = $sparseseen;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsszero'} = _dumptostr($obj);
+ local $Data::Dumper::Sparseseen = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sparseseen($sparseseen);
+ $dumps{'objsszero'} = _dumptostr($obj);
+
+ is($dumps{'ddsszero'}, $dumps{'objsszero'},
+ "\$Data::Dumper::Sparseseen = 0 and Sparseseen(0) are equivalent");
+
+ $sparseseen = undef;
+ local $Data::Dumper::Sparseseen = $sparseseen;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddssundef'} = _dumptostr($obj);
+ local $Data::Dumper::Sparseseen = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sparseseen($sparseseen);
+ $dumps{'objssundef'} = _dumptostr($obj);
+
+ is($dumps{'ddssundef'}, $dumps{'objssundef'},
+ "\$Data::Dumper::Sparseseen = undef and Sparseseen(undef) are equivalent");
+ is($dumps{'ddsszero'}, $dumps{'objssundef'},
+ "\$Data::Dumper::Sparseseen = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
Modified: trunk/contrib/perl/dist/Data-Dumper/t/terse.t
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/terse.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Data-Dumper/t/terse.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,10 +2,12 @@
use strict;
use warnings;
-use Test::More tests => 2;
-
use Data::Dumper;
+use Test::More tests => 6;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
my $hash = { foo => 42 };
for my $useperl (0..1) {
@@ -20,3 +22,40 @@
}
WANT
}
+
+my (%dumpstr);
+my $dumper;
+
+$dumper = Data::Dumper->new([$hash]);
+$dumpstr{noterse} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse();
+$dumpstr{terse_no_arg} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse(0);
+$dumpstr{terse_0} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse(1);
+$dumpstr{terse_1} = _dumptostr($dumper);
+# {
+# 'foo' => 42
+# }
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse(undef);
+$dumpstr{terse_undef} = _dumptostr($dumper);
+
+is($dumpstr{noterse}, $dumpstr{terse_no_arg},
+ "absence of Terse is same as Terse()");
+is($dumpstr{noterse}, $dumpstr{terse_0},
+ "absence of Terse is same as Terse(0)");
+isnt($dumpstr{noterse}, $dumpstr{terse_1},
+ "absence of Terse is different from Terse(1)");
+is($dumpstr{noterse}, $dumpstr{terse_undef},
+ "absence of Terse is same as Terse(undef)");
Property changes on: trunk/contrib/perl/dist/Data-Dumper/t/terse.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Data-Dumper/t/toaster.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/toaster.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/toaster.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/toaster.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,88 @@
+#!./perl -w
+# t/toaster.t - Test Toaster()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_toaster();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 4
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_toaster();
+}
+
+sub run_tests_for_toaster {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my ($obj, %dumps, $toaster, $starting);
+
+ note("\$Data::Dumper::Toaster and Toaster() set to true value");
+
+ $starting = $Data::Dumper::Toaster;
+ $toaster = 1;
+ local $Data::Dumper::Toaster = $toaster;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddtoasterone'} = _dumptostr($obj);
+ local $Data::Dumper::Toaster = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Toaster($toaster);
+ $dumps{'objtoasterone'} = _dumptostr($obj);
+
+ is($dumps{'ddtoasterone'}, $dumps{'objtoasterone'},
+ "\$Data::Dumper::Toaster = 1 and Toaster(1) are equivalent");
+ %dumps = ();
+
+ $toaster = 0;
+ local $Data::Dumper::Toaster = $toaster;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddtoasterzero'} = _dumptostr($obj);
+ local $Data::Dumper::Toaster = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Toaster($toaster);
+ $dumps{'objtoasterzero'} = _dumptostr($obj);
+
+ is($dumps{'ddtoasterzero'}, $dumps{'objtoasterzero'},
+ "\$Data::Dumper::Toaster = 0 and Toaster(0) are equivalent");
+
+ $toaster = undef;
+ local $Data::Dumper::Toaster = $toaster;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddtoasterundef'} = _dumptostr($obj);
+ local $Data::Dumper::Toaster = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Toaster($toaster);
+ $dumps{'objtoasterundef'} = _dumptostr($obj);
+
+ is($dumps{'ddtoasterundef'}, $dumps{'objtoasterundef'},
+ "\$Data::Dumper::Toaster = undef and Toaster(undef) are equivalent");
+ is($dumps{'ddtoasterzero'}, $dumps{'objtoasterundef'},
+ "\$Data::Dumper::Toaster = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
Copied: trunk/contrib/perl/dist/Data-Dumper/t/values.t (from rev 6437, vendor/perl/5.18.1/dist/Data-Dumper/t/values.t)
===================================================================
--- trunk/contrib/perl/dist/Data-Dumper/t/values.t (rev 0)
+++ trunk/contrib/perl/dist/Data-Dumper/t/values.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,40 @@
+#!./perl -w
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+use Data::Dumper;
+use Test::More tests => 4;
+
+my ($a, $b, $obj);
+my (@values, @names);
+my (@newvalues, $objagain, %newvalues);
+$a = 'alpha';
+$b = 'beta';
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at values = $obj->Values;
+is_deeply(\@values, [$a,$b], "Values() returned expected list");
+
+ at newvalues = ( qw| gamma delta epsilon | );
+$objagain = $obj->Values(\@newvalues);
+is($objagain, $obj, "Values returned same object");
+is_deeply($objagain->{todump}, \@newvalues,
+ "Able to use Values() to set values to be dumped");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+%newvalues = ( gamma => 'delta', epsilon => 'zeta' );
+eval { @values = $obj->Values(\%newvalues); };
+like($@, qr/Argument to Values, if provided, must be array ref/,
+ "Got expected error message: bad argument to Values()");
+
+
Index: trunk/contrib/perl/dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm
===================================================================
--- trunk/contrib/perl/dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Devel-SelfStubber/t/Devel-SelfStubber.t
===================================================================
--- trunk/contrib/perl/dist/Devel-SelfStubber/t/Devel-SelfStubber.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Devel-SelfStubber/t/Devel-SelfStubber.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Devel-SelfStubber/t/Devel-SelfStubber.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Dumpvalue/lib/Dumpvalue.pm
===================================================================
--- trunk/contrib/perl/dist/Dumpvalue/lib/Dumpvalue.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Dumpvalue/lib/Dumpvalue.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
use 5.006_001; # for (defined ref) and $#$v and our
package Dumpvalue;
use strict;
-our $VERSION = '1.16';
+our $VERSION = '1.17';
our(%address, $stab, @stab, %stab, %subs);
# documentation nits, handle complex data structures better by chromatic
@@ -15,7 +15,7 @@
# (IZ) changes for objectification:
# c) quote() renamed to method set_quote();
# d) unctrlSet() renamed to method set_unctrl();
-# f) Compiles with `use strict', but in two places no strict refs is needed:
+# f) Compiles with 'use strict', but in two places no strict refs is needed:
# maybe more problems are waiting...
my %defaults = (
@@ -299,7 +299,7 @@
if ($in eq 'unctrl' or $in eq 'quote') {
$self->{unctrl} = $in;
} else {
- print "Unknown value for `unctrl'.\n";
+ print "Unknown value for 'unctrl'.\n";
}
}
$self->{unctrl};
Property changes on: trunk/contrib/perl/dist/Dumpvalue/lib/Dumpvalue.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Dumpvalue/t/Dumpvalue.t
===================================================================
--- trunk/contrib/perl/dist/Dumpvalue/t/Dumpvalue.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Dumpvalue/t/Dumpvalue.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Dumpvalue/t/Dumpvalue.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Env/lib/Env.pm
===================================================================
--- trunk/contrib/perl/dist/Env/lib/Env.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Env/lib/Env.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,6 +1,6 @@
package Env;
-our $VERSION = '1.02';
+our $VERSION = '1.04';
=head1 NAME
@@ -211,7 +211,7 @@
my $length = shift;
my @temp = split($sep, $ENV{$$self});
if (wantarray) {
- my @result = splice @temp, $self, $offset, $length, @_;
+ my @result = splice @temp, $offset, $length, @_;
$ENV{$$self} = join($sep, @temp);
return @result;
} else {
Property changes on: trunk/contrib/perl/dist/Env/lib/Env.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Env/t/array.t
===================================================================
--- trunk/contrib/perl/dist/Env/t/array.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Env/t/array.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -6,7 +6,7 @@
use Test::More;
plan(skip_all => "skipped for VMS") if $^O eq 'VMS';
-plan(tests => 11);
+plan(tests => 12);
use Env qw(@FOO);
use vars qw(@BAR);
@@ -64,3 +64,7 @@
splice @FOO, 1, 1, 'B';
splice @BAR, 1, 1, 'B';
is_deeply(\@FOO, \@BAR, "Splice");
+
+my $foo = $ENV{FOO};
+() = splice @FOO, 0, 0;
+is $ENV{FOO}, $foo, 'Splice in list context';
Property changes on: trunk/contrib/perl/dist/Env/t/array.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Env/t/env.t
===================================================================
--- trunk/contrib/perl/dist/Env/t/env.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Env/t/env.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Env/t/env.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/ExtUtils-CBuilder/Changes (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-CBuilder/Changes)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/Changes (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,455 @@
+Revision history for Perl extension ExtUtils::CBuilder.
+
+0.280209 - 2012-10-20 (Perl v5.17.5)
+
+ Fixed:
+
+ - Allow options to be passed to prelink in Windows (perl #115100)
+ [Eric Brine]
+
+0.280208 - 2012-06-20 (Perl v5.17.1)
+
+ Fixed:
+
+ - Corrected location in which manifest file is looked for on
+ Windows (RT#35943, perl #111798) [snaury at gmail.com]
+
+0.280207 (Not released)
+
+ Fixed:
+
+ - Corrected test for existence of manifest file on Windows
+ (perl #111782) [Steve Hay]
+
+0.280206 - 2012-03-20 (Perl v5.15.9)
+
+ Documented:
+
+ - Added a SUPPORT section to indicate that upstream is Perl 5 core
+
+0.280205 - 2011-12-20 (Perl v5.15.6)
+
+ Fixed:
+
+ - Fixed bug picking up ccflags from Config
+
+0.280204 - 2011-06-20 (Perl v5.15.0)
+
+ Minor:
+
+ - Quotation style cleanup
+
+0.280203 - 2011-05-14 (Perl v5.14.0)
+
+ Fixed:
+
+ - Appends CFLAGS and LDFLAGS environments instead of overriding
+
+ - Reset ccflags on compilation for VMS.
+
+ Changed:
+
+ - Refactored OS name mapping to use Perl::OSType
+
+0.280202 - Sun Jan 23 10:47:51 EST 2011
+
+ - Different file names used for test files; allows EU::CB tests
+ to be run in parallel. [Florian Ragwitz]
+
+0.280201 - Fri Jan 21 15:16:36 EST 2011
+
+ Fixed:
+
+ - t/04-base.t no longer attempt to compile or link as this provokes
+ failures on main platforms
+
+ - Various typo fixes in Pod or comments
+
+0.2802 - Sun Dec 12 07:22:43 EST 2010
+
+ Fixed:
+
+ - Incorporated another t/04-base.t fix from bleadperl
+ [Chris Williams]
+
+0.2801 - Wed Dec 8 21:36:56 EST 2010
+
+ Fixed:
+
+ - Fixed spurious t/04-base.t failure when run from Perl core
+ [David Golden]
+
+0.2800 - Mon Dec 6 16:05:46 EST 2010
+
+ - No changes from 0.27_07
+
+0.27_07 - Wed Sep 29 21:48:55 EDT 2010
+
+ Fixed:
+
+ - Fixed t/02-link.t on perl < 5.8
+
+0.27_06 - Mon Sep 27 15:29:54 EDT 2010
+
+ Fixed:
+
+ - Preserves exit status on VMS [Craig Berry]
+
+ - Fix Win32 split_like_shell escaping [Christian Walde]
+
+0.27_05 - Wed Jul 28 15:29:59 EDT 2010
+
+ Fixed:
+
+ - Tests no longer fail if user has set the CC environment variable
+
+0.27_04 - Mon Jul 26 22:41:43 EDT 2010
+
+ Added:
+ - handle c compiler and c++ compiler separately
+ (adds requirement for IPC::Cmd) [Jens Rehsack]
+
+ Others:
+ - rely on File::Temp::tempfile and File::Spec::tmpdir to
+ get unique file name for checking for compiler
+ [Jens Rehsack]
+
+ - Code base modernization and substantial code coverage improvments
+ [Jim Keenan]
+
+0.2703 - Tue Mar 16 17:10:55 EDT 2010
+
+ Bugs fixed:
+ - fixed tests for Windows and MSVC [Jan Dubois]
+
+0.2702 - Mon Feb 22 15:10:52 EST 2010
+
+ Bugs fixed:
+ - compile() changes in 0.2701 did not work on Windows. Now fixed.
+
+0.2701 - Tue Feb 16 09:12:45 EST 2010
+
+ Bugs fixed:
+ - compile() now accepts both string & array for 'include_dirs'
+ argument, as documented.(RT#54606) [Alberto Sim\xF5es]
+
+0.27 - Thu Oct 29 21:29:56 EDT 2009
+
+ Other:
+ - Removed Build.PL to avoid creating a circular dependency
+ - Added version numbers to Windows compiler driver modules
+
+0.26_05 - Sun Oct 25 17:29:02 EDT 2009
+
+ Bugs fixed:
+ - Fixed t/02link.t failures on cygwin with Perl 5.8 [David Golden]
+
+ Other:
+ - Made have_compiler (and have_cplusplus) quiet without echoing
+ the test command to STDOUT [David Golden]
+
+0.26_04 - Mon Oct 19 21:57:46 EDT 2009
+
+ Enhancements:
+ - Added 'have_cplusplus()' method to check for C++ support
+ - Added patches for building Perl with mingw64 [Sisyphus]
+ - Allow CC environment variable to override $Config{cc}
+
+ Bugs fixed:
+ - Fixed link executable command for Win32 MSVC (RT#40819) [Cosimo
+ Streppone]
+ - Removed MSVC version check when embedding a manifest file
+ (RT #43002) [Steve Hay]
+
+ Other:
+ - Split Windows compiler driver packages into individual *.pm files
+
+0.260301 - Sat Aug 29 11:04:41 EDT 2009
+
+ Bugs fixed:
+ - Fixed linking error on Win32 with gcc compiler (RT#49000)
+ [kmx]
+
+0.2603 - Sat Jul 18 06:56:06 EDT 2009
+
+ Bugs fixed:
+ - Makefile.PL had wrong INSTALLDIRS setting for older Perls
+ (RT#47985) [David Golden]
+
+0.2602 - Sat Jul 4 10:57:12 EDT 2009
+
+ Bugs fixed:
+ - Fixed 00-have-compiler.t if $^X is a relative path [David Wheeler]
+
+0.2601 - Wed Jul 1 09:37:39 EDT 2009
+
+ Bugs fixed:
+ - On VMS, cleans up extra files generated during testing
+ [John E. Malmberg, Craig Berry]
+
+0.26 - Mon Jun 29 20:11:52 EDT 2009
+
+ - No changes from 0.25_01
+
+0.25_01 - Sat Jun 27 23:13:20 EDT 2009
+
+ - Changed test library to Test::More
+
+ - Added tests for have_compiler
+
+ - Skips tests that need a compiler if have_compiler is false
+
+ - have_compiler will try to compile in the current directory
+ if compiling in tmpdir fails for whatever reason
+
+0.25 - Fri Jun 26 16:18:13 EDT 2009
+
+ - Slight diagnostic improvements in link.t
+
+0.24_01 - Sun Mar 8 14:50:10 2009
+
+ - On Windows, don't generate "mt" command when CRT is statically
+ linked. [Jan Dubois]
+
+ - On Cygwin, examine $Config{useshrplib} to see whether we're
+ supposed to be linking with a shared perl library or not. [Reini
+ Urban]
+
+ - In link_executable() on Cygwin, trust $Config{ld} rather than using
+ $Config{cc} for linking. [Reini Urban]
+
+ - Add 'haiku' as a Unix-like platform. [Ingo Weinhold]
+
+0.24 - Fri Aug 15 22:01:48 2008
+
+ - Added 'gnu' and 'gnukfreebsd' as Unix variants. [Niko Tyni]
+
+ - Brought in some VMS fixes from bleadperl: "Correct and complete
+ CBuilder's handling of external libraries when linking on VMS."
+ [Craig Berry]
+
+0.23 - Sat Apr 19 22:28:03 2008
+
+ - Fixed some problems (some old, some new) with Strawberry Perl on
+ Windows. [Alberto Simo~es]
+
+ - Will now install in the core perl lib directory when the user's
+ perl is new enough to have us in core. [Yi Ma Mao]
+
+0.22 - Fri Feb 8 21:52:21 2008
+
+ - Replaced the split_like_shell() method on Windows with a
+ near-no-op, which is probably more correct and has the benefit of
+ not messing up UNC paths. [John R. LoVerso, see
+ http://rt.cpan.org/Ticket/Display.html?id=26545]
+
+ - Fixed extra_compiler_flags on Windows, they were being
+ ignored. [Robert May]
+
+0.21 - Tue Oct 30 06:46:01 2007
+
+ - Clean up perl_src path using Cwd::realpath(). Only affects usage
+ as part of the perl core.
+
+ - Protect $., $@, $!, $^E, and $? from any clobbering that might
+ occur in our DESTROY method. [Zefram]
+
+ - From bleadperl, a patch to clean up debug symbol files (.pdb for
+ VC++, .tds for BCC) when running have_compiler(). [Steve Hay &
+ Steve Peters]
+
+0.19 - Sun May 13 14:29:18 2007
+
+ - When building as part of the perl core (so this is irrelevant for
+ people downloading from CPAN) we now try a little harder to find
+ the perl sources. [Jos Boumans]
+
+ - Fixed a part of the manifest thingy that got broken on 64-bit
+ Windows platforms in version 0.18. [Steve Hay, Jan Dubois]
+
+0.18 - Mon Mar 26 21:29:09 2007
+
+ - Various OS/2 fixes:
+ + Put .LIB file near .DEF file
+ + Got library-file building working better
+ + Handled libperl_overrides better
+ [Ilya Zakharevich]
+
+ - On Windows: embed manifest files in DLLs built with Module-Build
+ when using VC8. [Steve Hay]
+
+ - Added a workaround for a config error on dec_osf: the linker is
+ $Config{cc}, not $Config{ld}. [Jarkko Hietaniemi]
+
+ - Borland's compiler "response files" will not pass through macro
+ definitions that contain quotes. The quotes get stripped and there
+ seems to be no way to escape them. So we leave macros on the
+ command line. [Randy W. Sims]
+
+0.18 Sat Mar 25 13:35:47 CST 2006
+
+ - Yet more fixes for arg_defines() on VMS. [Craig A. Berry and John
+ E. Malmberg]
+
+0.17 Wed Mar 15 22:46:15 CST 2006
+
+ - When we're being run from an uninstalled perl distribution
+ (e.g. one that's in the process of being built and tested), we
+ search for perl first in the current working directory. [Randy
+ Sims]
+
+ - More fixing of the arg_defines() method on VMS. [Craig A. Berry and
+ John E. Malmberg]
+
+0.16 Mon Mar 13 17:08:21 CST 2006
+
+ - Fix quoting of command line arguments on Windows. [Yitzchak
+ Scott-Thoennes]
+
+ - Provided a custom arg_defines() on VMS that does essentially the
+ same thing for /define that version 0.14 did for /include. [Craig
+ A. Berry]
+
+ - Documented the existing 'quiet' parameter, which silences the
+ printing of system() commands. [Suggested by Yitzchak
+ Scott-Thoennes]
+
+0.15 Mon Oct 3 17:10:32 CDT 2005
+
+ - Several OS/2 fixes have been made, including: 1) adding the
+ necessary version string to DLLs, 2) passing the executable's name
+ to 'ldopts' without the .exe extension, 3) avoiding calling 'env'
+ via the 'shrpenv' thingy, since it triggers a fork() bug. [Ilya
+ Zakharevich]
+
+ - Integrate a couple cleanup-related changes from bleadperl that
+ somehow never got into this copy. [Steve Hay]
+
+ - Added a new 'defines' parameter to compile(), which gives a
+ platform-independant way to specify various -Dfoo=bar (or the
+ equivalent) compiler defines. [Randy W. Sims]
+
+0.14 Mon Sep 19 13:40:37 CDT 2005
+
+ - Several fixes have been made for VMS, including: 1) there can only
+ be one /include qualifier, so merge multiple /includes into one; 2)
+ make sure the executable is named the same way that dynaloader will
+ look for it; 3) make sure the option files for the exported symbols
+ and the PERLSHR image are passed properly to the linker. [John
+ E. Malmberg]
+
+0.13 Wed Aug 24 20:05:59 CDT 2005
+
+ - Several temporary files weren't being cleaned up during testing,
+ because the 'cleanup' mechanism was never properly implemented.
+ This is now fixed. [Steve Hay]
+
+0.12 Mon May 30 16:40:10 CDT 2005
+
+ - In order to integrate into the perl core, patches were contributed
+ that a) put a $VERSION variable in each .pm file, b) add a 'quiet'
+ parameter to new() to shut up some of the command-echoing, c)
+ checks for the perl source headers in the CORE/ directory in the
+ perl source tree, not in the post-installation location, and d)
+ adjusts the CWD when running the regression tests under the perl
+ core. [Yitzchak Scott-Thoennes]
+
+ - Various parts of the code were looking for the CORE/ directory in
+ $Config{archlib}, $Config{installarchlib}, and $Config{archlibexp}.
+ Only the latter is correct, so we use that everywhere now.
+ [Curt Tilmes]
+
+ - For Unix-ish platforms, link_executable() will now prefer
+ $Config{cc} to $Config{ld}, because that typically works
+ better. [Jarkko Hietaniemi and H.Merijn Brand]
+
+ - Prelinking (invoking ExtUtils::Mksymlists to create options-files)
+ is now only done when we're building dynamic libraries. [Yitzchak
+ Scott-Thoennes]
+
+0.11 Tue Apr 5 20:58:41 CDT 2005
+
+ - Added a licensing statement to CBuilder.pm. [Spotted by Chip
+ Salzenberg]
+
+0.10 Mon Mar 14 20:18:19 CST 2005
+
+ - Split out a few simple routines that format how compile switches
+ are formatted, so that we can override them for platforms like VMS
+ where they're very different.
+
+ - Fix compile() and link() on VMS. [Help from Michael Schwern and
+ Peter Prymmer]
+
+0.09 Tue Feb 8 17:57:41 CST 2005
+
+ - Fixed a broken link_executable() method on cygwin - it now uses
+ 'gcc' instead of $Config{ld} for the linking, because the latter is
+ actually a shell script which calls a perl script which calls gcc
+ in a way that only works for creating shared libraries, not
+ executables.
+
+0.08 Tue Jan 18 21:54:11 CST 2005
+
+ - Fixed a testing error in which I had the prototype wrong for the
+ main() function. [Jose Pedro Oliveira]
+
+0.07 Wed Jan 12 21:50:34 CST 2005
+
+ - Added the link_executable() method, which provides the ability to
+ create standalone executables. This is NOT yet implemented on
+ Windows, and therefore the tests for it are skipped on Win32.
+ [Alberto Manuel Brandao Simoes]
+
+ - Integrated the latest split_like_shell() for Windows from
+ Module::Build (really need to find a better home for this code...),
+ which now does a much better job of handling quotes and backslashes
+ and so on. [Randy Sims]
+
+ - Fixed a couple of Windows problems related to the output-file name
+ in link(), and some clobbering of the 'include_dirs' parameter to
+ compile(). [Randy Sims]
+
+0.06 Mon Dec 27 22:51:36 CST 2004
+
+ - Fixed a bug on Unix environments in which our work-around for
+ shell-commands like "FOO=BAR cc" (which is supposed to be turned
+ into "env FOO=BAR cc" to actually work) wasn't being called.
+
+0.05 Wed Oct 13 23:09:09 CDT 2004
+
+ - Fixed a bug in split_like_shell() in which leading whitespace was
+ creating an empty word, manifesting as something like "gcc - no
+ such file or directory" during tests. [Spotted by Warren L. Dodge]
+
+ - Incorporate another split_like_shell() fix from Module::Build.
+
+0.04 Sun Oct 10 00:31:08 CDT 2004
+
+ - Changed the split_like_shell() method to use the shellwords()
+ function from Text::ParseWords (a core module since 5.0), which
+ does a much better job than the split() we were using.
+
+
+0.03 Fri May 14 23:12:23 CDT 2004
+
+ - Fixed minor problems with the Build.PL file, the module names
+ should be quoted.
+
+ - The VMS module declared itself with the wrong package name.
+
+
+0.02 Fri Feb 20 10:17:40 CST 2004
+
+ - Fixed a bug in .../Platform/Windows.pm, in which compile() was
+ ignoring an 'include_dirs' argument. [Randy Sims]
+
+ - Fixed a bug in .../Platform/Windows.pm, in which output files were
+ being created in the root directory \ when they should be created
+ in the current directory. [Randy Sims]
+
+
+0.01 Mon Jan 12 08:12:35 CST 2004
+
+ - Original release, taken from Module::Build's C-building code, with
+ patching help from Randy Sims.
Copied: trunk/contrib/perl/dist/ExtUtils-CBuilder/LICENSE (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-CBuilder/LICENSE)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/LICENSE (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/LICENSE 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,379 @@
+This software is copyright (c) 2012 by Ken Williams.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+Terms of the Perl programming language system itself
+
+a) the GNU General Public License as published by the Free
+ Software Foundation; either version 1, or (at your option) any
+ later version, or
+b) the "Artistic License"
+
+--- The GNU General Public License, Version 1, February 1989 ---
+
+This software is Copyright (c) 2012 by Ken Williams.
+
+This is free software, licensed under:
+
+ The GNU General Public License, Version 1, February 1989
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Suite 500, Boston, MA 02110-1335 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+ To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19xx name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License. Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ program `Gnomovision' (a program to direct compilers to make passes
+ at assemblers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+--- The Artistic License 1.0 ---
+
+This software is Copyright (c) 2012 by Ken Williams.
+
+This is free software, licensed under:
+
+ The Artistic License 1.0
+
+The Artistic License
+
+Preamble
+
+The intent of this document is to state the conditions under which a Package
+may be copied, such that the Copyright Holder maintains some semblance of
+artistic control over the development of the package, while giving the users of
+the package the right to use and distribute the Package in a more-or-less
+customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ - "Package" refers to the collection of files distributed by the Copyright
+ Holder, and derivatives of that collection of files created through
+ textual modification.
+ - "Standard Version" refers to such a Package if it has not been modified,
+ or has been modified in accordance with the wishes of the Copyright
+ Holder.
+ - "Copyright Holder" is whoever is named in the copyright or copyrights for
+ the package.
+ - "You" is you, if you're thinking about copying or distributing this Package.
+ - "Reasonable copying fee" is whatever you can justify on the basis of media
+ cost, duplication charges, time of people involved, and so on. (You will
+ not be required to justify it to the Copyright Holder, but only to the
+ computing community at large as a market that must bear the fee.)
+ - "Freely Available" means that no fee is charged for the item itself, though
+ there may be fees involved in handling the item. It also means that
+ recipients of the item may redistribute it under the same conditions they
+ received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived
+from the Public Domain or from the Copyright Holder. A Package modified in such
+a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that
+you insert a prominent notice in each changed file stating how and when you
+changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or an
+ equivalent medium, or placing the modifications on a major archive site
+ such as ftp.uu.net, or by allowing the Copyright Holder to include your
+ modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict with
+ standard executables, which must also be provided, and provide a separate
+ manual page for each non-standard executable that clearly documents how it
+ differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable
+form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where to
+ get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of the Package
+ with your modifications.
+
+ c) accompany any non-standard executables with their corresponding Standard
+ Version executables, giving the non-standard executables non-standard
+ names, and clearly documenting the differences in manual pages (or
+ equivalent), together with instructions on where to get the Standard
+ Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package. You may charge any fee you choose for support of this Package. You
+may not charge a fee for this Package itself. However, you may distribute this
+Package in aggregate with other (possibly commercial) programs as part of a
+larger (possibly commercial) software distribution provided that you do not
+advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output
+from the programs of this Package do not automatically fall under the copyright
+of this Package, but belong to whomever generated them, and may be sold
+commercially, and may be aggregated with this Package.
+
+7. C or perl subroutines supplied by you and linked into this Package shall not
+be considered part of this Package.
+
+8. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
+
Copied: trunk/contrib/perl/dist/ExtUtils-CBuilder/Makefile.PL (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-CBuilder/Makefile.PL)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/Makefile.PL (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/Makefile.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,52 @@
+use strict;
+use warnings;
+
+use ExtUtils::MakeMaker 6.30;
+
+my %WriteMakefileArgs = (
+ "NAME" => "ExtUtils::CBuilder",
+ "VERSION_FROM" => "lib/ExtUtils/CBuilder.pm",
+ "ABSTRACT_FROM" => "lib/ExtUtils/CBuilder.pm",
+ "AUTHOR" => "Ken Williams <kwilliams\@cpan.org>, The Perl 5 Porters",
+ "BUILD_REQUIRES" => {
+ "Test::More" => "0.47"
+ },
+ "CONFIGURE_REQUIRES" => {
+ "ExtUtils::MakeMaker" => "6.30"
+ },
+ "EXE_FILES" => [],
+ "INSTALLDIRS" => ($] < 5.011 ? 'perl' : 'site'),
+ "LICENSE" => "perl",
+ "PREREQ_PM" => {
+ "Cwd" => 0,
+ "File::Basename" => 0,
+ "File::Spec" => "3.13",
+ "File::Temp" => 0,
+ "IO::File" => 0,
+ "IPC::Cmd" => 0,
+ "Perl::OSType" => 0,
+ "Text::ParseWords" => 0
+ },
+);
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
+ my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
+ my $pp = $WriteMakefileArgs{PREREQ_PM};
+ for my $mod ( keys %$br ) {
+ if ( exists $pp->{$mod} ) {
+ $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
+ }
+ else {
+ $pp->{$mod} = $br->{$mod};
+ }
+ }
+}
+
+delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
+ unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
+
+$WriteMakefileArgs{INSTALLDIRS} = 'perl'
+ if $] >= 5.009005 && $] <= 5.011000;
+
+WriteMakefile(%WriteMakefileArgs);
+
Copied: trunk/contrib/perl/dist/ExtUtils-CBuilder/README.patching (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-CBuilder/README.patching)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/README.patching (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/README.patching 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,27 @@
+Patching instructions for ExtUtils::CBuilder
+
+1. Check for any changes to .pm files since dev or stable Perl release. E.g.
+to check for changes since v5.15.8:
+
+ $ cd dist/ExtUtils-CBuilder
+ $ git log v5.15.8..blead -- .
+
+2. If you are making the first change since the last Perl release, you need to
+bump the $VERSION in all .pm files and update the Changes file with the new
+version. In the Changes file, put the expected *NEXT* release of Perl (dev or
+stable) as the release date and version. E.g. after v5.15.8, I added this line
+to Changes to indicate what will be next release:
+
+ 0.280206 - 2012-03-20 (Perl v5.15.9)
+
+3. Add an entry to Changes for your work
+
+4. Update Makefile.PL, MANIFEST.SKIP or other support files as necessary. E.g.
+update Makefile.PL with any changes to prerequisites.
+
+5. Commit all changes (preferably to a branch)
+
+6. Run Configure/make/make test and check for errors. If there are any, fix them.
+
+7. If all is well, push your commits to blead or send a patch to p5p if you do
+not have commit access to the Perl 5 repository
Copied: trunk/contrib/perl/dist/ExtUtils-CBuilder/README.release (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-CBuilder/README.release)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/README.release (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/README.release 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,49 @@
+Release instructions for dual-life ExtUtils::CBuilder
+
+1. Check out a tag/commit corresponding to the release point. This
+should generally be a Perl release (dev or stable). Make sure
+your working tree is clear of extraneous files. E.g.
+
+ $ git checkout v5.15.8
+ $ git clean -dxf
+
+2. Rsync the ExtUtils-CBuilder directory to a temporary directory for
+release. E.g.
+
+ $ rsync -av --delete dist/ExtUtils-CBuilder /tmp
+
+3. Change to the temp directory
+
+ $ cd /tmp/ExtUtils-CBuilder
+
+4. Look at the Changes file. If it was not kept up to date in blead,
+take a minute to feel sad, then update it. Remember to copy the
+changes back to blead later.
+
+5. Configure and then make a MANIFEST
+
+ $ perl Makefile.PL
+ $ make manifest
+
+6. Build a release directory and examine its contents, paying particular
+attention to the MANIFEST and the META files
+
+ $ make distdir
+
+7. Test the release directory
+
+ $ make disttest
+
+8. If all looks good, create a tarball and upload it to CPAN (maybe
+install CPAN::Uploader or an equivalent tool)
+
+ $ make dist
+ $ cpan_upload ExtUtils-CBuilder-X.YYYZZZ.tar.gz
+
+9. Update Porting/Maintainers.pl in the Perl repo with the new tarball
+name for ExtUtils-CBuilder.
+
+10. If you updated Changes, copy that back to blead now
+
+11. Commit any changes to blead (or submit it as a patch if you don't have a
+commit bit)
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -12,7 +12,7 @@
use File::Temp qw(tempfile);
use vars qw($VERSION);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
# More details about C/C++ compilers:
# http://developers.sun.com/sunstudio/documentation/product/compiler.jsp
@@ -40,11 +40,13 @@
$self->{config}{$k} = $v unless exists $self->{config}{$k};
}
$self->{config}{cc} = $ENV{CC} if defined $ENV{CC};
- $self->{config}{ccflags} = $ENV{CFLAGS} if defined $ENV{CFLAGS};
+ $self->{config}{ccflags} = join(" ", $self->{config}{ccflags}, $ENV{CFLAGS})
+ if defined $ENV{CFLAGS};
$self->{config}{cxx} = $ENV{CXX} if defined $ENV{CXX};
$self->{config}{cxxflags} = $ENV{CXXFLAGS} if defined $ENV{CXXFLAGS};
$self->{config}{ld} = $ENV{LD} if defined $ENV{LD};
- $self->{config}{ldflags} = $ENV{LDFLAGS} if defined $ENV{LDFLAGS};
+ $self->{config}{ldflags} = join(" ", $self->{config}{ldflags}, $ENV{LDFLAGS})
+ if defined $ENV{LDFLAGS};
unless ( exists $self->{config}{cxx} ) {
my ($ccpath, $ccbase, $ccsfx ) = fileparse($self->{config}{cc}, qr/\.[^.]*/);
@@ -64,7 +66,7 @@
}
unless ( exists $self->{config}{cxx} ) {
$self->{config}{cxx} = $self->{config}{cc};
- my $cflags = $self->{config}{cflags};
+ my $cflags = $self->{config}{ccflags};
$self->{config}{cxxflags} = '-x c++';
$self->{config}{cxxflags} .= " $cflags" if defined $cflags;
}
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
use ExtUtils::CBuilder::Base;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Base);
sub link_executable {
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
use ExtUtils::CBuilder::Base;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Base);
use File::Spec::Functions qw(catfile catdir);
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
package ExtUtils::CBuilder::Platform::Windows::BCC;
use vars qw($VERSION);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
sub format_compiler_cmd {
my ($self, %spec) = @_;
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
package ExtUtils::CBuilder::Platform::Windows::GCC;
use vars qw($VERSION);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
sub format_compiler_cmd {
my ($self, %spec) = @_;
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
package ExtUtils::CBuilder::Platform::Windows::MSVC;
use vars qw($VERSION);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
sub arg_exec_file {
my ($self, $file) = @_;
@@ -64,6 +64,7 @@
}
my $output = $spec{output};
+ my $manifest = $spec{manifest};
$spec{def_file} &&= '-def:' . $spec{def_file};
$spec{output} &&= '-out:' . $spec{output};
@@ -93,7 +94,7 @@
# Embed the manifest file if it exists
push @cmds, [
- 'if', 'exist', $spec{manifest}, 'mt', '-nologo', $spec{manifest}, '-outputresource:' . "$output;2"
+ 'if', 'exist', $manifest, 'mt', '-nologo', $spec{manifest}, '-outputresource:' . "$output;2"
];
return @cmds;
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -10,7 +10,7 @@
use IO::File;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Base);
=begin comment
@@ -179,8 +179,7 @@
$spec{output} ||= File::Spec->catfile( $spec{builddir},
$spec{basename} . '.'.$cf->{dlext} );
- $spec{manifest} ||= File::Spec->catfile( $spec{builddir},
- $spec{basename} . '.'.$cf->{dlext}.'.manifest');
+ $spec{manifest} ||= $spec{output} . '.manifest';
$spec{implib} ||= File::Spec->catfile( $spec{builddir},
$spec{basename} . $cf->{lib_ext} );
$spec{explib} ||= File::Spec->catfile( $spec{builddir},
@@ -213,7 +212,8 @@
(my $def_base = $spec{def_file}) =~ tr/'"//d;
$def_base =~ s/\.def$//;
- $self->prelink( dl_name => $args{module_name},
+ $self->prelink( %args,
+ dl_name => $args{module_name},
dl_file => $def_base,
dl_base => $spec{basename} );
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,7 +5,7 @@
use File::Spec;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,7 +5,7 @@
use ExtUtils::CBuilder::Platform::Unix;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
# TODO: If a specific exe_file name is requested, if the exe created
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
use ExtUtils::CBuilder::Platform::Unix;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub compile {
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -6,7 +6,7 @@
use vars qw($VERSION @ISA);
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
sub link_executable {
my $self = shift;
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
use ExtUtils::CBuilder::Platform::Unix;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
@@ -57,9 +57,9 @@
my ($self, %args) = @_;
my @DEF = grep /\.def$/i, @{$args{prelink_res}};
- die "More than one .def files created by `prelink' stage" if @DEF > 1;
+ die "More than one .def files created by 'prelink' stage" if @DEF > 1;
# XXXX No "$how" argument here, so how to test for dynamic link?
- die "No .def file created by `prelink' stage"
+ die "No .def file created by 'prelink' stage"
unless @DEF or not @{$args{prelink_res}};
my @after_libs = ($OS2::is_aout ? ()
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -6,7 +6,7 @@
use Perl::OSType qw/os_type/;
use vars qw($VERSION @ISA);
-$VERSION = '0.280203';
+$VERSION = '0.280210';
$VERSION = eval $VERSION;
# We only use this once - don't waste a symbol table entry on it.
@@ -265,10 +265,23 @@
fixes for OS/2; John E. Malmberg and Peter Prymmer have done likewise
for VMS.
+=head1 SUPPORT
+
+ExtUtils::CBuilder is maintained as part of the Perl 5 core. Please
+submit any bug reports via the F<perlbug> tool included with Perl 5.
+Bug reports will be included in the Perl 5 ticket system at
+L<http://rt.perl.org>.
+
+The Perl 5 source code is available at <http://perl5.git.perl.org/perl.git>
+and ExtUtils-CBuilder may be found in the F<dist/ExtUtils-CBuilder> directory
+of the repository.
+
=head1 AUTHOR
Ken Williams, kwilliams at cpan.org
+Additional contributions by The Perl 5 Porters.
+
=head1 COPYRIGHT
Copyright (c) 2003-2005 Ken Williams. All rights reserved.
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/00-have-compiler.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/t/00-have-compiler.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/t/00-have-compiler.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/00-have-compiler.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/01-basic.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/t/01-basic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/t/01-basic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/01-basic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/02-link.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/t/02-link.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/t/02-link.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/02-link.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/03-cplusplus.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/t/03-cplusplus.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/t/03-cplusplus.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/03-cplusplus.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/04-base.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-CBuilder/t/04-base.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-CBuilder/t/04-base.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
#! perl -w
use strict;
-use Test::More tests => 50;
+use Test::More tests => 64;
use Config;
use Cwd;
use File::Path qw( mkpath );
@@ -328,6 +328,29 @@
"_prepare_mksymlists_args(): got expected arguments for Mksymlists",
);
+my %testvars = (
+ CFLAGS => 'ccflags',
+ LDFLAGS => 'ldflags',
+);
+
+while (my ($VAR, $var) = each %testvars) {
+ local $ENV{$VAR};
+ $base = ExtUtils::CBuilder::Base->new( quiet => 1 );
+ ok( $base, "ExtUtils::CBuilder::Base->new() returned true value" );
+ isa_ok( $base, 'ExtUtils::CBuilder::Base' );
+ like($base->{config}{$var}, qr/\Q$Config{$var}/,
+ "honours $var from Config.pm");
+
+ $ENV{$VAR} = "-foo -bar";
+ $base = ExtUtils::CBuilder::Base->new( quiet => 1 );
+ ok( $base, "ExtUtils::CBuilder::Base->new() returned true value" );
+ isa_ok( $base, 'ExtUtils::CBuilder::Base' );
+ like($base->{config}{$var}, qr/\Q$ENV{$VAR}/,
+ "honours $VAR from the environment");
+ like($base->{config}{$var}, qr/\Q$Config{$var}/,
+ "doesn't override $var from Config.pm with $VAR from the environment");
+}
+
#####
for ($source_file, $object_file, $lib_file) {
Property changes on: trunk/contrib/perl/dist/ExtUtils-CBuilder/t/04-base.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Command/lib/ExtUtils/Command.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Command/lib/ExtUtils/Command.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Command/lib/ExtUtils/Command.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Command/lib/ExtUtils/Command.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Command/t/cp.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Command/t/cp.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Command/t/cp.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Command/t/cp.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Command/t/eu_command.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Command/t/eu_command.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Command/t/eu_command.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Command/t/eu_command.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Command/t/lib/TieOut.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Command/t/lib/TieOut.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Command/t/lib/TieOut.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Command/t/lib/TieOut.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Install/Changes
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,5 +1,20 @@
Revision history for ExtUtils-Install
+1.57
+
+Adds 'skip_cwd' parameter to ExtUtils::Installed. With this new parameter,
+the current directory is not included in the installed module search. This
+avoids finding modules from other perls which happen to be below the
+current directory.
+
+1.56
+
+Pod fixes.
+
+1.55
+
+Pod fixes.
+
1.54
This is a "no-change" version bump because I pushed the v1.53 change
@@ -85,7 +100,7 @@
Synchronize with the changes that were made in blead perl
patch #33567. VMS changes by Craig Berry. See
-http://public.activestate.com/cgi-bin/perlbrowse/p/33567
+http://perl5.git.perl.org/perl.git/commit/553b5000d7907cb0cb8f4658c1d6a2aac379415b
This was marked in the pod as 1.51 but not actually version bumped.
@@ -113,7 +128,7 @@
Version only released as part of bleadperl added in revision #33566.
Cygwin related changes by Steve Hay, and others, see
-http://public.activestate.com/cgi-bin/perlbrowse/p/33566
+http://perl5.git.perl.org/perl.git/commit/038ae9a45711aea142f721498a4a61353b40c4e4
and discussion at
@@ -276,7 +291,7 @@
- Integrated patch from Randy Sims.
- 1. Fixes error during `perl Makefile.PL` because it MakeMaker can't
+ 1. Fixes error during 'perl Makefile.PL' because it MakeMaker can't
find the NAME section describing DISTNAME (which has the 'ex-'
prefix).
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -38,11 +38,11 @@
=head1 VERSION
-1.55
+1.59
=cut
-$VERSION = '1.56'; # <---- dont forget to update the POD section just above this line!
+$VERSION = '1.59'; # <---- dont forget to update the POD section just above this line!
$VERSION = eval $VERSION;
=pod
@@ -73,10 +73,10 @@
If this value is defined but false then such an operation has
ocurred, but should not impact later operations.
+=over
+
=begin _private
-=over
-
=item _chmod($$;$)
Wrapper to chmod() for debugging and error trapping.
@@ -96,34 +96,11 @@
=cut
my $Is_VMS = $^O eq 'VMS';
-my $Is_VMS_noefs = $Is_VMS;
my $Is_MacPerl = $^O eq 'MacOS';
my $Is_Win32 = $^O eq 'MSWin32';
my $Is_cygwin = $^O eq 'cygwin';
my $CanMoveAtBoot = ($Is_Win32 || $Is_cygwin);
- if( $Is_VMS ) {
- my $vms_unix_rpt;
- my $vms_efs;
- my $vms_case;
-
- if (eval { local $SIG{__DIE__}; require VMS::Feature; }) {
- $vms_unix_rpt = VMS::Feature::current("filename_unix_report");
- $vms_efs = VMS::Feature::current("efs_charset");
- $vms_case = VMS::Feature::current("efs_case_preserve");
- } else {
- my $unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || '';
- my $efs_charset = $ENV{'DECC$EFS_CHARSET'} || '';
- my $efs_case = $ENV{'DECC$EFS_CASE_PRESERVE'} || '';
- $vms_unix_rpt = $unix_rpt =~ /^[ET1]/i;
- $vms_efs = $efs_charset =~ /^[ET1]/i;
- $vms_case = $efs_case =~ /^[ET1]/i;
- }
- $Is_VMS_noefs = 0 if ($vms_efs);
- }
-
-
-
# *note* CanMoveAtBoot is only incidentally the same condition as below
# this needs not hold true in the future.
my $Has_Win32API_File = ($Is_Win32 || $Is_cygwin)
@@ -440,9 +417,7 @@
my $path='';
my @make;
while (@dirs) {
- if ($Is_VMS_noefs) {
- # There is a bug in catdir that is fixed when the EFS character
- # set is enabled, which requires this VMS specific code.
+ if ($Is_VMS) {
$dir = File::Spec->catdir($vol, at dirs);
}
else {
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -17,7 +17,7 @@
require VMS::Filespec if $Is_VMS;
use vars qw($VERSION);
-$VERSION = '1.999_001';
+$VERSION = '1.999003';
$VERSION = eval $VERSION;
sub _is_prefix {
@@ -162,7 +162,9 @@
}
{
my %dupe;
- @{$self->{':private:'}{LIBDIRS}} = grep { -e $_ && !$dupe{$_}++ }
+ @{$self->{':private:'}{LIBDIRS}} =
+ grep { $_ ne '.' || ! $args{skip_cwd} }
+ grep { -e $_ && !$dupe{$_}++ }
@{$self->{':private:'}{EXTRA}}, @{$self->{':private:'}{INC}};
}
@@ -327,7 +329,7 @@
=head1 SYNOPSIS
use ExtUtils::Installed;
- my ($inst) = ExtUtils::Installed->new();
+ my ($inst) = ExtUtils::Installed->new( skip_cwd => 1 );
my (@modules) = $inst->modules();
my (@missing) = $inst->validate("DBI");
my $all_files = $inst->files("DBI");
@@ -369,6 +371,11 @@
paths C<@INC>. The packlists are read using the
L<ExtUtils::Packlist> module.
+If the named parameter C<skip_cwd> is true, the current directory C<.> will
+be stripped from C<@INC> before searching for .packlists. This keeps
+ExtUtils::Installed from finding modules installed in other perls that
+happen to be located below the current directory.
+
If the named parameter C<config_override> is specified,
it should be a reference to a hash which contains all information
usually found in C<%Config::Config>. For example, you can obtain
@@ -376,7 +383,8 @@
pass that in.
my $yoda_cfg = get_fake_config('yoda');
- my $yoda_inst = ExtUtils::Installed->new(config_override=>$yoda_cfg);
+ my $yoda_inst =
+ ExtUtils::Installed->new(config_override=>$yoda_cfg);
Similarly, the parameter C<inc_override> may be a reference to an
array which is used in place of the default module search paths
@@ -389,12 +397,13 @@
B<Note>: You probably do not want to use these options alone, almost always
you will want to set both together.
-The parameter c<extra_libs> can be used to specify B<additional> paths to
+The parameter C<extra_libs> can be used to specify B<additional> paths to
search for installed modules. For instance
- my $installed = ExtUtils::Installed->new(extra_libs=>["/my/lib/path"]);
+ my $installed =
+ ExtUtils::Installed->new(extra_libs=>["/my/lib/path"]);
-This should only be necessary if C</my/lib/path> is not in PERL5LIB.
+This should only be necessary if F</my/lib/path> is not in PERL5LIB.
Finally there is the 'default', and the related 'default_get' and 'default_set'
options. These options control the "default" object which is provided by the
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Packlist.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Packlist.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Packlist.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,7 +5,7 @@
use Carp qw();
use Config;
use vars qw($VERSION $Relocations);
-$VERSION = '1.44';
+$VERSION = '1.46';
$VERSION = eval $VERSION;
# Used for generating filehandle globs. IO::File might not be available!
@@ -24,6 +24,7 @@
sub mkfh()
{
no strict;
+local $^W;
my $fh = \*{$fhname++};
use strict;
return($fh);
@@ -34,10 +35,10 @@
Works out what absolute paths in the configuration have been located at run
time relative to $^X, and generates a regexp that matches them
+=back
+
=end _undocumented
-=back
-
=cut
sub __find_relocations
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/lib/ExtUtils/Packlist.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Install/t/Install.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/Install.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/Install.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/Install.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Install/t/InstallWithMM.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/InstallWithMM.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/InstallWithMM.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/InstallWithMM.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Install/t/Installapi2.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/Installapi2.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/Installapi2.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/Installapi2.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Install/t/Installed.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/Installed.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/Installed.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -14,7 +14,7 @@
use File::Basename;
use File::Spec;
-use Test::More tests => 63;
+use Test::More tests => 73;
BEGIN { use_ok( 'ExtUtils::Installed' ) }
@@ -107,8 +107,7 @@
sitearchexp => $fake_mod_dir,
);
- # necessary to fool new()
- push @INC, $fake_mod_dir;
+ # should find $fake_mod_dir via '.' in @INC
my $realei = ExtUtils::Installed->new();
isa_ok( $realei, 'ExtUtils::Installed' );
@@ -122,6 +121,50 @@
'... should find version in modules' );
}
+{
+ # avoid warning and death by localizing glob
+ local *ExtUtils::Installed::Config;
+ %ExtUtils::Installed::Config = (
+ %Config,
+ archlibexp => cwd(),
+ sitearchexp => $fake_mod_dir,
+ );
+
+ # disable '.' search
+
+ my $realei = ExtUtils::Installed->new( skip_cwd => 1 );
+ isa_ok( $realei, 'ExtUtils::Installed' );
+ isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' );
+ is( $realei->{Perl}{version}, $Config{version},
+ 'new() should set Perl version from %Config' );
+
+ ok( ! exists $realei->{FakeMod}, 'new( skip_cwd => 1 ) should fail to find modules with .packlists');
+}
+
+{
+ # avoid warning and death by localizing glob
+ local *ExtUtils::Installed::Config;
+ %ExtUtils::Installed::Config = (
+ %Config,
+ archlibexp => cwd(),
+ sitearchexp => $fake_mod_dir,
+ );
+
+ # necessary to fool new() since we'll disable searching '.'
+ push @INC, $fake_mod_dir;
+
+ my $realei = ExtUtils::Installed->new( skip_cwd => 1 );
+ isa_ok( $realei, 'ExtUtils::Installed' );
+ isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' );
+ is( $realei->{Perl}{version}, $Config{version},
+ 'new() should set Perl version from %Config' );
+
+ ok( exists $realei->{FakeMod}, 'new() should find modules with .packlists');
+ isa_ok( $realei->{FakeMod}{packlist}, 'ExtUtils::Packlist' );
+ is( $realei->{FakeMod}{version}, '1.1.1',
+ '... should find version in modules' );
+}
+
# Now try this using PERL5LIB
{
local $ENV{PERL5LIB} = join $Config{path_sep}, $fake_mod_dir;
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/Installed.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Install/t/Packlist.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/Packlist.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/Packlist.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,9 +4,9 @@
unshift @INC, 't/lib';
}
-use Test::More tests => 34;
+use Test::More tests => 35;
-use_ok( 'ExtUtils::Packlist' );
+BEGIN { use_ok( 'ExtUtils::Packlist' ); }
is( ref(ExtUtils::Packlist::mkfh()), 'GLOB', 'mkfh() should return a FH' );
@@ -162,6 +162,18 @@
is( ExtUtils::Packlist::packlist_file($pl), 'eplist',
'packlist_file() should fetch packlist from ExtUtils::Packlist object' );
+BEGIN {
+ # Call mkfh at BEGIN time, to make sure it does not trigger "Used
+ # once" warnings.
+ $SIG{__WARN__} = sub { ++$w; warn $_[0] };
+ ExtUtils::Packlist::mkfh();
+
+}
+INIT {
+ is $w, undef, '[perl #107410] no warnings from BEGIN-time mkfh';
+ delete $SIG{__WARN__};
+}
+
END {
1 while unlink qw( eplist );
}
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/Packlist.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Install/t/can_write_dir.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/can_write_dir.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/can_write_dir.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/can_write_dir.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Install/t/lib/TieOut.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Install/t/lib/TieOut.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Install/t/lib/TieOut.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Install/t/lib/TieOut.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -13,7 +13,7 @@
$Is_MacOS $Is_VMS $Is_VMS_mode $Is_VMS_lc $Is_VMS_nodot
$Debug $Verbose $Quiet $MANIFEST $DEFAULT_MSKIP);
-$VERSION = '1.58';
+$VERSION = '1.63';
@ISA=('Exporter');
@EXPORT_OK = qw(mkmanifest
manicheck filecheck fullcheck skipcheck
@@ -161,6 +161,14 @@
my $filename = shift;
$filename =~ s|^\./||;
$filename =~ s/^:([^:]+)$/$1/ if $Is_MacOS;
+ if ( $Is_VMS ) {
+ $filename =~ s/\.$//; # trim trailing dot
+ $filename = VMS::Filespec::unixify($filename); # unescape spaces, etc.
+ if( $Is_VMS_lc ) {
+ $filename = lc($filename);
+ $filename = uc($filename) if $filename =~ /^MANIFEST(\.SKIP)?$/i;
+ }
+ }
return $filename;
}
@@ -182,11 +190,6 @@
my $name = clean_up_filename($File::Find::name);
warn "Debug: diskfile $name\n" if $Debug;
return if -d $_;
-
- if( $Is_VMS_lc ) {
- $name =~ s#(.*)\.$#\L$1#;
- $name = uc($name) if $name =~ /^MANIFEST(\.SKIP)?$/i;
- }
$found->{$name} = "";
};
@@ -378,8 +381,10 @@
warn "Debug: Illegal name $file changed to $okfile\n" if $Debug;
$file = $okfile;
}
- $file = lc($file)
- unless $Is_VMS_lc &&($file =~ /^MANIFEST(\.SKIP)?$/);
+ if( $Is_VMS_lc ) {
+ $file = lc($file);
+ $file = uc($file) if $file =~ /^MANIFEST(\.SKIP)?$/i;
+ }
}
$read->{$file} = $comment;
@@ -706,21 +711,36 @@
}
-# Sometimes MANIFESTs are missing a trailing newline. Fix this.
+# Make sure this MANIFEST is consistently written with native
+# newlines and has a terminal newline.
sub _fix_manifest {
my $manifest_file = shift;
open MANIFEST, $MANIFEST or die "Could not open $MANIFEST: $!";
-
- # Yes, we should be using seek(), but I'd like to avoid loading POSIX
- # to get SEEK_*
- my @manifest = <MANIFEST>;
+ local $/;
+ my @manifest = split /(\015\012|\012|\015)/, <MANIFEST>, -1;
close MANIFEST;
+ my $must_rewrite = "";
+ if ($manifest[-1] eq ""){
+ # sane case: last line had a terminal newline
+ pop @manifest;
+ for (my $i=1; $i<=$#manifest; $i+=2) {
+ unless ($manifest[$i] eq "\n") {
+ $must_rewrite = "not a newline at pos $i";
+ last;
+ }
+ }
+ } else {
+ $must_rewrite = "last line without newline";
+ }
- unless( $manifest[-1] =~ /\n\z/ ) {
- open MANIFEST, ">>$MANIFEST" or die "Could not open $MANIFEST: $!";
- print MANIFEST "\n";
- close MANIFEST;
+ if ( $must_rewrite ) {
+ 1 while unlink $MANIFEST; # avoid multiple versions on VMS
+ open MANIFEST, ">", $MANIFEST or die "(must_rewrite=$must_rewrite) Could not open >$MANIFEST: $!";
+ for (my $i=0; $i<=$#manifest; $i+=2) {
+ print MANIFEST "$manifest[$i]\n";
+ }
+ close MANIFEST or die "could not write $MANIFEST: $!";
}
}
Property changes on: trunk/contrib/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-Manifest/t/Manifest.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-Manifest/t/Manifest.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-Manifest/t/Manifest.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -13,7 +13,7 @@
use strict;
-use Test::More tests => 94;
+use Test::More tests => 96;
use Cwd;
use File::Spec;
@@ -44,6 +44,7 @@
sub add_file {
my ($file, $data) = @_;
$data ||= 'foo';
+ $file =~ s/ /^_/g if $Is_VMS_noefs; # escape spaces
1 while unlink $file; # or else we'll get multiple versions on VMS
open( T, '> '.$file) or return;
print T $data;
@@ -231,6 +232,49 @@
is( $files->{yarrow}, 'hock',' with comment' );
is( $files->{foobar}, '', ' preserved old entries' );
+{
+ # EOL normalization in maniadd()
+
+ # move manifest away:
+ rename "MANIFEST", "MANIFEST.bak" or die "Could not rename MANIFEST to MANIFEST.bak: $!";
+ my $prev_maniaddresult;
+ my @eol = ("\012","\015","\015\012");
+ # for all line-endings:
+ for my $i (0..$#eol) {
+ my $eol = $eol[$i];
+ # cp the backup of the manifest to MANIFEST, line-endings adjusted
+ my $content = do { local $/; open my $fh, "MANIFEST.bak" or die; <$fh> };
+ SPLITTER: for my $eol2 (@eol) {
+ if ( index($content, $eol2) > -1 ) {
+ my @lines = split /$eol2/, $content;
+ pop @lines while $lines[-1] eq "";
+ open my $fh, ">", "MANIFEST" or die "Could not open >MANIFEST: $!";
+ print $fh map { "$_$eol" } @lines;
+ close $fh or die "Could not close: $!";
+ last SPLITTER;
+ }
+ }
+ # try maniadd
+ maniadd({eoltest => "end of line normalization test"});
+ # slurp result and compare to previous result
+ my $maniaddresult = do { local $/; open my $fh, "MANIFEST" or die; <$fh> };
+ if ($prev_maniaddresult) {
+ if ( $maniaddresult eq $prev_maniaddresult ) {
+ pass "normalization success with i=$i";
+ } else {
+ require Data::Dumper;
+ no warnings "once";
+ local $Data::Dumper::Useqq = 1;
+ local $Data::Dumper::Terse = 1;
+ is Data::Dumper::Dumper($maniaddresult), Data::Dumper::Dumper($prev_maniaddresult), "eol normalization failed with i=$i";
+ }
+ }
+ $prev_maniaddresult = $maniaddresult;
+ }
+ # move backup over MANIFEST
+ rename "MANIFEST.bak", "MANIFEST" or die "Could not rename MANIFEST.bak to MANIFEST: $!";
+}
+
my %funky_files;
# test including a filename with a space
SKIP: {
@@ -408,6 +452,7 @@
END {
is( unlink( keys %Files ), keys %Files, 'remove all added files' );
+ for my $file ( keys %Files ) { 1 while unlink $file; } # all versions
remove_dir( 'moretest', 'copy' );
# now get rid of the parent directory
Property changes on: trunk/contrib/perl/dist/ExtUtils-Manifest/t/Manifest.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-ParseXS/Changes
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,5 +1,191 @@
Revision history for Perl extension ExtUtils::ParseXS.
+3.18 - Mon Nov 19 07:35:00 CET 2012
+ - Restore portability to Perl 5.6, which was lost at EU-PXS 3.00.
+ - [perl #112776] avoid warning on an initialized non-parameter
+ - Only increment PL_amagic_generation before 5.9
+
+3.15 - Thu Feb 2 08:12:00 CET 2012
+ - Fix version for PAUSE indexer.
+
+3.14 - Wed Feb 1 18:22:00 CET 2012
+ - Promote to stable release.
+ - Proper repository and bugtracker info in META.json.
+
+3.13_01 - Sat Jan 29 12:45:00 CET 2012
+ - ExtUtils::Typemaps:
+ => Embedded typemap dumping: A method which will produce the
+ verbatim string for inclusion in XS.
+ => Introducing ExtUtils::Typemaps::Cmd, a helper module which
+ can produce embedded typemap strings via simple one-liners.
+ Useful for including typemaps from other modules in XS code
+ with INCLUDE_COMMAND. See "perldoc ExtUtils::Typemaps::Cmd".
+
+ - ExtUtils::ParseXS:
+ => Bugfix: Used to have parsing problems with embedded typemaps
+ occasionally.
+ => Better error messages on typemap-related issues. If a no
+ typemap was found for a given C type, list all mapped C types
+ so that the user hopefully spots his mistake easily.
+
+3.11 - Thu Dec 29 17:55:00 CET 2011
+ - Version/distribution fixes.
+
+3.09 - Wed Dec 28 18:48:00 CET 2011
+ - Escape double quotes of file names/commands in #line directives.
+
+3.08 - Mon Dec 19 18:03:00 CET 2011
+ - Silence undefined-value-in-addition warning
+ (Nothing serious, just happened sometimes when reporting line numbers for
+ errors. But warning during build process.)
+
+3.07 - Wed Dec 7 14:10:00 CET 2011
+ - Fix inconsistent versioning in 3.06.
+
+3.06 - Fri Dec 2 08:10:00 CET 2011
+
+ - Fix Cygwin issues [Tony Cook]
+ avoid conflicting static / dllexport on legacy perls too
+ This probably fixes rt.cpan.org 72313 and 71964.
+ (3928a66ad4bd8aee704eda1942b7877c0ff1ab2c in core)
+
+ - Convert ` to ' [James Keenan]
+ 55bee391aeff3c3b8d22fa4ce5491ee9440028aa and
+ 6dfee1ec62c64d7afe8ced4650596dd9e7f71a63 in core
+
+ - Avoid some test-time warnings [Zefram]
+ 97bae9c59cd181b3b54061213ec1fdce0ccb30d4 in core
+
+3.05 - Wed Oct 5 08:14:00 CET 2011
+
+ - No functional changes, promoted to stable release.
+
+3.04_04 - Mon Sep 12 08:12:00 CET 2011
+
+ - Simplify generated XS code by emitting a compatibility version
+ of dVAR. [Nicholas Clark]
+
+ - Fixed "INCLUDE: $cmd |", CPAN RT #70213
+
+3.04_03 - Sun Sep 4 18:49:00 CET 2011
+
+ - By #defining PERL_EUPXS_ALWAYS_EXPORT or
+ PERL_EUPXS_NEVER_EXPORT early in your XS code, you can
+ force ExtUtils::ParseXS to always or never export
+ XSUB symbols. This has no effect on boot_* symbols since
+ those must be exported.
+
+3.04_02 - Sat Sep 3 15:28:00 CET 2011
+
+ - Don't put null characters into the generated source
+ file when -except is used; write the '\0' escape sequence
+ properly instead. [Stephen Bennett]
+
+3.04_01 - Sun Aug 28 17:50:00 CET 2011
+
+ - The XSUB.h changes to make XS(name) use XS_INTERNAL(name)
+ by default (which were in the 5.15.2 dev release of perl)
+ have been reverted since too many CPAN modules expect to
+ be able to refer to XSUBs declared with XS(name).
+ Instead, ExtUtils::ParseXS will define a copy of the
+ XS_INTERNAL/XS_EXTERNAL macros as necessary going back to
+ perl 5.10.0 (which is the oldest perl I had for testing).
+ By default, ExtUtils::ParseXS will use XS_INTERNAL(name)
+ instead of XS(name).
+
+3.04 - Thu Aug 25 08:20:00 CET 2011
+
+ - Stable release based on 3.03_03, no functional changes.
+
+3.03_03 - Wed Aug 24 19:43:00 CET 2011
+
+ - Try to fix regression for input-typemap override in XS argument
+ list. (CPAN RT #70448)
+
+ - Explicit versions in submodules to fail early if something
+ goes wrong.
+
+3.03_02 - Sun Aug 21 13:19:00 CET 2011
+
+ - Properly strip trailing semicolons form inputmaps. These could
+ trigger warnings (errors in strict C89 compilers) due to
+ additional semicolons being interpreted as empty statements.
+ [Torsten Schoenfeld, Jan Dubois, Steffen Mueller]
+
+ - Now detects and throws a warning if there is a CODE section using
+ RETVAL, but no OUTPUT section. [CPAN RT #69536]
+
+ - Uses the explicit XS_EXTERNAL macro (from perl 5.15.2 and newer)
+ for XSUBs that need to be exported. Defines XS_EXTERNAL to fall
+ back to XS where that is not available.
+
+ - Introduces new EXPORT_XSUB_SYMBOLS XS keyword that forces exported
+ XSUB symbols. It's a no-op on perls before 5.15.2.
+
+3.03 - Thu Aug 11 08:24:00 CET 2011
+
+ - Test fix: Try all @INC-derived typemap locations. (CPAN RT #70047)
+ [Mike Sheldrake]
+
+3.02 - Thu Aug 4 18:19:00 CET 2011
+
+ - Test fix: Use File::Spec->catfile instead of catdir where appropriate.
+
+3.01 - Thu Aug 4 17:51:00 CET 2011
+
+ - No significant changes from 3.00_05.
+
+3.00_05 - Wed Jul 27 22:54:00 CET 2011
+
+ - Define PERL_UNUSED_ARG for pre-3.8.9 perls.
+ This should fix the tests on those perls.
+
+3.00_04 - Wed Jul 27 22:22:00 CET 2011
+
+ - Require perl 5.8.1.
+
+ - Patches from CPAN RT #53938, #61908
+ Both of these are attempts to fix win32 problems:
+ Bug #61908 for ExtUtils-ParseXS: MSWin compilers and back-slashed paths
+ Bug #53938 for ExtUtils-ParseXS: MinGW Broken after 2.21
+
+3.00_03 - Fri Jul 22 20:13:00 CET 2011
+
+ - Add some diagnostics when xsubpp fails to load a current-enough
+ version of ExtUtils::ParseXS. [Steffen Mueller]
+
+ - Add a check to Makefile.PL that scans @INC to determine whether
+ the new xsubpp will be shadowed by another, existing xsubpp
+ and warn the user vehemently. [Steffen Mueller]
+
+3.00_02 - Thu Jul 14 18:00:00 CET 2011
+
+ - Move script/xsubpp back to lib/ExtUtils/xsubpp
+ The original move caused old xsubpp's to be used.
+
+3.00_01 - Tue Jul 12 22:00:00 CET 2011
+
+ - Major refactoring of the whole code base.
+ It finally runs under 'use strict' for the first time!
+ [James Keenan, Steffen Mueller]
+
+ - Typemaps can now be embedded into XS code using a here-doc
+ like syntax and the new "TYPEMAP:" XS keyword.
+ [Steffen Mueller]
+
+ - Move typemap handling code to ExtUtils::Typemaps
+ with full object-oriented goodness. [Steffen Mueller]
+
+ - Check API compatibility when loading xs modules.
+ If on a new-enough perl, add the XS_APIVERSION_BOOTCHECK macro to
+ the _boot function of every XS module to compare it against the API
+ version the module has been compiled against. If the versions do
+ not match, an exception is thrown. [Florian Ragwitz]
+
+ - Fixed compiler warnings in XS. [Zefram]
+
+ - Spell-check [Peter J. Acklam]
+
2.2206 - Sun Jul 4 15:43:21 EDT 2010
Bug fixes:
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,67 +1,87 @@
package ExtUtils::ParseXS;
+use strict;
-use 5.006; # We use /??{}/ in regexes
+use 5.006001;
use Cwd;
use Config;
+use Exporter;
use File::Basename;
use File::Spec;
use Symbol;
-require Exporter;
+our $VERSION;
+BEGIN {
+ $VERSION = '3.18';
+}
+use ExtUtils::ParseXS::Constants $VERSION;
+use ExtUtils::ParseXS::CountLines $VERSION;
+use ExtUtils::ParseXS::Utilities $VERSION;
+$VERSION = eval $VERSION if $VERSION =~ /_/;
- at ISA = qw(Exporter);
- at EXPORT_OK = qw(process_file);
+use ExtUtils::ParseXS::Utilities qw(
+ standard_typemap_locations
+ trim_whitespace
+ tidy_type
+ C_string
+ valid_proto_string
+ process_typemaps
+ make_targetable
+ map_type
+ standard_XS_defs
+ assign_func_args
+ analyze_preprocessor_statements
+ set_cond
+ Warn
+ current_line_number
+ blurt
+ death
+ check_conditional_preprocessor_statements
+ escape_file_for_line_directive
+ report_typemap_failure
+);
-# use strict; # One of these days...
+our @ISA = qw(Exporter);
+our @EXPORT_OK = qw(
+ process_file
+ report_error_count
+);
-my(@XSStack); # Stack of conditionals and INCLUDEs
-my($XSS_work_idx, $cpp_next_tmp);
+# The scalars in the line below remain as 'our' variables because pulling
+# them into $self led to build problems. In most cases, strings being
+# 'eval'-ed contain the variables' names hard-coded.
+our (
+ $Package, $func_name, $Full_func_name, $pname, $ALIAS,
+);
-use vars qw($VERSION);
-$VERSION = '2.2210';
-$VERSION = eval $VERSION if $VERSION =~ /_/;
+our $self = bless {} => __PACKAGE__;
-use vars qw(%input_expr %output_expr $ProtoUsed @InitFileCode $FH $proto_re $Overload $errors $Fallback
- $cplusplus $hiertype $WantPrototypes $WantVersionChk $except $WantLineNumbers
- $WantOptimize $process_inout $process_argtypes @tm
- $dir $filename $filepathname %IncludedFiles
- %type_kind %proto_letter
- %targetable $BLOCK_re $lastline $lastline_no
- $Package $Prefix @line @BootCode %args_match %defaults %var_types %arg_list @proto_arg
- $processing_arg_with_types %argtype_seen @outlist %in_out %lengthof
- $proto_in_this_xsub $scope_in_this_xsub $interface $prepush_done $interface_macro $interface_macro_set
- $ProtoThisXSUB $ScopeThisXSUB $xsreturn
- @line_no $ret_type $func_header $orig_args
- ); # Add these just to get compilation to happen.
+sub process_file {
+ # Allow for $package->process_file(%hash) in the future
+ my ($pkg, %options) = @_ % 2 ? @_ : (__PACKAGE__, @_);
-sub process_file {
-
- # Allow for $package->process_file(%hash) in the future
- my ($pkg, %args) = @_ % 2 ? @_ : (__PACKAGE__, @_);
-
- $ProtoUsed = exists $args{prototypes};
-
+ $self->{ProtoUsed} = exists $options{prototypes};
+
# Set defaults.
- %args = (
- # 'C++' => 0, # Doesn't seem to *do* anything...
- hiertype => 0,
- except => 0,
- prototypes => 0,
- versioncheck => 1,
- linenumbers => 1,
- optimize => 1,
- prototypes => 0,
- inout => 1,
- argtypes => 1,
- typemap => [],
- output => \*STDOUT,
- csuffix => '.c',
- %args,
- );
+ my %args = (
+ argtypes => 1,
+ csuffix => '.c',
+ except => 0,
+ hiertype => 0,
+ inout => 1,
+ linenumbers => 1,
+ optimize => 1,
+ output => \*STDOUT,
+ prototypes => 0,
+ typemap => [],
+ versioncheck => 1,
+ FH => Symbol::gensym(),
+ %options,
+ );
+ $args{except} = $args{except} ? ' TRY' : '';
# Global Constants
-
+
my ($Is_VMS, $SymSet);
if ($^O eq 'VMS') {
$Is_VMS = 1;
@@ -68,43 +88,31 @@
# Establish set of global symbols with max length 28, since xsubpp
# will later add the 'XS_' prefix.
require ExtUtils::XSSymSet;
- $SymSet = new ExtUtils::XSSymSet 28;
+ $SymSet = ExtUtils::XSSymSet->new(28);
}
- @XSStack = ({type => 'none'});
- ($XSS_work_idx, $cpp_next_tmp) = (0, "XSubPPtmpAAAA");
- @InitFileCode = ();
- $FH = Symbol::gensym();
- $proto_re = "[" . quotemeta('\$%&*@;[]_') . "]" ;
- $Overload = 0;
- $errors = 0;
- $Fallback = '&PL_sv_undef';
+ @{ $self->{XSStack} } = ({type => 'none'});
+ $self->{InitFileCode} = [ @ExtUtils::ParseXS::Constants::InitFileCode ];
+ $self->{Overload} = 0;
+ $self->{errors} = 0;
+ $self->{Fallback} = '&PL_sv_undef';
# Most of the 1500 lines below uses these globals. We'll have to
# clean this up sometime, probably. For now, we just pull them out
# of %args. -Ken
-
- $cplusplus = $args{'C++'};
- $hiertype = $args{hiertype};
- $WantPrototypes = $args{prototypes};
- $WantVersionChk = $args{versioncheck};
- $except = $args{except} ? ' TRY' : '';
- $WantLineNumbers = $args{linenumbers};
- $WantOptimize = $args{optimize};
- $process_inout = $args{inout};
- $process_argtypes = $args{argtypes};
- @tm = ref $args{typemap} ? @{$args{typemap}} : ($args{typemap});
-
- for ($args{filename}) {
- die "Missing required parameter 'filename'" unless $_;
- $filepathname = $_;
- ($dir, $filename) = (dirname($_), basename($_));
- $filepathname =~ s/\\/\\\\/g;
- $IncludedFiles{$_}++;
- }
-
- # Open the input file
- open($FH, $args{filename}) or die "cannot open $args{filename}: $!\n";
+ $self->{hiertype} = $args{hiertype};
+ $self->{WantPrototypes} = $args{prototypes};
+ $self->{WantVersionChk} = $args{versioncheck};
+ $self->{WantLineNumbers} = $args{linenumbers};
+ $self->{IncludedFiles} = {};
+
+ die "Missing required parameter 'filename'" unless $args{filename};
+ $self->{filepathname} = $args{filename};
+ ($self->{dir}, $self->{filename}) =
+ (dirname($args{filename}), basename($args{filename}));
+ $self->{filepathname} =~ s/\\/\\\\/g;
+ $self->{IncludedFiles}->{$args{filename}}++;
+
# Open the output file if given as a string. If they provide some
# other kind of reference, trust them that we can print to it.
if (not ref $args{output}) {
@@ -114,150 +122,73 @@
}
# Really, we shouldn't have to chdir() or select() in the first
- # place. For now, just save & restore.
+ # place. For now, just save and restore.
my $orig_cwd = cwd();
my $orig_fh = select();
-
- chdir($dir);
+
+ chdir($self->{dir});
my $pwd = cwd();
my $csuffix = $args{csuffix};
-
- if ($WantLineNumbers) {
+
+ if ($self->{WantLineNumbers}) {
my $cfile;
if ( $args{outfile} ) {
$cfile = $args{outfile};
- } else {
+ }
+ else {
$cfile = $args{filename};
$cfile =~ s/\.xs$/$csuffix/i or $cfile .= $csuffix;
}
tie(*PSEUDO_STDOUT, 'ExtUtils::ParseXS::CountLines', $cfile, $args{output});
select PSEUDO_STDOUT;
- } else {
+ }
+ else {
select $args{output};
}
- foreach my $typemap (@tm) {
- die "Can't find $typemap in $pwd\n" unless -r $typemap;
- }
+ $self->{typemap} = process_typemaps( $args{typemap}, $pwd );
- push @tm, standard_typemap_locations();
+ my $END = "!End!\n\n"; # "impossible" keyword (multiple newline)
- foreach my $typemap (@tm) {
- next unless -f $typemap ;
- # skip directories, binary files etc.
- warn("Warning: ignoring non-text typemap file '$typemap'\n"), next
- unless -T $typemap ;
- open(TYPEMAP, $typemap)
- or warn ("Warning: could not open typemap file '$typemap': $!\n"), next;
- my $mode = 'Typemap';
- my $junk = "" ;
- my $current = \$junk;
- while (<TYPEMAP>) {
- next if /^\s* #/;
- my $line_no = $. + 1;
- if (/^INPUT\s*$/) {
- $mode = 'Input'; $current = \$junk; next;
- }
- if (/^OUTPUT\s*$/) {
- $mode = 'Output'; $current = \$junk; next;
- }
- if (/^TYPEMAP\s*$/) {
- $mode = 'Typemap'; $current = \$junk; next;
- }
- if ($mode eq 'Typemap') {
- chomp;
- my $line = $_ ;
- TrimWhitespace($_) ;
- # skip blank lines and comment lines
- next if /^$/ or /^#/ ;
- my($type,$kind, $proto) = /^\s*(.*?\S)\s+(\S+)\s*($proto_re*)\s*$/ or
- warn("Warning: File '$typemap' Line $. '$line' TYPEMAP entry needs 2 or 3 columns\n"), next;
- $type = TidyType($type) ;
- $type_kind{$type} = $kind ;
- # prototype defaults to '$'
- $proto = "\$" unless $proto ;
- warn("Warning: File '$typemap' Line $. '$line' Invalid prototype '$proto'\n")
- unless ValidProtoString($proto) ;
- $proto_letter{$type} = C_string($proto) ;
- } elsif (/^\s/) {
- $$current .= $_;
- } elsif ($mode eq 'Input') {
- s/\s+$//;
- $input_expr{$_} = '';
- $current = \$input_expr{$_};
- } else {
- s/\s+$//;
- $output_expr{$_} = '';
- $current = \$output_expr{$_};
- }
- }
- close(TYPEMAP);
- }
-
- foreach my $value (values %input_expr) {
- $value =~ s/;*\s+\z//;
- # Move C pre-processor instructions to column 1 to be strictly ANSI
- # conformant. Some pre-processors are fussy about this.
- $value =~ s/^\s+#/#/mg;
- }
- foreach my $value (values %output_expr) {
- # And again.
- $value =~ s/^\s+#/#/mg;
- }
-
- my ($cast, $size);
- our $bal = qr[(?:(?>[^()]+)|\((??{ $bal })\))*]; # ()-balanced
- $cast = qr[(?:\(\s*SV\s*\*\s*\)\s*)?]; # Optional (SV*) cast
- $size = qr[,\s* (??{ $bal }) ]x; # Third arg (to setpvn)
-
- foreach my $key (keys %output_expr) {
- # We can still bootstrap compile 're', because in code re.pm is
- # available to miniperl, and does not attempt to load the XS code.
- use re 'eval';
-
- my ($t, $with_size, $arg, $sarg) =
- ($output_expr{$key} =~
- m[^ \s+ sv_set ( [iunp] ) v (n)? # Type, is_setpvn
- \s* \( \s* $cast \$arg \s* ,
- \s* ( (??{ $bal }) ) # Set from
- ( (??{ $size }) )? # Possible sizeof set-from
- \) \s* ; \s* $
- ]x);
- $targetable{$key} = [$t, $with_size, $arg, $sarg] if $t;
- }
-
- my $END = "!End!\n\n"; # "impossible" keyword (multiple newline)
-
# Match an XS keyword
- $BLOCK_re= '\s*(' . join('|', qw(
- REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE
- OUTPUT CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE
- VERSIONCHECK INCLUDE INCLUDE_COMMAND SCOPE INTERFACE
- INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
- )) . "|$END)\\s*:";
+ $self->{BLOCK_re} = '\s*(' .
+ join('|' => @ExtUtils::ParseXS::Constants::XSKeywords) .
+ "|$END)\\s*:";
-
our ($C_group_rex, $C_arg);
# Group in C (no support for comments or literals)
$C_group_rex = qr/ [({\[]
- (?: (?> [^()\[\]{}]+ ) | (??{ $C_group_rex }) )*
- [)}\]] /x ;
+ (?: (?> [^()\[\]{}]+ ) | (??{ $C_group_rex }) )*
+ [)}\]] /x;
# Chunk in C without comma at toplevel (no comments):
$C_arg = qr/ (?: (?> [^()\[\]{},"']+ )
- | (??{ $C_group_rex })
- | " (?: (?> [^\\"]+ )
- | \\.
- )* " # String literal
- | ' (?: (?> [^\\']+ ) | \\. )* ' # Char literal
- )* /xs;
-
+ | (??{ $C_group_rex })
+ | " (?: (?> [^\\"]+ )
+ | \\.
+ )* " # String literal
+ | ' (?: (?> [^\\']+ ) | \\. )* ' # Char literal
+ )* /xs;
+
+ # Since at this point we're ready to begin printing to the output file and
+ # reading from the input file, I want to get as much data as possible into
+ # the proto-object $self. That means assigning to $self and elements of
+ # %args referenced below this point.
+ # HOWEVER: This resulted in an error when I tried:
+ # $args{'s'} ---> $self->{s}.
+ # Use of uninitialized value in quotemeta at
+ # .../blib/lib/ExtUtils/ParseXS.pm line 733
+
+ foreach my $datum ( qw| argtypes except inout optimize | ) {
+ $self->{$datum} = $args{$datum};
+ }
+
# Identify the version of xsubpp used
- print <<EOM ;
+ print <<EOM;
/*
* This file was generated automatically by ExtUtils::ParseXS version $VERSION from the
- * contents of $filename. Do not edit this file, edit $filename instead.
+ * contents of $self->{filename}. Do not edit this file, edit $self->{filename} instead.
*
- * ANY CHANGES MADE HERE WILL BE LOST!
+ * ANY CHANGES MADE HERE WILL BE LOST!
*
*/
@@ -264,44 +195,48 @@
EOM
- print("#line 1 \"$filepathname\"\n")
- if $WantLineNumbers;
+ print("#line 1 \"" . escape_file_for_line_directive($self->{filepathname}) . "\"\n")
+ if $self->{WantLineNumbers};
+ # Open the input file (using $self->{filename} which
+ # is a basename'd $args{filename} due to chdir above)
+ open($self->{FH}, '<', $self->{filename}) or die "cannot open $self->{filename}: $!\n";
+
firstmodule:
- while (<$FH>) {
+ while (readline($self->{FH})) {
if (/^=/) {
my $podstartline = $.;
do {
- if (/^=cut\s*$/) {
- # We can't just write out a /* */ comment, as our embedded
- # POD might itself be in a comment. We can't put a /**/
- # comment inside #if 0, as the C standard says that the source
- # file is decomposed into preprocessing characters in the stage
- # before preprocessing commands are executed.
- # I don't want to leave the text as barewords, because the spec
- # isn't clear whether macros are expanded before or after
- # preprocessing commands are executed, and someone pathological
- # may just have defined one of the 3 words as a macro that does
- # something strange. Multiline strings are illegal in C, so
- # the "" we write must be a string literal. And they aren't
- # concatenated until 2 steps later, so we are safe.
- # - Nicholas Clark
- print("#if 0\n \"Skipped embedded POD.\"\n#endif\n");
- printf("#line %d \"$filepathname\"\n", $. + 1)
- if $WantLineNumbers;
- next firstmodule
- }
-
- } while (<$FH>);
+ if (/^=cut\s*$/) {
+ # We can't just write out a /* */ comment, as our embedded
+ # POD might itself be in a comment. We can't put a /**/
+ # comment inside #if 0, as the C standard says that the source
+ # file is decomposed into preprocessing characters in the stage
+ # before preprocessing commands are executed.
+ # I don't want to leave the text as barewords, because the spec
+ # isn't clear whether macros are expanded before or after
+ # preprocessing commands are executed, and someone pathological
+ # may just have defined one of the 3 words as a macro that does
+ # something strange. Multiline strings are illegal in C, so
+ # the "" we write must be a string literal. And they aren't
+ # concatenated until 2 steps later, so we are safe.
+ # - Nicholas Clark
+ print("#if 0\n \"Skipped embedded POD.\"\n#endif\n");
+ printf("#line %d \"%s\"\n", $. + 1, escape_file_for_line_directive($self->{filepathname}))
+ if $self->{WantLineNumbers};
+ next firstmodule
+ }
+
+ } while (readline($self->{FH}));
# At this point $. is at end of file so die won't state the start
# of the problem, and as we haven't yet read any lines &death won't
# show the correct line in the message either.
- die ("Error: Unterminated pod in $filename, line $podstartline\n")
- unless $lastline;
+ die ("Error: Unterminated pod in $self->{filename}, line $podstartline\n")
+ unless $self->{lastline};
}
- last if ($Package, $Prefix) =
+ last if ($Package, $self->{Prefix}) =
/^MODULE\s*=\s*[\w:]+(?:\s+PACKAGE\s*=\s*([\w:]+))?(?:\s+PREFIX\s*=\s*(\S+))?\s*$/;
-
+
print $_;
}
unless (defined $_) {
@@ -309,314 +244,260 @@
exit 0; # Not a fatal error for the caller process
}
- print 'ExtUtils::ParseXS::CountLines'->end_marker, "\n" if $WantLineNumbers;
+ print 'ExtUtils::ParseXS::CountLines'->end_marker, "\n" if $self->{WantLineNumbers};
- print <<"EOF";
-#ifndef PERL_UNUSED_VAR
-# define PERL_UNUSED_VAR(var) if (0) var = var
-#endif
+ standard_XS_defs();
-EOF
+ print 'ExtUtils::ParseXS::CountLines'->end_marker, "\n" if $self->{WantLineNumbers};
- print <<"EOF";
-#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
-#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
+ $self->{lastline} = $_;
+ $self->{lastline_no} = $.;
-/* prototype to pass -Wmissing-prototypes */
-STATIC void
-S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
-
-STATIC void
-S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
-{
- const GV *const gv = CvGV(cv);
-
- PERL_ARGS_ASSERT_CROAK_XS_USAGE;
-
- if (gv) {
- const char *const gvname = GvNAME(gv);
- const HV *const stash = GvSTASH(gv);
- const char *const hvname = stash ? HvNAME(stash) : NULL;
-
- if (hvname)
- Perl_croak(aTHX_ "Usage: %s::%s(%s)", hvname, gvname, params);
- else
- Perl_croak(aTHX_ "Usage: %s(%s)", gvname, params);
- } else {
- /* Pants. I don't think that it should be possible to get here. */
- Perl_croak(aTHX_ "Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params);
- }
-}
-#undef PERL_ARGS_ASSERT_CROAK_XS_USAGE
-
-#ifdef PERL_IMPLICIT_CONTEXT
-#define croak_xs_usage(a,b) S_croak_xs_usage(aTHX_ a,b)
-#else
-#define croak_xs_usage S_croak_xs_usage
-#endif
-
-#endif
-
-/* NOTE: the prototype of newXSproto() is different in versions of perls,
- * so we define a portable version of newXSproto()
- */
-#ifdef newXS_flags
-#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
-#else
-#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
-#endif /* !defined(newXS_flags) */
-
-EOF
-
- print 'ExtUtils::ParseXS::CountLines'->end_marker, "\n" if $WantLineNumbers;
-
- $lastline = $_;
- $lastline_no = $.;
-
+ my $BootCode_ref = [];
+ my $XSS_work_idx = 0;
+ my $cpp_next_tmp = 'XSubPPtmpAAAA';
PARAGRAPH:
- while (fetch_para()) {
+ while ($self->fetch_para()) {
+ my $outlist_ref = [];
# Print initial preprocessor statements and blank lines
- while (@line && $line[0] !~ /^[^\#]/) {
- my $line = shift(@line);
- print $line, "\n";
- next unless $line =~ /^\#\s*((if)(?:n?def)?|elsif|else|endif)\b/;
+ while (@{ $self->{line} } && $self->{line}->[0] !~ /^[^\#]/) {
+ my $ln = shift(@{ $self->{line} });
+ print $ln, "\n";
+ next unless $ln =~ /^\#\s*((if)(?:n?def)?|elsif|else|endif)\b/;
my $statement = $+;
- if ($statement eq 'if') {
- $XSS_work_idx = @XSStack;
- push(@XSStack, {type => 'if'});
- } else {
- death ("Error: `$statement' with no matching `if'")
- if $XSStack[-1]{type} ne 'if';
- if ($XSStack[-1]{varname}) {
- push(@InitFileCode, "#endif\n");
- push(@BootCode, "#endif");
- }
-
- my(@fns) = keys %{$XSStack[-1]{functions}};
- if ($statement ne 'endif') {
- # Hide the functions defined in other #if branches, and reset.
- @{$XSStack[-1]{other_functions}}{@fns} = (1) x @fns;
- @{$XSStack[-1]}{qw(varname functions)} = ('', {});
- } else {
- my($tmp) = pop(@XSStack);
- 0 while (--$XSS_work_idx
- && $XSStack[$XSS_work_idx]{type} ne 'if');
- # Keep all new defined functions
- push(@fns, keys %{$tmp->{other_functions}});
- @{$XSStack[$XSS_work_idx]{functions}}{@fns} = (1) x @fns;
- }
- }
+ ( $self, $XSS_work_idx, $BootCode_ref ) =
+ analyze_preprocessor_statements(
+ $self, $statement, $XSS_work_idx, $BootCode_ref
+ );
}
-
- next PARAGRAPH unless @line;
-
- if ($XSS_work_idx && !$XSStack[$XSS_work_idx]{varname}) {
+
+ next PARAGRAPH unless @{ $self->{line} };
+
+ if ($XSS_work_idx && !$self->{XSStack}->[$XSS_work_idx]{varname}) {
# We are inside an #if, but have not yet #defined its xsubpp variable.
print "#define $cpp_next_tmp 1\n\n";
- push(@InitFileCode, "#if $cpp_next_tmp\n");
- push(@BootCode, "#if $cpp_next_tmp");
- $XSStack[$XSS_work_idx]{varname} = $cpp_next_tmp++;
+ push(@{ $self->{InitFileCode} }, "#if $cpp_next_tmp\n");
+ push(@{ $BootCode_ref }, "#if $cpp_next_tmp");
+ $self->{XSStack}->[$XSS_work_idx]{varname} = $cpp_next_tmp++;
}
- death ("Code is not inside a function"
- ." (maybe last function was ended by a blank line "
- ." followed by a statement on column one?)")
- if $line[0] =~ /^\s/;
-
- my ($class, $externC, $static, $ellipsis, $wantRETVAL, $RETVAL_no_return);
- my (@fake_INPUT_pre); # For length(s) generated variables
- my (@fake_INPUT);
-
+ $self->death(
+ "Code is not inside a function"
+ ." (maybe last function was ended by a blank line "
+ ." followed by a statement on column one?)")
+ if $self->{line}->[0] =~ /^\s/;
+
# initialize info arrays
- undef(%args_match);
- undef(%var_types);
- undef(%defaults);
- undef(%arg_list) ;
- undef(@proto_arg) ;
- undef($processing_arg_with_types) ;
- undef(%argtype_seen) ;
- undef(@outlist) ;
- undef(%in_out) ;
- undef(%lengthof) ;
- undef($proto_in_this_xsub) ;
- undef($scope_in_this_xsub) ;
- undef($interface);
- undef($prepush_done);
- $interface_macro = 'XSINTERFACE_FUNC' ;
- $interface_macro_set = 'XSINTERFACE_FUNC_SET' ;
- $ProtoThisXSUB = $WantPrototypes ;
- $ScopeThisXSUB = 0;
- $xsreturn = 0;
+ foreach my $member (qw(args_match var_types defaults arg_list
+ argtype_seen in_out lengthof))
+ {
+ $self->{$member} = {};
+ }
+ $self->{proto_arg} = [];
+ $self->{processing_arg_with_types} = undef;
+ $self->{proto_in_this_xsub} = undef;
+ $self->{scope_in_this_xsub} = undef;
+ $self->{interface} = undef;
+ $self->{interface_macro} = 'XSINTERFACE_FUNC';
+ $self->{interface_macro_set} = 'XSINTERFACE_FUNC_SET';
+ $self->{ProtoThisXSUB} = $self->{WantPrototypes};
+ $self->{ScopeThisXSUB} = 0;
- $_ = shift(@line);
- while (my $kwd = check_keyword("REQUIRE|PROTOTYPES|FALLBACK|VERSIONCHECK|INCLUDE(?:_COMMAND)?|SCOPE")) {
- &{"${kwd}_handler"}() ;
- next PARAGRAPH unless @line ;
- $_ = shift(@line);
+ my $xsreturn = 0;
+
+ $_ = shift(@{ $self->{line} });
+ while (my $kwd = $self->check_keyword("REQUIRE|PROTOTYPES|EXPORT_XSUB_SYMBOLS|FALLBACK|VERSIONCHECK|INCLUDE(?:_COMMAND)?|SCOPE")) {
+ my $method = $kwd . "_handler";
+ $self->$method($_);
+ next PARAGRAPH unless @{ $self->{line} };
+ $_ = shift(@{ $self->{line} });
}
- if (check_keyword("BOOT")) {
- &check_cpp;
- push (@BootCode, "#line $line_no[@line_no - @line] \"$filepathname\"")
- if $WantLineNumbers && $line[0] !~ /^\s*#\s*line\b/;
- push (@BootCode, @line, "") ;
- next PARAGRAPH ;
+ if ($self->check_keyword("BOOT")) {
+ check_conditional_preprocessor_statements($self);
+ push (@{ $BootCode_ref }, "#line $self->{line_no}->[@{ $self->{line_no} } - @{ $self->{line} }] \""
+ . escape_file_for_line_directive($self->{filepathname}) . "\"")
+ if $self->{WantLineNumbers} && $self->{line}->[0] !~ /^\s*#\s*line\b/;
+ push (@{ $BootCode_ref }, @{ $self->{line} }, "");
+ next PARAGRAPH;
}
-
# extract return type, function name and arguments
- ($ret_type) = TidyType($_);
- $RETVAL_no_return = 1 if $ret_type =~ s/^NO_OUTPUT\s+//;
+ ($self->{ret_type}) = tidy_type($_);
+ my $RETVAL_no_return = 1 if $self->{ret_type} =~ s/^NO_OUTPUT\s+//;
# Allow one-line ANSI-like declaration
- unshift @line, $2
- if $process_argtypes
- and $ret_type =~ s/^(.*?\w.*?)\s*\b(\w+\s*\(.*)/$1/s;
+ unshift @{ $self->{line} }, $2
+ if $self->{argtypes}
+ and $self->{ret_type} =~ s/^(.*?\w.*?)\s*\b(\w+\s*\(.*)/$1/s;
# a function definition needs at least 2 lines
- blurt ("Error: Function definition too short '$ret_type'"), next PARAGRAPH
- unless @line ;
+ $self->blurt("Error: Function definition too short '$self->{ret_type}'"), next PARAGRAPH
+ unless @{ $self->{line} };
- $externC = 1 if $ret_type =~ s/^extern "C"\s+//;
- $static = 1 if $ret_type =~ s/^static\s+//;
+ my $externC = 1 if $self->{ret_type} =~ s/^extern "C"\s+//;
+ my $static = 1 if $self->{ret_type} =~ s/^static\s+//;
- $func_header = shift(@line);
- blurt ("Error: Cannot parse function definition from '$func_header'"), next PARAGRAPH
+ my $func_header = shift(@{ $self->{line} });
+ $self->blurt("Error: Cannot parse function definition from '$func_header'"), next PARAGRAPH
unless $func_header =~ /^(?:([\w:]*)::)?(\w+)\s*\(\s*(.*?)\s*\)\s*(const)?\s*(;\s*)?$/s;
- ($class, $func_name, $orig_args) = ($1, $2, $3) ;
+ my ($class, $orig_args);
+ ($class, $func_name, $orig_args) = ($1, $2, $3);
$class = "$4 $class" if $4;
- ($pname = $func_name) =~ s/^($Prefix)?/$Packprefix/;
- ($clean_func_name = $func_name) =~ s/^$Prefix//;
- $Full_func_name = "${Packid}_$clean_func_name";
+ ($pname = $func_name) =~ s/^($self->{Prefix})?/$self->{Packprefix}/;
+ my $clean_func_name;
+ ($clean_func_name = $func_name) =~ s/^$self->{Prefix}//;
+ $Full_func_name = "$self->{Packid}_$clean_func_name";
if ($Is_VMS) {
$Full_func_name = $SymSet->addsym($Full_func_name);
}
# Check for duplicate function definition
- for my $tmp (@XSStack) {
+ for my $tmp (@{ $self->{XSStack} }) {
next unless defined $tmp->{functions}{$Full_func_name};
- Warn("Warning: duplicate function definition '$clean_func_name' detected");
+ Warn( $self, "Warning: duplicate function definition '$clean_func_name' detected");
last;
}
- $XSStack[$XSS_work_idx]{functions}{$Full_func_name} ++ ;
- %XsubAliases = %XsubAliasValues = %Interfaces = @Attributes = ();
- $DoSetMagic = 1;
+ $self->{XSStack}->[$XSS_work_idx]{functions}{$Full_func_name}++;
+ %{ $self->{XsubAliases} } = ();
+ %{ $self->{XsubAliasValues} } = ();
+ %{ $self->{Interfaces} } = ();
+ @{ $self->{Attributes} } = ();
+ $self->{DoSetMagic} = 1;
- $orig_args =~ s/\\\s*/ /g; # process line continuations
+ $orig_args =~ s/\\\s*/ /g; # process line continuations
my @args;
- my %only_C_inlist; # Not in the signature of Perl function
- if ($process_argtypes and $orig_args =~ /\S/) {
+ my (@fake_INPUT_pre); # For length(s) generated variables
+ my (@fake_INPUT);
+ my $only_C_inlist_ref = {}; # Not in the signature of Perl function
+ if ($self->{argtypes} and $orig_args =~ /\S/) {
my $args = "$orig_args ,";
if ($args =~ /^( (??{ $C_arg }) , )* $ /x) {
- @args = ($args =~ /\G ( (??{ $C_arg }) ) , /xg);
- for ( @args ) {
- s/^\s+//;
- s/\s+$//;
- my ($arg, $default) = / ( [^=]* ) ( (?: = .* )? ) /x;
- my ($pre, $name) = ($arg =~ /(.*?) \s*
- \b ( \w+ | length\( \s*\w+\s* \) )
- \s* $ /x);
- next unless defined($pre) && length($pre);
- my $out_type = '';
- my $inout_var;
- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//) {
- my $type = $1;
- $out_type = $type if $type ne 'IN';
- $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
- $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
- }
- my $islength;
- if ($name =~ /^length\( \s* (\w+) \s* \)\z/x) {
- $name = "XSauto_length_of_$1";
- $islength = 1;
- die "Default value on length() argument: `$_'"
- if length $default;
- }
- if (length $pre or $islength) { # Has a type
- if ($islength) {
- push @fake_INPUT_pre, $arg;
- } else {
- push @fake_INPUT, $arg;
- }
- # warn "pushing '$arg'\n";
- $argtype_seen{$name}++;
- $_ = "$name$default"; # Assigns to @args
- }
- $only_C_inlist{$_} = 1 if $out_type eq "OUTLIST" or $islength;
- push @outlist, $name if $out_type =~ /OUTLIST$/;
- $in_out{$name} = $out_type if $out_type;
- }
- } else {
- @args = split(/\s*,\s*/, $orig_args);
- Warn("Warning: cannot parse argument list '$orig_args', fallback to split");
+ @args = ($args =~ /\G ( (??{ $C_arg }) ) , /xg);
+ for ( @args ) {
+ s/^\s+//;
+ s/\s+$//;
+ my ($arg, $default) = ($_ =~ m/ ( [^=]* ) ( (?: = .* )? ) /x);
+ my ($pre, $len_name) = ($arg =~ /(.*?) \s*
+ \b ( \w+ | length\( \s*\w+\s* \) )
+ \s* $ /x);
+ next unless defined($pre) && length($pre);
+ my $out_type = '';
+ my $inout_var;
+ if ($self->{inout} and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//) {
+ my $type = $1;
+ $out_type = $type if $type ne 'IN';
+ $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
+ $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
+ }
+ my $islength;
+ if ($len_name =~ /^length\( \s* (\w+) \s* \)\z/x) {
+ $len_name = "XSauto_length_of_$1";
+ $islength = 1;
+ die "Default value on length() argument: '$_'"
+ if length $default;
+ }
+ if (length $pre or $islength) { # Has a type
+ if ($islength) {
+ push @fake_INPUT_pre, $arg;
+ }
+ else {
+ push @fake_INPUT, $arg;
+ }
+ # warn "pushing '$arg'\n";
+ $self->{argtype_seen}->{$len_name}++;
+ $_ = "$len_name$default"; # Assigns to @args
+ }
+ $only_C_inlist_ref->{$_} = 1 if $out_type eq "OUTLIST" or $islength;
+ push @{ $outlist_ref }, $len_name if $out_type =~ /OUTLIST$/;
+ $self->{in_out}->{$len_name} = $out_type if $out_type;
+ }
}
- } else {
+ else {
+ @args = split(/\s*,\s*/, $orig_args);
+ Warn( $self, "Warning: cannot parse argument list '$orig_args', fallback to split");
+ }
+ }
+ else {
@args = split(/\s*,\s*/, $orig_args);
for (@args) {
- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\b\s*//) {
- my $out_type = $1;
- next if $out_type eq 'IN';
- $only_C_inlist{$_} = 1 if $out_type eq "OUTLIST";
- push @outlist, $name if $out_type =~ /OUTLIST$/;
- $in_out{$_} = $out_type;
- }
+ if ($self->{inout} and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\b\s*//) {
+ my $out_type = $1;
+ next if $out_type eq 'IN';
+ $only_C_inlist_ref->{$_} = 1 if $out_type eq "OUTLIST";
+ if ($out_type =~ /OUTLIST$/) {
+ push @{ $outlist_ref }, undef;
+ }
+ $self->{in_out}->{$_} = $out_type;
+ }
}
}
if (defined($class)) {
my $arg0 = ((defined($static) or $func_name eq 'new')
- ? "CLASS" : "THIS");
+ ? "CLASS" : "THIS");
unshift(@args, $arg0);
}
my $extra_args = 0;
- @args_num = ();
- $num_args = 0;
+ my @args_num = ();
+ my $num_args = 0;
my $report_args = '';
+ my $ellipsis;
foreach my $i (0 .. $#args) {
if ($args[$i] =~ s/\.\.\.//) {
- $ellipsis = 1;
- if ($args[$i] eq '' && $i == $#args) {
- $report_args .= ", ...";
- pop(@args);
- last;
- }
+ $ellipsis = 1;
+ if ($args[$i] eq '' && $i == $#args) {
+ $report_args .= ", ...";
+ pop(@args);
+ last;
+ }
}
- if ($only_C_inlist{$args[$i]}) {
- push @args_num, undef;
- } else {
- push @args_num, ++$num_args;
- $report_args .= ", $args[$i]";
+ if ($only_C_inlist_ref->{$args[$i]}) {
+ push @args_num, undef;
}
+ else {
+ push @args_num, ++$num_args;
+ $report_args .= ", $args[$i]";
+ }
if ($args[$i] =~ /^([^=]*[^\s=])\s*=\s*(.*)/s) {
- $extra_args++;
- $args[$i] = $1;
- $defaults{$args[$i]} = $2;
- $defaults{$args[$i]} =~ s/"/\\"/g;
+ $extra_args++;
+ $args[$i] = $1;
+ $self->{defaults}->{$args[$i]} = $2;
+ $self->{defaults}->{$args[$i]} =~ s/"/\\"/g;
}
- $proto_arg[$i+1] = '$' ;
+ $self->{proto_arg}->[$i+1] = '$';
}
- $min_args = $num_args - $extra_args;
+ my $min_args = $num_args - $extra_args;
$report_args =~ s/"/\\"/g;
$report_args =~ s/^,\s+//;
- my @func_args = @args;
- shift @func_args if defined($class);
+ $self->{func_args} = assign_func_args($self, \@args, $class);
+ @{ $self->{args_match} }{@args} = @args_num;
- for (@func_args) {
- s/^/&/ if $in_out{$_};
- }
- $func_args = join(", ", @func_args);
- @args_match{@args} = @args_num;
-
- $PPCODE = grep(/^\s*PPCODE\s*:/, @line);
- $CODE = grep(/^\s*CODE\s*:/, @line);
+ my $PPCODE = grep(/^\s*PPCODE\s*:/, @{ $self->{line} });
+ my $CODE = grep(/^\s*CODE\s*:/, @{ $self->{line} });
# Detect CODE: blocks which use ST(n)= or XST_m*(n,v)
- # to set explicit return values.
- $EXPLICIT_RETURN = ($CODE &&
- ("@line" =~ /(\bST\s*\([^;]*=) | (\bXST_m\w+\s*\()/x ));
- $ALIAS = grep(/^\s*ALIAS\s*:/, @line);
- $INTERFACE = grep(/^\s*INTERFACE\s*:/, @line);
+ # to set explicit return values.
+ my $EXPLICIT_RETURN = ($CODE &&
+ ("@{ $self->{line} }" =~ /(\bST\s*\([^;]*=) | (\bXST_m\w+\s*\()/x ));
+ # The $ALIAS which follows is only explicitly called within the scope of
+ # process_file(). In principle, it ought to be a lexical, i.e., 'my
+ # $ALIAS' like the other nearby variables. However, implementing that
+ # change produced a slight difference in the resulting .c output in at
+ # least two distributions: B/BD/BDFOY/Crypt-Rijndael and
+ # G/GF/GFUJI/Hash-FieldHash. The difference is, arguably, an improvement
+ # in the resulting C code. Example:
+ # 388c388
+ # < GvNAME(CvGV(cv)),
+ # ---
+ # > "Crypt::Rijndael::encrypt",
+ # But at this point we're committed to generating the *same* C code that
+ # the current version of ParseXS.pm does. So we're declaring it as 'our'.
+ $ALIAS = grep(/^\s*ALIAS\s*:/, @{ $self->{line} });
+
+ my $INTERFACE = grep(/^\s*INTERFACE\s*:/, @{ $self->{line} });
+
$xsreturn = 1 if $EXPLICIT_RETURN;
$externC = $externC ? qq[extern "C"] : "";
@@ -624,40 +505,32 @@
# print function header
print Q(<<"EOF");
#$externC
-#XS(XS_${Full_func_name}); /* prototype to pass -Wmissing-prototypes */
-#XS(XS_${Full_func_name})
+#XS_EUPXS(XS_${Full_func_name}); /* prototype to pass -Wmissing-prototypes */
+#XS_EUPXS(XS_${Full_func_name})
#[[
-##ifdef dVAR
# dVAR; dXSARGS;
-##else
-# dXSARGS;
-##endif
EOF
- print Q(<<"EOF") if $ALIAS ;
+ print Q(<<"EOF") if $ALIAS;
# dXSI32;
EOF
- print Q(<<"EOF") if $INTERFACE ;
-# dXSFUNCTION($ret_type);
+ print Q(<<"EOF") if $INTERFACE;
+# dXSFUNCTION($self->{ret_type});
EOF
- if ($ellipsis) {
- $cond = ($min_args ? qq(items < $min_args) : 0);
- } elsif ($min_args == $num_args) {
- $cond = qq(items != $min_args);
- } else {
- $cond = qq(items < $min_args || items > $num_args);
- }
- print Q(<<"EOF") if $except;
+ $self->{cond} = set_cond($ellipsis, $min_args, $num_args);
+
+ print Q(<<"EOF") if $self->{except};
# char errbuf[1024];
-# *errbuf = '\0';
+# *errbuf = '\\0';
EOF
- if($cond) {
- print Q(<<"EOF");
-# if ($cond)
+ if($self->{cond}) {
+ print Q(<<"EOF");
+# if ($self->{cond})
# croak_xs_usage(cv, "$report_args");
EOF
- } else {
+ }
+ else {
# cv likely to be unused
print Q(<<"EOF");
# PERL_UNUSED_VAR(cv); /* -W */
@@ -666,7 +539,7 @@
#gcc -Wall: if an xsub has PPCODE is used
#it is possible none of ST, XSRETURN or XSprePUSH macros are used
- #hence `ax' (setup by dXSARGS) is unused
+ #hence 'ax' (setup by dXSARGS) is unused
#XXX: could breakup the dXSARGS; into dSP;dMARK;dITEMS
#but such a move could break third-party extensions
print Q(<<"EOF") if $PPCODE;
@@ -679,199 +552,258 @@
# Now do a block of some sort.
- $condnum = 0;
- $cond = ''; # last CASE: conditional
- push(@line, "$END:");
- push(@line_no, $line_no[-1]);
+ $self->{condnum} = 0;
+ $self->{cond} = ''; # last CASE: conditional
+ push(@{ $self->{line} }, "$END:");
+ push(@{ $self->{line_no} }, $self->{line_no}->[-1]);
$_ = '';
- &check_cpp;
- while (@line) {
- &CASE_handler if check_keyword("CASE");
+ check_conditional_preprocessor_statements();
+ while (@{ $self->{line} }) {
+
+ $self->CASE_handler($_) if $self->check_keyword("CASE");
print Q(<<"EOF");
-# $except [[
+# $self->{except} [[
EOF
# do initialization of input variables
- $thisdone = 0;
- $retvaldone = 0;
- $deferred = "";
- %arg_list = () ;
- $gotRETVAL = 0;
-
- INPUT_handler() ;
- process_keyword("INPUT|PREINIT|INTERFACE_MACRO|C_ARGS|ALIAS|ATTRS|PROTOTYPE|SCOPE|OVERLOAD") ;
+ $self->{thisdone} = 0;
+ $self->{retvaldone} = 0;
+ $self->{deferred} = "";
+ %{ $self->{arg_list} } = ();
+ $self->{gotRETVAL} = 0;
+ $self->INPUT_handler($_);
+ $self->process_keyword("INPUT|PREINIT|INTERFACE_MACRO|C_ARGS|ALIAS|ATTRS|PROTOTYPE|SCOPE|OVERLOAD");
- print Q(<<"EOF") if $ScopeThisXSUB;
+ print Q(<<"EOF") if $self->{ScopeThisXSUB};
# ENTER;
# [[
EOF
-
- if (!$thisdone && defined($class)) {
- if (defined($static) or $func_name eq 'new') {
- print "\tchar *";
- $var_types{"CLASS"} = "char *";
- &generate_init("char *", 1, "CLASS");
- }
- else {
- print "\t$class *";
- $var_types{"THIS"} = "$class *";
- &generate_init("$class *", 1, "THIS");
- }
+
+ if (!$self->{thisdone} && defined($class)) {
+ if (defined($static) or $func_name eq 'new') {
+ print "\tchar *";
+ $self->{var_types}->{"CLASS"} = "char *";
+ generate_init( {
+ type => "char *",
+ num => 1,
+ var => "CLASS",
+ printed_name => undef,
+ } );
+ }
+ else {
+ print "\t$class *";
+ $self->{var_types}->{"THIS"} = "$class *";
+ generate_init( {
+ type => "$class *",
+ num => 1,
+ var => "THIS",
+ printed_name => undef,
+ } );
+ }
}
-
+
+ # These are set if OUTPUT is found and/or CODE using RETVAL
+ $self->{have_OUTPUT} = $self->{have_CODE_with_RETVAL} = 0;
+
+ my ($wantRETVAL);
# do code
if (/^\s*NOT_IMPLEMENTED_YET/) {
- print "\n\tPerl_croak(aTHX_ \"$pname: not implemented yet\");\n";
- $_ = '' ;
- } else {
- if ($ret_type ne "void") {
- print "\t" . &map_type($ret_type, 'RETVAL') . ";\n"
- if !$retvaldone;
- $args_match{"RETVAL"} = 0;
- $var_types{"RETVAL"} = $ret_type;
- print "\tdXSTARG;\n"
- if $WantOptimize and $targetable{$type_kind{$ret_type}};
- }
-
- if (@fake_INPUT or @fake_INPUT_pre) {
- unshift @line, @fake_INPUT_pre, @fake_INPUT, $_;
- $_ = "";
- $processing_arg_with_types = 1;
- INPUT_handler() ;
- }
- print $deferred;
-
- process_keyword("INIT|ALIAS|ATTRS|PROTOTYPE|INTERFACE_MACRO|INTERFACE|C_ARGS|OVERLOAD") ;
-
- if (check_keyword("PPCODE")) {
- print_section();
- death ("PPCODE must be last thing") if @line;
- print "\tLEAVE;\n" if $ScopeThisXSUB;
- print "\tPUTBACK;\n\treturn;\n";
- } elsif (check_keyword("CODE")) {
- print_section() ;
- } elsif (defined($class) and $func_name eq "DESTROY") {
- print "\n\t";
- print "delete THIS;\n";
- } else {
- print "\n\t";
- if ($ret_type ne "void") {
- print "RETVAL = ";
- $wantRETVAL = 1;
- }
- if (defined($static)) {
- if ($func_name eq 'new') {
- $func_name = "$class";
- } else {
- print "${class}::";
- }
- } elsif (defined($class)) {
- if ($func_name eq 'new') {
- $func_name .= " $class";
- } else {
- print "THIS->";
- }
- }
- $func_name =~ s/^\Q$args{'s'}//
- if exists $args{'s'};
- $func_name = 'XSFUNCTION' if $interface;
- print "$func_name($func_args);\n";
- }
+ print "\n\tPerl_croak(aTHX_ \"$pname: not implemented yet\");\n";
+ $_ = '';
}
-
+ else {
+ if ($self->{ret_type} ne "void") {
+ print "\t" . map_type($self, $self->{ret_type}, 'RETVAL') . ";\n"
+ if !$self->{retvaldone};
+ $self->{args_match}->{"RETVAL"} = 0;
+ $self->{var_types}->{"RETVAL"} = $self->{ret_type};
+ my $outputmap = $self->{typemap}->get_outputmap( ctype => $self->{ret_type} );
+ print "\tdXSTARG;\n"
+ if $self->{optimize} and $outputmap and $outputmap->targetable;
+ }
+
+ if (@fake_INPUT or @fake_INPUT_pre) {
+ unshift @{ $self->{line} }, @fake_INPUT_pre, @fake_INPUT, $_;
+ $_ = "";
+ $self->{processing_arg_with_types} = 1;
+ $self->INPUT_handler($_);
+ }
+ print $self->{deferred};
+
+ $self->process_keyword("INIT|ALIAS|ATTRS|PROTOTYPE|INTERFACE_MACRO|INTERFACE|C_ARGS|OVERLOAD");
+
+ if ($self->check_keyword("PPCODE")) {
+ $self->print_section();
+ $self->death("PPCODE must be last thing") if @{ $self->{line} };
+ print "\tLEAVE;\n" if $self->{ScopeThisXSUB};
+ print "\tPUTBACK;\n\treturn;\n";
+ }
+ elsif ($self->check_keyword("CODE")) {
+ my $consumed_code = $self->print_section();
+ if ($consumed_code =~ /\bRETVAL\b/) {
+ $self->{have_CODE_with_RETVAL} = 1;
+ }
+ }
+ elsif (defined($class) and $func_name eq "DESTROY") {
+ print "\n\t";
+ print "delete THIS;\n";
+ }
+ else {
+ print "\n\t";
+ if ($self->{ret_type} ne "void") {
+ print "RETVAL = ";
+ $wantRETVAL = 1;
+ }
+ if (defined($static)) {
+ if ($func_name eq 'new') {
+ $func_name = "$class";
+ }
+ else {
+ print "${class}::";
+ }
+ }
+ elsif (defined($class)) {
+ if ($func_name eq 'new') {
+ $func_name .= " $class";
+ }
+ else {
+ print "THIS->";
+ }
+ }
+ $func_name =~ s/^\Q$args{'s'}//
+ if exists $args{'s'};
+ $func_name = 'XSFUNCTION' if $self->{interface};
+ print "$func_name($self->{func_args});\n";
+ }
+ }
+
# do output variables
- $gotRETVAL = 0; # 1 if RETVAL seen in OUTPUT section;
- undef $RETVAL_code ; # code to set RETVAL (from OUTPUT section);
+ $self->{gotRETVAL} = 0; # 1 if RETVAL seen in OUTPUT section;
+ undef $self->{RETVAL_code} ; # code to set RETVAL (from OUTPUT section);
# $wantRETVAL set if 'RETVAL =' autogenerated
- ($wantRETVAL, $ret_type) = (0, 'void') if $RETVAL_no_return;
- undef %outargs ;
- process_keyword("POSTCALL|OUTPUT|ALIAS|ATTRS|PROTOTYPE|OVERLOAD");
-
- &generate_output($var_types{$_}, $args_match{$_}, $_, $DoSetMagic)
- for grep $in_out{$_} =~ /OUT$/, keys %in_out;
-
+ ($wantRETVAL, $self->{ret_type}) = (0, 'void') if $RETVAL_no_return;
+ undef %{ $self->{outargs} };
+
+ $self->process_keyword("POSTCALL|OUTPUT|ALIAS|ATTRS|PROTOTYPE|OVERLOAD");
+
+ # A CODE section with RETVAL, but no OUTPUT? FAIL!
+ if ($self->{have_CODE_with_RETVAL} and not $self->{have_OUTPUT} and $self->{ret_type} ne 'void') {
+ $self->Warn("Warning: Found a 'CODE' section which seems to be using 'RETVAL' but no 'OUTPUT' section.");
+ }
+
+ generate_output( {
+ type => $self->{var_types}->{$_},
+ num => $self->{args_match}->{$_},
+ var => $_,
+ do_setmagic => $self->{DoSetMagic},
+ do_push => undef,
+ } ) for grep $self->{in_out}->{$_} =~ /OUT$/, keys %{ $self->{in_out} };
+
+ my $prepush_done;
# all OUTPUT done, so now push the return value on the stack
- if ($gotRETVAL && $RETVAL_code) {
- print "\t$RETVAL_code\n";
- } elsif ($gotRETVAL || $wantRETVAL) {
- my $t = $WantOptimize && $targetable{$type_kind{$ret_type}};
- my $var = 'RETVAL';
- my $type = $ret_type;
-
- # 0: type, 1: with_size, 2: how, 3: how_size
- if ($t and not $t->[1] and $t->[0] eq 'p') {
- # PUSHp corresponds to setpvn. Treat setpv directly
- my $what = eval qq("$t->[2]");
- warn $@ if $@;
-
- print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
- $prepush_done = 1;
- }
- elsif ($t) {
- my $what = eval qq("$t->[2]");
- warn $@ if $@;
-
- my $size = $t->[3];
- $size = '' unless defined $size;
- $size = eval qq("$size");
- warn $@ if $@;
- print "\tXSprePUSH; PUSH$t->[0]($what$size);\n";
- $prepush_done = 1;
- }
- else {
- # RETVAL almost never needs SvSETMAGIC()
- &generate_output($ret_type, 0, 'RETVAL', 0);
- }
+ if ($self->{gotRETVAL} && $self->{RETVAL_code}) {
+ print "\t$self->{RETVAL_code}\n";
}
-
- $xsreturn = 1 if $ret_type ne "void";
+ elsif ($self->{gotRETVAL} || $wantRETVAL) {
+ my $outputmap = $self->{typemap}->get_outputmap( ctype => $self->{ret_type} );
+ my $t = $self->{optimize} && $outputmap && $outputmap->targetable;
+ # Although the '$var' declared in the next line is never explicitly
+ # used within this 'elsif' block, commenting it out leads to
+ # disaster, starting with the first 'eval qq' inside the 'elsif' block
+ # below.
+ # It appears that this is related to the fact that at this point the
+ # value of $t is a reference to an array whose [2] element includes
+ # '$var' as a substring:
+ # <i> <> <(IV)$var>
+ my $var = 'RETVAL';
+ my $type = $self->{ret_type};
+
+ if ($t and not $t->{with_size} and $t->{type} eq 'p') {
+ # PUSHp corresponds to setpvn. Treat setpv directly
+ my $what = eval qq("$t->{what}");
+ warn $@ if $@;
+
+ print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
+ $prepush_done = 1;
+ }
+ elsif ($t) {
+ my $what = eval qq("$t->{what}");
+ warn $@ if $@;
+
+ my $tsize = $t->{what_size};
+ $tsize = '' unless defined $tsize;
+ $tsize = eval qq("$tsize");
+ warn $@ if $@;
+ print "\tXSprePUSH; PUSH$t->{type}($what$tsize);\n";
+ $prepush_done = 1;
+ }
+ else {
+ # RETVAL almost never needs SvSETMAGIC()
+ generate_output( {
+ type => $self->{ret_type},
+ num => 0,
+ var => 'RETVAL',
+ do_setmagic => 0,
+ do_push => undef,
+ } );
+ }
+ }
+
+ $xsreturn = 1 if $self->{ret_type} ne "void";
my $num = $xsreturn;
- my $c = @outlist;
+ my $c = @{ $outlist_ref };
print "\tXSprePUSH;" if $c and not $prepush_done;
print "\tEXTEND(SP,$c);\n" if $c;
$xsreturn += $c;
- generate_output($var_types{$_}, $num++, $_, 0, 1) for @outlist;
-
+ generate_output( {
+ type => $self->{var_types}->{$_},
+ num => $num++,
+ var => $_,
+ do_setmagic => 0,
+ do_push => 1,
+ } ) for @{ $outlist_ref };
+
# do cleanup
- process_keyword("CLEANUP|ALIAS|ATTRS|PROTOTYPE|OVERLOAD") ;
-
- print Q(<<"EOF") if $ScopeThisXSUB;
+ $self->process_keyword("CLEANUP|ALIAS|ATTRS|PROTOTYPE|OVERLOAD");
+
+ print Q(<<"EOF") if $self->{ScopeThisXSUB};
# ]]
EOF
- print Q(<<"EOF") if $ScopeThisXSUB and not $PPCODE;
+ print Q(<<"EOF") if $self->{ScopeThisXSUB} and not $PPCODE;
# LEAVE;
EOF
-
+
# print function trailer
print Q(<<"EOF");
# ]]
EOF
- print Q(<<"EOF") if $except;
+ print Q(<<"EOF") if $self->{except};
# BEGHANDLERS
# CATCHALL
-# sprintf(errbuf, "%s: %s\\tpropagated", Xname, Xreason);
+# sprintf(errbuf, "%s: %s\\tpropagated", Xname, Xreason);
# ENDHANDLERS
EOF
- if (check_keyword("CASE")) {
- blurt ("Error: No `CASE:' at top of function")
- unless $condnum;
- $_ = "CASE: $_"; # Restore CASE: label
- next;
+ if ($self->check_keyword("CASE")) {
+ $self->blurt("Error: No 'CASE:' at top of function")
+ unless $self->{condnum};
+ $_ = "CASE: $_"; # Restore CASE: label
+ next;
}
last if $_ eq "$END:";
- death(/^$BLOCK_re/o ? "Misplaced `$1:'" : "Junk at end of function ($_)");
+ $self->death(/^$self->{BLOCK_re}/o ? "Misplaced '$1:'" : "Junk at end of function ($_)");
}
-
- print Q(<<"EOF") if $except;
+
+ print Q(<<"EOF") if $self->{except};
# if (errbuf[0])
-# Perl_croak(aTHX_ errbuf);
+# Perl_croak(aTHX_ errbuf);
EOF
-
+
if ($xsreturn) {
print Q(<<"EOF") unless $PPCODE;
# XSRETURN($xsreturn);
EOF
- } else {
+ }
+ else {
print Q(<<"EOF") unless $PPCODE;
# XSRETURN_EMPTY;
EOF
@@ -882,74 +814,73 @@
#
EOF
- our $newXS = "newXS" ;
- our $proto = "" ;
-
+ $self->{newXS} = "newXS";
+ $self->{proto} = "";
+
# Build the prototype string for the xsub
- if ($ProtoThisXSUB) {
- $newXS = "newXSproto_portable";
-
- if ($ProtoThisXSUB eq 2) {
- # User has specified empty prototype
+ if ($self->{ProtoThisXSUB}) {
+ $self->{newXS} = "newXSproto_portable";
+
+ if ($self->{ProtoThisXSUB} eq 2) {
+ # User has specified empty prototype
}
- elsif ($ProtoThisXSUB eq 1) {
- my $s = ';';
- if ($min_args < $num_args) {
- $s = '';
- $proto_arg[$min_args] .= ";" ;
- }
- push @proto_arg, "$s\@"
- if $ellipsis ;
-
- $proto = join ("", grep defined, @proto_arg);
+ elsif ($self->{ProtoThisXSUB} eq 1) {
+ my $s = ';';
+ if ($min_args < $num_args) {
+ $s = '';
+ $self->{proto_arg}->[$min_args] .= ";";
+ }
+ push @{ $self->{proto_arg} }, "$s\@"
+ if $ellipsis;
+
+ $self->{proto} = join ("", grep defined, @{ $self->{proto_arg} } );
}
else {
- # User has specified a prototype
- $proto = $ProtoThisXSUB;
+ # User has specified a prototype
+ $self->{proto} = $self->{ProtoThisXSUB};
}
- $proto = qq{, "$proto"};
+ $self->{proto} = qq{, "$self->{proto}"};
}
- if (%XsubAliases) {
- $XsubAliases{$pname} = 0
- unless defined $XsubAliases{$pname} ;
- while ( ($name, $value) = each %XsubAliases) {
- push(@InitFileCode, Q(<<"EOF"));
-# cv = ${newXS}(\"$name\", XS_$Full_func_name, file$proto);
-# XSANY.any_i32 = $value ;
+ if (%{ $self->{XsubAliases} }) {
+ $self->{XsubAliases}->{$pname} = 0
+ unless defined $self->{XsubAliases}->{$pname};
+ while ( my ($xname, $value) = each %{ $self->{XsubAliases} }) {
+ push(@{ $self->{InitFileCode} }, Q(<<"EOF"));
+# cv = $self->{newXS}(\"$xname\", XS_$Full_func_name, file$self->{proto});
+# XSANY.any_i32 = $value;
EOF
}
}
- elsif (@Attributes) {
- push(@InitFileCode, Q(<<"EOF"));
-# cv = ${newXS}(\"$pname\", XS_$Full_func_name, file$proto);
-# apply_attrs_string("$Package", cv, "@Attributes", 0);
+ elsif (@{ $self->{Attributes} }) {
+ push(@{ $self->{InitFileCode} }, Q(<<"EOF"));
+# cv = $self->{newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});
+# apply_attrs_string("$Package", cv, "@{ $self->{Attributes} }", 0);
EOF
}
- elsif ($interface) {
- while ( ($name, $value) = each %Interfaces) {
- $name = "$Package\::$name" unless $name =~ /::/;
- push(@InitFileCode, Q(<<"EOF"));
-# cv = ${newXS}(\"$name\", XS_$Full_func_name, file$proto);
-# $interface_macro_set(cv,$value) ;
+ elsif ($self->{interface}) {
+ while ( my ($yname, $value) = each %{ $self->{Interfaces} }) {
+ $yname = "$Package\::$yname" unless $yname =~ /::/;
+ push(@{ $self->{InitFileCode} }, Q(<<"EOF"));
+# cv = $self->{newXS}(\"$yname\", XS_$Full_func_name, file$self->{proto});
+# $self->{interface_macro_set}(cv,$value);
EOF
}
}
- elsif($newXS eq 'newXS'){ # work around P5NCI's empty newXS macro
- push(@InitFileCode,
- " ${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n");
+ elsif($self->{newXS} eq 'newXS'){ # work around P5NCI's empty newXS macro
+ push(@{ $self->{InitFileCode} },
+ " $self->{newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});\n");
}
else {
- push(@InitFileCode,
- " (void)${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n");
+ push(@{ $self->{InitFileCode} },
+ " (void)$self->{newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});\n");
}
- }
+ } # END 'PARAGRAPH' 'while' loop
- if ($Overload) # make it findable with fetchmethod
- {
+ if ($self->{Overload}) { # make it findable with fetchmethod
print Q(<<"EOF");
-#XS(XS_${Packid}_nil); /* prototype to pass -Wmissing-prototypes */
-#XS(XS_${Packid}_nil)
+#XS_EUPXS(XS_$self->{Packid}_nil); /* prototype to pass -Wmissing-prototypes */
+#XS_EUPXS(XS_$self->{Packid}_nil)
#{
# dXSARGS;
# XSRETURN_EMPTY;
@@ -956,11 +887,11 @@
#}
#
EOF
- unshift(@InitFileCode, <<"MAKE_FETCHMETHOD_WORK");
+ unshift(@{ $self->{InitFileCode} }, <<"MAKE_FETCHMETHOD_WORK");
/* Making a sub named "${Package}::()" allows the package */
/* to be findable via fetchmethod(), and causes */
/* overload::Overloaded("${Package}") to return true. */
- (void)${newXS}("${Package}::()", XS_${Packid}_nil, file$proto);
+ (void)$self->{newXS}("${Package}::()", XS_$self->{Packid}_nil, file$self->{proto});
MAKE_FETCHMETHOD_WORK
}
@@ -973,17 +904,13 @@
EOF
print Q(<<"EOF");
-#XS(boot_$Module_cname); /* prototype to pass -Wmissing-prototypes */
-#XS(boot_$Module_cname)
+#XS_EXTERNAL(boot_$self->{Module_cname}); /* prototype to pass -Wmissing-prototypes */
+#XS_EXTERNAL(boot_$self->{Module_cname})
EOF
print Q(<<"EOF");
#[[
-##ifdef dVAR
# dVAR; dXSARGS;
-##else
-# dXSARGS;
-##endif
EOF
#Under 5.8.x and lower, newXS is declared in proto.h as expecting a non-const
@@ -990,7 +917,7 @@
#file name argument. If the wrong qualifier is used, it causes breakage with
#C++ compilers and warnings with recent gcc.
#-Wall: if there is no $Full_func_name there are no xsubs in this .xs
- #so `file' is unused
+ #so 'file' is unused
print Q(<<"EOF") if $Full_func_name;
##if (PERL_REVISION == 5 && PERL_VERSION < 9)
# char* file = __FILE__;
@@ -1009,41 +936,42 @@
##endif
EOF
- print Q(<<"EOF") if $WantVersionChk ;
-# XS_VERSION_BOOTCHECK ;
+ print Q(<<"EOF") if $self->{WantVersionChk};
+# XS_VERSION_BOOTCHECK;
#
EOF
- print Q(<<"EOF") if defined $XsubAliases or defined $Interfaces ;
+ print Q(<<"EOF") if defined $self->{xsubaliases} or defined $self->{interfaces};
# {
-# CV * cv ;
+# CV * cv;
#
EOF
- print Q(<<"EOF") if ($Overload);
+ print Q(<<"EOF") if ($self->{Overload});
# /* register the overloading (type 'A') magic */
+##if (PERL_REVISION == 5 && PERL_VERSION < 9)
# PL_amagic_generation++;
+##endif
# /* The magic for overload gets a GV* via gv_fetchmeth as */
# /* mentioned above, and looks in the SV* slot of it for */
# /* the "fallback" status. */
# sv_setsv(
# get_sv( "${Package}::()", TRUE ),
-# $Fallback
+# $self->{Fallback}
# );
EOF
- print @InitFileCode;
+ print @{ $self->{InitFileCode} };
- print Q(<<"EOF") if defined $XsubAliases or defined $Interfaces ;
+ print Q(<<"EOF") if defined $self->{xsubaliases} or defined $self->{interfaces};
# }
EOF
- if (@BootCode)
- {
- print "\n /* Initialisation Section */\n\n" ;
- @line = @BootCode;
- print_section();
- print "\n /* End of Initialisation Section */\n\n" ;
+ if (@{ $BootCode_ref }) {
+ print "\n /* Initialisation Section */\n\n";
+ @{ $self->{line} } = @{ $BootCode_ref };
+ $self->print_section();
+ print "\n /* End of Initialisation Section */\n\n";
}
print Q(<<'EOF');
@@ -1059,177 +987,172 @@
#
EOF
- warn("Please specify prototyping behavior for $filename (see perlxs manual)\n")
- unless $ProtoUsed ;
+ warn("Please specify prototyping behavior for $self->{filename} (see perlxs manual)\n")
+ unless $self->{ProtoUsed};
chdir($orig_cwd);
select($orig_fh);
untie *PSEUDO_STDOUT if tied *PSEUDO_STDOUT;
- close $FH;
+ close $self->{FH};
return 1;
}
-sub errors { $errors }
+sub report_error_count { $self->{errors} }
-sub standard_typemap_locations {
- # Add all the default typemap locations to the search path
- my @tm = qw(typemap);
-
- my $updir = File::Spec->updir;
- foreach my $dir (File::Spec->catdir(($updir) x 1), File::Spec->catdir(($updir) x 2),
- File::Spec->catdir(($updir) x 3), File::Spec->catdir(($updir) x 4)) {
-
- unshift @tm, File::Spec->catfile($dir, 'typemap');
- unshift @tm, File::Spec->catfile($dir, lib => ExtUtils => 'typemap');
- }
- foreach my $dir (@INC) {
- my $file = File::Spec->catfile($dir, ExtUtils => 'typemap');
- unshift @tm, $file if -e $file;
- }
- return @tm;
+# Input: ($self, $_, @{ $self->{line} }) == unparsed input.
+# Output: ($_, @{ $self->{line} }) == (rest of line, following lines).
+# Return: the matched keyword if found, otherwise 0
+sub check_keyword {
+ my $self = shift;
+ $_ = shift(@{ $self->{line} }) while !/\S/ && @{ $self->{line} };
+ s/^(\s*)($_[0])\s*:\s*(?:#.*)?/$1/s && $2;
}
-
-sub TrimWhitespace
-{
- $_[0] =~ s/^\s+|\s+$//go ;
-}
-sub TidyType
- {
- local ($_) = @_ ;
+sub print_section {
+ my $self = shift;
- # rationalise any '*' by joining them into bunches and removing whitespace
- s#\s*(\*+)\s*#$1#g;
- s#(\*+)# $1 #g ;
+ # the "do" is required for right semantics
+ do { $_ = shift(@{ $self->{line} }) } while !/\S/ && @{ $self->{line} };
- # change multiple whitespace into a single space
- s/\s+/ /g ;
+ my $consumed_code = '';
- # trim leading & trailing whitespace
- TrimWhitespace($_) ;
+ print("#line ", $self->{line_no}->[@{ $self->{line_no} } - @{ $self->{line} } -1], " \"",
+ escape_file_for_line_directive($self->{filepathname}), "\"\n")
+ if $self->{WantLineNumbers} && !/^\s*#\s*line\b/ && !/^#if XSubPPtmp/;
+ for (; defined($_) && !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
+ print "$_\n";
+ $consumed_code .= "$_\n";
+ }
+ print 'ExtUtils::ParseXS::CountLines'->end_marker, "\n" if $self->{WantLineNumbers};
- $_ ;
+ return $consumed_code;
}
-# Input: ($_, @line) == unparsed input.
-# Output: ($_, @line) == (rest of line, following lines).
-# Return: the matched keyword if found, otherwise 0
-sub check_keyword {
- $_ = shift(@line) while !/\S/ && @line;
- s/^(\s*)($_[0])\s*:\s*(?:#.*)?/$1/s && $2;
-}
-
-sub print_section {
- # the "do" is required for right semantics
- do { $_ = shift(@line) } while !/\S/ && @line;
-
- print("#line ", $line_no[@line_no - @line -1], " \"$filepathname\"\n")
- if $WantLineNumbers && !/^\s*#\s*line\b/ && !/^#if XSubPPtmp/;
- for (; defined($_) && !/^$BLOCK_re/o; $_ = shift(@line)) {
- print "$_\n";
- }
- print 'ExtUtils::ParseXS::CountLines'->end_marker, "\n" if $WantLineNumbers;
-}
-
sub merge_section {
- my $in = '';
+ my $self = shift;
+ my $in = '';
- while (!/\S/ && @line) {
- $_ = shift(@line);
- }
+ while (!/\S/ && @{ $self->{line} }) {
+ $_ = shift(@{ $self->{line} });
+ }
- for (; defined($_) && !/^$BLOCK_re/o; $_ = shift(@line)) {
- $in .= "$_\n";
- }
- chomp $in;
- return $in;
+ for (; defined($_) && !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
+ $in .= "$_\n";
}
+ chomp $in;
+ return $in;
+}
-sub process_keyword($)
- {
- my($pattern) = @_ ;
- my $kwd ;
+sub process_keyword {
+ my($self, $pattern) = @_;
- &{"${kwd}_handler"}()
- while $kwd = check_keyword($pattern) ;
+ while (my $kwd = $self->check_keyword($pattern)) {
+ my $method = $kwd . "_handler";
+ $self->$method($_);
}
+}
sub CASE_handler {
- blurt ("Error: `CASE:' after unconditional `CASE:'")
- if $condnum && $cond eq '';
- $cond = $_;
- TrimWhitespace($cond);
- print " ", ($condnum++ ? " else" : ""), ($cond ? " if ($cond)\n" : "\n");
- $_ = '' ;
+ my $self = shift;
+ $_ = shift;
+ $self->blurt("Error: 'CASE:' after unconditional 'CASE:'")
+ if $self->{condnum} && $self->{cond} eq '';
+ $self->{cond} = $_;
+ trim_whitespace($self->{cond});
+ print " ", ($self->{condnum}++ ? " else" : ""), ($self->{cond} ? " if ($self->{cond})\n" : "\n");
+ $_ = '';
}
sub INPUT_handler {
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
+ my $self = shift;
+ $_ = shift;
+ for (; !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
last if /^\s*NOT_IMPLEMENTED_YET/;
- next unless /\S/; # skip blank lines
+ next unless /\S/; # skip blank lines
- TrimWhitespace($_) ;
- my $line = $_ ;
+ trim_whitespace($_);
+ my $ln = $_;
# remove trailing semicolon if no initialisation
- s/\s*;$//g unless /[=;+].*\S/ ;
+ s/\s*;$//g unless /[=;+].*\S/;
# Process the length(foo) declarations
if (s/^([^=]*)\blength\(\s*(\w+)\s*\)\s*$/$1 XSauto_length_of_$2=NO_INIT/x) {
print "\tSTRLEN\tSTRLEN_length_of_$2;\n";
- $lengthof{$2} = $name;
- # $islengthof{$name} = $1;
- $deferred .= "\n\tXSauto_length_of_$2 = STRLEN_length_of_$2;\n";
+ $self->{lengthof}->{$2} = undef;
+ $self->{deferred} .= "\n\tXSauto_length_of_$2 = STRLEN_length_of_$2;\n";
}
# check for optional initialisation code
- my $var_init = '' ;
- $var_init = $1 if s/\s*([=;+].*)$//s ;
+ my $var_init = '';
+ $var_init = $1 if s/\s*([=;+].*)$//s;
$var_init =~ s/"/\\"/g;
+ # *sigh* It's valid to supply explicit input typemaps in the argument list...
+ my $is_overridden_typemap = $var_init =~ /ST\s*\(|\$arg\b/;
s/\s+/ /g;
my ($var_type, $var_addr, $var_name) = /^(.*?[^&\s])\s*(\&?)\s*\b(\w+)$/s
- or blurt("Error: invalid argument declaration '$line'"), next;
+ or $self->blurt("Error: invalid argument declaration '$ln'"), next;
# Check for duplicate definitions
- blurt ("Error: duplicate definition of argument '$var_name' ignored"), next
- if $arg_list{$var_name}++
- or defined $argtype_seen{$var_name} and not $processing_arg_with_types;
+ $self->blurt("Error: duplicate definition of argument '$var_name' ignored"), next
+ if $self->{arg_list}->{$var_name}++
+ or defined $self->{argtype_seen}->{$var_name} and not $self->{processing_arg_with_types};
- $thisdone |= $var_name eq "THIS";
- $retvaldone |= $var_name eq "RETVAL";
- $var_types{$var_name} = $var_type;
+ $self->{thisdone} |= $var_name eq "THIS";
+ $self->{retvaldone} |= $var_name eq "RETVAL";
+ $self->{var_types}->{$var_name} = $var_type;
# XXXX This check is a safeguard against the unfinished conversion of
# generate_init(). When generate_init() is fixed,
# one can use 2-args map_type() unconditionally.
+ my $printed_name;
if ($var_type =~ / \( \s* \* \s* \) /x) {
- # Function pointers are not yet supported with &output_init!
- print "\t" . &map_type($var_type, $var_name);
- $name_printed = 1;
- } else {
- print "\t" . &map_type($var_type);
- $name_printed = 0;
+ # Function pointers are not yet supported with output_init()!
+ print "\t" . map_type($self, $var_type, $var_name);
+ $printed_name = 1;
}
- $var_num = $args_match{$var_name};
+ else {
+ print "\t" . map_type($self, $var_type, undef);
+ $printed_name = 0;
+ }
+ $self->{var_num} = $self->{args_match}->{$var_name};
- $proto_arg[$var_num] = ProtoString($var_type)
- if $var_num ;
- $func_args =~ s/\b($var_name)\b/&$1/ if $var_addr;
+ if ($self->{var_num}) {
+ my $typemap = $self->{typemap}->get_typemap(ctype => $var_type);
+ $self->report_typemap_failure($self->{typemap}, $var_type, "death")
+ if not $typemap and not $is_overridden_typemap;
+ $self->{proto_arg}->[$self->{var_num}] = ($typemap && $typemap->proto) || "\$";
+ }
+ $self->{func_args} =~ s/\b($var_name)\b/&$1/ if $var_addr;
if ($var_init =~ /^[=;]\s*NO_INIT\s*;?\s*$/
- or $in_out{$var_name} and $in_out{$var_name} =~ /^OUT/
- and $var_init !~ /\S/) {
- if ($name_printed) {
- print ";\n";
- } else {
- print "\t$var_name;\n";
+ or $self->{in_out}->{$var_name} and $self->{in_out}->{$var_name} =~ /^OUT/
+ and $var_init !~ /\S/) {
+ if ($printed_name) {
+ print ";\n";
}
- } elsif ($var_init =~ /\S/) {
- &output_init($var_type, $var_num, $var_name, $var_init, $name_printed);
- } elsif ($var_num) {
- # generate initialization code
- &generate_init($var_type, $var_num, $var_name, $name_printed);
- } else {
+ else {
+ print "\t$var_name;\n";
+ }
+ }
+ elsif ($var_init =~ /\S/) {
+ output_init( {
+ type => $var_type,
+ num => $self->{var_num},
+ var => $var_name,
+ init => $var_init,
+ printed_name => $printed_name,
+ } );
+ }
+ elsif ($self->{var_num}) {
+ generate_init( {
+ type => $var_type,
+ num => $self->{var_num},
+ var => $var_name,
+ printed_name => $printed_name,
+ } );
+ }
+ else {
print ";\n";
}
}
@@ -1236,477 +1159,510 @@
}
sub OUTPUT_handler {
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
+ my $self = shift;
+ $self->{have_OUTPUT} = 1;
+
+ $_ = shift;
+ for (; !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
next unless /\S/;
if (/^\s*SETMAGIC\s*:\s*(ENABLE|DISABLE)\s*/) {
- $DoSetMagic = ($1 eq "ENABLE" ? 1 : 0);
+ $self->{DoSetMagic} = ($1 eq "ENABLE" ? 1 : 0);
next;
}
- my ($outarg, $outcode) = /^\s*(\S+)\s*(.*?)\s*$/s ;
- blurt ("Error: duplicate OUTPUT argument '$outarg' ignored"), next
- if $outargs{$outarg} ++ ;
- if (!$gotRETVAL and $outarg eq 'RETVAL') {
+ my ($outarg, $outcode) = /^\s*(\S+)\s*(.*?)\s*$/s;
+ $self->blurt("Error: duplicate OUTPUT argument '$outarg' ignored"), next
+ if $self->{outargs}->{$outarg}++;
+ if (!$self->{gotRETVAL} and $outarg eq 'RETVAL') {
# deal with RETVAL last
- $RETVAL_code = $outcode ;
- $gotRETVAL = 1 ;
- next ;
+ $self->{RETVAL_code} = $outcode;
+ $self->{gotRETVAL} = 1;
+ next;
}
- blurt ("Error: OUTPUT $outarg not an argument"), next
- unless defined($args_match{$outarg});
- blurt("Error: No input definition for OUTPUT argument '$outarg' - ignored"), next
- unless defined $var_types{$outarg} ;
- $var_num = $args_match{$outarg};
+ $self->blurt("Error: OUTPUT $outarg not an argument"), next
+ unless defined($self->{args_match}->{$outarg});
+ $self->blurt("Error: No input definition for OUTPUT argument '$outarg' - ignored"), next
+ unless defined $self->{var_types}->{$outarg};
+ $self->{var_num} = $self->{args_match}->{$outarg};
if ($outcode) {
print "\t$outcode\n";
- print "\tSvSETMAGIC(ST(" , $var_num-1 , "));\n" if $DoSetMagic;
- } else {
- &generate_output($var_types{$outarg}, $var_num, $outarg, $DoSetMagic);
+ print "\tSvSETMAGIC(ST(" , $self->{var_num} - 1 , "));\n" if $self->{DoSetMagic};
}
- delete $in_out{$outarg} # No need to auto-OUTPUT
- if exists $in_out{$outarg} and $in_out{$outarg} =~ /OUT$/;
+ else {
+ generate_output( {
+ type => $self->{var_types}->{$outarg},
+ num => $self->{var_num},
+ var => $outarg,
+ do_setmagic => $self->{DoSetMagic},
+ do_push => undef,
+ } );
+ }
+ delete $self->{in_out}->{$outarg} # No need to auto-OUTPUT
+ if exists $self->{in_out}->{$outarg} and $self->{in_out}->{$outarg} =~ /OUT$/;
}
}
-sub C_ARGS_handler() {
- my $in = merge_section();
+sub C_ARGS_handler {
+ my $self = shift;
+ $_ = shift;
+ my $in = $self->merge_section();
- TrimWhitespace($in);
- $func_args = $in;
+ trim_whitespace($in);
+ $self->{func_args} = $in;
}
-sub INTERFACE_MACRO_handler() {
- my $in = merge_section();
+sub INTERFACE_MACRO_handler {
+ my $self = shift;
+ $_ = shift;
+ my $in = $self->merge_section();
- TrimWhitespace($in);
- if ($in =~ /\s/) { # two
- ($interface_macro, $interface_macro_set) = split ' ', $in;
- } else {
- $interface_macro = $in;
- $interface_macro_set = 'UNKNOWN_CVT'; # catch later
+ trim_whitespace($in);
+ if ($in =~ /\s/) { # two
+ ($self->{interface_macro}, $self->{interface_macro_set}) = split ' ', $in;
}
- $interface = 1; # local
- $Interfaces = 1; # global
+ else {
+ $self->{interface_macro} = $in;
+ $self->{interface_macro_set} = 'UNKNOWN_CVT'; # catch later
+ }
+ $self->{interface} = 1; # local
+ $self->{interfaces} = 1; # global
}
-sub INTERFACE_handler() {
- my $in = merge_section();
+sub INTERFACE_handler {
+ my $self = shift;
+ $_ = shift;
+ my $in = $self->merge_section();
- TrimWhitespace($in);
+ trim_whitespace($in);
foreach (split /[\s,]+/, $in) {
- my $name = $_;
- $name =~ s/^$Prefix//;
- $Interfaces{$name} = $_;
+ my $iface_name = $_;
+ $iface_name =~ s/^$self->{Prefix}//;
+ $self->{Interfaces}->{$iface_name} = $_;
}
print Q(<<"EOF");
-# XSFUNCTION = $interface_macro($ret_type,cv,XSANY.any_dptr);
+# XSFUNCTION = $self->{interface_macro}($self->{ret_type},cv,XSANY.any_dptr);
EOF
- $interface = 1; # local
- $Interfaces = 1; # global
+ $self->{interface} = 1; # local
+ $self->{interfaces} = 1; # global
}
-sub CLEANUP_handler() { print_section() }
-sub PREINIT_handler() { print_section() }
-sub POSTCALL_handler() { print_section() }
-sub INIT_handler() { print_section() }
+sub CLEANUP_handler {
+ my $self = shift;
+ $self->print_section();
+}
-sub GetAliases
- {
- my ($line) = @_ ;
- my ($orig) = $line ;
- my ($alias) ;
- my ($value) ;
+sub PREINIT_handler {
+ my $self = shift;
+ $self->print_section();
+}
- # Parse alias definitions
- # format is
- # alias = value alias = value ...
+sub POSTCALL_handler {
+ my $self = shift;
+ $self->print_section();
+}
- while ($line =~ s/^\s*([\w:]+)\s*=\s*(\w+)\s*//) {
- $alias = $1 ;
- $orig_alias = $alias ;
- $value = $2 ;
+sub INIT_handler {
+ my $self = shift;
+ $self->print_section();
+}
- # check for optional package definition in the alias
- $alias = $Packprefix . $alias if $alias !~ /::/ ;
+sub get_aliases {
+ my $self = shift;
+ my ($line) = @_;
+ my ($orig) = $line;
- # check for duplicate alias name & duplicate value
- Warn("Warning: Ignoring duplicate alias '$orig_alias'")
- if defined $XsubAliases{$alias} ;
+ # Parse alias definitions
+ # format is
+ # alias = value alias = value ...
- Warn("Warning: Aliases '$orig_alias' and '$XsubAliasValues{$value}' have identical values")
- if $XsubAliasValues{$value} ;
+ while ($line =~ s/^\s*([\w:]+)\s*=\s*(\w+)\s*//) {
+ my ($alias, $value) = ($1, $2);
+ my $orig_alias = $alias;
- $XsubAliases = 1;
- $XsubAliases{$alias} = $value ;
- $XsubAliasValues{$value} = $orig_alias ;
- }
+ # check for optional package definition in the alias
+ $alias = $self->{Packprefix} . $alias if $alias !~ /::/;
- blurt("Error: Cannot parse ALIAS definitions from '$orig'")
- if $line ;
+ # check for duplicate alias name & duplicate value
+ Warn( $self, "Warning: Ignoring duplicate alias '$orig_alias'")
+ if defined $self->{XsubAliases}->{$alias};
+
+ Warn( $self, "Warning: Aliases '$orig_alias' and '$self->{XsubAliasValues}->{$value}' have identical values")
+ if $self->{XsubAliasValues}->{$value};
+
+ $self->{xsubaliases} = 1;
+ $self->{XsubAliases}->{$alias} = $value;
+ $self->{XsubAliasValues}->{$value} = $orig_alias;
}
-sub ATTRS_handler ()
- {
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- TrimWhitespace($_) ;
- push @Attributes, $_;
- }
+ blurt( $self, "Error: Cannot parse ALIAS definitions from '$orig'")
+ if $line;
+}
+
+sub ATTRS_handler {
+ my $self = shift;
+ $_ = shift;
+
+ for (; !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
+ next unless /\S/;
+ trim_whitespace($_);
+ push @{ $self->{Attributes} }, $_;
}
+}
-sub ALIAS_handler ()
- {
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- TrimWhitespace($_) ;
- GetAliases($_) if $_ ;
- }
+sub ALIAS_handler {
+ my $self = shift;
+ $_ = shift;
+
+ for (; !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
+ next unless /\S/;
+ trim_whitespace($_);
+ $self->get_aliases($_) if $_;
}
+}
-sub OVERLOAD_handler()
-{
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
+sub OVERLOAD_handler {
+ my $self = shift;
+ $_ = shift;
+
+ for (; !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
next unless /\S/;
- TrimWhitespace($_) ;
+ trim_whitespace($_);
while ( s/^\s*([\w:"\\)\+\-\*\/\%\<\>\.\&\|\^\!\~\{\}\=]+)\s*//) {
- $Overload = 1 unless $Overload;
- my $overload = "$Package\::(".$1 ;
- push(@InitFileCode,
- " (void)${newXS}(\"$overload\", XS_$Full_func_name, file$proto);\n");
+ $self->{Overload} = 1 unless $self->{Overload};
+ my $overload = "$Package\::(".$1;
+ push(@{ $self->{InitFileCode} },
+ " (void)$self->{newXS}(\"$overload\", XS_$Full_func_name, file$self->{proto});\n");
}
- }
+ }
}
-sub FALLBACK_handler()
-{
- # the rest of the current line should contain either TRUE,
+sub FALLBACK_handler {
+ my $self = shift;
+ $_ = shift;
+
+ # the rest of the current line should contain either TRUE,
# FALSE or UNDEF
-
- TrimWhitespace($_) ;
+
+ trim_whitespace($_);
my %map = (
- TRUE => "&PL_sv_yes", 1 => "&PL_sv_yes",
- FALSE => "&PL_sv_no", 0 => "&PL_sv_no",
- UNDEF => "&PL_sv_undef",
- ) ;
-
+ TRUE => "&PL_sv_yes", 1 => "&PL_sv_yes",
+ FALSE => "&PL_sv_no", 0 => "&PL_sv_no",
+ UNDEF => "&PL_sv_undef",
+ );
+
# check for valid FALLBACK value
- death ("Error: FALLBACK: TRUE/FALSE/UNDEF") unless exists $map{uc $_} ;
-
- $Fallback = $map{uc $_} ;
+ $self->death("Error: FALLBACK: TRUE/FALSE/UNDEF") unless exists $map{uc $_};
+
+ $self->{Fallback} = $map{uc $_};
}
-sub REQUIRE_handler ()
- {
- # the rest of the current line should contain a version number
- my ($Ver) = $_ ;
+sub REQUIRE_handler {
+ my $self = shift;
+ # the rest of the current line should contain a version number
+ my $Ver = shift;
- TrimWhitespace($Ver) ;
+ trim_whitespace($Ver);
- death ("Error: REQUIRE expects a version number")
- unless $Ver ;
+ $self->death("Error: REQUIRE expects a version number")
+ unless $Ver;
- # check that the version number is of the form n.n
- death ("Error: REQUIRE: expected a number, got '$Ver'")
- unless $Ver =~ /^\d+(\.\d*)?/ ;
+ # check that the version number is of the form n.n
+ $self->death("Error: REQUIRE: expected a number, got '$Ver'")
+ unless $Ver =~ /^\d+(\.\d*)?/;
- death ("Error: xsubpp $Ver (or better) required--this is only $VERSION.")
- unless $VERSION >= $Ver ;
- }
+ $self->death("Error: xsubpp $Ver (or better) required--this is only $VERSION.")
+ unless $VERSION >= $Ver;
+}
-sub VERSIONCHECK_handler ()
- {
- # the rest of the current line should contain either ENABLE or
- # DISABLE
+sub VERSIONCHECK_handler {
+ my $self = shift;
+ $_ = shift;
- TrimWhitespace($_) ;
+ # the rest of the current line should contain either ENABLE or
+ # DISABLE
- # check for ENABLE/DISABLE
- death ("Error: VERSIONCHECK: ENABLE/DISABLE")
- unless /^(ENABLE|DISABLE)/i ;
+ trim_whitespace($_);
- $WantVersionChk = 1 if $1 eq 'ENABLE' ;
- $WantVersionChk = 0 if $1 eq 'DISABLE' ;
+ # check for ENABLE/DISABLE
+ $self->death("Error: VERSIONCHECK: ENABLE/DISABLE")
+ unless /^(ENABLE|DISABLE)/i;
- }
+ $self->{WantVersionChk} = 1 if $1 eq 'ENABLE';
+ $self->{WantVersionChk} = 0 if $1 eq 'DISABLE';
-sub PROTOTYPE_handler ()
- {
- my $specified ;
+}
- death("Error: Only 1 PROTOTYPE definition allowed per xsub")
- if $proto_in_this_xsub ++ ;
+sub PROTOTYPE_handler {
+ my $self = shift;
+ $_ = shift;
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- $specified = 1 ;
- TrimWhitespace($_) ;
- if ($_ eq 'DISABLE') {
- $ProtoThisXSUB = 0
- } elsif ($_ eq 'ENABLE') {
- $ProtoThisXSUB = 1
- } else {
- # remove any whitespace
- s/\s+//g ;
- death("Error: Invalid prototype '$_'")
- unless ValidProtoString($_) ;
- $ProtoThisXSUB = C_string($_) ;
- }
- }
+ my $specified;
- # If no prototype specified, then assume empty prototype ""
- $ProtoThisXSUB = 2 unless $specified ;
+ $self->death("Error: Only 1 PROTOTYPE definition allowed per xsub")
+ if $self->{proto_in_this_xsub}++;
- $ProtoUsed = 1 ;
-
+ for (; !/^$self->{BLOCK_re}/o; $_ = shift(@{ $self->{line} })) {
+ next unless /\S/;
+ $specified = 1;
+ trim_whitespace($_);
+ if ($_ eq 'DISABLE') {
+ $self->{ProtoThisXSUB} = 0;
+ }
+ elsif ($_ eq 'ENABLE') {
+ $self->{ProtoThisXSUB} = 1;
+ }
+ else {
+ # remove any whitespace
+ s/\s+//g;
+ $self->death("Error: Invalid prototype '$_'")
+ unless valid_proto_string($_);
+ $self->{ProtoThisXSUB} = C_string($_);
+ }
}
-sub SCOPE_handler ()
- {
- death("Error: Only 1 SCOPE declaration allowed per xsub")
- if $scope_in_this_xsub ++ ;
+ # If no prototype specified, then assume empty prototype ""
+ $self->{ProtoThisXSUB} = 2 unless $specified;
- TrimWhitespace($_);
- death ("Error: SCOPE: ENABLE/DISABLE")
- unless /^(ENABLE|DISABLE)\b/i;
- $ScopeThisXSUB = ( uc($1) eq 'ENABLE' );
- }
+ $self->{ProtoUsed} = 1;
+}
-sub PROTOTYPES_handler ()
- {
- # the rest of the current line should contain either ENABLE or
- # DISABLE
+sub SCOPE_handler {
+ my $self = shift;
+ $_ = shift;
- TrimWhitespace($_) ;
+ $self->death("Error: Only 1 SCOPE declaration allowed per xsub")
+ if $self->{scope_in_this_xsub}++;
- # check for ENABLE/DISABLE
- death ("Error: PROTOTYPES: ENABLE/DISABLE")
- unless /^(ENABLE|DISABLE)/i ;
+ trim_whitespace($_);
+ $self->death("Error: SCOPE: ENABLE/DISABLE")
+ unless /^(ENABLE|DISABLE)\b/i;
+ $self->{ScopeThisXSUB} = ( uc($1) eq 'ENABLE' );
+}
- $WantPrototypes = 1 if $1 eq 'ENABLE' ;
- $WantPrototypes = 0 if $1 eq 'DISABLE' ;
- $ProtoUsed = 1 ;
+sub PROTOTYPES_handler {
+ my $self = shift;
+ $_ = shift;
- }
+ # the rest of the current line should contain either ENABLE or
+ # DISABLE
-sub PushXSStack
- {
- my %args = @_;
- # Save the current file context.
- push(@XSStack, {
- type => 'file',
- LastLine => $lastline,
- LastLineNo => $lastline_no,
- Line => \@line,
- LineNo => \@line_no,
- Filename => $filename,
- Filepathname => $filepathname,
- Handle => $FH,
- IsPipe => scalar($filename =~ /\|\s*$/),
- %args,
- }) ;
+ trim_whitespace($_);
- }
+ # check for ENABLE/DISABLE
+ $self->death("Error: PROTOTYPES: ENABLE/DISABLE")
+ unless /^(ENABLE|DISABLE)/i;
-sub INCLUDE_handler ()
- {
- # the rest of the current line should contain a valid filename
+ $self->{WantPrototypes} = 1 if $1 eq 'ENABLE';
+ $self->{WantPrototypes} = 0 if $1 eq 'DISABLE';
+ $self->{ProtoUsed} = 1;
+}
- TrimWhitespace($_) ;
+sub EXPORT_XSUB_SYMBOLS_handler {
+ my $self = shift;
+ $_ = shift;
- death("INCLUDE: filename missing")
- unless $_ ;
+ # the rest of the current line should contain either ENABLE or
+ # DISABLE
- death("INCLUDE: output pipe is illegal")
- if /^\s*\|/ ;
+ trim_whitespace($_);
- # simple minded recursion detector
- death("INCLUDE loop detected")
- if $IncludedFiles{$_} ;
+ # check for ENABLE/DISABLE
+ $self->death("Error: EXPORT_XSUB_SYMBOLS: ENABLE/DISABLE")
+ unless /^(ENABLE|DISABLE)/i;
- ++ $IncludedFiles{$_} unless /\|\s*$/ ;
+ my $xs_impl = $1 eq 'ENABLE' ? 'XS_EXTERNAL' : 'XS_INTERNAL';
- if (/\|\s*$/ && /^\s*perl\s/) {
- Warn("The INCLUDE directive with a command is discouraged." .
- " Use INCLUDE_COMMAND instead! In particular using 'perl'" .
- " in an 'INCLUDE: ... |' directive is not guaranteed to pick" .
- " up the correct perl. The INCLUDE_COMMAND directive allows" .
- " the use of \$^X as the currently running perl, see" .
- " 'perldoc perlxs' for details.");
- }
-
- PushXSStack();
-
- $FH = Symbol::gensym();
-
- # open the new file
- open ($FH, "$_") or death("Cannot open '$_': $!") ;
-
- print Q(<<"EOF");
-#
-#/* INCLUDE: Including '$_' from '$filename' */
-#
+ print Q(<<"EOF");
+##undef XS_EUPXS
+##if defined(PERL_EUPXS_ALWAYS_EXPORT)
+## define XS_EUPXS(name) XS_EXTERNAL(name)
+##elif defined(PERL_EUPXS_NEVER_EXPORT)
+## define XS_EUPXS(name) XS_INTERNAL(name)
+##else
+## define XS_EUPXS(name) $xs_impl(name)
+##endif
EOF
+}
- $filename = $_ ;
- $filepathname = File::Spec->catfile($dir, $filename);
- # Prime the pump by reading the first
- # non-blank line
+sub PushXSStack {
+ my $self = shift;
+ my %args = @_;
+ # Save the current file context.
+ push(@{ $self->{XSStack} }, {
+ type => 'file',
+ LastLine => $self->{lastline},
+ LastLineNo => $self->{lastline_no},
+ Line => $self->{line},
+ LineNo => $self->{line_no},
+ Filename => $self->{filename},
+ Filepathname => $self->{filepathname},
+ Handle => $self->{FH},
+ IsPipe => scalar($self->{filename} =~ /\|\s*$/),
+ %args,
+ });
- # skip leading blank lines
- while (<$FH>) {
- last unless /^\s*$/ ;
- }
+}
- $lastline = $_ ;
- $lastline_no = $. ;
- }
+sub INCLUDE_handler {
+ my $self = shift;
+ $_ = shift;
+ # the rest of the current line should contain a valid filename
-sub QuoteArgs {
- my $cmd = shift;
- my @args = split /\s+/, $cmd;
- $cmd = shift @args;
- for (@args) {
- $_ = q(").$_.q(") if !/^\"/ && length($_) > 0;
- }
- return join (' ', ($cmd, @args));
- }
+ trim_whitespace($_);
-sub INCLUDE_COMMAND_handler ()
- {
- # the rest of the current line should contain a valid command
+ $self->death("INCLUDE: filename missing")
+ unless $_;
- TrimWhitespace($_) ;
+ $self->death("INCLUDE: output pipe is illegal")
+ if /^\s*\|/;
- $_ = QuoteArgs($_) if $^O eq 'VMS';
+ # simple minded recursion detector
+ $self->death("INCLUDE loop detected")
+ if $self->{IncludedFiles}->{$_};
- death("INCLUDE_COMMAND: command missing")
- unless $_ ;
+ ++$self->{IncludedFiles}->{$_} unless /\|\s*$/;
- death("INCLUDE_COMMAND: pipes are illegal")
- if /^\s*\|/ or /\|\s*$/ ;
+ if (/\|\s*$/ && /^\s*perl\s/) {
+ Warn( $self, "The INCLUDE directive with a command is discouraged." .
+ " Use INCLUDE_COMMAND instead! In particular using 'perl'" .
+ " in an 'INCLUDE: ... |' directive is not guaranteed to pick" .
+ " up the correct perl. The INCLUDE_COMMAND directive allows" .
+ " the use of \$^X as the currently running perl, see" .
+ " 'perldoc perlxs' for details.");
+ }
- PushXSStack( IsPipe => 1 );
+ $self->PushXSStack();
- $FH = Symbol::gensym();
+ $self->{FH} = Symbol::gensym();
- # If $^X is used in INCLUDE_COMMAND, we know it's supposed to be
- # the same perl interpreter as we're currently running
- s/^\s*\$\^X/$^X/;
+ # open the new file
+ open($self->{FH}, $_) or $self->death("Cannot open '$_': $!");
- # open the new file
- open ($FH, "-|", "$_")
- or death("Cannot run command '$_' to include its output: $!") ;
-
- print Q(<<"EOF");
+ print Q(<<"EOF");
#
-#/* INCLUDE_COMMAND: Including output of '$_' from '$filename' */
+#/* INCLUDE: Including '$_' from '$self->{filename}' */
#
EOF
- $filename = $_ ;
- $filepathname = $filename;
- $filepathname =~ s/\"/\\"/g;
+ $self->{filename} = $_;
+ $self->{filepathname} = ( $^O =~ /^mswin/i )
+ ? qq($self->{dir}/$self->{filename}) # See CPAN RT #61908: gcc doesn't like backslashes on win32?
+ : File::Spec->catfile($self->{dir}, $self->{filename});
- # Prime the pump by reading the first
- # non-blank line
+ # Prime the pump by reading the first
+ # non-blank line
- # skip leading blank lines
- while (<$FH>) {
- last unless /^\s*$/ ;
- }
+ # skip leading blank lines
+ while (readline($self->{FH})) {
+ last unless /^\s*$/;
+ }
- $lastline = $_ ;
- $lastline_no = $. ;
+ $self->{lastline} = $_;
+ $self->{lastline_no} = $.;
+}
+
+sub QuoteArgs {
+ my $cmd = shift;
+ my @args = split /\s+/, $cmd;
+ $cmd = shift @args;
+ for (@args) {
+ $_ = q(").$_.q(") if !/^\"/ && length($_) > 0;
}
+ return join (' ', ($cmd, @args));
+}
-sub PopFile()
- {
- return 0 unless $XSStack[-1]{type} eq 'file' ;
+sub INCLUDE_COMMAND_handler {
+ my $self = shift;
+ $_ = shift;
+ # the rest of the current line should contain a valid command
- my $data = pop @XSStack ;
- my $ThisFile = $filename ;
- my $isPipe = $data->{IsPipe};
+ trim_whitespace($_);
- -- $IncludedFiles{$filename}
- unless $isPipe ;
+ $_ = QuoteArgs($_) if $^O eq 'VMS';
- close $FH ;
+ $self->death("INCLUDE_COMMAND: command missing")
+ unless $_;
- $FH = $data->{Handle} ;
- # $filename is the leafname, which for some reason isused for diagnostic
- # messages, whereas $filepathname is the full pathname, and is used for
- # #line directives.
- $filename = $data->{Filename} ;
- $filepathname = $data->{Filepathname} ;
- $lastline = $data->{LastLine} ;
- $lastline_no = $data->{LastLineNo} ;
- @line = @{ $data->{Line} } ;
- @line_no = @{ $data->{LineNo} } ;
+ $self->death("INCLUDE_COMMAND: pipes are illegal")
+ if /^\s*\|/ or /\|\s*$/;
- if ($isPipe and $? ) {
- -- $lastline_no ;
- print STDERR "Error reading from pipe '$ThisFile': $! in $filename, line $lastline_no\n" ;
- exit 1 ;
- }
+ $self->PushXSStack( IsPipe => 1 );
- print Q(<<"EOF");
+ $self->{FH} = Symbol::gensym();
+
+ # If $^X is used in INCLUDE_COMMAND, we know it's supposed to be
+ # the same perl interpreter as we're currently running
+ s/^\s*\$\^X/$^X/;
+
+ # open the new file
+ open ($self->{FH}, "-|", $_)
+ or $self->death( $self, "Cannot run command '$_' to include its output: $!");
+
+ print Q(<<"EOF");
#
-#/* INCLUDE: Returning to '$filename' from '$ThisFile' */
+#/* INCLUDE_COMMAND: Including output of '$_' from '$self->{filename}' */
#
EOF
- return 1 ;
+ $self->{filename} = $_;
+ $self->{filepathname} = $self->{filename};
+ #$self->{filepathname} =~ s/\"/\\"/g; # Fails? See CPAN RT #53938: MinGW Broken after 2.21
+ $self->{filepathname} =~ s/\\/\\\\/g; # Works according to reporter of #53938
+
+ # Prime the pump by reading the first
+ # non-blank line
+
+ # skip leading blank lines
+ while (readline($self->{FH})) {
+ last unless /^\s*$/;
}
-sub ValidProtoString ($)
- {
- my($string) = @_ ;
+ $self->{lastline} = $_;
+ $self->{lastline_no} = $.;
+}
- if ( $string =~ /^$proto_re+$/ ) {
- return $string ;
- }
+sub PopFile {
+ my $self = shift;
- return 0 ;
- }
+ return 0 unless $self->{XSStack}->[-1]{type} eq 'file';
-sub C_string ($)
- {
- my($string) = @_ ;
+ my $data = pop @{ $self->{XSStack} };
+ my $ThisFile = $self->{filename};
+ my $isPipe = $data->{IsPipe};
- $string =~ s[\\][\\\\]g ;
- $string ;
- }
+ --$self->{IncludedFiles}->{$self->{filename}}
+ unless $isPipe;
-sub ProtoString ($)
- {
- my ($type) = @_ ;
+ close $self->{FH};
- $proto_letter{$type} or "\$" ;
+ $self->{FH} = $data->{Handle};
+ # $filename is the leafname, which for some reason isused for diagnostic
+ # messages, whereas $filepathname is the full pathname, and is used for
+ # #line directives.
+ $self->{filename} = $data->{Filename};
+ $self->{filepathname} = $data->{Filepathname};
+ $self->{lastline} = $data->{LastLine};
+ $self->{lastline_no} = $data->{LastLineNo};
+ @{ $self->{line} } = @{ $data->{Line} };
+ @{ $self->{line_no} } = @{ $data->{LineNo} };
+
+ if ($isPipe and $? ) {
+ --$self->{lastline_no};
+ print STDERR "Error reading from pipe '$ThisFile': $! in $self->{filename}, line $self->{lastline_no}\n" ;
+ exit 1;
}
-sub check_cpp {
- my @cpp = grep(/^\#\s*(?:if|e\w+)/, @line);
- if (@cpp) {
- my ($cpp, $cpplevel);
- for $cpp (@cpp) {
- if ($cpp =~ /^\#\s*if/) {
- $cpplevel++;
- } elsif (!$cpplevel) {
- Warn("Warning: #else/elif/endif without #if in this function");
- print STDERR " (precede it with a blank line if the matching #if is outside the function)\n"
- if $XSStack[-1]{type} eq 'if';
- return;
- } elsif ($cpp =~ /^\#\s*endif/) {
- $cpplevel--;
- }
- }
- Warn("Warning: #if without #endif in this function") if $cpplevel;
- }
+ print Q(<<"EOF");
+#
+#/* INCLUDE: Returning to '$self->{filename}' from '$ThisFile' */
+#
+EOF
+
+ return 1;
}
-
sub Q {
my($text) = @_;
$text =~ s/^#//gm;
@@ -1715,480 +1671,325 @@
$text;
}
-# Read next xsub into @line from ($lastline, <$FH>).
+# Read next xsub into @{ $self->{line} } from ($lastline, readline($self->{FH})).
sub fetch_para {
+ my $self = shift;
+
# parse paragraph
- death ("Error: Unterminated `#if/#ifdef/#ifndef'")
- if !defined $lastline && $XSStack[-1]{type} eq 'if';
- @line = ();
- @line_no = () ;
- return PopFile() if !defined $lastline;
+ $self->death("Error: Unterminated '#if/#ifdef/#ifndef'")
+ if !defined $self->{lastline} && $self->{XSStack}->[-1]{type} eq 'if';
+ @{ $self->{line} } = ();
+ @{ $self->{line_no} } = ();
+ return $self->PopFile() if !defined $self->{lastline};
- if ($lastline =~
+ if ($self->{lastline} =~
/^MODULE\s*=\s*([\w:]+)(?:\s+PACKAGE\s*=\s*([\w:]+))?(?:\s+PREFIX\s*=\s*(\S+))?\s*$/) {
- $Module = $1;
+ my $Module = $1;
$Package = defined($2) ? $2 : ''; # keep -w happy
- $Prefix = defined($3) ? $3 : ''; # keep -w happy
- $Prefix = quotemeta $Prefix ;
- ($Module_cname = $Module) =~ s/\W/_/g;
- ($Packid = $Package) =~ tr/:/_/;
- $Packprefix = $Package;
- $Packprefix .= "::" if $Packprefix ne "";
- $lastline = "";
+ $self->{Prefix} = defined($3) ? $3 : ''; # keep -w happy
+ $self->{Prefix} = quotemeta $self->{Prefix};
+ ($self->{Module_cname} = $Module) =~ s/\W/_/g;
+ ($self->{Packid} = $Package) =~ tr/:/_/;
+ $self->{Packprefix} = $Package;
+ $self->{Packprefix} .= "::" if $self->{Packprefix} ne "";
+ $self->{lastline} = "";
}
for (;;) {
# Skip embedded PODs
- while ($lastline =~ /^=/) {
- while ($lastline = <$FH>) {
- last if ($lastline =~ /^=cut\s*$/);
+ while ($self->{lastline} =~ /^=/) {
+ while ($self->{lastline} = readline($self->{FH})) {
+ last if ($self->{lastline} =~ /^=cut\s*$/);
}
- death ("Error: Unterminated pod") unless $lastline;
- $lastline = <$FH>;
- chomp $lastline;
- $lastline =~ s/^\s+$//;
+ $self->death("Error: Unterminated pod") unless $self->{lastline};
+ $self->{lastline} = readline($self->{FH});
+ chomp $self->{lastline};
+ $self->{lastline} =~ s/^\s+$//;
}
- if ($lastline !~ /^\s*#/ ||
- # CPP directives:
- # ANSI: if ifdef ifndef elif else endif define undef
- # line error pragma
- # gcc: warning include_next
- # obj-c: import
- # others: ident (gcc notes that some cpps have this one)
- $lastline =~ /^#[ \t]*(?:(?:if|ifn?def|elif|else|endif|define|undef|pragma|error|warning|line\s+\d+|ident)\b|(?:include(?:_next)?|import)\s*["<].*[>"])/) {
- last if $lastline =~ /^\S/ && @line && $line[-1] eq "";
- push(@line, $lastline);
- push(@line_no, $lastline_no) ;
+
+ # This chunk of code strips out (and parses) embedded TYPEMAP blocks
+ # which support a HEREdoc-alike block syntax.
+ # This is special cased from the usual paragraph-handler logic
+ # due to the HEREdoc-ish syntax.
+ if ($self->{lastline} =~ /^TYPEMAP\s*:\s*<<\s*(?:(["'])(.+?)\1|([^\s'"]+))\s*;?\s*$/) {
+ my $end_marker = quotemeta(defined($1) ? $2 : $3);
+ my @tmaplines;
+ while (1) {
+ $self->{lastline} = readline($self->{FH});
+ $self->death("Error: Unterminated typemap") if not defined $self->{lastline};
+ last if $self->{lastline} =~ /^$end_marker\s*$/;
+ push @tmaplines, $self->{lastline};
+ }
+
+ my $tmapcode = join "", @tmaplines;
+ my $tmap = ExtUtils::Typemaps->new(
+ string => $tmapcode,
+ lineno_offset => ($self->current_line_number()||0)+1,
+ fake_filename => $self->{filename},
+ );
+ $self->{typemap}->merge(typemap => $tmap, replace => 1);
+
+ $self->{lastline} = "";
}
+ if ($self->{lastline} !~ /^\s*#/ ||
+ # CPP directives:
+ # ANSI: if ifdef ifndef elif else endif define undef
+ # line error pragma
+ # gcc: warning include_next
+ # obj-c: import
+ # others: ident (gcc notes that some cpps have this one)
+ $self->{lastline} =~ /^#[ \t]*(?:(?:if|ifn?def|elif|else|endif|define|undef|pragma|error|warning|line\s+\d+|ident)\b|(?:include(?:_next)?|import)\s*["<].*[>"])/) {
+ last if $self->{lastline} =~ /^\S/ && @{ $self->{line} } && $self->{line}->[-1] eq "";
+ push(@{ $self->{line} }, $self->{lastline});
+ push(@{ $self->{line_no} }, $self->{lastline_no});
+ }
+
# Read next line and continuation lines
- last unless defined($lastline = <$FH>);
- $lastline_no = $.;
+ last unless defined($self->{lastline} = readline($self->{FH}));
+ $self->{lastline_no} = $.;
my $tmp_line;
- $lastline .= $tmp_line
- while ($lastline =~ /\\$/ && defined($tmp_line = <$FH>));
+ $self->{lastline} .= $tmp_line
+ while ($self->{lastline} =~ /\\$/ && defined($tmp_line = readline($self->{FH})));
- chomp $lastline;
- $lastline =~ s/^\s+$//;
+ chomp $self->{lastline};
+ $self->{lastline} =~ s/^\s+$//;
}
- pop(@line), pop(@line_no) while @line && $line[-1] eq "";
+ pop(@{ $self->{line} }), pop(@{ $self->{line_no} }) while @{ $self->{line} } && $self->{line}->[-1] eq "";
1;
}
sub output_init {
- local($type, $num, $var, $init, $name_printed) = @_;
- local($arg) = "ST(" . ($num - 1) . ")";
+ my $argsref = shift;
+ my ($type, $num, $var, $init, $printed_name) = (
+ $argsref->{type},
+ $argsref->{num},
+ $argsref->{var},
+ $argsref->{init},
+ $argsref->{printed_name}
+ );
+ my $arg = $num ? "ST(" . ($num - 1) . ")" : "/* not a parameter */";
if ( $init =~ /^=/ ) {
- if ($name_printed) {
+ if ($printed_name) {
eval qq/print " $init\\n"/;
- } else {
+ }
+ else {
eval qq/print "\\t$var $init\\n"/;
}
- warn $@ if $@;
- } else {
+ warn $@ if $@;
+ }
+ else {
if ( $init =~ s/^\+// && $num ) {
- &generate_init($type, $num, $var, $name_printed);
- } elsif ($name_printed) {
+ generate_init( {
+ type => $type,
+ num => $num,
+ var => $var,
+ printed_name => $printed_name,
+ } );
+ }
+ elsif ($printed_name) {
print ";\n";
$init =~ s/^;//;
- } else {
+ }
+ else {
eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
+ warn $@ if $@;
$init =~ s/^;//;
}
- $deferred .= eval qq/"\\n\\t$init\\n"/;
- warn $@ if $@;
+ $self->{deferred} .= eval qq/"\\n\\t$init\\n"/;
+ warn $@ if $@;
}
}
-sub Warn
- {
- # work out the line number
- my $line_no = $line_no[@line_no - @line -1] ;
+sub generate_init {
+ my $argsref = shift;
+ my ($type, $num, $var, $printed_name) = (
+ $argsref->{type},
+ $argsref->{num},
+ $argsref->{var},
+ $argsref->{printed_name},
+ );
+ my $arg = "ST(" . ($num - 1) . ")";
+ my ($argoff, $ntype);
+ $argoff = $num - 1;
- print STDERR "@_ in $filename, line $line_no\n" ;
- }
+ my $typemaps = $self->{typemap};
-sub blurt
- {
- Warn @_ ;
- $errors ++
- }
+ $type = tidy_type($type);
+ $self->report_typemap_failure($typemaps, $type), return
+ unless $typemaps->get_typemap(ctype => $type);
-sub death
- {
- Warn @_ ;
- exit 1 ;
- }
-
-sub generate_init {
- local($type, $num, $var) = @_;
- local($arg) = "ST(" . ($num - 1) . ")";
- local($argoff) = $num - 1;
- local($ntype);
- local($tk);
-
- $type = TidyType($type) ;
- blurt("Error: '$type' not in typemap"), return
- unless defined($type_kind{$type});
-
($ntype = $type) =~ s/\s*\*/Ptr/g;
+ my $subtype;
($subtype = $ntype) =~ s/(?:Array)?(?:Ptr)?$//;
- $tk = $type_kind{$type};
- $tk =~ s/OBJ$/REF/ if $func_name =~ /DESTROY$/;
- if ($tk eq 'T_PV' and exists $lengthof{$var}) {
- print "\t$var" unless $name_printed;
+ my $typem = $typemaps->get_typemap(ctype => $type);
+ my $xstype = $typem->xstype;
+ $xstype =~ s/OBJ$/REF/ if $func_name =~ /DESTROY$/;
+ if ($xstype eq 'T_PV' and exists $self->{lengthof}->{$var}) {
+ print "\t$var" unless $printed_name;
print " = ($type)SvPV($arg, STRLEN_length_of_$var);\n";
die "default value not supported with length(NAME) supplied"
- if defined $defaults{$var};
+ if defined $self->{defaults}->{$var};
return;
}
- $type =~ tr/:/_/ unless $hiertype;
- blurt("Error: No INPUT definition for type '$type', typekind '$type_kind{$type}' found"), return
- unless defined $input_expr{$tk} ;
- $expr = $input_expr{$tk};
+ $type =~ tr/:/_/ unless $self->{hiertype};
+
+ my $inputmap = $typemaps->get_inputmap(xstype => $xstype);
+ $self->blurt("Error: No INPUT definition for type '$type', typekind '" . $type->xstype . "' found"), return
+ unless defined $inputmap;
+
+ my $expr = $inputmap->cleaned_code;
+ # Note: This gruesome bit either needs heavy rethinking or documentation. I vote for the former. --Steffen
if ($expr =~ /DO_ARRAY_ELEM/) {
- blurt("Error: '$subtype' not in typemap"), return
- unless defined($type_kind{$subtype});
- blurt("Error: No INPUT definition for type '$subtype', typekind '$type_kind{$subtype}' found"), return
- unless defined $input_expr{$type_kind{$subtype}} ;
- $subexpr = $input_expr{$type_kind{$subtype}};
+ my $subtypemap = $typemaps->get_typemap(ctype => $subtype);
+ $self->report_typemap_failure($typemaps, $subtype), return
+ if not $subtypemap;
+ my $subinputmap = $typemaps->get_inputmap(xstype => $subtypemap->xstype);
+ $self->blurt("Error: No INPUT definition for type '$subtype', typekind '" . $subtypemap->xstype . "' found"), return
+ unless $subinputmap;
+ my $subexpr = $subinputmap->cleaned_code;
$subexpr =~ s/\$type/\$subtype/g;
$subexpr =~ s/ntype/subtype/g;
$subexpr =~ s/\$arg/ST(ix_$var)/g;
$subexpr =~ s/\n\t/\n\t\t/g;
$subexpr =~ s/is not of (.*\")/[arg %d] is not of $1, ix_$var + 1/g;
- $subexpr =~ s/\$var/${var}[ix_$var - $argoff]/;
+ $subexpr =~ s/\$var/${var}\[ix_$var - $argoff]/;
$expr =~ s/DO_ARRAY_ELEM/$subexpr/;
}
if ($expr =~ m#/\*.*scope.*\*/#i) { # "scope" in C comments
- $ScopeThisXSUB = 1;
+ $self->{ScopeThisXSUB} = 1;
}
- if (defined($defaults{$var})) {
+ if (defined($self->{defaults}->{$var})) {
$expr =~ s/(\t+)/$1 /g;
$expr =~ s/ /\t/g;
- if ($name_printed) {
+ if ($printed_name) {
print ";\n";
- } else {
+ }
+ else {
eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
+ warn $@ if $@;
}
- if ($defaults{$var} eq 'NO_INIT') {
- $deferred .= eval qq/"\\n\\tif (items >= $num) {\\n$expr;\\n\\t}\\n"/;
- } else {
- $deferred .= eval qq/"\\n\\tif (items < $num)\\n\\t $var = $defaults{$var};\\n\\telse {\\n$expr;\\n\\t}\\n"/;
+ if ($self->{defaults}->{$var} eq 'NO_INIT') {
+ $self->{deferred} .= eval qq/"\\n\\tif (items >= $num) {\\n$expr;\\n\\t}\\n"/;
}
- warn $@ if $@;
- } elsif ($ScopeThisXSUB or $expr !~ /^\s*\$var =/) {
- if ($name_printed) {
+ else {
+ $self->{deferred} .= eval qq/"\\n\\tif (items < $num)\\n\\t $var = $self->{defaults}->{$var};\\n\\telse {\\n$expr;\\n\\t}\\n"/;
+ }
+ warn $@ if $@;
+ }
+ elsif ($self->{ScopeThisXSUB} or $expr !~ /^\s*\$var =/) {
+ if ($printed_name) {
print ";\n";
- } else {
+ }
+ else {
eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
+ warn $@ if $@;
}
- $deferred .= eval qq/"\\n$expr;\\n"/;
- warn $@ if $@;
- } else {
+ $self->{deferred} .= eval qq/"\\n$expr;\\n"/;
+ warn $@ if $@;
+ }
+ else {
die "panic: do not know how to handle this branch for function pointers"
- if $name_printed;
+ if $printed_name;
eval qq/print "$expr;\\n"/;
- warn $@ if $@;
+ warn $@ if $@;
}
}
sub generate_output {
- local($type, $num, $var, $do_setmagic, $do_push) = @_;
- local($arg) = "ST(" . ($num - ($num != 0)) . ")";
- local($argoff) = $num - 1;
- local($ntype);
+ my $argsref = shift;
+ my ($type, $num, $var, $do_setmagic, $do_push) = (
+ $argsref->{type},
+ $argsref->{num},
+ $argsref->{var},
+ $argsref->{do_setmagic},
+ $argsref->{do_push}
+ );
+ my $arg = "ST(" . ($num - ($num != 0)) . ")";
+ my $ntype;
- $type = TidyType($type) ;
+ my $typemaps = $self->{typemap};
+
+ $type = tidy_type($type);
if ($type =~ /^array\(([^,]*),(.*)\)/) {
print "\t$arg = sv_newmortal();\n";
print "\tsv_setpvn($arg, (char *)$var, $2 * sizeof($1));\n";
print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
- } else {
- blurt("Error: '$type' not in typemap"), return
- unless defined($type_kind{$type});
- blurt("Error: No OUTPUT definition for type '$type', typekind '$type_kind{$type}' found"), return
- unless defined $output_expr{$type_kind{$type}} ;
+ }
+ else {
+ my $typemap = $typemaps->get_typemap(ctype => $type);
+ $self->report_typemap_failure($typemaps, $type), return
+ if not $typemap;
+ my $outputmap = $typemaps->get_outputmap(xstype => $typemap->xstype);
+ $self->blurt("Error: No OUTPUT definition for type '$type', typekind '" . $typemap->xstype . "' found"), return
+ unless $outputmap;
($ntype = $type) =~ s/\s*\*/Ptr/g;
$ntype =~ s/\(\)//g;
+ my $subtype;
($subtype = $ntype) =~ s/(?:Array)?(?:Ptr)?$//;
- $expr = $output_expr{$type_kind{$type}};
+
+ my $expr = $outputmap->cleaned_code;
if ($expr =~ /DO_ARRAY_ELEM/) {
- blurt("Error: '$subtype' not in typemap"), return
- unless defined($type_kind{$subtype});
- blurt("Error: No OUTPUT definition for type '$subtype', typekind '$type_kind{$subtype}' found"), return
- unless defined $output_expr{$type_kind{$subtype}} ;
- $subexpr = $output_expr{$type_kind{$subtype}};
+ my $subtypemap = $typemaps->get_typemap(ctype => $subtype);
+ $self->report_typemap_failure($typemaps, $subtype), return
+ if not $subtypemap;
+ my $suboutputmap = $typemaps->get_outputmap(xstype => $subtypemap->xstype);
+ $self->blurt("Error: No OUTPUT definition for type '$subtype', typekind '" . $subtypemap->xstype . "' found"), return
+ unless $suboutputmap;
+ my $subexpr = $suboutputmap->cleaned_code;
$subexpr =~ s/ntype/subtype/g;
$subexpr =~ s/\$arg/ST(ix_$var)/g;
- $subexpr =~ s/\$var/${var}[ix_$var]/g;
+ $subexpr =~ s/\$var/${var}\[ix_$var]/g;
$subexpr =~ s/\n\t/\n\t\t/g;
$expr =~ s/DO_ARRAY_ELEM\n/$subexpr/;
eval "print qq\a$expr\a";
- warn $@ if $@;
+ warn $@ if $@;
print "\t\tSvSETMAGIC(ST(ix_$var));\n" if $do_setmagic;
- } elsif ($var eq 'RETVAL') {
+ }
+ elsif ($var eq 'RETVAL') {
if ($expr =~ /^\t\$arg = new/) {
- # We expect that $arg has refcnt 1, so we need to
- # mortalize it.
- eval "print qq\a$expr\a";
- warn $@ if $@;
- print "\tsv_2mortal(ST($num));\n";
- print "\tSvSETMAGIC(ST($num));\n" if $do_setmagic;
- } elsif ($expr =~ /^\s*\$arg\s*=/) {
- # We expect that $arg has refcnt >=1, so we need
- # to mortalize it!
- eval "print qq\a$expr\a";
- warn $@ if $@;
- print "\tsv_2mortal(ST(0));\n";
- print "\tSvSETMAGIC(ST(0));\n" if $do_setmagic;
- } else {
- # Just hope that the entry would safely write it
- # over an already mortalized value. By
- # coincidence, something like $arg = &sv_undef
- # works too.
- print "\tST(0) = sv_newmortal();\n";
- eval "print qq\a$expr\a";
- warn $@ if $@;
- # new mortals don't have set magic
+ # We expect that $arg has refcnt 1, so we need to
+ # mortalize it.
+ eval "print qq\a$expr\a";
+ warn $@ if $@;
+ print "\tsv_2mortal(ST($num));\n";
+ print "\tSvSETMAGIC(ST($num));\n" if $do_setmagic;
}
- } elsif ($do_push) {
+ elsif ($expr =~ /^\s*\$arg\s*=/) {
+ # We expect that $arg has refcnt >=1, so we need
+ # to mortalize it!
+ eval "print qq\a$expr\a";
+ warn $@ if $@;
+ print "\tsv_2mortal(ST(0));\n";
+ print "\tSvSETMAGIC(ST(0));\n" if $do_setmagic;
+ }
+ else {
+ # Just hope that the entry would safely write it
+ # over an already mortalized value. By
+ # coincidence, something like $arg = &sv_undef
+ # works too.
+ print "\tST(0) = sv_newmortal();\n";
+ eval "print qq\a$expr\a";
+ warn $@ if $@;
+ # new mortals don't have set magic
+ }
+ }
+ elsif ($do_push) {
print "\tPUSHs(sv_newmortal());\n";
$arg = "ST($num)";
eval "print qq\a$expr\a";
- warn $@ if $@;
+ warn $@ if $@;
print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
- } elsif ($arg =~ /^ST\(\d+\)$/) {
+ }
+ elsif ($arg =~ /^ST\(\d+\)$/) {
eval "print qq\a$expr\a";
- warn $@ if $@;
+ warn $@ if $@;
print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
}
}
}
-sub map_type {
- my($type, $varname) = @_;
-
- # C++ has :: in types too so skip this
- $type =~ tr/:/_/ unless $hiertype;
- $type =~ s/^array\(([^,]*),(.*)\).*/$1 */s;
- if ($varname) {
- if ($varname && $type =~ / \( \s* \* (?= \s* \) ) /xg) {
- (substr $type, pos $type, 0) = " $varname ";
- } else {
- $type .= "\t$varname";
- }
- }
- $type;
-}
-
-
-#########################################################
-package
- ExtUtils::ParseXS::CountLines;
-use strict;
-use vars qw($SECTION_END_MARKER);
-
-sub TIEHANDLE {
- my ($class, $cfile, $fh) = @_;
- $cfile =~ s/\\/\\\\/g;
- $SECTION_END_MARKER = qq{#line --- "$cfile"};
-
- return bless {buffer => '',
- fh => $fh,
- line_no => 1,
- }, $class;
-}
-
-sub PRINT {
- my $self = shift;
- for (@_) {
- $self->{buffer} .= $_;
- while ($self->{buffer} =~ s/^([^\n]*\n)//) {
- my $line = $1;
- ++ $self->{line_no};
- $line =~ s|^\#line\s+---(?=\s)|#line $self->{line_no}|;
- print {$self->{fh}} $line;
- }
- }
-}
-
-sub PRINTF {
- my $self = shift;
- my $fmt = shift;
- $self->PRINT(sprintf($fmt, @_));
-}
-
-sub DESTROY {
- # Not necessary if we're careful to end with a "\n"
- my $self = shift;
- print {$self->{fh}} $self->{buffer};
-}
-
-sub UNTIE {
- # This sub does nothing, but is necessary for references to be released.
-}
-
-sub end_marker {
- return $SECTION_END_MARKER;
-}
-
-
1;
-__END__
-=head1 NAME
-
-ExtUtils::ParseXS - converts Perl XS code into C code
-
-=head1 SYNOPSIS
-
- use ExtUtils::ParseXS qw(process_file);
-
- process_file( filename => 'foo.xs' );
-
- process_file( filename => 'foo.xs',
- output => 'bar.c',
- 'C++' => 1,
- typemap => 'path/to/typemap',
- hiertype => 1,
- except => 1,
- prototypes => 1,
- versioncheck => 1,
- linenumbers => 1,
- optimize => 1,
- prototypes => 1,
- );
-=head1 DESCRIPTION
-
-C<ExtUtils::ParseXS> will compile XS code into C code by embedding the constructs
-necessary to let C functions manipulate Perl values and creates the glue
-necessary to let Perl access those functions. The compiler uses typemaps to
-determine how to map C function parameters and variables to Perl values.
-
-The compiler will search for typemap files called I<typemap>. It will use
-the following search path to find default typemaps, with the rightmost
-typemap taking precedence.
-
- ../../../typemap:../../typemap:../typemap:typemap
-
-=head1 EXPORT
-
-None by default. C<process_file()> may be exported upon request.
-
-
-=head1 FUNCTIONS
-
-=over 4
-
-=item process_xs()
-
-This function processes an XS file and sends output to a C file.
-Named parameters control how the processing is done. The following
-parameters are accepted:
-
-=over 4
-
-=item B<C++>
-
-Adds C<extern "C"> to the C code. Default is false.
-
-=item B<hiertype>
-
-Retains C<::> in type names so that C++ hierarchical types can be
-mapped. Default is false.
-
-=item B<except>
-
-Adds exception handling stubs to the C code. Default is false.
-
-=item B<typemap>
-
-Indicates that a user-supplied typemap should take precedence over the
-default typemaps. A single typemap may be specified as a string, or
-multiple typemaps can be specified in an array reference, with the
-last typemap having the highest precedence.
-
-=item B<prototypes>
-
-Generates prototype code for all xsubs. Default is false.
-
-=item B<versioncheck>
-
-Makes sure at run time that the object file (derived from the C<.xs>
-file) and the C<.pm> files have the same version number. Default is
-true.
-
-=item B<linenumbers>
-
-Adds C<#line> directives to the C output so error messages will look
-like they came from the original XS file. Default is true.
-
-=item B<optimize>
-
-Enables certain optimizations. The only optimization that is currently
-affected is the use of I<target>s by the output C code (see L<perlguts>).
-Not optimizing may significantly slow down the generated code, but this is the way
-B<xsubpp> of 5.005 and earlier operated. Default is to optimize.
-
-=item B<inout>
-
-Enable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST>
-declarations. Default is true.
-
-=item B<argtypes>
-
-Enable recognition of ANSI-like descriptions of function signature.
-Default is true.
-
-=item B<s>
-
-I have no clue what this does. Strips function prefixes?
-
-=back
-
-=item errors()
-
-This function returns the number of [a certain kind of] errors
-encountered during processing of the XS file.
-
-=back
-
-=head1 AUTHOR
-
-Based on xsubpp code, written by Larry Wall.
-
-Maintained by:
-
-=over 4
-
-=item *
-
-Ken Williams, <ken at mathforum.org>
-
-=item *
-
-David Golden, <dagolden at cpan.org>
-
-=back
-
-=head1 COPYRIGHT
-
-Copyright 2002-2009 by Ken Williams, David Golden and other contributors. All
-rights reserved.
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-Based on the ExtUtils::xsubpp code by Larry Wall and the Perl 5
-Porters, which was released under the same license terms.
-
-=head1 SEE ALSO
-
-L<perl>, ExtUtils::xsubpp, ExtUtils::MakeMaker, L<perlxs>, L<perlxstut>.
-
-=cut
+# vim: ts=2 sw=2 et:
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,161 @@
+=head1 NAME
+
+ExtUtils::ParseXS - converts Perl XS code into C code
+
+=head1 SYNOPSIS
+
+ use ExtUtils::ParseXS qw(process_file);
+
+ process_file( filename => 'foo.xs' );
+
+ process_file( filename => 'foo.xs',
+ output => 'bar.c',
+ 'C++' => 1,
+ typemap => 'path/to/typemap',
+ hiertype => 1,
+ except => 1,
+ prototypes => 1,
+ versioncheck => 1,
+ linenumbers => 1,
+ optimize => 1,
+ prototypes => 1,
+ );
+
+=head1 DESCRIPTION
+
+C<ExtUtils::ParseXS> will compile XS code into C code by embedding the constructs
+necessary to let C functions manipulate Perl values and creates the glue
+necessary to let Perl access those functions. The compiler uses typemaps to
+determine how to map C function parameters and variables to Perl values.
+
+The compiler will search for typemap files called I<typemap>. It will use
+the following search path to find default typemaps, with the rightmost
+typemap taking precedence.
+
+ ../../../typemap:../../typemap:../typemap:typemap
+
+=head1 EXPORT
+
+None by default. C<process_file()> may be exported upon request.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item process_file()
+
+This function processes an XS file and sends output to a C file.
+Named parameters control how the processing is done. The following
+parameters are accepted:
+
+=over 4
+
+=item B<C++>
+
+Adds C<extern "C"> to the C code. Default is false.
+
+=item B<hiertype>
+
+Retains C<::> in type names so that C++ hierarchical types can be
+mapped. Default is false.
+
+=item B<except>
+
+Adds exception handling stubs to the C code. Default is false.
+
+=item B<typemap>
+
+Indicates that a user-supplied typemap should take precedence over the
+default typemaps. A single typemap may be specified as a string, or
+multiple typemaps can be specified in an array reference, with the
+last typemap having the highest precedence.
+
+=item B<prototypes>
+
+Generates prototype code for all xsubs. Default is false.
+
+=item B<versioncheck>
+
+Makes sure at run time that the object file (derived from the C<.xs>
+file) and the C<.pm> files have the same version number. Default is
+true.
+
+=item B<linenumbers>
+
+Adds C<#line> directives to the C output so error messages will look
+like they came from the original XS file. Default is true.
+
+=item B<optimize>
+
+Enables certain optimizations. The only optimization that is currently
+affected is the use of I<target>s by the output C code (see L<perlguts>).
+Not optimizing may significantly slow down the generated code, but this is the way
+B<xsubpp> of 5.005 and earlier operated. Default is to optimize.
+
+=item B<inout>
+
+Enable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST>
+declarations. Default is true.
+
+=item B<argtypes>
+
+Enable recognition of ANSI-like descriptions of function signature.
+Default is true.
+
+=item B<s>
+
+I<Maintainer note:> I have no clue what this does. Strips function prefixes?
+
+=back
+
+=item errors()
+
+This function returns the number of [a certain kind of] errors
+encountered during processing of the XS file.
+
+=back
+
+=head1 AUTHOR
+
+Based on xsubpp code, written by Larry Wall.
+
+Maintained by:
+
+=over 4
+
+=item *
+
+Ken Williams, <ken at mathforum.org>
+
+=item *
+
+David Golden, <dagolden at cpan.org>
+
+=item *
+
+James Keenan, <jkeenan at cpan.org>
+
+=item *
+
+Steffen Mueller, <smueller at cpan.org>
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright 2002-2012 by Ken Williams, David Golden and other contributors. All
+rights reserved.
+
+This library is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+Based on the C<ExtUtils::xsubpp> code by Larry Wall and the Perl 5
+Porters, which was released under the same license terms.
+
+=head1 SEE ALSO
+
+L<perl>, ExtUtils::xsubpp, ExtUtils::MakeMaker, L<perlxs>, L<perlxstut>.
+
+=cut
+
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,1031 @@
+package ExtUtils::Typemaps;
+use 5.006001;
+use strict;
+use warnings;
+our $VERSION = '3.19';
+#use Carp qw(croak);
+
+require ExtUtils::ParseXS;
+require ExtUtils::ParseXS::Constants;
+require ExtUtils::Typemaps::InputMap;
+require ExtUtils::Typemaps::OutputMap;
+require ExtUtils::Typemaps::Type;
+
+=head1 NAME
+
+ExtUtils::Typemaps - Read/Write/Modify Perl/XS typemap files
+
+=head1 SYNOPSIS
+
+ # read/create file
+ my $typemap = ExtUtils::Typemaps->new(file => 'typemap');
+ # alternatively create an in-memory typemap
+ # $typemap = ExtUtils::Typemaps->new();
+ # alternatively create an in-memory typemap by parsing a string
+ # $typemap = ExtUtils::Typemaps->new(string => $sometypemap);
+
+ # add a mapping
+ $typemap->add_typemap(ctype => 'NV', xstype => 'T_NV');
+ $typemap->add_inputmap(
+ xstype => 'T_NV', code => '$var = ($type)SvNV($arg);'
+ );
+ $typemap->add_outputmap(
+ xstype => 'T_NV', code => 'sv_setnv($arg, (NV)$var);'
+ );
+ $typemap->add_string(string => $typemapstring);
+ # will be parsed and merged
+
+ # remove a mapping (same for remove_typemap and remove_outputmap...)
+ $typemap->remove_inputmap(xstype => 'SomeType');
+
+ # save a typemap to a file
+ $typemap->write(file => 'anotherfile.map');
+
+ # merge the other typemap into this one
+ $typemap->merge(typemap => $another_typemap);
+
+=head1 DESCRIPTION
+
+This module can read, modify, create and write Perl XS typemap files. If you don't know
+what a typemap is, please confer the L<perlxstut> and L<perlxs> manuals.
+
+The module is not entirely round-trip safe: For example it currently simply strips all comments.
+The order of entries in the maps is, however, preserved.
+
+We check for duplicate entries in the typemap, but do not check for missing
+C<TYPEMAP> entries for C<INPUTMAP> or C<OUTPUTMAP> entries since these might be hidden
+in a different typemap.
+
+=head1 METHODS
+
+=cut
+
+=head2 new
+
+Returns a new typemap object. Takes an optional C<file> parameter.
+If set, the given file will be read. If the file doesn't exist, an empty typemap
+is returned.
+
+Alternatively, if the C<string> parameter is given, the supplied
+string will be parsed instead of a file.
+
+=cut
+
+sub new {
+ my $class = shift;
+ my %args = @_;
+
+ if (defined $args{file} and defined $args{string}) {
+ die("Cannot handle both 'file' and 'string' arguments to constructor");
+ }
+
+ my $self = bless {
+ file => undef,
+ %args,
+ typemap_section => [],
+ typemap_lookup => {},
+ input_section => [],
+ input_lookup => {},
+ output_section => [],
+ output_lookup => {},
+ } => $class;
+
+ $self->_init();
+
+ return $self;
+}
+
+sub _init {
+ my $self = shift;
+ if (defined $self->{string}) {
+ $self->_parse(\($self->{string}), $self->{lineno_offset}, $self->{fake_filename});
+ delete $self->{string};
+ }
+ elsif (defined $self->{file} and -e $self->{file}) {
+ open my $fh, '<', $self->{file}
+ or die "Cannot open typemap file '"
+ . $self->{file} . "' for reading: $!";
+ local $/ = undef;
+ my $string = <$fh>;
+ $self->_parse(\$string, $self->{lineno_offset}, $self->{file});
+ }
+}
+
+=head2 file
+
+Get/set the file that the typemap is written to when the
+C<write> method is called.
+
+=cut
+
+sub file {
+ $_[0]->{file} = $_[1] if @_ > 1;
+ $_[0]->{file}
+}
+
+=head2 add_typemap
+
+Add a C<TYPEMAP> entry to the typemap.
+
+Required named arguments: The C<ctype> (e.g. C<ctype =E<gt> 'double'>)
+and the C<xstype> (e.g. C<xstype =E<gt> 'T_NV'>).
+
+Optional named arguments: C<replace =E<gt> 1> forces removal/replacement of
+existing C<TYPEMAP> entries of the same C<ctype>. C<skip =E<gt> 1>
+triggers a I<"first come first serve"> logic by which new entries that conflict
+with existing entries are silently ignored.
+
+As an alternative to the named parameters usage, you may pass in
+an C<ExtUtils::Typemaps::Type> object as first argument, a copy of which will be
+added to the typemap. In that case, only the C<replace> or C<skip> named parameters
+may be used after the object. Example:
+
+ $map->add_typemap($type_obj, replace => 1);
+
+=cut
+
+sub add_typemap {
+ my $self = shift;
+ my $type;
+ my %args;
+
+ if ((@_ % 2) == 1) {
+ my $orig = shift;
+ $type = $orig->new();
+ %args = @_;
+ }
+ else {
+ %args = @_;
+ my $ctype = $args{ctype};
+ die("Need ctype argument") if not defined $ctype;
+ my $xstype = $args{xstype};
+ die("Need xstype argument") if not defined $xstype;
+
+ $type = ExtUtils::Typemaps::Type->new(
+ xstype => $xstype,
+ 'prototype' => $args{'prototype'},
+ ctype => $ctype,
+ );
+ }
+
+ if ($args{skip} and $args{replace}) {
+ die("Cannot use both 'skip' and 'replace'");
+ }
+
+ if ($args{replace}) {
+ $self->remove_typemap(ctype => $type->ctype);
+ }
+ elsif ($args{skip}) {
+ return() if exists $self->{typemap_lookup}{$type->ctype};
+ }
+ else {
+ $self->validate(typemap_xstype => $type->xstype, ctype => $type->ctype);
+ }
+
+ # store
+ push @{$self->{typemap_section}}, $type;
+ # remember type for lookup, too.
+ $self->{typemap_lookup}{$type->tidy_ctype} = $#{$self->{typemap_section}};
+
+ return 1;
+}
+
+=head2 add_inputmap
+
+Add an C<INPUT> entry to the typemap.
+
+Required named arguments:
+The C<xstype> (e.g. C<xstype =E<gt> 'T_NV'>)
+and the C<code> to associate with it for input.
+
+Optional named arguments: C<replace =E<gt> 1> forces removal/replacement of
+existing C<INPUT> entries of the same C<xstype>. C<skip =E<gt> 1>
+triggers a I<"first come first serve"> logic by which new entries that conflict
+with existing entries are silently ignored.
+
+As an alternative to the named parameters usage, you may pass in
+an C<ExtUtils::Typemaps::InputMap> object as first argument, a copy of which will be
+added to the typemap. In that case, only the C<replace> or C<skip> named parameters
+may be used after the object. Example:
+
+ $map->add_inputmap($type_obj, replace => 1);
+
+=cut
+
+sub add_inputmap {
+ my $self = shift;
+ my $input;
+ my %args;
+
+ if ((@_ % 2) == 1) {
+ my $orig = shift;
+ $input = $orig->new();
+ %args = @_;
+ }
+ else {
+ %args = @_;
+ my $xstype = $args{xstype};
+ die("Need xstype argument") if not defined $xstype;
+ my $code = $args{code};
+ die("Need code argument") if not defined $code;
+
+ $input = ExtUtils::Typemaps::InputMap->new(
+ xstype => $xstype,
+ code => $code,
+ );
+ }
+
+ if ($args{skip} and $args{replace}) {
+ die("Cannot use both 'skip' and 'replace'");
+ }
+
+ if ($args{replace}) {
+ $self->remove_inputmap(xstype => $input->xstype);
+ }
+ elsif ($args{skip}) {
+ return() if exists $self->{input_lookup}{$input->xstype};
+ }
+ else {
+ $self->validate(inputmap_xstype => $input->xstype);
+ }
+
+ # store
+ push @{$self->{input_section}}, $input;
+ # remember type for lookup, too.
+ $self->{input_lookup}{$input->xstype} = $#{$self->{input_section}};
+
+ return 1;
+}
+
+=head2 add_outputmap
+
+Add an C<OUTPUT> entry to the typemap.
+Works exactly the same as C<add_inputmap>.
+
+=cut
+
+sub add_outputmap {
+ my $self = shift;
+ my $output;
+ my %args;
+
+ if ((@_ % 2) == 1) {
+ my $orig = shift;
+ $output = $orig->new();
+ %args = @_;
+ }
+ else {
+ %args = @_;
+ my $xstype = $args{xstype};
+ die("Need xstype argument") if not defined $xstype;
+ my $code = $args{code};
+ die("Need code argument") if not defined $code;
+
+ $output = ExtUtils::Typemaps::OutputMap->new(
+ xstype => $xstype,
+ code => $code,
+ );
+ }
+
+ if ($args{skip} and $args{replace}) {
+ die("Cannot use both 'skip' and 'replace'");
+ }
+
+ if ($args{replace}) {
+ $self->remove_outputmap(xstype => $output->xstype);
+ }
+ elsif ($args{skip}) {
+ return() if exists $self->{output_lookup}{$output->xstype};
+ }
+ else {
+ $self->validate(outputmap_xstype => $output->xstype);
+ }
+
+ # store
+ push @{$self->{output_section}}, $output;
+ # remember type for lookup, too.
+ $self->{output_lookup}{$output->xstype} = $#{$self->{output_section}};
+
+ return 1;
+}
+
+=head2 add_string
+
+Parses a string as a typemap and merge it into the typemap object.
+
+Required named argument: C<string> to specify the string to parse.
+
+=cut
+
+sub add_string {
+ my $self = shift;
+ my %args = @_;
+ die("Need 'string' argument") if not defined $args{string};
+
+ # no, this is not elegant.
+ my $other = ExtUtils::Typemaps->new(string => $args{string});
+ $self->merge(typemap => $other);
+}
+
+=head2 remove_typemap
+
+Removes a C<TYPEMAP> entry from the typemap.
+
+Required named argument: C<ctype> to specify the entry to remove from the typemap.
+
+Alternatively, you may pass a single C<ExtUtils::Typemaps::Type> object.
+
+=cut
+
+sub remove_typemap {
+ my $self = shift;
+ my $ctype;
+ if (@_ > 1) {
+ my %args = @_;
+ $ctype = $args{ctype};
+ die("Need ctype argument") if not defined $ctype;
+ $ctype = _tidy_type($ctype);
+ }
+ else {
+ $ctype = $_[0]->tidy_ctype;
+ }
+
+ return $self->_remove($ctype, $self->{typemap_section}, $self->{typemap_lookup});
+}
+
+=head2 remove_inputmap
+
+Removes an C<INPUT> entry from the typemap.
+
+Required named argument: C<xstype> to specify the entry to remove from the typemap.
+
+Alternatively, you may pass a single C<ExtUtils::Typemaps::InputMap> object.
+
+=cut
+
+sub remove_inputmap {
+ my $self = shift;
+ my $xstype;
+ if (@_ > 1) {
+ my %args = @_;
+ $xstype = $args{xstype};
+ die("Need xstype argument") if not defined $xstype;
+ }
+ else {
+ $xstype = $_[0]->xstype;
+ }
+
+ return $self->_remove($xstype, $self->{input_section}, $self->{input_lookup});
+}
+
+=head2 remove_inputmap
+
+Removes an C<OUTPUT> entry from the typemap.
+
+Required named argument: C<xstype> to specify the entry to remove from the typemap.
+
+Alternatively, you may pass a single C<ExtUtils::Typemaps::OutputMap> object.
+
+=cut
+
+sub remove_outputmap {
+ my $self = shift;
+ my $xstype;
+ if (@_ > 1) {
+ my %args = @_;
+ $xstype = $args{xstype};
+ die("Need xstype argument") if not defined $xstype;
+ }
+ else {
+ $xstype = $_[0]->xstype;
+ }
+
+ return $self->_remove($xstype, $self->{output_section}, $self->{output_lookup});
+}
+
+sub _remove {
+ my $self = shift;
+ my $rm = shift;
+ my $array = shift;
+ my $lookup = shift;
+
+ # Just fetch the index of the item from the lookup table
+ my $index = $lookup->{$rm};
+ return() if not defined $index;
+
+ # Nuke the item from storage
+ splice(@$array, $index, 1);
+
+ # Decrement the storage position of all items thereafter
+ foreach my $key (keys %$lookup) {
+ if ($lookup->{$key} > $index) {
+ $lookup->{$key}--;
+ }
+ }
+ return();
+}
+
+=head2 get_typemap
+
+Fetches an entry of the TYPEMAP section of the typemap.
+
+Mandatory named arguments: The C<ctype> of the entry.
+
+Returns the C<ExtUtils::Typemaps::Type>
+object for the entry if found.
+
+=cut
+
+sub get_typemap {
+ my $self = shift;
+ die("Need named parameters, got uneven number") if @_ % 2;
+
+ my %args = @_;
+ my $ctype = $args{ctype};
+ die("Need ctype argument") if not defined $ctype;
+ $ctype = _tidy_type($ctype);
+
+ my $index = $self->{typemap_lookup}{$ctype};
+ return() if not defined $index;
+ return $self->{typemap_section}[$index];
+}
+
+=head2 get_inputmap
+
+Fetches an entry of the INPUT section of the
+typemap.
+
+Mandatory named arguments: The C<xstype> of the
+entry or the C<ctype> of the typemap that can be used to find
+the C<xstype>. To wit, the following pieces of code
+are equivalent:
+
+ my $type = $typemap->get_typemap(ctype => $ctype)
+ my $input_map = $typemap->get_inputmap(xstype => $type->xstype);
+
+ my $input_map = $typemap->get_inputmap(ctype => $ctype);
+
+Returns the C<ExtUtils::Typemaps::InputMap>
+object for the entry if found.
+
+=cut
+
+sub get_inputmap {
+ my $self = shift;
+ die("Need named parameters, got uneven number") if @_ % 2;
+
+ my %args = @_;
+ my $xstype = $args{xstype};
+ my $ctype = $args{ctype};
+ die("Need xstype or ctype argument")
+ if not defined $xstype
+ and not defined $ctype;
+ die("Need xstype OR ctype arguments, not both")
+ if defined $xstype and defined $ctype;
+
+ if (defined $ctype) {
+ my $tm = $self->get_typemap(ctype => $ctype);
+ $xstype = $tm && $tm->xstype;
+ return() if not defined $xstype;
+ }
+
+ my $index = $self->{input_lookup}{$xstype};
+ return() if not defined $index;
+ return $self->{input_section}[$index];
+}
+
+=head2 get_outputmap
+
+Fetches an entry of the OUTPUT section of the
+typemap.
+
+Mandatory named arguments: The C<xstype> of the
+entry or the C<ctype> of the typemap that can be used to
+resolve the C<xstype>. (See above for an example.)
+
+Returns the C<ExtUtils::Typemaps::InputMap>
+object for the entry if found.
+
+=cut
+
+sub get_outputmap {
+ my $self = shift;
+ die("Need named parameters, got uneven number") if @_ % 2;
+
+ my %args = @_;
+ my $xstype = $args{xstype};
+ my $ctype = $args{ctype};
+ die("Need xstype or ctype argument")
+ if not defined $xstype
+ and not defined $ctype;
+ die("Need xstype OR ctype arguments, not both")
+ if defined $xstype and defined $ctype;
+
+ if (defined $ctype) {
+ my $tm = $self->get_typemap(ctype => $ctype);
+ $xstype = $tm && $tm->xstype;
+ return() if not defined $xstype;
+ }
+
+ my $index = $self->{output_lookup}{$xstype};
+ return() if not defined $index;
+ return $self->{output_section}[$index];
+}
+
+=head2 write
+
+Write the typemap to a file. Optionally takes a C<file> argument. If given, the
+typemap will be written to the specified file. If not, the typemap is written
+to the currently stored file name (see C<-E<gt>file> above, this defaults to the file
+it was read from if any).
+
+=cut
+
+sub write {
+ my $self = shift;
+ my %args = @_;
+ my $file = defined $args{file} ? $args{file} : $self->file();
+ die("write() needs a file argument (or set the file name of the typemap using the 'file' method)")
+ if not defined $file;
+
+ open my $fh, '>', $file
+ or die "Cannot open typemap file '$file' for writing: $!";
+ print $fh $self->as_string();
+ close $fh;
+}
+
+=head2 as_string
+
+Generates and returns the string form of the typemap.
+
+=cut
+
+sub as_string {
+ my $self = shift;
+ my $typemap = $self->{typemap_section};
+ my @code;
+ push @code, "TYPEMAP\n";
+ foreach my $entry (@$typemap) {
+ # type kind proto
+ # /^(.*?\S)\s+(\S+)\s*($ExtUtils::ParseXS::Constants::PrototypeRegexp*)$/o
+ push @code, $entry->ctype . "\t" . $entry->xstype
+ . ($entry->proto ne '' ? "\t".$entry->proto : '') . "\n";
+ }
+
+ my $input = $self->{input_section};
+ if (@$input) {
+ push @code, "\nINPUT\n";
+ foreach my $entry (@$input) {
+ push @code, $entry->xstype, "\n", $entry->code, "\n";
+ }
+ }
+
+ my $output = $self->{output_section};
+ if (@$output) {
+ push @code, "\nOUTPUT\n";
+ foreach my $entry (@$output) {
+ push @code, $entry->xstype, "\n", $entry->code, "\n";
+ }
+ }
+ return join '', @code;
+}
+
+=head2 as_embedded_typemap
+
+Generates and returns the string form of the typemap with the
+appropriate prefix around it for verbatim inclusion into an
+XS file as an embedded typemap. This will return a string like
+
+ TYPEMAP: <<END_OF_TYPEMAP
+ ... typemap here (see as_string) ...
+ END_OF_TYPEMAP
+
+The method takes care not to use a HERE-doc end marker that
+appears in the typemap string itself.
+
+=cut
+
+sub as_embedded_typemap {
+ my $self = shift;
+ my $string = $self->as_string;
+
+ my @ident_cand = qw(END_TYPEMAP END_OF_TYPEMAP END);
+ my $icand = 0;
+ my $cand_suffix = "";
+ while ($string =~ /^\Q$ident_cand[$icand]$cand_suffix\E\s*$/m) {
+ $icand++;
+ if ($icand == @ident_cand) {
+ $icand = 0;
+ ++$cand_suffix;
+ }
+ }
+
+ my $marker = "$ident_cand[$icand]$cand_suffix";
+ return "TYPEMAP: <<$marker;\n$string\n$marker\n";
+}
+
+=head2 merge
+
+Merges a given typemap into the object. Note that a failed merge
+operation leaves the object in an inconsistent state so clone it if necessary.
+
+Mandatory named arguments: Either C<typemap =E<gt> $another_typemap_obj>
+or C<file =E<gt> $path_to_typemap_file> but not both.
+
+Optional arguments: C<replace =E<gt> 1> to force replacement
+of existing typemap entries without warning or C<skip =E<gt> 1>
+to skip entries that exist already in the typemap.
+
+=cut
+
+sub merge {
+ my $self = shift;
+ my %args = @_;
+
+ if (exists $args{typemap} and exists $args{file}) {
+ die("Need {file} OR {typemap} argument. Not both!");
+ }
+ elsif (not exists $args{typemap} and not exists $args{file}) {
+ die("Need {file} or {typemap} argument!");
+ }
+
+ my @params;
+ push @params, 'replace' => $args{replace} if exists $args{replace};
+ push @params, 'skip' => $args{skip} if exists $args{skip};
+
+ my $typemap = $args{typemap};
+ if (not defined $typemap) {
+ $typemap = ref($self)->new(file => $args{file}, @params);
+ }
+
+ # FIXME breaking encapsulation. Add accessor code.
+ foreach my $entry (@{$typemap->{typemap_section}}) {
+ $self->add_typemap( $entry, @params );
+ }
+
+ foreach my $entry (@{$typemap->{input_section}}) {
+ $self->add_inputmap( $entry, @params );
+ }
+
+ foreach my $entry (@{$typemap->{output_section}}) {
+ $self->add_outputmap( $entry, @params );
+ }
+
+ return 1;
+}
+
+=head2 is_empty
+
+Returns a bool indicating whether this typemap is entirely empty.
+
+=cut
+
+sub is_empty {
+ my $self = shift;
+
+ return @{ $self->{typemap_section} } == 0
+ && @{ $self->{input_section} } == 0
+ && @{ $self->{output_section} } == 0;
+}
+
+=head2 list_mapped_ctypes
+
+Returns a list of the C types that are mappable by
+this typemap object.
+
+=cut
+
+sub list_mapped_ctypes {
+ my $self = shift;
+ return sort keys %{ $self->{typemap_lookup} };
+}
+
+=head2 _get_typemap_hash
+
+Returns a hash mapping the C types to the XS types:
+
+ {
+ 'char **' => 'T_PACKEDARRAY',
+ 'bool_t' => 'T_IV',
+ 'AV *' => 'T_AVREF',
+ 'InputStream' => 'T_IN',
+ 'double' => 'T_DOUBLE',
+ # ...
+ }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_typemap_hash {
+ my $self = shift;
+ my $lookup = $self->{typemap_lookup};
+ my $storage = $self->{typemap_section};
+
+ my %rv;
+ foreach my $ctype (keys %$lookup) {
+ $rv{$ctype} = $storage->[ $lookup->{$ctype} ]->xstype;
+ }
+
+ return \%rv;
+}
+
+=head2 _get_inputmap_hash
+
+Returns a hash mapping the XS types (identifiers) to the
+corresponding INPUT code:
+
+ {
+ 'T_CALLBACK' => ' $var = make_perl_cb_$type($arg)
+ ',
+ 'T_OUT' => ' $var = IoOFP(sv_2io($arg))
+ ',
+ 'T_REF_IV_PTR' => ' if (sv_isa($arg, \\"${ntype}\\")) {
+ # ...
+ }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_inputmap_hash {
+ my $self = shift;
+ my $lookup = $self->{input_lookup};
+ my $storage = $self->{input_section};
+
+ my %rv;
+ foreach my $xstype (keys %$lookup) {
+ $rv{$xstype} = $storage->[ $lookup->{$xstype} ]->code;
+
+ # Squash trailing whitespace to one line break
+ # This isn't strictly necessary, but makes the output more similar
+ # to the original ExtUtils::ParseXS.
+ $rv{$xstype} =~ s/\s*\z/\n/;
+ }
+
+ return \%rv;
+}
+
+
+=head2 _get_outputmap_hash
+
+Returns a hash mapping the XS types (identifiers) to the
+corresponding OUTPUT code:
+
+ {
+ 'T_CALLBACK' => ' sv_setpvn($arg, $var.context.value().chp(),
+ $var.context.value().size());
+ ',
+ 'T_OUT' => ' {
+ GV *gv = newGVgen("$Package");
+ if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
+ sv_setsv(
+ $arg,
+ sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1))
+ );
+ else
+ $arg = &PL_sv_undef;
+ }
+ ',
+ # ...
+ }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_outputmap_hash {
+ my $self = shift;
+ my $lookup = $self->{output_lookup};
+ my $storage = $self->{output_section};
+
+ my %rv;
+ foreach my $xstype (keys %$lookup) {
+ $rv{$xstype} = $storage->[ $lookup->{$xstype} ]->code;
+
+ # Squash trailing whitespace to one line break
+ # This isn't strictly necessary, but makes the output more similar
+ # to the original ExtUtils::ParseXS.
+ $rv{$xstype} =~ s/\s*\z/\n/;
+ }
+
+ return \%rv;
+}
+
+=head2 _get_prototype_hash
+
+Returns a hash mapping the C types of the typemap to their
+corresponding prototypes.
+
+ {
+ 'char **' => '$',
+ 'bool_t' => '$',
+ 'AV *' => '$',
+ 'InputStream' => '$',
+ 'double' => '$',
+ # ...
+ }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_prototype_hash {
+ my $self = shift;
+ my $lookup = $self->{typemap_lookup};
+ my $storage = $self->{typemap_section};
+
+ my %rv;
+ foreach my $ctype (keys %$lookup) {
+ $rv{$ctype} = $storage->[ $lookup->{$ctype} ]->proto || '$';
+ }
+
+ return \%rv;
+}
+
+
+
+# make sure that the provided types wouldn't collide with what's
+# in the object already.
+sub validate {
+ my $self = shift;
+ my %args = @_;
+
+ if ( exists $args{ctype}
+ and exists $self->{typemap_lookup}{_tidy_type($args{ctype})} )
+ {
+ die("Multiple definition of ctype '$args{ctype}' in TYPEMAP section");
+ }
+
+ if ( exists $args{inputmap_xstype}
+ and exists $self->{input_lookup}{$args{inputmap_xstype}} )
+ {
+ die("Multiple definition of xstype '$args{inputmap_xstype}' in INPUTMAP section");
+ }
+
+ if ( exists $args{outputmap_xstype}
+ and exists $self->{output_lookup}{$args{outputmap_xstype}} )
+ {
+ die("Multiple definition of xstype '$args{outputmap_xstype}' in OUTPUTMAP section");
+ }
+
+ return 1;
+}
+
+sub _parse {
+ my $self = shift;
+ my $stringref = shift;
+ my $lineno_offset = shift;
+ $lineno_offset = 0 if not defined $lineno_offset;
+ my $filename = shift;
+ $filename = '<string>' if not defined $filename;
+
+ my $replace = $self->{replace};
+ my $skip = $self->{skip};
+ die "Can only replace OR skip" if $replace and $skip;
+ my @add_params;
+ push @add_params, replace => 1 if $replace;
+ push @add_params, skip => 1 if $skip;
+
+ # TODO comments should round-trip, currently ignoring
+ # TODO order of sections, multiple sections of same type
+ # Heavily influenced by ExtUtils::ParseXS
+ my $section = 'typemap';
+ my $lineno = $lineno_offset;
+ my $junk = "";
+ my $current = \$junk;
+ my @input_expr;
+ my @output_expr;
+ while ($$stringref =~ /^(.*)$/gcm) {
+ local $_ = $1;
+ ++$lineno;
+ chomp;
+ next if /^\s*#/;
+ if (/^INPUT\s*$/) {
+ $section = 'input';
+ $current = \$junk;
+ next;
+ }
+ elsif (/^OUTPUT\s*$/) {
+ $section = 'output';
+ $current = \$junk;
+ next;
+ }
+ elsif (/^TYPEMAP\s*$/) {
+ $section = 'typemap';
+ $current = \$junk;
+ next;
+ }
+
+ if ($section eq 'typemap') {
+ my $line = $_;
+ s/^\s+//; s/\s+$//;
+ next if $_ eq '' or /^#/;
+ my($type, $kind, $proto) = /^(.*?\S)\s+(\S+)\s*($ExtUtils::ParseXS::Constants::PrototypeRegexp*)$/o
+ or warn("Warning: File '$filename' Line $lineno '$line' TYPEMAP entry needs 2 or 3 columns\n"),
+ next;
+ # prototype defaults to '$'
+ $proto = '$' unless $proto;
+ warn("Warning: File '$filename' Line $lineno '$line' Invalid prototype '$proto'\n")
+ unless _valid_proto_string($proto);
+ $self->add_typemap(
+ ExtUtils::Typemaps::Type->new(
+ xstype => $kind, proto => $proto, ctype => $type
+ ),
+ @add_params
+ );
+ } elsif (/^\s/) {
+ s/\s+$//;
+ $$current .= $$current eq '' ? $_ : "\n".$_;
+ } elsif ($_ eq '') {
+ next;
+ } elsif ($section eq 'input') {
+ s/\s+$//;
+ push @input_expr, {xstype => $_, code => ''};
+ $current = \$input_expr[-1]{code};
+ } else { # output section
+ s/\s+$//;
+ push @output_expr, {xstype => $_, code => ''};
+ $current = \$output_expr[-1]{code};
+ }
+
+ } # end while lines
+
+ foreach my $inexpr (@input_expr) {
+ $self->add_inputmap( ExtUtils::Typemaps::InputMap->new(%$inexpr), @add_params );
+ }
+ foreach my $outexpr (@output_expr) {
+ $self->add_outputmap( ExtUtils::Typemaps::OutputMap->new(%$outexpr), @add_params );
+ }
+
+ return 1;
+}
+
+# taken from ExtUtils::ParseXS
+sub _tidy_type {
+ local $_ = shift;
+
+ # rationalise any '*' by joining them into bunches and removing whitespace
+ s#\s*(\*+)\s*#$1#g;
+ s#(\*+)# $1 #g ;
+
+ # trim leading & trailing whitespace
+ s/^\s+//; s/\s+$//;
+
+ # change multiple whitespace into a single space
+ s/\s+/ /g;
+
+ $_;
+}
+
+
+# taken from ExtUtils::ParseXS
+sub _valid_proto_string {
+ my $string = shift;
+ if ($string =~ /^$ExtUtils::ParseXS::Constants::PrototypeRegexp+$/o) {
+ return $string;
+ }
+
+ return 0 ;
+}
+
+# taken from ExtUtils::ParseXS (C_string)
+sub _escape_backslashes {
+ my $string = shift;
+ $string =~ s[\\][\\\\]g;
+ $string;
+}
+
+=head1 CAVEATS
+
+Inherits some evil code from C<ExtUtils::ParseXS>.
+
+=head1 SEE ALSO
+
+The parser is heavily inspired from the one in L<ExtUtils::ParseXS>.
+
+For details on typemaps: L<perlxstut>, L<perlxs>.
+
+=head1 AUTHOR
+
+Steffen Mueller C<<smueller at cpan.org>>
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009, 2010, 2011, 2012 Steffen Mueller
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+1;
+
Modified: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,23 @@
-#!./miniperl
+#!perl
+use 5.006;
+use strict;
+eval {
+ require ExtUtils::ParseXS;
+ ExtUtils::ParseXS->import(
+ qw(
+ process_file
+ report_error_count
+ )
+ );
+ 1;
+}
+or do {
+ my $err = $@ || 'Zombie error';
+ my $v = $ExtUtils::ParseXS::VERSION;
+ $v = '<undef>' if not defined $v;
+ die "Failed to load or import from ExtUtils::ParseXS (version $v). Please check that ExtUtils::ParseXS is installed correctly and that the newest version will be found in your \@INC path: $err";
+};
-require 5.002;
-use ExtUtils::ParseXS qw(process_file);
use Getopt::Long;
my %args = ();
@@ -38,7 +54,7 @@
$args{filename} = shift @ARGV;
process_file(%args);
-exit( ExtUtils::ParseXS::errors() ? 1 : 0 );
+exit( report_error_count() ? 1 : 0 );
__END__
@@ -52,7 +68,8 @@
=head1 DESCRIPTION
-This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>.
+This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>
+or by L<Module::Build> or other Perl module build tools.
I<xsubpp> will compile XS code into C code by embedding the constructs
necessary to let C functions manipulate Perl values and creates the glue
@@ -110,7 +127,7 @@
=item B<-nolinenumbers>
-Prevents the inclusion of `#line' directives in the output.
+Prevents the inclusion of '#line' directives in the output.
=item B<-nooptimize>
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxs.pod (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/lib/perlxs.pod)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxs.pod (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxs.pod 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,2123 @@
+=head1 NAME
+
+perlxs - XS language reference manual
+
+=head1 DESCRIPTION
+
+=head2 Introduction
+
+XS is an interface description file format used to create an extension
+interface between Perl and C code (or a C library) which one wishes
+to use with Perl. The XS interface is combined with the library to
+create a new library which can then be either dynamically loaded
+or statically linked into perl. The XS interface description is
+written in the XS language and is the core component of the Perl
+extension interface.
+
+An B<XSUB> forms the basic unit of the XS interface. After compilation
+by the B<xsubpp> compiler, each XSUB amounts to a C function definition
+which will provide the glue between Perl calling conventions and C
+calling conventions.
+
+The glue code pulls the arguments from the Perl stack, converts these
+Perl values to the formats expected by a C function, call this C function,
+transfers the return values of the C function back to Perl.
+Return values here may be a conventional C return value or any C
+function arguments that may serve as output parameters. These return
+values may be passed back to Perl either by putting them on the
+Perl stack, or by modifying the arguments supplied from the Perl side.
+
+The above is a somewhat simplified view of what really happens. Since
+Perl allows more flexible calling conventions than C, XSUBs may do much
+more in practice, such as checking input parameters for validity,
+throwing exceptions (or returning undef/empty list) if the return value
+from the C function indicates failure, calling different C functions
+based on numbers and types of the arguments, providing an object-oriented
+interface, etc.
+
+Of course, one could write such glue code directly in C. However, this
+would be a tedious task, especially if one needs to write glue for
+multiple C functions, and/or one is not familiar enough with the Perl
+stack discipline and other such arcana. XS comes to the rescue here:
+instead of writing this glue C code in long-hand, one can write
+a more concise short-hand I<description> of what should be done by
+the glue, and let the XS compiler B<xsubpp> handle the rest.
+
+The XS language allows one to describe the mapping between how the C
+routine is used, and how the corresponding Perl routine is used. It
+also allows creation of Perl routines which are directly translated to
+C code and which are not related to a pre-existing C function. In cases
+when the C interface coincides with the Perl interface, the XSUB
+declaration is almost identical to a declaration of a C function (in K&R
+style). In such circumstances, there is another tool called C<h2xs>
+that is able to translate an entire C header file into a corresponding
+XS file that will provide glue to the functions/macros described in
+the header file.
+
+The XS compiler is called B<xsubpp>. This compiler creates
+the constructs necessary to let an XSUB manipulate Perl values, and
+creates the glue necessary to let Perl call the XSUB. The compiler
+uses B<typemaps> to determine how to map C function parameters
+and output values to Perl values and back. The default typemap
+(which comes with Perl) handles many common C types. A supplementary
+typemap may also be needed to handle any special structures and types
+for the library being linked. For more information on typemaps,
+see L<perlxstypemap>.
+
+A file in XS format starts with a C language section which goes until the
+first C<MODULE =Z<>> directive. Other XS directives and XSUB definitions
+may follow this line. The "language" used in this part of the file
+is usually referred to as the XS language. B<xsubpp> recognizes and
+skips POD (see L<perlpod>) in both the C and XS language sections, which
+allows the XS file to contain embedded documentation.
+
+See L<perlxstut> for a tutorial on the whole extension creation process.
+
+Note: For some extensions, Dave Beazley's SWIG system may provide a
+significantly more convenient mechanism for creating the extension
+glue code. See L<http://www.swig.org/> for more information.
+
+=head2 On The Road
+
+Many of the examples which follow will concentrate on creating an interface
+between Perl and the ONC+ RPC bind library functions. The rpcb_gettime()
+function is used to demonstrate many features of the XS language. This
+function has two parameters; the first is an input parameter and the second
+is an output parameter. The function also returns a status value.
+
+ bool_t rpcb_gettime(const char *host, time_t *timep);
+
+From C this function will be called with the following
+statements.
+
+ #include <rpc/rpc.h>
+ bool_t status;
+ time_t timep;
+ status = rpcb_gettime( "localhost", &timep );
+
+If an XSUB is created to offer a direct translation between this function
+and Perl, then this XSUB will be used from Perl with the following code.
+The $status and $timep variables will contain the output of the function.
+
+ use RPC;
+ $status = rpcb_gettime( "localhost", $timep );
+
+The following XS file shows an XS subroutine, or XSUB, which
+demonstrates one possible interface to the rpcb_gettime()
+function. This XSUB represents a direct translation between
+C and Perl and so preserves the interface even from Perl.
+This XSUB will be invoked from Perl with the usage shown
+above. Note that the first three #include statements, for
+C<EXTERN.h>, C<perl.h>, and C<XSUB.h>, will always be present at the
+beginning of an XS file. This approach and others will be
+expanded later in this document.
+
+ #include "EXTERN.h"
+ #include "perl.h"
+ #include "XSUB.h"
+ #include <rpc/rpc.h>
+
+ MODULE = RPC PACKAGE = RPC
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep
+ OUTPUT:
+ timep
+
+Any extension to Perl, including those containing XSUBs,
+should have a Perl module to serve as the bootstrap which
+pulls the extension into Perl. This module will export the
+extension's functions and variables to the Perl program and
+will cause the extension's XSUBs to be linked into Perl.
+The following module will be used for most of the examples
+in this document and should be used from Perl with the C<use>
+command as shown earlier. Perl modules are explained in
+more detail later in this document.
+
+ package RPC;
+
+ require Exporter;
+ require DynaLoader;
+ @ISA = qw(Exporter DynaLoader);
+ @EXPORT = qw( rpcb_gettime );
+
+ bootstrap RPC;
+ 1;
+
+Throughout this document a variety of interfaces to the rpcb_gettime()
+XSUB will be explored. The XSUBs will take their parameters in different
+orders or will take different numbers of parameters. In each case the
+XSUB is an abstraction between Perl and the real C rpcb_gettime()
+function, and the XSUB must always ensure that the real rpcb_gettime()
+function is called with the correct parameters. This abstraction will
+allow the programmer to create a more Perl-like interface to the C
+function.
+
+=head2 The Anatomy of an XSUB
+
+The simplest XSUBs consist of 3 parts: a description of the return
+value, the name of the XSUB routine and the names of its arguments,
+and a description of types or formats of the arguments.
+
+The following XSUB allows a Perl program to access a C library function
+called sin(). The XSUB will imitate the C function which takes a single
+argument and returns a single value.
+
+ double
+ sin(x)
+ double x
+
+Optionally, one can merge the description of types and the list of
+argument names, rewriting this as
+
+ double
+ sin(double x)
+
+This makes this XSUB look similar to an ANSI C declaration. An optional
+semicolon is allowed after the argument list, as in
+
+ double
+ sin(double x);
+
+Parameters with C pointer types can have different semantic: C functions
+with similar declarations
+
+ bool string_looks_as_a_number(char *s);
+ bool make_char_uppercase(char *c);
+
+are used in absolutely incompatible manner. Parameters to these functions
+could be described B<xsubpp> like this:
+
+ char * s
+ char &c
+
+Both these XS declarations correspond to the C<char*> C type, but they have
+different semantics, see L<"The & Unary Operator">.
+
+It is convenient to think that the indirection operator
+C<*> should be considered as a part of the type and the address operator C<&>
+should be considered part of the variable. See L<perlxstypemap>
+for more info about handling qualifiers and unary operators in C types.
+
+The function name and the return type must be placed on
+separate lines and should be flush left-adjusted.
+
+ INCORRECT CORRECT
+
+ double sin(x) double
+ double x sin(x)
+ double x
+
+The rest of the function description may be indented or left-adjusted. The
+following example shows a function with its body left-adjusted. Most
+examples in this document will indent the body for better readability.
+
+ CORRECT
+
+ double
+ sin(x)
+ double x
+
+More complicated XSUBs may contain many other sections. Each section of
+an XSUB starts with the corresponding keyword, such as INIT: or CLEANUP:.
+However, the first two lines of an XSUB always contain the same data:
+descriptions of the return type and the names of the function and its
+parameters. Whatever immediately follows these is considered to be
+an INPUT: section unless explicitly marked with another keyword.
+(See L<The INPUT: Keyword>.)
+
+An XSUB section continues until another section-start keyword is found.
+
+=head2 The Argument Stack
+
+The Perl argument stack is used to store the values which are
+sent as parameters to the XSUB and to store the XSUB's
+return value(s). In reality all Perl functions (including non-XSUB
+ones) keep their values on this stack all the same time, each limited
+to its own range of positions on the stack. In this document the
+first position on that stack which belongs to the active
+function will be referred to as position 0 for that function.
+
+XSUBs refer to their stack arguments with the macro B<ST(x)>, where I<x>
+refers to a position in this XSUB's part of the stack. Position 0 for that
+function would be known to the XSUB as ST(0). The XSUB's incoming
+parameters and outgoing return values always begin at ST(0). For many
+simple cases the B<xsubpp> compiler will generate the code necessary to
+handle the argument stack by embedding code fragments found in the
+typemaps. In more complex cases the programmer must supply the code.
+
+=head2 The RETVAL Variable
+
+The RETVAL variable is a special C variable that is declared automatically
+for you. The C type of RETVAL matches the return type of the C library
+function. The B<xsubpp> compiler will declare this variable in each XSUB
+with non-C<void> return type. By default the generated C function
+will use RETVAL to hold the return value of the C library function being
+called. In simple cases the value of RETVAL will be placed in ST(0) of
+the argument stack where it can be received by Perl as the return value
+of the XSUB.
+
+If the XSUB has a return type of C<void> then the compiler will
+not declare a RETVAL variable for that function. When using
+a PPCODE: section no manipulation of the RETVAL variable is required, the
+section may use direct stack manipulation to place output values on the stack.
+
+If PPCODE: directive is not used, C<void> return value should be used
+only for subroutines which do not return a value, I<even if> CODE:
+directive is used which sets ST(0) explicitly.
+
+Older versions of this document recommended to use C<void> return
+value in such cases. It was discovered that this could lead to
+segfaults in cases when XSUB was I<truly> C<void>. This practice is
+now deprecated, and may be not supported at some future version. Use
+the return value C<SV *> in such cases. (Currently C<xsubpp> contains
+some heuristic code which tries to disambiguate between "truly-void"
+and "old-practice-declared-as-void" functions. Hence your code is at
+mercy of this heuristics unless you use C<SV *> as return value.)
+
+=head2 Returning SVs, AVs and HVs through RETVAL
+
+When you're using RETVAL to return an C<SV *>, there's some magic
+going on behind the scenes that should be mentioned. When you're
+manipulating the argument stack using the ST(x) macro, for example,
+you usually have to pay special attention to reference counts. (For
+more about reference counts, see L<perlguts>.) To make your life
+easier, the typemap file automatically makes C<RETVAL> mortal when
+you're returning an C<SV *>. Thus, the following two XSUBs are more
+or less equivalent:
+
+ void
+ alpha()
+ PPCODE:
+ ST(0) = newSVpv("Hello World",0);
+ sv_2mortal(ST(0));
+ XSRETURN(1);
+
+ SV *
+ beta()
+ CODE:
+ RETVAL = newSVpv("Hello World",0);
+ OUTPUT:
+ RETVAL
+
+This is quite useful as it usually improves readability. While
+this works fine for an C<SV *>, it's unfortunately not as easy
+to have C<AV *> or C<HV *> as a return value. You I<should> be
+able to write:
+
+ AV *
+ array()
+ CODE:
+ RETVAL = newAV();
+ /* do something with RETVAL */
+ OUTPUT:
+ RETVAL
+
+But due to an unfixable bug (fixing it would break lots of existing
+CPAN modules) in the typemap file, the reference count of the C<AV *>
+is not properly decremented. Thus, the above XSUB would leak memory
+whenever it is being called. The same problem exists for C<HV *>,
+C<CV *>, and C<SVREF> (which indicates a scalar reference, not
+a general C<SV *>).
+In XS code on perls starting with perl 5.16, you can override the
+typemaps for any of these types with a version that has proper
+handling of refcounts. In your C<TYPEMAP> section, do
+
+ AV* T_AVREF_REFCOUNT_FIXED
+
+to get the repaired variant. For backward compatibility with older
+versions of perl, you can instead decrement the reference count
+manually when you're returning one of the aforementioned
+types using C<sv_2mortal>:
+
+ AV *
+ array()
+ CODE:
+ RETVAL = newAV();
+ sv_2mortal((SV*)RETVAL);
+ /* do something with RETVAL */
+ OUTPUT:
+ RETVAL
+
+Remember that you don't have to do this for an C<SV *>. The reference
+documentation for all core typemaps can be found in L<perlxstypemap>.
+
+=head2 The MODULE Keyword
+
+The MODULE keyword is used to start the XS code and to specify the package
+of the functions which are being defined. All text preceding the first
+MODULE keyword is considered C code and is passed through to the output with
+POD stripped, but otherwise untouched. Every XS module will have a
+bootstrap function which is used to hook the XSUBs into Perl. The package
+name of this bootstrap function will match the value of the last MODULE
+statement in the XS source files. The value of MODULE should always remain
+constant within the same XS file, though this is not required.
+
+The following example will start the XS code and will place
+all functions in a package named RPC.
+
+ MODULE = RPC
+
+=head2 The PACKAGE Keyword
+
+When functions within an XS source file must be separated into packages
+the PACKAGE keyword should be used. This keyword is used with the MODULE
+keyword and must follow immediately after it when used.
+
+ MODULE = RPC PACKAGE = RPC
+
+ [ XS code in package RPC ]
+
+ MODULE = RPC PACKAGE = RPCB
+
+ [ XS code in package RPCB ]
+
+ MODULE = RPC PACKAGE = RPC
+
+ [ XS code in package RPC ]
+
+The same package name can be used more than once, allowing for
+non-contiguous code. This is useful if you have a stronger ordering
+principle than package names.
+
+Although this keyword is optional and in some cases provides redundant
+information it should always be used. This keyword will ensure that the
+XSUBs appear in the desired package.
+
+=head2 The PREFIX Keyword
+
+The PREFIX keyword designates prefixes which should be
+removed from the Perl function names. If the C function is
+C<rpcb_gettime()> and the PREFIX value is C<rpcb_> then Perl will
+see this function as C<gettime()>.
+
+This keyword should follow the PACKAGE keyword when used.
+If PACKAGE is not used then PREFIX should follow the MODULE
+keyword.
+
+ MODULE = RPC PREFIX = rpc_
+
+ MODULE = RPC PACKAGE = RPCB PREFIX = rpcb_
+
+=head2 The OUTPUT: Keyword
+
+The OUTPUT: keyword indicates that certain function parameters should be
+updated (new values made visible to Perl) when the XSUB terminates or that
+certain values should be returned to the calling Perl function. For
+simple functions which have no CODE: or PPCODE: section,
+such as the sin() function above, the RETVAL variable is
+automatically designated as an output value. For more complex functions
+the B<xsubpp> compiler will need help to determine which variables are output
+variables.
+
+This keyword will normally be used to complement the CODE: keyword.
+The RETVAL variable is not recognized as an output variable when the
+CODE: keyword is present. The OUTPUT: keyword is used in this
+situation to tell the compiler that RETVAL really is an output
+variable.
+
+The OUTPUT: keyword can also be used to indicate that function parameters
+are output variables. This may be necessary when a parameter has been
+modified within the function and the programmer would like the update to
+be seen by Perl.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep
+ OUTPUT:
+ timep
+
+The OUTPUT: keyword will also allow an output parameter to
+be mapped to a matching piece of code rather than to a
+typemap.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep
+ OUTPUT:
+ timep sv_setnv(ST(1), (double)timep);
+
+B<xsubpp> emits an automatic C<SvSETMAGIC()> for all parameters in the
+OUTPUT section of the XSUB, except RETVAL. This is the usually desired
+behavior, as it takes care of properly invoking 'set' magic on output
+parameters (needed for hash or array element parameters that must be
+created if they didn't exist). If for some reason, this behavior is
+not desired, the OUTPUT section may contain a C<SETMAGIC: DISABLE> line
+to disable it for the remainder of the parameters in the OUTPUT section.
+Likewise, C<SETMAGIC: ENABLE> can be used to reenable it for the
+remainder of the OUTPUT section. See L<perlguts> for more details
+about 'set' magic.
+
+=head2 The NO_OUTPUT Keyword
+
+The NO_OUTPUT can be placed as the first token of the XSUB. This keyword
+indicates that while the C subroutine we provide an interface to has
+a non-C<void> return type, the return value of this C subroutine should not
+be returned from the generated Perl subroutine.
+
+With this keyword present L<The RETVAL Variable> is created, and in the
+generated call to the subroutine this variable is assigned to, but the value
+of this variable is not going to be used in the auto-generated code.
+
+This keyword makes sense only if C<RETVAL> is going to be accessed by the
+user-supplied code. It is especially useful to make a function interface
+more Perl-like, especially when the C return value is just an error condition
+indicator. For example,
+
+ NO_OUTPUT int
+ delete_file(char *name)
+ POSTCALL:
+ if (RETVAL != 0)
+ croak("Error %d while deleting file '%s'", RETVAL, name);
+
+Here the generated XS function returns nothing on success, and will die()
+with a meaningful error message on error.
+
+=head2 The CODE: Keyword
+
+This keyword is used in more complicated XSUBs which require
+special handling for the C function. The RETVAL variable is
+still declared, but it will not be returned unless it is specified
+in the OUTPUT: section.
+
+The following XSUB is for a C function which requires special handling of
+its parameters. The Perl usage is given first.
+
+ $status = rpcb_gettime( "localhost", $timep );
+
+The XSUB follows.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t timep
+ CODE:
+ RETVAL = rpcb_gettime( host, &timep );
+ OUTPUT:
+ timep
+ RETVAL
+
+=head2 The INIT: Keyword
+
+The INIT: keyword allows initialization to be inserted into the XSUB before
+the compiler generates the call to the C function. Unlike the CODE: keyword
+above, this keyword does not affect the way the compiler handles RETVAL.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep
+ INIT:
+ printf("# Host is %s\n", host );
+ OUTPUT:
+ timep
+
+Another use for the INIT: section is to check for preconditions before
+making a call to the C function:
+
+ long long
+ lldiv(a,b)
+ long long a
+ long long b
+ INIT:
+ if (a == 0 && b == 0)
+ XSRETURN_UNDEF;
+ if (b == 0)
+ croak("lldiv: cannot divide by 0");
+
+=head2 The NO_INIT Keyword
+
+The NO_INIT keyword is used to indicate that a function
+parameter is being used only as an output value. The B<xsubpp>
+compiler will normally generate code to read the values of
+all function parameters from the argument stack and assign
+them to C variables upon entry to the function. NO_INIT
+will tell the compiler that some parameters will be used for
+output rather than for input and that they will be handled
+before the function terminates.
+
+The following example shows a variation of the rpcb_gettime() function.
+This function uses the timep variable only as an output variable and does
+not care about its initial contents.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep = NO_INIT
+ OUTPUT:
+ timep
+
+=head2 The TYPEMAP: Keyword
+
+Starting with Perl 5.16, you can embed typemaps into your XS code
+instead of or in addition to typemaps in a separate file. Multiple
+such embedded typemaps will be processed in order of appearance in
+the XS code and like local typemap files take precendence over the
+default typemap, the embedded typemaps may overwrite previous
+definitions of TYPEMAP, INPUT, and OUTPUT stanzas. The syntax for
+embedded typemaps is
+
+ TYPEMAP: <<HERE
+ ... your typemap code here ...
+ HERE
+
+where the C<TYPEMAP> keyword must appear in the first column of a
+new line.
+
+Refer to L<perlxstypemap> for details on writing typemaps.
+
+=head2 Initializing Function Parameters
+
+C function parameters are normally initialized with their values from
+the argument stack (which in turn contains the parameters that were
+passed to the XSUB from Perl). The typemaps contain the
+code segments which are used to translate the Perl values to
+the C parameters. The programmer, however, is allowed to
+override the typemaps and supply alternate (or additional)
+initialization code. Initialization code starts with the first
+C<=>, C<;> or C<+> on a line in the INPUT: section. The only
+exception happens if this C<;> terminates the line, then this C<;>
+is quietly ignored.
+
+The following code demonstrates how to supply initialization code for
+function parameters. The initialization code is eval'ed within double
+quotes by the compiler before it is added to the output so anything
+which should be interpreted literally [mainly C<$>, C<@>, or C<\\>]
+must be protected with backslashes. The variables C<$var>, C<$arg>,
+and C<$type> can be used as in typemaps.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host = (char *)SvPV_nolen($arg);
+ time_t &timep = 0;
+ OUTPUT:
+ timep
+
+This should not be used to supply default values for parameters. One
+would normally use this when a function parameter must be processed by
+another library function before it can be used. Default parameters are
+covered in the next section.
+
+If the initialization begins with C<=>, then it is output in
+the declaration for the input variable, replacing the initialization
+supplied by the typemap. If the initialization
+begins with C<;> or C<+>, then it is performed after
+all of the input variables have been declared. In the C<;>
+case the initialization normally supplied by the typemap is not performed.
+For the C<+> case, the declaration for the variable will include the
+initialization from the typemap. A global
+variable, C<%v>, is available for the truly rare case where
+information from one initialization is needed in another
+initialization.
+
+Here's a truly obscure example:
+
+ bool_t
+ rpcb_gettime(host,timep)
+ time_t &timep; /* \$v{timep}=@{[$v{timep}=$arg]} */
+ char *host + SvOK($v{timep}) ? SvPV_nolen($arg) : NULL;
+ OUTPUT:
+ timep
+
+The construct C<\$v{timep}=@{[$v{timep}=$arg]}> used in the above
+example has a two-fold purpose: first, when this line is processed by
+B<xsubpp>, the Perl snippet C<$v{timep}=$arg> is evaluated. Second,
+the text of the evaluated snippet is output into the generated C file
+(inside a C comment)! During the processing of C<char *host> line,
+C<$arg> will evaluate to C<ST(0)>, and C<$v{timep}> will evaluate to
+C<ST(1)>.
+
+=head2 Default Parameter Values
+
+Default values for XSUB arguments can be specified by placing an
+assignment statement in the parameter list. The default value may
+be a number, a string or the special string C<NO_INIT>. Defaults should
+always be used on the right-most parameters only.
+
+To allow the XSUB for rpcb_gettime() to have a default host
+value the parameters to the XSUB could be rearranged. The
+XSUB will then call the real rpcb_gettime() function with
+the parameters in the correct order. This XSUB can be called
+from Perl with either of the following statements:
+
+ $status = rpcb_gettime( $timep, $host );
+
+ $status = rpcb_gettime( $timep );
+
+The XSUB will look like the code which follows. A CODE:
+block is used to call the real rpcb_gettime() function with
+the parameters in the correct order for that function.
+
+ bool_t
+ rpcb_gettime(timep,host="localhost")
+ char *host
+ time_t timep = NO_INIT
+ CODE:
+ RETVAL = rpcb_gettime( host, &timep );
+ OUTPUT:
+ timep
+ RETVAL
+
+=head2 The PREINIT: Keyword
+
+The PREINIT: keyword allows extra variables to be declared immediately
+before or after the declarations of the parameters from the INPUT: section
+are emitted.
+
+If a variable is declared inside a CODE: section it will follow any typemap
+code that is emitted for the input parameters. This may result in the
+declaration ending up after C code, which is C syntax error. Similar
+errors may happen with an explicit C<;>-type or C<+>-type initialization of
+parameters is used (see L<"Initializing Function Parameters">). Declaring
+these variables in an INIT: section will not help.
+
+In such cases, to force an additional variable to be declared together
+with declarations of other variables, place the declaration into a
+PREINIT: section. The PREINIT: keyword may be used one or more times
+within an XSUB.
+
+The following examples are equivalent, but if the code is using complex
+typemaps then the first example is safer.
+
+ bool_t
+ rpcb_gettime(timep)
+ time_t timep = NO_INIT
+ PREINIT:
+ char *host = "localhost";
+ CODE:
+ RETVAL = rpcb_gettime( host, &timep );
+ OUTPUT:
+ timep
+ RETVAL
+
+For this particular case an INIT: keyword would generate the
+same C code as the PREINIT: keyword. Another correct, but error-prone example:
+
+ bool_t
+ rpcb_gettime(timep)
+ time_t timep = NO_INIT
+ CODE:
+ char *host = "localhost";
+ RETVAL = rpcb_gettime( host, &timep );
+ OUTPUT:
+ timep
+ RETVAL
+
+Another way to declare C<host> is to use a C block in the CODE: section:
+
+ bool_t
+ rpcb_gettime(timep)
+ time_t timep = NO_INIT
+ CODE:
+ {
+ char *host = "localhost";
+ RETVAL = rpcb_gettime( host, &timep );
+ }
+ OUTPUT:
+ timep
+ RETVAL
+
+The ability to put additional declarations before the typemap entries are
+processed is very handy in the cases when typemap conversions manipulate
+some global state:
+
+ MyObject
+ mutate(o)
+ PREINIT:
+ MyState st = global_state;
+ INPUT:
+ MyObject o;
+ CLEANUP:
+ reset_to(global_state, st);
+
+Here we suppose that conversion to C<MyObject> in the INPUT: section and from
+MyObject when processing RETVAL will modify a global variable C<global_state>.
+After these conversions are performed, we restore the old value of
+C<global_state> (to avoid memory leaks, for example).
+
+There is another way to trade clarity for compactness: INPUT sections allow
+declaration of C variables which do not appear in the parameter list of
+a subroutine. Thus the above code for mutate() can be rewritten as
+
+ MyObject
+ mutate(o)
+ MyState st = global_state;
+ MyObject o;
+ CLEANUP:
+ reset_to(global_state, st);
+
+and the code for rpcb_gettime() can be rewritten as
+
+ bool_t
+ rpcb_gettime(timep)
+ time_t timep = NO_INIT
+ char *host = "localhost";
+ C_ARGS:
+ host, &timep
+ OUTPUT:
+ timep
+ RETVAL
+
+=head2 The SCOPE: Keyword
+
+The SCOPE: keyword allows scoping to be enabled for a particular XSUB. If
+enabled, the XSUB will invoke ENTER and LEAVE automatically.
+
+To support potentially complex type mappings, if a typemap entry used
+by an XSUB contains a comment like C</*scope*/> then scoping will
+be automatically enabled for that XSUB.
+
+To enable scoping:
+
+ SCOPE: ENABLE
+
+To disable scoping:
+
+ SCOPE: DISABLE
+
+=head2 The INPUT: Keyword
+
+The XSUB's parameters are usually evaluated immediately after entering the
+XSUB. The INPUT: keyword can be used to force those parameters to be
+evaluated a little later. The INPUT: keyword can be used multiple times
+within an XSUB and can be used to list one or more input variables. This
+keyword is used with the PREINIT: keyword.
+
+The following example shows how the input parameter C<timep> can be
+evaluated late, after a PREINIT.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ PREINIT:
+ time_t tt;
+ INPUT:
+ time_t timep
+ CODE:
+ RETVAL = rpcb_gettime( host, &tt );
+ timep = tt;
+ OUTPUT:
+ timep
+ RETVAL
+
+The next example shows each input parameter evaluated late.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ PREINIT:
+ time_t tt;
+ INPUT:
+ char *host
+ PREINIT:
+ char *h;
+ INPUT:
+ time_t timep
+ CODE:
+ h = host;
+ RETVAL = rpcb_gettime( h, &tt );
+ timep = tt;
+ OUTPUT:
+ timep
+ RETVAL
+
+Since INPUT sections allow declaration of C variables which do not appear
+in the parameter list of a subroutine, this may be shortened to:
+
+ bool_t
+ rpcb_gettime(host,timep)
+ time_t tt;
+ char *host;
+ char *h = host;
+ time_t timep;
+ CODE:
+ RETVAL = rpcb_gettime( h, &tt );
+ timep = tt;
+ OUTPUT:
+ timep
+ RETVAL
+
+(We used our knowledge that input conversion for C<char *> is a "simple" one,
+thus C<host> is initialized on the declaration line, and our assignment
+C<h = host> is not performed too early. Otherwise one would need to have the
+assignment C<h = host> in a CODE: or INIT: section.)
+
+=head2 The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
+
+In the list of parameters for an XSUB, one can precede parameter names
+by the C<IN>/C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT> keywords.
+C<IN> keyword is the default, the other keywords indicate how the Perl
+interface should differ from the C interface.
+
+Parameters preceded by C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT>
+keywords are considered to be used by the C subroutine I<via
+pointers>. C<OUTLIST>/C<OUT> keywords indicate that the C subroutine
+does not inspect the memory pointed by this parameter, but will write
+through this pointer to provide additional return values.
+
+Parameters preceded by C<OUTLIST> keyword do not appear in the usage
+signature of the generated Perl function.
+
+Parameters preceded by C<IN_OUTLIST>/C<IN_OUT>/C<OUT> I<do> appear as
+parameters to the Perl function. With the exception of
+C<OUT>-parameters, these parameters are converted to the corresponding
+C type, then pointers to these data are given as arguments to the C
+function. It is expected that the C function will write through these
+pointers.
+
+The return list of the generated Perl function consists of the C return value
+from the function (unless the XSUB is of C<void> return type or
+C<The NO_OUTPUT Keyword> was used) followed by all the C<OUTLIST>
+and C<IN_OUTLIST> parameters (in the order of appearance). On the
+return from the XSUB the C<IN_OUT>/C<OUT> Perl parameter will be
+modified to have the values written by the C function.
+
+For example, an XSUB
+
+ void
+ day_month(OUTLIST day, IN unix_time, OUTLIST month)
+ int day
+ int unix_time
+ int month
+
+should be used from Perl as
+
+ my ($day, $month) = day_month(time);
+
+The C signature of the corresponding function should be
+
+ void day_month(int *day, int unix_time, int *month);
+
+The C<IN>/C<OUTLIST>/C<IN_OUTLIST>/C<IN_OUT>/C<OUT> keywords can be
+mixed with ANSI-style declarations, as in
+
+ void
+ day_month(OUTLIST int day, int unix_time, OUTLIST int month)
+
+(here the optional C<IN> keyword is omitted).
+
+The C<IN_OUT> parameters are identical with parameters introduced with
+L<The & Unary Operator> and put into the C<OUTPUT:> section (see
+L<The OUTPUT: Keyword>). The C<IN_OUTLIST> parameters are very similar,
+the only difference being that the value C function writes through the
+pointer would not modify the Perl parameter, but is put in the output
+list.
+
+The C<OUTLIST>/C<OUT> parameter differ from C<IN_OUTLIST>/C<IN_OUT>
+parameters only by the initial value of the Perl parameter not
+being read (and not being given to the C function - which gets some
+garbage instead). For example, the same C function as above can be
+interfaced with as
+
+ void day_month(OUT int day, int unix_time, OUT int month);
+
+or
+
+ void
+ day_month(day, unix_time, month)
+ int &day = NO_INIT
+ int unix_time
+ int &month = NO_INIT
+ OUTPUT:
+ day
+ month
+
+However, the generated Perl function is called in very C-ish style:
+
+ my ($day, $month);
+ day_month($day, time, $month);
+
+=head2 The C<length(NAME)> Keyword
+
+If one of the input arguments to the C function is the length of a string
+argument C<NAME>, one can substitute the name of the length-argument by
+C<length(NAME)> in the XSUB declaration. This argument must be omitted when
+the generated Perl function is called. E.g.,
+
+ void
+ dump_chars(char *s, short l)
+ {
+ short n = 0;
+ while (n < l) {
+ printf("s[%d] = \"\\%#03o\"\n", n, (int)s[n]);
+ n++;
+ }
+ }
+
+ MODULE = x PACKAGE = x
+
+ void dump_chars(char *s, short length(s))
+
+should be called as C<dump_chars($string)>.
+
+This directive is supported with ANSI-type function declarations only.
+
+=head2 Variable-length Parameter Lists
+
+XSUBs can have variable-length parameter lists by specifying an ellipsis
+C<(...)> in the parameter list. This use of the ellipsis is similar to that
+found in ANSI C. The programmer is able to determine the number of
+arguments passed to the XSUB by examining the C<items> variable which the
+B<xsubpp> compiler supplies for all XSUBs. By using this mechanism one can
+create an XSUB which accepts a list of parameters of unknown length.
+
+The I<host> parameter for the rpcb_gettime() XSUB can be
+optional so the ellipsis can be used to indicate that the
+XSUB will take a variable number of parameters. Perl should
+be able to call this XSUB with either of the following statements.
+
+ $status = rpcb_gettime( $timep, $host );
+
+ $status = rpcb_gettime( $timep );
+
+The XS code, with ellipsis, follows.
+
+ bool_t
+ rpcb_gettime(timep, ...)
+ time_t timep = NO_INIT
+ PREINIT:
+ char *host = "localhost";
+ CODE:
+ if( items > 1 )
+ host = (char *)SvPV_nolen(ST(1));
+ RETVAL = rpcb_gettime( host, &timep );
+ OUTPUT:
+ timep
+ RETVAL
+
+=head2 The C_ARGS: Keyword
+
+The C_ARGS: keyword allows creating of XSUBS which have different
+calling sequence from Perl than from C, without a need to write
+CODE: or PPCODE: section. The contents of the C_ARGS: paragraph is
+put as the argument to the called C function without any change.
+
+For example, suppose that a C function is declared as
+
+ symbolic nth_derivative(int n, symbolic function, int flags);
+
+and that the default flags are kept in a global C variable
+C<default_flags>. Suppose that you want to create an interface which
+is called as
+
+ $second_deriv = $function->nth_derivative(2);
+
+To do this, declare the XSUB as
+
+ symbolic
+ nth_derivative(function, n)
+ symbolic function
+ int n
+ C_ARGS:
+ n, function, default_flags
+
+=head2 The PPCODE: Keyword
+
+The PPCODE: keyword is an alternate form of the CODE: keyword and is used
+to tell the B<xsubpp> compiler that the programmer is supplying the code to
+control the argument stack for the XSUBs return values. Occasionally one
+will want an XSUB to return a list of values rather than a single value.
+In these cases one must use PPCODE: and then explicitly push the list of
+values on the stack. The PPCODE: and CODE: keywords should not be used
+together within the same XSUB.
+
+The actual difference between PPCODE: and CODE: sections is in the
+initialization of C<SP> macro (which stands for the I<current> Perl
+stack pointer), and in the handling of data on the stack when returning
+from an XSUB. In CODE: sections SP preserves the value which was on
+entry to the XSUB: SP is on the function pointer (which follows the
+last parameter). In PPCODE: sections SP is moved backward to the
+beginning of the parameter list, which allows C<PUSH*()> macros
+to place output values in the place Perl expects them to be when
+the XSUB returns back to Perl.
+
+The generated trailer for a CODE: section ensures that the number of return
+values Perl will see is either 0 or 1 (depending on the C<void>ness of the
+return value of the C function, and heuristics mentioned in
+L<"The RETVAL Variable">). The trailer generated for a PPCODE: section
+is based on the number of return values and on the number of times
+C<SP> was updated by C<[X]PUSH*()> macros.
+
+Note that macros C<ST(i)>, C<XST_m*()> and C<XSRETURN*()> work equally
+well in CODE: sections and PPCODE: sections.
+
+The following XSUB will call the C rpcb_gettime() function
+and will return its two output values, timep and status, to
+Perl as a single list.
+
+ void
+ rpcb_gettime(host)
+ char *host
+ PREINIT:
+ time_t timep;
+ bool_t status;
+ PPCODE:
+ status = rpcb_gettime( host, &timep );
+ EXTEND(SP, 2);
+ PUSHs(sv_2mortal(newSViv(status)));
+ PUSHs(sv_2mortal(newSViv(timep)));
+
+Notice that the programmer must supply the C code necessary
+to have the real rpcb_gettime() function called and to have
+the return values properly placed on the argument stack.
+
+The C<void> return type for this function tells the B<xsubpp> compiler that
+the RETVAL variable is not needed or used and that it should not be created.
+In most scenarios the void return type should be used with the PPCODE:
+directive.
+
+The EXTEND() macro is used to make room on the argument
+stack for 2 return values. The PPCODE: directive causes the
+B<xsubpp> compiler to create a stack pointer available as C<SP>, and it
+is this pointer which is being used in the EXTEND() macro.
+The values are then pushed onto the stack with the PUSHs()
+macro.
+
+Now the rpcb_gettime() function can be used from Perl with
+the following statement.
+
+ ($status, $timep) = rpcb_gettime("localhost");
+
+When handling output parameters with a PPCODE section, be sure to handle
+'set' magic properly. See L<perlguts> for details about 'set' magic.
+
+=head2 Returning Undef And Empty Lists
+
+Occasionally the programmer will want to return simply
+C<undef> or an empty list if a function fails rather than a
+separate status value. The rpcb_gettime() function offers
+just this situation. If the function succeeds we would like
+to have it return the time and if it fails we would like to
+have undef returned. In the following Perl code the value
+of $timep will either be undef or it will be a valid time.
+
+ $timep = rpcb_gettime( "localhost" );
+
+The following XSUB uses the C<SV *> return type as a mnemonic only,
+and uses a CODE: block to indicate to the compiler
+that the programmer has supplied all the necessary code. The
+sv_newmortal() call will initialize the return value to undef, making that
+the default return value.
+
+ SV *
+ rpcb_gettime(host)
+ char * host
+ PREINIT:
+ time_t timep;
+ bool_t x;
+ CODE:
+ ST(0) = sv_newmortal();
+ if( rpcb_gettime( host, &timep ) )
+ sv_setnv( ST(0), (double)timep);
+
+The next example demonstrates how one would place an explicit undef in the
+return value, should the need arise.
+
+ SV *
+ rpcb_gettime(host)
+ char * host
+ PREINIT:
+ time_t timep;
+ bool_t x;
+ CODE:
+ if( rpcb_gettime( host, &timep ) ){
+ ST(0) = sv_newmortal();
+ sv_setnv( ST(0), (double)timep);
+ }
+ else{
+ ST(0) = &PL_sv_undef;
+ }
+
+To return an empty list one must use a PPCODE: block and
+then not push return values on the stack.
+
+ void
+ rpcb_gettime(host)
+ char *host
+ PREINIT:
+ time_t timep;
+ PPCODE:
+ if( rpcb_gettime( host, &timep ) )
+ PUSHs(sv_2mortal(newSViv(timep)));
+ else{
+ /* Nothing pushed on stack, so an empty
+ * list is implicitly returned. */
+ }
+
+Some people may be inclined to include an explicit C<return> in the above
+XSUB, rather than letting control fall through to the end. In those
+situations C<XSRETURN_EMPTY> should be used, instead. This will ensure that
+the XSUB stack is properly adjusted. Consult L<perlapi> for other
+C<XSRETURN> macros.
+
+Since C<XSRETURN_*> macros can be used with CODE blocks as well, one can
+rewrite this example as:
+
+ int
+ rpcb_gettime(host)
+ char *host
+ PREINIT:
+ time_t timep;
+ CODE:
+ RETVAL = rpcb_gettime( host, &timep );
+ if (RETVAL == 0)
+ XSRETURN_UNDEF;
+ OUTPUT:
+ RETVAL
+
+In fact, one can put this check into a POSTCALL: section as well. Together
+with PREINIT: simplifications, this leads to:
+
+ int
+ rpcb_gettime(host)
+ char *host
+ time_t timep;
+ POSTCALL:
+ if (RETVAL == 0)
+ XSRETURN_UNDEF;
+
+=head2 The REQUIRE: Keyword
+
+The REQUIRE: keyword is used to indicate the minimum version of the
+B<xsubpp> compiler needed to compile the XS module. An XS module which
+contains the following statement will compile with only B<xsubpp> version
+1.922 or greater:
+
+ REQUIRE: 1.922
+
+=head2 The CLEANUP: Keyword
+
+This keyword can be used when an XSUB requires special cleanup procedures
+before it terminates. When the CLEANUP: keyword is used it must follow
+any CODE:, PPCODE:, or OUTPUT: blocks which are present in the XSUB. The
+code specified for the cleanup block will be added as the last statements
+in the XSUB.
+
+=head2 The POSTCALL: Keyword
+
+This keyword can be used when an XSUB requires special procedures
+executed after the C subroutine call is performed. When the POSTCALL:
+keyword is used it must precede OUTPUT: and CLEANUP: blocks which are
+present in the XSUB.
+
+See examples in L<"The NO_OUTPUT Keyword"> and L<"Returning Undef And Empty Lists">.
+
+The POSTCALL: block does not make a lot of sense when the C subroutine
+call is supplied by user by providing either CODE: or PPCODE: section.
+
+=head2 The BOOT: Keyword
+
+The BOOT: keyword is used to add code to the extension's bootstrap
+function. The bootstrap function is generated by the B<xsubpp> compiler and
+normally holds the statements necessary to register any XSUBs with Perl.
+With the BOOT: keyword the programmer can tell the compiler to add extra
+statements to the bootstrap function.
+
+This keyword may be used any time after the first MODULE keyword and should
+appear on a line by itself. The first blank line after the keyword will
+terminate the code block.
+
+ BOOT:
+ # The following message will be printed when the
+ # bootstrap function executes.
+ printf("Hello from the bootstrap!\n");
+
+=head2 The VERSIONCHECK: Keyword
+
+The VERSIONCHECK: keyword corresponds to B<xsubpp>'s C<-versioncheck> and
+C<-noversioncheck> options. This keyword overrides the command line
+options. Version checking is enabled by default. When version checking is
+enabled the XS module will attempt to verify that its version matches the
+version of the PM module.
+
+To enable version checking:
+
+ VERSIONCHECK: ENABLE
+
+To disable version checking:
+
+ VERSIONCHECK: DISABLE
+
+Note that if the version of the PM module is an NV (a floating point
+number), it will be stringified with a possible loss of precision
+(currently chopping to nine decimal places) so that it may not match
+the version of the XS module anymore. Quoting the $VERSION declaration
+to make it a string is recommended if long version numbers are used.
+
+=head2 The PROTOTYPES: Keyword
+
+The PROTOTYPES: keyword corresponds to B<xsubpp>'s C<-prototypes> and
+C<-noprototypes> options. This keyword overrides the command line options.
+Prototypes are enabled by default. When prototypes are enabled XSUBs will
+be given Perl prototypes. This keyword may be used multiple times in an XS
+module to enable and disable prototypes for different parts of the module.
+
+To enable prototypes:
+
+ PROTOTYPES: ENABLE
+
+To disable prototypes:
+
+ PROTOTYPES: DISABLE
+
+=head2 The PROTOTYPE: Keyword
+
+This keyword is similar to the PROTOTYPES: keyword above but can be used to
+force B<xsubpp> to use a specific prototype for the XSUB. This keyword
+overrides all other prototype options and keywords but affects only the
+current XSUB. Consult L<perlsub/Prototypes> for information about Perl
+prototypes.
+
+ bool_t
+ rpcb_gettime(timep, ...)
+ time_t timep = NO_INIT
+ PROTOTYPE: $;$
+ PREINIT:
+ char *host = "localhost";
+ CODE:
+ if( items > 1 )
+ host = (char *)SvPV_nolen(ST(1));
+ RETVAL = rpcb_gettime( host, &timep );
+ OUTPUT:
+ timep
+ RETVAL
+
+If the prototypes are enabled, you can disable it locally for a given
+XSUB as in the following example:
+
+ void
+ rpcb_gettime_noproto()
+ PROTOTYPE: DISABLE
+ ...
+
+=head2 The ALIAS: Keyword
+
+The ALIAS: keyword allows an XSUB to have two or more unique Perl names
+and to know which of those names was used when it was invoked. The Perl
+names may be fully-qualified with package names. Each alias is given an
+index. The compiler will setup a variable called C<ix> which contain the
+index of the alias which was used. When the XSUB is called with its
+declared name C<ix> will be 0.
+
+The following example will create aliases C<FOO::gettime()> and
+C<BAR::getit()> for this function.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep
+ ALIAS:
+ FOO::gettime = 1
+ BAR::getit = 2
+ INIT:
+ printf("# ix = %d\n", ix );
+ OUTPUT:
+ timep
+
+=head2 The OVERLOAD: Keyword
+
+Instead of writing an overloaded interface using pure Perl, you
+can also use the OVERLOAD keyword to define additional Perl names
+for your functions (like the ALIAS: keyword above). However, the
+overloaded functions must be defined with three parameters (except
+for the nomethod() function which needs four parameters). If any
+function has the OVERLOAD: keyword, several additional lines
+will be defined in the c file generated by xsubpp in order to
+register with the overload magic.
+
+Since blessed objects are actually stored as RV's, it is useful
+to use the typemap features to preprocess parameters and extract
+the actual SV stored within the blessed RV. See the sample for
+T_PTROBJ_SPECIAL below.
+
+To use the OVERLOAD: keyword, create an XS function which takes
+three input parameters ( or use the c style '...' definition) like
+this:
+
+ SV *
+ cmp (lobj, robj, swap)
+ My_Module_obj lobj
+ My_Module_obj robj
+ IV swap
+ OVERLOAD: cmp <=>
+ { /* function defined here */}
+
+In this case, the function will overload both of the three way
+comparison operators. For all overload operations using non-alpha
+characters, you must type the parameter without quoting, separating
+multiple overloads with whitespace. Note that "" (the stringify
+overload) should be entered as \"\" (i.e. escaped).
+
+=head2 The FALLBACK: Keyword
+
+In addition to the OVERLOAD keyword, if you need to control how
+Perl autogenerates missing overloaded operators, you can set the
+FALLBACK keyword in the module header section, like this:
+
+ MODULE = RPC PACKAGE = RPC
+
+ FALLBACK: TRUE
+ ...
+
+where FALLBACK can take any of the three values TRUE, FALSE, or
+UNDEF. If you do not set any FALLBACK value when using OVERLOAD,
+it defaults to UNDEF. FALLBACK is not used except when one or
+more functions using OVERLOAD have been defined. Please see
+L<overload/fallback> for more details.
+
+=head2 The INTERFACE: Keyword
+
+This keyword declares the current XSUB as a keeper of the given
+calling signature. If some text follows this keyword, it is
+considered as a list of functions which have this signature, and
+should be attached to the current XSUB.
+
+For example, if you have 4 C functions multiply(), divide(), add(),
+subtract() all having the signature:
+
+ symbolic f(symbolic, symbolic);
+
+you can make them all to use the same XSUB using this:
+
+ symbolic
+ interface_s_ss(arg1, arg2)
+ symbolic arg1
+ symbolic arg2
+ INTERFACE:
+ multiply divide
+ add subtract
+
+(This is the complete XSUB code for 4 Perl functions!) Four generated
+Perl function share names with corresponding C functions.
+
+The advantage of this approach comparing to ALIAS: keyword is that there
+is no need to code a switch statement, each Perl function (which shares
+the same XSUB) knows which C function it should call. Additionally, one
+can attach an extra function remainder() at runtime by using
+
+ CV *mycv = newXSproto("Symbolic::remainder",
+ XS_Symbolic_interface_s_ss, __FILE__, "$$");
+ XSINTERFACE_FUNC_SET(mycv, remainder);
+
+say, from another XSUB. (This example supposes that there was no
+INTERFACE_MACRO: section, otherwise one needs to use something else instead of
+C<XSINTERFACE_FUNC_SET>, see the next section.)
+
+=head2 The INTERFACE_MACRO: Keyword
+
+This keyword allows one to define an INTERFACE using a different way
+to extract a function pointer from an XSUB. The text which follows
+this keyword should give the name of macros which would extract/set a
+function pointer. The extractor macro is given return type, C<CV*>,
+and C<XSANY.any_dptr> for this C<CV*>. The setter macro is given cv,
+and the function pointer.
+
+The default value is C<XSINTERFACE_FUNC> and C<XSINTERFACE_FUNC_SET>.
+An INTERFACE keyword with an empty list of functions can be omitted if
+INTERFACE_MACRO keyword is used.
+
+Suppose that in the previous example functions pointers for
+multiply(), divide(), add(), subtract() are kept in a global C array
+C<fp[]> with offsets being C<multiply_off>, C<divide_off>, C<add_off>,
+C<subtract_off>. Then one can use
+
+ #define XSINTERFACE_FUNC_BYOFFSET(ret,cv,f) \
+ ((XSINTERFACE_CVT_ANON(ret))fp[CvXSUBANY(cv).any_i32])
+ #define XSINTERFACE_FUNC_BYOFFSET_set(cv,f) \
+ CvXSUBANY(cv).any_i32 = CAT2( f, _off )
+
+in C section,
+
+ symbolic
+ interface_s_ss(arg1, arg2)
+ symbolic arg1
+ symbolic arg2
+ INTERFACE_MACRO:
+ XSINTERFACE_FUNC_BYOFFSET
+ XSINTERFACE_FUNC_BYOFFSET_set
+ INTERFACE:
+ multiply divide
+ add subtract
+
+in XSUB section.
+
+=head2 The INCLUDE: Keyword
+
+This keyword can be used to pull other files into the XS module. The other
+files may have XS code. INCLUDE: can also be used to run a command to
+generate the XS code to be pulled into the module.
+
+The file F<Rpcb1.xsh> contains our C<rpcb_gettime()> function:
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep
+ OUTPUT:
+ timep
+
+The XS module can use INCLUDE: to pull that file into it.
+
+ INCLUDE: Rpcb1.xsh
+
+If the parameters to the INCLUDE: keyword are followed by a pipe (C<|>) then
+the compiler will interpret the parameters as a command. This feature is
+mildly deprecated in favour of the C<INCLUDE_COMMAND:> directive, as documented
+below.
+
+ INCLUDE: cat Rpcb1.xsh |
+
+Do not use this to run perl: C<INCLUDE: perl |> will run the perl that
+happens to be the first in your path and not necessarily the same perl that is
+used to run C<xsubpp>. See L<"The INCLUDE_COMMAND: Keyword">.
+
+=head2 The INCLUDE_COMMAND: Keyword
+
+Runs the supplied command and includes its output into the current XS
+document. C<INCLUDE_COMMAND> assigns special meaning to the C<$^X> token
+in that it runs the same perl interpreter that is running C<xsubpp>:
+
+ INCLUDE_COMMAND: cat Rpcb1.xsh
+
+ INCLUDE_COMMAND: $^X -e ...
+
+=head2 The CASE: Keyword
+
+The CASE: keyword allows an XSUB to have multiple distinct parts with each
+part acting as a virtual XSUB. CASE: is greedy and if it is used then all
+other XS keywords must be contained within a CASE:. This means nothing may
+precede the first CASE: in the XSUB and anything following the last CASE: is
+included in that case.
+
+A CASE: might switch via a parameter of the XSUB, via the C<ix> ALIAS:
+variable (see L<"The ALIAS: Keyword">), or maybe via the C<items> variable
+(see L<"Variable-length Parameter Lists">). The last CASE: becomes the
+B<default> case if it is not associated with a conditional. The following
+example shows CASE switched via C<ix> with a function C<rpcb_gettime()>
+having an alias C<x_gettime()>. When the function is called as
+C<rpcb_gettime()> its parameters are the usual C<(char *host, time_t *timep)>,
+but when the function is called as C<x_gettime()> its parameters are
+reversed, C<(time_t *timep, char *host)>.
+
+ long
+ rpcb_gettime(a,b)
+ CASE: ix == 1
+ ALIAS:
+ x_gettime = 1
+ INPUT:
+ # 'a' is timep, 'b' is host
+ char *b
+ time_t a = NO_INIT
+ CODE:
+ RETVAL = rpcb_gettime( b, &a );
+ OUTPUT:
+ a
+ RETVAL
+ CASE:
+ # 'a' is host, 'b' is timep
+ char *a
+ time_t &b = NO_INIT
+ OUTPUT:
+ b
+ RETVAL
+
+That function can be called with either of the following statements. Note
+the different argument lists.
+
+ $status = rpcb_gettime( $host, $timep );
+
+ $status = x_gettime( $timep, $host );
+
+=head2 The EXPORT_XSUB_SYMBOLS: Keyword
+
+The EXPORT_XSUB_SYMBOLS: keyword is likely something you will never need.
+In perl versions earlier than 5.16.0, this keyword does nothing. Starting
+with 5.16, XSUB symbols are no longer exported by default. That is, they
+are C<static> functions. If you include
+
+ EXPORT_XSUB_SYMBOLS: ENABLE
+
+in your XS code, the XSUBs following this line will not be declared C<static>.
+You can later disable this with
+
+ EXPORT_XSUB_SYMBOLS: DISABLE
+
+which, again, is the default that you should probably never change.
+You cannot use this keyword on versions of perl before 5.16 to make
+XSUBs C<static>.
+
+=head2 The & Unary Operator
+
+The C<&> unary operator in the INPUT: section is used to tell B<xsubpp>
+that it should convert a Perl value to/from C using the C type to the left
+of C<&>, but provide a pointer to this value when the C function is called.
+
+This is useful to avoid a CODE: block for a C function which takes a parameter
+by reference. Typically, the parameter should be not a pointer type (an
+C<int> or C<long> but not an C<int*> or C<long*>).
+
+The following XSUB will generate incorrect C code. The B<xsubpp> compiler will
+turn this into code which calls C<rpcb_gettime()> with parameters C<(char
+*host, time_t timep)>, but the real C<rpcb_gettime()> wants the C<timep>
+parameter to be of type C<time_t*> rather than C<time_t>.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t timep
+ OUTPUT:
+ timep
+
+That problem is corrected by using the C<&> operator. The B<xsubpp> compiler
+will now turn this into code which calls C<rpcb_gettime()> correctly with
+parameters C<(char *host, time_t *timep)>. It does this by carrying the
+C<&> through, so the function call looks like C<rpcb_gettime(host, &timep)>.
+
+ bool_t
+ rpcb_gettime(host,timep)
+ char *host
+ time_t &timep
+ OUTPUT:
+ timep
+
+=head2 Inserting POD, Comments and C Preprocessor Directives
+
+C preprocessor directives are allowed within BOOT:, PREINIT: INIT:, CODE:,
+PPCODE:, POSTCALL:, and CLEANUP: blocks, as well as outside the functions.
+Comments are allowed anywhere after the MODULE keyword. The compiler will
+pass the preprocessor directives through untouched and will remove the
+commented lines. POD documentation is allowed at any point, both in the
+C and XS language sections. POD must be terminated with a C<=cut> command;
+C<xsubpp> will exit with an error if it does not. It is very unlikely that
+human generated C code will be mistaken for POD, as most indenting styles
+result in whitespace in front of any line starting with C<=>. Machine
+generated XS files may fall into this trap unless care is taken to
+ensure that a space breaks the sequence "\n=".
+
+Comments can be added to XSUBs by placing a C<#> as the first
+non-whitespace of a line. Care should be taken to avoid making the
+comment look like a C preprocessor directive, lest it be interpreted as
+such. The simplest way to prevent this is to put whitespace in front of
+the C<#>.
+
+If you use preprocessor directives to choose one of two
+versions of a function, use
+
+ #if ... version1
+ #else /* ... version2 */
+ #endif
+
+and not
+
+ #if ... version1
+ #endif
+ #if ... version2
+ #endif
+
+because otherwise B<xsubpp> will believe that you made a duplicate
+definition of the function. Also, put a blank line before the
+#else/#endif so it will not be seen as part of the function body.
+
+=head2 Using XS With C++
+
+If an XSUB name contains C<::>, it is considered to be a C++ method.
+The generated Perl function will assume that
+its first argument is an object pointer. The object pointer
+will be stored in a variable called THIS. The object should
+have been created by C++ with the new() function and should
+be blessed by Perl with the sv_setref_pv() macro. The
+blessing of the object by Perl can be handled by a typemap. An example
+typemap is shown at the end of this section.
+
+If the return type of the XSUB includes C<static>, the method is considered
+to be a static method. It will call the C++
+function using the class::method() syntax. If the method is not static
+the function will be called using the THIS-E<gt>method() syntax.
+
+The next examples will use the following C++ class.
+
+ class color {
+ public:
+ color();
+ ~color();
+ int blue();
+ void set_blue( int );
+
+ private:
+ int c_blue;
+ };
+
+The XSUBs for the blue() and set_blue() methods are defined with the class
+name but the parameter for the object (THIS, or "self") is implicit and is
+not listed.
+
+ int
+ color::blue()
+
+ void
+ color::set_blue( val )
+ int val
+
+Both Perl functions will expect an object as the first parameter. In the
+generated C++ code the object is called C<THIS>, and the method call will
+be performed on this object. So in the C++ code the blue() and set_blue()
+methods will be called as this:
+
+ RETVAL = THIS->blue();
+
+ THIS->set_blue( val );
+
+You could also write a single get/set method using an optional argument:
+
+ int
+ color::blue( val = NO_INIT )
+ int val
+ PROTOTYPE $;$
+ CODE:
+ if (items > 1)
+ THIS->set_blue( val );
+ RETVAL = THIS->blue();
+ OUTPUT:
+ RETVAL
+
+If the function's name is B<DESTROY> then the C++ C<delete> function will be
+called and C<THIS> will be given as its parameter. The generated C++ code for
+
+ void
+ color::DESTROY()
+
+will look like this:
+
+ color *THIS = ...; // Initialized as in typemap
+
+ delete THIS;
+
+If the function's name is B<new> then the C++ C<new> function will be called
+to create a dynamic C++ object. The XSUB will expect the class name, which
+will be kept in a variable called C<CLASS>, to be given as the first
+argument.
+
+ color *
+ color::new()
+
+The generated C++ code will call C<new>.
+
+ RETVAL = new color();
+
+The following is an example of a typemap that could be used for this C++
+example.
+
+ TYPEMAP
+ color * O_OBJECT
+
+ OUTPUT
+ # The Perl object is blessed into 'CLASS', which should be a
+ # char* having the name of the package for the blessing.
+ O_OBJECT
+ sv_setref_pv( $arg, CLASS, (void*)$var );
+
+ INPUT
+ O_OBJECT
+ if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
+ $var = ($type)SvIV((SV*)SvRV( $arg ));
+ else{
+ warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
+ XSRETURN_UNDEF;
+ }
+
+=head2 Interface Strategy
+
+When designing an interface between Perl and a C library a straight
+translation from C to XS (such as created by C<h2xs -x>) is often sufficient.
+However, sometimes the interface will look
+very C-like and occasionally nonintuitive, especially when the C function
+modifies one of its parameters, or returns failure inband (as in "negative
+return values mean failure"). In cases where the programmer wishes to
+create a more Perl-like interface the following strategy may help to
+identify the more critical parts of the interface.
+
+Identify the C functions with input/output or output parameters. The XSUBs for
+these functions may be able to return lists to Perl.
+
+Identify the C functions which use some inband info as an indication
+of failure. They may be
+candidates to return undef or an empty list in case of failure. If the
+failure may be detected without a call to the C function, you may want to use
+an INIT: section to report the failure. For failures detectable after the C
+function returns one may want to use a POSTCALL: section to process the
+failure. In more complicated cases use CODE: or PPCODE: sections.
+
+If many functions use the same failure indication based on the return value,
+you may want to create a special typedef to handle this situation. Put
+
+ typedef int negative_is_failure;
+
+near the beginning of XS file, and create an OUTPUT typemap entry
+for C<negative_is_failure> which converts negative values to C<undef>, or
+maybe croak()s. After this the return value of type C<negative_is_failure>
+will create more Perl-like interface.
+
+Identify which values are used by only the C and XSUB functions
+themselves, say, when a parameter to a function should be a contents of a
+global variable. If Perl does not need to access the contents of the value
+then it may not be necessary to provide a translation for that value
+from C to Perl.
+
+Identify the pointers in the C function parameter lists and return
+values. Some pointers may be used to implement input/output or
+output parameters, they can be handled in XS with the C<&> unary operator,
+and, possibly, using the NO_INIT keyword.
+Some others will require handling of types like C<int *>, and one needs
+to decide what a useful Perl translation will do in such a case. When
+the semantic is clear, it is advisable to put the translation into a typemap
+file.
+
+Identify the structures used by the C functions. In many
+cases it may be helpful to use the T_PTROBJ typemap for
+these structures so they can be manipulated by Perl as
+blessed objects. (This is handled automatically by C<h2xs -x>.)
+
+If the same C type is used in several different contexts which require
+different translations, C<typedef> several new types mapped to this C type,
+and create separate F<typemap> entries for these new types. Use these
+types in declarations of return type and parameters to XSUBs.
+
+=head2 Perl Objects And C Structures
+
+When dealing with C structures one should select either
+B<T_PTROBJ> or B<T_PTRREF> for the XS type. Both types are
+designed to handle pointers to complex objects. The
+T_PTRREF type will allow the Perl object to be unblessed
+while the T_PTROBJ type requires that the object be blessed.
+By using T_PTROBJ one can achieve a form of type-checking
+because the XSUB will attempt to verify that the Perl object
+is of the expected type.
+
+The following XS code shows the getnetconfigent() function which is used
+with ONC+ TIRPC. The getnetconfigent() function will return a pointer to a
+C structure and has the C prototype shown below. The example will
+demonstrate how the C pointer will become a Perl reference. Perl will
+consider this reference to be a pointer to a blessed object and will
+attempt to call a destructor for the object. A destructor will be
+provided in the XS source to free the memory used by getnetconfigent().
+Destructors in XS can be created by specifying an XSUB function whose name
+ends with the word B<DESTROY>. XS destructors can be used to free memory
+which may have been malloc'd by another XSUB.
+
+ struct netconfig *getnetconfigent(const char *netid);
+
+A C<typedef> will be created for C<struct netconfig>. The Perl
+object will be blessed in a class matching the name of the C
+type, with the tag C<Ptr> appended, and the name should not
+have embedded spaces if it will be a Perl package name. The
+destructor will be placed in a class corresponding to the
+class of the object and the PREFIX keyword will be used to
+trim the name to the word DESTROY as Perl will expect.
+
+ typedef struct netconfig Netconfig;
+
+ MODULE = RPC PACKAGE = RPC
+
+ Netconfig *
+ getnetconfigent(netid)
+ char *netid
+
+ MODULE = RPC PACKAGE = NetconfigPtr PREFIX = rpcb_
+
+ void
+ rpcb_DESTROY(netconf)
+ Netconfig *netconf
+ CODE:
+ printf("Now in NetconfigPtr::DESTROY\n");
+ free( netconf );
+
+This example requires the following typemap entry. Consult
+L<perlxstypemap> for more information about adding new typemaps
+for an extension.
+
+ TYPEMAP
+ Netconfig * T_PTROBJ
+
+This example will be used with the following Perl statements.
+
+ use RPC;
+ $netconf = getnetconfigent("udp");
+
+When Perl destroys the object referenced by $netconf it will send the
+object to the supplied XSUB DESTROY function. Perl cannot determine, and
+does not care, that this object is a C struct and not a Perl object. In
+this sense, there is no difference between the object created by the
+getnetconfigent() XSUB and an object created by a normal Perl subroutine.
+
+=head2 Safely Storing Static Data in XS
+
+Starting with Perl 5.8, a macro framework has been defined to allow
+static data to be safely stored in XS modules that will be accessed from
+a multi-threaded Perl.
+
+Although primarily designed for use with multi-threaded Perl, the macros
+have been designed so that they will work with non-threaded Perl as well.
+
+It is therefore strongly recommended that these macros be used by all
+XS modules that make use of static data.
+
+The easiest way to get a template set of macros to use is by specifying
+the C<-g> (C<--global>) option with h2xs (see L<h2xs>).
+
+Below is an example module that makes use of the macros.
+
+ #include "EXTERN.h"
+ #include "perl.h"
+ #include "XSUB.h"
+
+ /* Global Data */
+
+ #define MY_CXT_KEY "BlindMice::_guts" XS_VERSION
+
+ typedef struct {
+ int count;
+ char name[3][100];
+ } my_cxt_t;
+
+ START_MY_CXT
+
+ MODULE = BlindMice PACKAGE = BlindMice
+
+ BOOT:
+ {
+ MY_CXT_INIT;
+ MY_CXT.count = 0;
+ strcpy(MY_CXT.name[0], "None");
+ strcpy(MY_CXT.name[1], "None");
+ strcpy(MY_CXT.name[2], "None");
+ }
+
+ int
+ newMouse(char * name)
+ char * name;
+ PREINIT:
+ dMY_CXT;
+ CODE:
+ if (MY_CXT.count >= 3) {
+ warn("Already have 3 blind mice");
+ RETVAL = 0;
+ }
+ else {
+ RETVAL = ++ MY_CXT.count;
+ strcpy(MY_CXT.name[MY_CXT.count - 1], name);
+ }
+
+ char *
+ get_mouse_name(index)
+ int index
+ CODE:
+ dMY_CXT;
+ RETVAL = MY_CXT.lives ++;
+ if (index > MY_CXT.count)
+ croak("There are only 3 blind mice.");
+ else
+ RETVAL = newSVpv(MY_CXT.name[index - 1]);
+
+ void
+ CLONE(...)
+ CODE:
+ MY_CXT_CLONE;
+
+B<REFERENCE>
+
+=over 5
+
+=item MY_CXT_KEY
+
+This macro is used to define a unique key to refer to the static data
+for an XS module. The suggested naming scheme, as used by h2xs, is to
+use a string that consists of the module name, the string "::_guts"
+and the module version number.
+
+ #define MY_CXT_KEY "MyModule::_guts" XS_VERSION
+
+=item typedef my_cxt_t
+
+This struct typedef I<must> always be called C<my_cxt_t>. The other
+C<CXT*> macros assume the existence of the C<my_cxt_t> typedef name.
+
+Declare a typedef named C<my_cxt_t> that is a structure that contains
+all the data that needs to be interpreter-local.
+
+ typedef struct {
+ int some_value;
+ } my_cxt_t;
+
+=item START_MY_CXT
+
+Always place the START_MY_CXT macro directly after the declaration
+of C<my_cxt_t>.
+
+=item MY_CXT_INIT
+
+The MY_CXT_INIT macro initialises storage for the C<my_cxt_t> struct.
+
+It I<must> be called exactly once, typically in a BOOT: section. If you
+are maintaining multiple interpreters, it should be called once in each
+interpreter instance, except for interpreters cloned from existing ones.
+(But see L</MY_CXT_CLONE> below.)
+
+=item dMY_CXT
+
+Use the dMY_CXT macro (a declaration) in all the functions that access
+MY_CXT.
+
+=item MY_CXT
+
+Use the MY_CXT macro to access members of the C<my_cxt_t> struct. For
+example, if C<my_cxt_t> is
+
+ typedef struct {
+ int index;
+ } my_cxt_t;
+
+then use this to access the C<index> member
+
+ dMY_CXT;
+ MY_CXT.index = 2;
+
+=item aMY_CXT/pMY_CXT
+
+C<dMY_CXT> may be quite expensive to calculate, and to avoid the overhead
+of invoking it in each function it is possible to pass the declaration
+onto other functions using the C<aMY_CXT>/C<pMY_CXT> macros, eg
+
+ void sub1() {
+ dMY_CXT;
+ MY_CXT.index = 1;
+ sub2(aMY_CXT);
+ }
+
+ void sub2(pMY_CXT) {
+ MY_CXT.index = 2;
+ }
+
+Analogously to C<pTHX>, there are equivalent forms for when the macro is the
+first or last in multiple arguments, where an underscore represents a
+comma, i.e. C<_aMY_CXT>, C<aMY_CXT_>, C<_pMY_CXT> and C<pMY_CXT_>.
+
+=item MY_CXT_CLONE
+
+By default, when a new interpreter is created as a copy of an existing one
+(eg via C<< threads->create() >>), both interpreters share the same physical
+my_cxt_t structure. Calling C<MY_CXT_CLONE> (typically via the package's
+C<CLONE()> function), causes a byte-for-byte copy of the structure to be
+taken, and any future dMY_CXT will cause the copy to be accessed instead.
+
+=item MY_CXT_INIT_INTERP(my_perl)
+
+=item dMY_CXT_INTERP(my_perl)
+
+These are versions of the macros which take an explicit interpreter as an
+argument.
+
+=back
+
+Note that these macros will only work together within the I<same> source
+file; that is, a dMY_CTX in one source file will access a different structure
+than a dMY_CTX in another source file.
+
+=head2 Thread-aware system interfaces
+
+Starting from Perl 5.8, in C/C++ level Perl knows how to wrap
+system/library interfaces that have thread-aware versions
+(e.g. getpwent_r()) into frontend macros (e.g. getpwent()) that
+correctly handle the multithreaded interaction with the Perl
+interpreter. This will happen transparently, the only thing
+you need to do is to instantiate a Perl interpreter.
+
+This wrapping happens always when compiling Perl core source
+(PERL_CORE is defined) or the Perl core extensions (PERL_EXT is
+defined). When compiling XS code outside of Perl core the wrapping
+does not take place. Note, however, that intermixing the _r-forms
+(as Perl compiled for multithreaded operation will do) and the _r-less
+forms is neither well-defined (inconsistent results, data corruption,
+or even crashes become more likely), nor is it very portable.
+
+=head1 EXAMPLES
+
+File C<RPC.xs>: Interface to some ONC+ RPC bind library functions.
+
+ #include "EXTERN.h"
+ #include "perl.h"
+ #include "XSUB.h"
+
+ #include <rpc/rpc.h>
+
+ typedef struct netconfig Netconfig;
+
+ MODULE = RPC PACKAGE = RPC
+
+ SV *
+ rpcb_gettime(host="localhost")
+ char *host
+ PREINIT:
+ time_t timep;
+ CODE:
+ ST(0) = sv_newmortal();
+ if( rpcb_gettime( host, &timep ) )
+ sv_setnv( ST(0), (double)timep );
+
+ Netconfig *
+ getnetconfigent(netid="udp")
+ char *netid
+
+ MODULE = RPC PACKAGE = NetconfigPtr PREFIX = rpcb_
+
+ void
+ rpcb_DESTROY(netconf)
+ Netconfig *netconf
+ CODE:
+ printf("NetconfigPtr::DESTROY\n");
+ free( netconf );
+
+File C<typemap>: Custom typemap for RPC.xs. (cf. L<perlxstypemap>)
+
+ TYPEMAP
+ Netconfig * T_PTROBJ
+
+File C<RPC.pm>: Perl module for the RPC extension.
+
+ package RPC;
+
+ require Exporter;
+ require DynaLoader;
+ @ISA = qw(Exporter DynaLoader);
+ @EXPORT = qw(rpcb_gettime getnetconfigent);
+
+ bootstrap RPC;
+ 1;
+
+File C<rpctest.pl>: Perl test program for the RPC extension.
+
+ use RPC;
+
+ $netconf = getnetconfigent();
+ $a = rpcb_gettime();
+ print "time = $a\n";
+ print "netconf = $netconf\n";
+
+ $netconf = getnetconfigent("tcp");
+ $a = rpcb_gettime("poplar");
+ print "time = $a\n";
+ print "netconf = $netconf\n";
+
+
+=head1 XS VERSION
+
+This document covers features supported by C<ExtUtils::ParseXS>
+(also known as C<xsubpp>) 3.13_01.
+
+=head1 AUTHOR
+
+Originally written by Dean Roehrich <F<roehrich at cray.com>>.
+
+Maintained since 1996 by The Perl Porters <F<perlbug at perl.org>>.
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/lib/perlxstut.pod)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,1379 @@
+=head1 NAME
+
+perlxstut - Tutorial for writing XSUBs
+
+=head1 DESCRIPTION
+
+This tutorial will educate the reader on the steps involved in creating
+a Perl extension. The reader is assumed to have access to L<perlguts>,
+L<perlapi> and L<perlxs>.
+
+This tutorial starts with very simple examples and becomes more complex,
+with each new example adding new features. Certain concepts may not be
+completely explained until later in the tutorial in order to slowly ease
+the reader into building extensions.
+
+This tutorial was written from a Unix point of view. Where I know them
+to be otherwise different for other platforms (e.g. Win32), I will list
+them. If you find something that was missed, please let me know.
+
+=head1 SPECIAL NOTES
+
+=head2 make
+
+This tutorial assumes that the make program that Perl is configured to
+use is called C<make>. Instead of running "make" in the examples that
+follow, you may have to substitute whatever make program Perl has been
+configured to use. Running B<perl -V:make> should tell you what it is.
+
+=head2 Version caveat
+
+When writing a Perl extension for general consumption, one should expect that
+the extension will be used with versions of Perl different from the
+version available on your machine. Since you are reading this document,
+the version of Perl on your machine is probably 5.005 or later, but the users
+of your extension may have more ancient versions.
+
+To understand what kinds of incompatibilities one may expect, and in the rare
+case that the version of Perl on your machine is older than this document,
+see the section on "Troubleshooting these Examples" for more information.
+
+If your extension uses some features of Perl which are not available on older
+releases of Perl, your users would appreciate an early meaningful warning.
+You would probably put this information into the F<README> file, but nowadays
+installation of extensions may be performed automatically, guided by F<CPAN.pm>
+module or other tools.
+
+In MakeMaker-based installations, F<Makefile.PL> provides the earliest
+opportunity to perform version checks. One can put something like this
+in F<Makefile.PL> for this purpose:
+
+ eval { require 5.007 }
+ or die <<EOD;
+ ############
+ ### This module uses frobnication framework which is not available before
+ ### version 5.007 of Perl. Upgrade your Perl before installing Kara::Mba.
+ ############
+ EOD
+
+=head2 Dynamic Loading versus Static Loading
+
+It is commonly thought that if a system does not have the capability to
+dynamically load a library, you cannot build XSUBs. This is incorrect.
+You I<can> build them, but you must link the XSUBs subroutines with the
+rest of Perl, creating a new executable. This situation is similar to
+Perl 4.
+
+This tutorial can still be used on such a system. The XSUB build mechanism
+will check the system and build a dynamically-loadable library if possible,
+or else a static library and then, optionally, a new statically-linked
+executable with that static library linked in.
+
+Should you wish to build a statically-linked executable on a system which
+can dynamically load libraries, you may, in all the following examples,
+where the command "C<make>" with no arguments is executed, run the command
+"C<make perl>" instead.
+
+If you have generated such a statically-linked executable by choice, then
+instead of saying "C<make test>", you should say "C<make test_static>".
+On systems that cannot build dynamically-loadable libraries at all, simply
+saying "C<make test>" is sufficient.
+
+=head1 TUTORIAL
+
+Now let's go on with the show!
+
+=head2 EXAMPLE 1
+
+Our first extension will be very simple. When we call the routine in the
+extension, it will print out a well-known message and return.
+
+Run "C<h2xs -A -n Mytest>". This creates a directory named Mytest,
+possibly under ext/ if that directory exists in the current working
+directory. Several files will be created under the Mytest dir, including
+MANIFEST, Makefile.PL, lib/Mytest.pm, Mytest.xs, t/Mytest.t, and Changes.
+
+The MANIFEST file contains the names of all the files just created in the
+Mytest directory.
+
+The file Makefile.PL should look something like this:
+
+ use ExtUtils::MakeMaker;
+ # See lib/ExtUtils/MakeMaker.pm for details of how to influence
+ # the contents of the Makefile that is written.
+ WriteMakefile(
+ NAME => 'Mytest',
+ VERSION_FROM => 'Mytest.pm', # finds $VERSION
+ LIBS => [''], # e.g., '-lm'
+ DEFINE => '', # e.g., '-DHAVE_SOMETHING'
+ INC => '', # e.g., '-I/usr/include/other'
+ );
+
+The file Mytest.pm should start with something like this:
+
+ package Mytest;
+
+ use 5.008008;
+ use strict;
+ use warnings;
+
+ require Exporter;
+
+ our @ISA = qw(Exporter);
+ our %EXPORT_TAGS = ( 'all' => [ qw(
+
+ ) ] );
+
+ our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+ our @EXPORT = qw(
+
+ );
+
+ our $VERSION = '0.01';
+
+ require XSLoader;
+ XSLoader::load('Mytest', $VERSION);
+
+ # Preloaded methods go here.
+
+ 1;
+ __END__
+ # Below is the stub of documentation for your module. You better edit it!
+
+The rest of the .pm file contains sample code for providing documentation for
+the extension.
+
+Finally, the Mytest.xs file should look something like this:
+
+ #include "EXTERN.h"
+ #include "perl.h"
+ #include "XSUB.h"
+
+ #include "ppport.h"
+
+ MODULE = Mytest PACKAGE = Mytest
+
+Let's edit the .xs file by adding this to the end of the file:
+
+ void
+ hello()
+ CODE:
+ printf("Hello, world!\n");
+
+It is okay for the lines starting at the "CODE:" line to not be indented.
+However, for readability purposes, it is suggested that you indent CODE:
+one level and the lines following one more level.
+
+Now we'll run "C<perl Makefile.PL>". This will create a real Makefile,
+which make needs. Its output looks something like:
+
+ % perl Makefile.PL
+ Checking if your kit is complete...
+ Looks good
+ Writing Makefile for Mytest
+ %
+
+Now, running make will produce output that looks something like this (some
+long lines have been shortened for clarity and some extraneous lines have
+been deleted):
+
+ % make
+ cp lib/Mytest.pm blib/lib/Mytest.pm
+ perl xsubpp -typemap typemap Mytest.xs > Mytest.xsc && mv Mytest.xsc Mytest.c
+ Please specify prototyping behavior for Mytest.xs (see perlxs manual)
+ cc -c Mytest.c
+ Running Mkbootstrap for Mytest ()
+ chmod 644 Mytest.bs
+ rm -f blib/arch/auto/Mytest/Mytest.so
+ cc -shared -L/usr/local/lib Mytest.o -o blib/arch/auto/Mytest/Mytest.so \
+ \
+
+ chmod 755 blib/arch/auto/Mytest/Mytest.so
+ cp Mytest.bs blib/arch/auto/Mytest/Mytest.bs
+ chmod 644 blib/arch/auto/Mytest/Mytest.bs
+ Manifying blib/man3/Mytest.3pm
+ %
+
+You can safely ignore the line about "prototyping behavior" - it is
+explained in L<perlxs/"The PROTOTYPES: Keyword">.
+
+Perl has its own special way of easily writing test scripts, but for this
+example only, we'll create our own test script. Create a file called hello
+that looks like this:
+
+ #! /opt/perl5/bin/perl
+
+ use ExtUtils::testlib;
+
+ use Mytest;
+
+ Mytest::hello();
+
+Now we make the script executable (C<chmod +x hello>), run the script
+and we should see the following output:
+
+ % ./hello
+ Hello, world!
+ %
+
+=head2 EXAMPLE 2
+
+Now let's add to our extension a subroutine that will take a single numeric
+argument as input and return 1 if the number is even or 0 if the number
+is odd.
+
+Add the following to the end of Mytest.xs:
+
+ int
+ is_even(input)
+ int input
+ CODE:
+ RETVAL = (input % 2 == 0);
+ OUTPUT:
+ RETVAL
+
+There does not need to be whitespace at the start of the "C<int input>"
+line, but it is useful for improving readability. Placing a semi-colon at
+the end of that line is also optional. Any amount and kind of whitespace
+may be placed between the "C<int>" and "C<input>".
+
+Now re-run make to rebuild our new shared library.
+
+Now perform the same steps as before, generating a Makefile from the
+Makefile.PL file, and running make.
+
+In order to test that our extension works, we now need to look at the
+file Mytest.t. This file is set up to imitate the same kind of testing
+structure that Perl itself has. Within the test script, you perform a
+number of tests to confirm the behavior of the extension, printing "ok"
+when the test is correct, "not ok" when it is not.
+
+ use Test::More tests => 4;
+ BEGIN { use_ok('Mytest') };
+
+ #########################
+
+ # Insert your test code below, the Test::More module is use()ed here so read
+ # its man page ( perldoc Test::More ) for help writing this test script.
+
+ is(&Mytest::is_even(0), 1);
+ is(&Mytest::is_even(1), 0);
+ is(&Mytest::is_even(2), 1);
+
+We will be calling the test script through the command "C<make test>". You
+should see output that looks something like this:
+
+ %make test
+ PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
+ t/Mytest....ok
+ All tests successful.
+ Files=1, Tests=4, 0 wallclock secs ( 0.03 cusr + 0.00 csys = 0.03 CPU)
+ %
+
+=head2 What has gone on?
+
+The program h2xs is the starting point for creating extensions. In later
+examples we'll see how we can use h2xs to read header files and generate
+templates to connect to C routines.
+
+h2xs creates a number of files in the extension directory. The file
+Makefile.PL is a perl script which will generate a true Makefile to build
+the extension. We'll take a closer look at it later.
+
+The .pm and .xs files contain the meat of the extension. The .xs file holds
+the C routines that make up the extension. The .pm file contains routines
+that tell Perl how to load your extension.
+
+Generating the Makefile and running C<make> created a directory called blib
+(which stands for "build library") in the current working directory. This
+directory will contain the shared library that we will build. Once we have
+tested it, we can install it into its final location.
+
+Invoking the test script via "C<make test>" did something very important.
+It invoked perl with all those C<-I> arguments so that it could find the
+various files that are part of the extension. It is I<very> important that
+while you are still testing extensions that you use "C<make test>". If you
+try to run the test script all by itself, you will get a fatal error.
+Another reason it is important to use "C<make test>" to run your test
+script is that if you are testing an upgrade to an already-existing version,
+using "C<make test>" ensures that you will test your new extension, not the
+already-existing version.
+
+When Perl sees a C<use extension;>, it searches for a file with the same name
+as the C<use>'d extension that has a .pm suffix. If that file cannot be found,
+Perl dies with a fatal error. The default search path is contained in the
+C<@INC> array.
+
+In our case, Mytest.pm tells perl that it will need the Exporter and Dynamic
+Loader extensions. It then sets the C<@ISA> and C<@EXPORT> arrays and the
+C<$VERSION> scalar; finally it tells perl to bootstrap the module. Perl
+will call its dynamic loader routine (if there is one) and load the shared
+library.
+
+The two arrays C<@ISA> and C<@EXPORT> are very important. The C<@ISA>
+array contains a list of other packages in which to search for methods (or
+subroutines) that do not exist in the current package. This is usually
+only important for object-oriented extensions (which we will talk about
+much later), and so usually doesn't need to be modified.
+
+The C<@EXPORT> array tells Perl which of the extension's variables and
+subroutines should be placed into the calling package's namespace. Because
+you don't know if the user has already used your variable and subroutine
+names, it's vitally important to carefully select what to export. Do I<not>
+export method or variable names I<by default> without a good reason.
+
+As a general rule, if the module is trying to be object-oriented then don't
+export anything. If it's just a collection of functions and variables, then
+you can export them via another array, called C<@EXPORT_OK>. This array
+does not automatically place its subroutine and variable names into the
+namespace unless the user specifically requests that this be done.
+
+See L<perlmod> for more information.
+
+The C<$VERSION> variable is used to ensure that the .pm file and the shared
+library are "in sync" with each other. Any time you make changes to
+the .pm or .xs files, you should increment the value of this variable.
+
+=head2 Writing good test scripts
+
+The importance of writing good test scripts cannot be over-emphasized. You
+should closely follow the "ok/not ok" style that Perl itself uses, so that
+it is very easy and unambiguous to determine the outcome of each test case.
+When you find and fix a bug, make sure you add a test case for it.
+
+By running "C<make test>", you ensure that your Mytest.t script runs and uses
+the correct version of your extension. If you have many test cases,
+save your test files in the "t" directory and use the suffix ".t".
+When you run "C<make test>", all of these test files will be executed.
+
+=head2 EXAMPLE 3
+
+Our third extension will take one argument as its input, round off that
+value, and set the I<argument> to the rounded value.
+
+Add the following to the end of Mytest.xs:
+
+ void
+ round(arg)
+ double arg
+ CODE:
+ if (arg > 0.0) {
+ arg = floor(arg + 0.5);
+ } else if (arg < 0.0) {
+ arg = ceil(arg - 0.5);
+ } else {
+ arg = 0.0;
+ }
+ OUTPUT:
+ arg
+
+Edit the Makefile.PL file so that the corresponding line looks like this:
+
+ 'LIBS' => ['-lm'], # e.g., '-lm'
+
+Generate the Makefile and run make. Change the test number in Mytest.t to
+"9" and add the following tests:
+
+ $i = -1.5; &Mytest::round($i); is( $i, -2.0 );
+ $i = -1.1; &Mytest::round($i); is( $i, -1.0 );
+ $i = 0.0; &Mytest::round($i); is( $i, 0.0 );
+ $i = 0.5; &Mytest::round($i); is( $i, 1.0 );
+ $i = 1.2; &Mytest::round($i); is( $i, 1.0 );
+
+Running "C<make test>" should now print out that all nine tests are okay.
+
+Notice that in these new test cases, the argument passed to round was a
+scalar variable. You might be wondering if you can round a constant or
+literal. To see what happens, temporarily add the following line to Mytest.t:
+
+ &Mytest::round(3);
+
+Run "C<make test>" and notice that Perl dies with a fatal error. Perl won't
+let you change the value of constants!
+
+=head2 What's new here?
+
+=over 4
+
+=item *
+
+We've made some changes to Makefile.PL. In this case, we've specified an
+extra library to be linked into the extension's shared library, the math
+library libm in this case. We'll talk later about how to write XSUBs that
+can call every routine in a library.
+
+=item *
+
+The value of the function is not being passed back as the function's return
+value, but by changing the value of the variable that was passed into the
+function. You might have guessed that when you saw that the return value
+of round is of type "void".
+
+=back
+
+=head2 Input and Output Parameters
+
+You specify the parameters that will be passed into the XSUB on the line(s)
+after you declare the function's return value and name. Each input parameter
+line starts with optional whitespace, and may have an optional terminating
+semicolon.
+
+The list of output parameters occurs at the very end of the function, just
+after the OUTPUT: directive. The use of RETVAL tells Perl that you
+wish to send this value back as the return value of the XSUB function. In
+Example 3, we wanted the "return value" placed in the original variable
+which we passed in, so we listed it (and not RETVAL) in the OUTPUT: section.
+
+=head2 The XSUBPP Program
+
+The B<xsubpp> program takes the XS code in the .xs file and translates it into
+C code, placing it in a file whose suffix is .c. The C code created makes
+heavy use of the C functions within Perl.
+
+=head2 The TYPEMAP file
+
+The B<xsubpp> program uses rules to convert from Perl's data types (scalar,
+array, etc.) to C's data types (int, char, etc.). These rules are stored
+in the typemap file ($PERLLIB/ExtUtils/typemap). There's a brief discussion
+below, but all the nitty-gritty details can be found in L<perlxstypemap>.
+If you have a new-enough version of perl (5.16 and up) or an upgraded
+XS compiler (C<ExtUtils::ParseXS> 3.13_01 or better), then you can inline
+typemaps in your XS instead of writing separate files.
+Either way, this typemap thing is split into three parts:
+
+The first section maps various C data types to a name, which corresponds
+somewhat with the various Perl types. The second section contains C code
+which B<xsubpp> uses to handle input parameters. The third section contains
+C code which B<xsubpp> uses to handle output parameters.
+
+Let's take a look at a portion of the .c file created for our extension.
+The file name is Mytest.c:
+
+ XS(XS_Mytest_round)
+ {
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "Usage: Mytest::round(arg)");
+ PERL_UNUSED_VAR(cv); /* -W */
+ {
+ double arg = (double)SvNV(ST(0)); /* XXXXX */
+ if (arg > 0.0) {
+ arg = floor(arg + 0.5);
+ } else if (arg < 0.0) {
+ arg = ceil(arg - 0.5);
+ } else {
+ arg = 0.0;
+ }
+ sv_setnv(ST(0), (double)arg); /* XXXXX */
+ SvSETMAGIC(ST(0));
+ }
+ XSRETURN_EMPTY;
+ }
+
+Notice the two lines commented with "XXXXX". If you check the first part
+of the typemap file (or section), you'll see that doubles are of type
+T_DOUBLE. In the INPUT part of the typemap, an argument that is T_DOUBLE
+is assigned to the variable arg by calling the routine SvNV on something,
+then casting it to double, then assigned to the variable arg. Similarly,
+in the OUTPUT section, once arg has its final value, it is passed to the
+sv_setnv function to be passed back to the calling subroutine. These two
+functions are explained in L<perlguts>; we'll talk more later about what
+that "ST(0)" means in the section on the argument stack.
+
+=head2 Warning about Output Arguments
+
+In general, it's not a good idea to write extensions that modify their input
+parameters, as in Example 3. Instead, you should probably return multiple
+values in an array and let the caller handle them (we'll do this in a later
+example). However, in order to better accommodate calling pre-existing C
+routines, which often do modify their input parameters, this behavior is
+tolerated.
+
+=head2 EXAMPLE 4
+
+In this example, we'll now begin to write XSUBs that will interact with
+pre-defined C libraries. To begin with, we will build a small library of
+our own, then let h2xs write our .pm and .xs files for us.
+
+Create a new directory called Mytest2 at the same level as the directory
+Mytest. In the Mytest2 directory, create another directory called mylib,
+and cd into that directory.
+
+Here we'll create some files that will generate a test library. These will
+include a C source file and a header file. We'll also create a Makefile.PL
+in this directory. Then we'll make sure that running make at the Mytest2
+level will automatically run this Makefile.PL file and the resulting Makefile.
+
+In the mylib directory, create a file mylib.h that looks like this:
+
+ #define TESTVAL 4
+
+ extern double foo(int, long, const char*);
+
+Also create a file mylib.c that looks like this:
+
+ #include <stdlib.h>
+ #include "./mylib.h"
+
+ double
+ foo(int a, long b, const char *c)
+ {
+ return (a + b + atof(c) + TESTVAL);
+ }
+
+And finally create a file Makefile.PL that looks like this:
+
+ use ExtUtils::MakeMaker;
+ $Verbose = 1;
+ WriteMakefile(
+ NAME => 'Mytest2::mylib',
+ SKIP => [qw(all static static_lib dynamic dynamic_lib)],
+ clean => {'FILES' => 'libmylib$(LIB_EXT)'},
+ );
+
+
+ sub MY::top_targets {
+ '
+ all :: static
+
+ pure_all :: static
+
+ static :: libmylib$(LIB_EXT)
+
+ libmylib$(LIB_EXT): $(O_FILES)
+ $(AR) cr libmylib$(LIB_EXT) $(O_FILES)
+ $(RANLIB) libmylib$(LIB_EXT)
+
+ ';
+ }
+
+Make sure you use a tab and not spaces on the lines beginning with "$(AR)"
+and "$(RANLIB)". Make will not function properly if you use spaces.
+It has also been reported that the "cr" argument to $(AR) is unnecessary
+on Win32 systems.
+
+We will now create the main top-level Mytest2 files. Change to the directory
+above Mytest2 and run the following command:
+
+ % h2xs -O -n Mytest2 ./Mytest2/mylib/mylib.h
+
+This will print out a warning about overwriting Mytest2, but that's okay.
+Our files are stored in Mytest2/mylib, and will be untouched.
+
+The normal Makefile.PL that h2xs generates doesn't know about the mylib
+directory. We need to tell it that there is a subdirectory and that we
+will be generating a library in it. Let's add the argument MYEXTLIB to
+the WriteMakefile call so that it looks like this:
+
+ WriteMakefile(
+ 'NAME' => 'Mytest2',
+ 'VERSION_FROM' => 'Mytest2.pm', # finds $VERSION
+ 'LIBS' => [''], # e.g., '-lm'
+ 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING'
+ 'INC' => '', # e.g., '-I/usr/include/other'
+ 'MYEXTLIB' => 'mylib/libmylib$(LIB_EXT)',
+ );
+
+and then at the end add a subroutine (which will override the pre-existing
+subroutine). Remember to use a tab character to indent the line beginning
+with "cd"!
+
+ sub MY::postamble {
+ '
+ $(MYEXTLIB): mylib/Makefile
+ cd mylib && $(MAKE) $(PASSTHRU)
+ ';
+ }
+
+Let's also fix the MANIFEST file so that it accurately reflects the contents
+of our extension. The single line that says "mylib" should be replaced by
+the following three lines:
+
+ mylib/Makefile.PL
+ mylib/mylib.c
+ mylib/mylib.h
+
+To keep our namespace nice and unpolluted, edit the .pm file and change
+the variable C<@EXPORT> to C<@EXPORT_OK>. Finally, in the
+.xs file, edit the #include line to read:
+
+ #include "mylib/mylib.h"
+
+And also add the following function definition to the end of the .xs file:
+
+ double
+ foo(a,b,c)
+ int a
+ long b
+ const char * c
+ OUTPUT:
+ RETVAL
+
+Now we also need to create a typemap because the default Perl doesn't
+currently support the C<const char *> type. Include a new TYPEMAP
+section in your XS code before the above function:
+
+ TYPEMAP: <<END;
+ const char * T_PV
+ END
+
+Now run perl on the top-level Makefile.PL. Notice that it also created a
+Makefile in the mylib directory. Run make and watch that it does cd into
+the mylib directory and run make in there as well.
+
+Now edit the Mytest2.t script and change the number of tests to "4",
+and add the following lines to the end of the script:
+
+ is( &Mytest2::foo(1, 2, "Hello, world!"), 7 );
+ is( &Mytest2::foo(1, 2, "0.0"), 7 );
+ ok( abs(&Mytest2::foo(0, 0, "-3.4") - 0.6) <= 0.01 );
+
+(When dealing with floating-point comparisons, it is best to not check for
+equality, but rather that the difference between the expected and actual
+result is below a certain amount (called epsilon) which is 0.01 in this case)
+
+Run "C<make test>" and all should be well. There are some warnings on missing tests
+for the Mytest2::mylib extension, but you can ignore them.
+
+=head2 What has happened here?
+
+Unlike previous examples, we've now run h2xs on a real include file. This
+has caused some extra goodies to appear in both the .pm and .xs files.
+
+=over 4
+
+=item *
+
+In the .xs file, there's now a #include directive with the absolute path to
+the mylib.h header file. We changed this to a relative path so that we
+could move the extension directory if we wanted to.
+
+=item *
+
+There's now some new C code that's been added to the .xs file. The purpose
+of the C<constant> routine is to make the values that are #define'd in the
+header file accessible by the Perl script (by calling either C<TESTVAL> or
+C<&Mytest2::TESTVAL>). There's also some XS code to allow calls to the
+C<constant> routine.
+
+=item *
+
+The .pm file originally exported the name C<TESTVAL> in the C<@EXPORT> array.
+This could lead to name clashes. A good rule of thumb is that if the #define
+is only going to be used by the C routines themselves, and not by the user,
+they should be removed from the C<@EXPORT> array. Alternately, if you don't
+mind using the "fully qualified name" of a variable, you could move most
+or all of the items from the C<@EXPORT> array into the C<@EXPORT_OK> array.
+
+=item *
+
+If our include file had contained #include directives, these would not have
+been processed by h2xs. There is no good solution to this right now.
+
+=item *
+
+We've also told Perl about the library that we built in the mylib
+subdirectory. That required only the addition of the C<MYEXTLIB> variable
+to the WriteMakefile call and the replacement of the postamble subroutine
+to cd into the subdirectory and run make. The Makefile.PL for the
+library is a bit more complicated, but not excessively so. Again we
+replaced the postamble subroutine to insert our own code. This code
+simply specified that the library to be created here was a static archive
+library (as opposed to a dynamically loadable library) and provided the
+commands to build it.
+
+=back
+
+=head2 Anatomy of .xs file
+
+The .xs file of L<"EXAMPLE 4"> contained some new elements. To understand
+the meaning of these elements, pay attention to the line which reads
+
+ MODULE = Mytest2 PACKAGE = Mytest2
+
+Anything before this line is plain C code which describes which headers
+to include, and defines some convenience functions. No translations are
+performed on this part, apart from having embedded POD documentation
+skipped over (see L<perlpod>) it goes into the generated output C file as is.
+
+Anything after this line is the description of XSUB functions.
+These descriptions are translated by B<xsubpp> into C code which
+implements these functions using Perl calling conventions, and which
+makes these functions visible from Perl interpreter.
+
+Pay a special attention to the function C<constant>. This name appears
+twice in the generated .xs file: once in the first part, as a static C
+function, then another time in the second part, when an XSUB interface to
+this static C function is defined.
+
+This is quite typical for .xs files: usually the .xs file provides
+an interface to an existing C function. Then this C function is defined
+somewhere (either in an external library, or in the first part of .xs file),
+and a Perl interface to this function (i.e. "Perl glue") is described in the
+second part of .xs file. The situation in L<"EXAMPLE 1">, L<"EXAMPLE 2">,
+and L<"EXAMPLE 3">, when all the work is done inside the "Perl glue", is
+somewhat of an exception rather than the rule.
+
+=head2 Getting the fat out of XSUBs
+
+In L<"EXAMPLE 4"> the second part of .xs file contained the following
+description of an XSUB:
+
+ double
+ foo(a,b,c)
+ int a
+ long b
+ const char * c
+ OUTPUT:
+ RETVAL
+
+Note that in contrast with L<"EXAMPLE 1">, L<"EXAMPLE 2"> and L<"EXAMPLE 3">,
+this description does not contain the actual I<code> for what is done
+during a call to Perl function foo(). To understand what is going
+on here, one can add a CODE section to this XSUB:
+
+ double
+ foo(a,b,c)
+ int a
+ long b
+ const char * c
+ CODE:
+ RETVAL = foo(a,b,c);
+ OUTPUT:
+ RETVAL
+
+However, these two XSUBs provide almost identical generated C code: B<xsubpp>
+compiler is smart enough to figure out the C<CODE:> section from the first
+two lines of the description of XSUB. What about C<OUTPUT:> section? In
+fact, that is absolutely the same! The C<OUTPUT:> section can be removed
+as well, I<as far as C<CODE:> section or C<PPCODE:> section> is not
+specified: B<xsubpp> can see that it needs to generate a function call
+section, and will autogenerate the OUTPUT section too. Thus one can
+shortcut the XSUB to become:
+
+ double
+ foo(a,b,c)
+ int a
+ long b
+ const char * c
+
+Can we do the same with an XSUB
+
+ int
+ is_even(input)
+ int input
+ CODE:
+ RETVAL = (input % 2 == 0);
+ OUTPUT:
+ RETVAL
+
+of L<"EXAMPLE 2">? To do this, one needs to define a C function C<int
+is_even(int input)>. As we saw in L<Anatomy of .xs file>, a proper place
+for this definition is in the first part of .xs file. In fact a C function
+
+ int
+ is_even(int arg)
+ {
+ return (arg % 2 == 0);
+ }
+
+is probably overkill for this. Something as simple as a C<#define> will
+do too:
+
+ #define is_even(arg) ((arg) % 2 == 0)
+
+After having this in the first part of .xs file, the "Perl glue" part becomes
+as simple as
+
+ int
+ is_even(input)
+ int input
+
+This technique of separation of the glue part from the workhorse part has
+obvious tradeoffs: if you want to change a Perl interface, you need to
+change two places in your code. However, it removes a lot of clutter,
+and makes the workhorse part independent from idiosyncrasies of Perl calling
+convention. (In fact, there is nothing Perl-specific in the above description,
+a different version of B<xsubpp> might have translated this to TCL glue or
+Python glue as well.)
+
+=head2 More about XSUB arguments
+
+With the completion of Example 4, we now have an easy way to simulate some
+real-life libraries whose interfaces may not be the cleanest in the world.
+We shall now continue with a discussion of the arguments passed to the
+B<xsubpp> compiler.
+
+When you specify arguments to routines in the .xs file, you are really
+passing three pieces of information for each argument listed. The first
+piece is the order of that argument relative to the others (first, second,
+etc). The second is the type of argument, and consists of the type
+declaration of the argument (e.g., int, char*, etc). The third piece is
+the calling convention for the argument in the call to the library function.
+
+While Perl passes arguments to functions by reference,
+C passes arguments by value; to implement a C function which modifies data
+of one of the "arguments", the actual argument of this C function would be
+a pointer to the data. Thus two C functions with declarations
+
+ int string_length(char *s);
+ int upper_case_char(char *cp);
+
+may have completely different semantics: the first one may inspect an array
+of chars pointed by s, and the second one may immediately dereference C<cp>
+and manipulate C<*cp> only (using the return value as, say, a success
+indicator). From Perl one would use these functions in
+a completely different manner.
+
+One conveys this info to B<xsubpp> by replacing C<*> before the
+argument by C<&>. C<&> means that the argument should be passed to a library
+function by its address. The above two function may be XSUB-ified as
+
+ int
+ string_length(s)
+ char * s
+
+ int
+ upper_case_char(cp)
+ char &cp
+
+For example, consider:
+
+ int
+ foo(a,b)
+ char &a
+ char * b
+
+The first Perl argument to this function would be treated as a char and assigned
+to the variable a, and its address would be passed into the function foo.
+The second Perl argument would be treated as a string pointer and assigned to the
+variable b. The I<value> of b would be passed into the function foo. The
+actual call to the function foo that B<xsubpp> generates would look like this:
+
+ foo(&a, b);
+
+B<xsubpp> will parse the following function argument lists identically:
+
+ char &a
+ char&a
+ char & a
+
+However, to help ease understanding, it is suggested that you place a "&"
+next to the variable name and away from the variable type), and place a
+"*" near the variable type, but away from the variable name (as in the
+call to foo above). By doing so, it is easy to understand exactly what
+will be passed to the C function; it will be whatever is in the "last
+column".
+
+You should take great pains to try to pass the function the type of variable
+it wants, when possible. It will save you a lot of trouble in the long run.
+
+=head2 The Argument Stack
+
+If we look at any of the C code generated by any of the examples except
+example 1, you will notice a number of references to ST(n), where n is
+usually 0. "ST" is actually a macro that points to the n'th argument
+on the argument stack. ST(0) is thus the first argument on the stack and
+therefore the first argument passed to the XSUB, ST(1) is the second
+argument, and so on.
+
+When you list the arguments to the XSUB in the .xs file, that tells B<xsubpp>
+which argument corresponds to which of the argument stack (i.e., the first
+one listed is the first argument, and so on). You invite disaster if you
+do not list them in the same order as the function expects them.
+
+The actual values on the argument stack are pointers to the values passed
+in. When an argument is listed as being an OUTPUT value, its corresponding
+value on the stack (i.e., ST(0) if it was the first argument) is changed.
+You can verify this by looking at the C code generated for Example 3.
+The code for the round() XSUB routine contains lines that look like this:
+
+ double arg = (double)SvNV(ST(0));
+ /* Round the contents of the variable arg */
+ sv_setnv(ST(0), (double)arg);
+
+The arg variable is initially set by taking the value from ST(0), then is
+stored back into ST(0) at the end of the routine.
+
+XSUBs are also allowed to return lists, not just scalars. This must be
+done by manipulating stack values ST(0), ST(1), etc, in a subtly
+different way. See L<perlxs> for details.
+
+XSUBs are also allowed to avoid automatic conversion of Perl function arguments
+to C function arguments. See L<perlxs> for details. Some people prefer
+manual conversion by inspecting C<ST(i)> even in the cases when automatic
+conversion will do, arguing that this makes the logic of an XSUB call clearer.
+Compare with L<"Getting the fat out of XSUBs"> for a similar tradeoff of
+a complete separation of "Perl glue" and "workhorse" parts of an XSUB.
+
+While experts may argue about these idioms, a novice to Perl guts may
+prefer a way which is as little Perl-guts-specific as possible, meaning
+automatic conversion and automatic call generation, as in
+L<"Getting the fat out of XSUBs">. This approach has the additional
+benefit of protecting the XSUB writer from future changes to the Perl API.
+
+=head2 Extending your Extension
+
+Sometimes you might want to provide some extra methods or subroutines
+to assist in making the interface between Perl and your extension simpler
+or easier to understand. These routines should live in the .pm file.
+Whether they are automatically loaded when the extension itself is loaded
+or only loaded when called depends on where in the .pm file the subroutine
+definition is placed. You can also consult L<AutoLoader> for an alternate
+way to store and load your extra subroutines.
+
+=head2 Documenting your Extension
+
+There is absolutely no excuse for not documenting your extension.
+Documentation belongs in the .pm file. This file will be fed to pod2man,
+and the embedded documentation will be converted to the manpage format,
+then placed in the blib directory. It will be copied to Perl's
+manpage directory when the extension is installed.
+
+You may intersperse documentation and Perl code within the .pm file.
+In fact, if you want to use method autoloading, you must do this,
+as the comment inside the .pm file explains.
+
+See L<perlpod> for more information about the pod format.
+
+=head2 Installing your Extension
+
+Once your extension is complete and passes all its tests, installing it
+is quite simple: you simply run "make install". You will either need
+to have write permission into the directories where Perl is installed,
+or ask your system administrator to run the make for you.
+
+Alternately, you can specify the exact directory to place the extension's
+files by placing a "PREFIX=/destination/directory" after the make install.
+(or in between the make and install if you have a brain-dead version of make).
+This can be very useful if you are building an extension that will eventually
+be distributed to multiple systems. You can then just archive the files in
+the destination directory and distribute them to your destination systems.
+
+=head2 EXAMPLE 5
+
+In this example, we'll do some more work with the argument stack. The
+previous examples have all returned only a single value. We'll now
+create an extension that returns an array.
+
+This extension is very Unix-oriented (struct statfs and the statfs system
+call). If you are not running on a Unix system, you can substitute for
+statfs any other function that returns multiple values, you can hard-code
+values to be returned to the caller (although this will be a bit harder
+to test the error case), or you can simply not do this example. If you
+change the XSUB, be sure to fix the test cases to match the changes.
+
+Return to the Mytest directory and add the following code to the end of
+Mytest.xs:
+
+ void
+ statfs(path)
+ char * path
+ INIT:
+ int i;
+ struct statfs buf;
+
+ PPCODE:
+ i = statfs(path, &buf);
+ if (i == 0) {
+ XPUSHs(sv_2mortal(newSVnv(buf.f_bavail)));
+ XPUSHs(sv_2mortal(newSVnv(buf.f_bfree)));
+ XPUSHs(sv_2mortal(newSVnv(buf.f_blocks)));
+ XPUSHs(sv_2mortal(newSVnv(buf.f_bsize)));
+ XPUSHs(sv_2mortal(newSVnv(buf.f_ffree)));
+ XPUSHs(sv_2mortal(newSVnv(buf.f_files)));
+ XPUSHs(sv_2mortal(newSVnv(buf.f_type)));
+ } else {
+ XPUSHs(sv_2mortal(newSVnv(errno)));
+ }
+
+You'll also need to add the following code to the top of the .xs file, just
+after the include of "XSUB.h":
+
+ #include <sys/vfs.h>
+
+Also add the following code segment to Mytest.t while incrementing the "9"
+tests to "11":
+
+ @a = &Mytest::statfs("/blech");
+ ok( scalar(@a) == 1 && $a[0] == 2 );
+ @a = &Mytest::statfs("/");
+ is( scalar(@a), 7 );
+
+=head2 New Things in this Example
+
+This example added quite a few new concepts. We'll take them one at a time.
+
+=over 4
+
+=item *
+
+The INIT: directive contains code that will be placed immediately after
+the argument stack is decoded. C does not allow variable declarations at
+arbitrary locations inside a function,
+so this is usually the best way to declare local variables needed by the XSUB.
+(Alternatively, one could put the whole C<PPCODE:> section into braces, and
+put these declarations on top.)
+
+=item *
+
+This routine also returns a different number of arguments depending on the
+success or failure of the call to statfs. If there is an error, the error
+number is returned as a single-element array. If the call is successful,
+then a 7-element array is returned. Since only one argument is passed into
+this function, we need room on the stack to hold the 7 values which may be
+returned.
+
+We do this by using the PPCODE: directive, rather than the CODE: directive.
+This tells B<xsubpp> that we will be managing the return values that will be
+put on the argument stack by ourselves.
+
+=item *
+
+When we want to place values to be returned to the caller onto the stack,
+we use the series of macros that begin with "XPUSH". There are five
+different versions, for placing integers, unsigned integers, doubles,
+strings, and Perl scalars on the stack. In our example, we placed a
+Perl scalar onto the stack. (In fact this is the only macro which
+can be used to return multiple values.)
+
+The XPUSH* macros will automatically extend the return stack to prevent
+it from being overrun. You push values onto the stack in the order you
+want them seen by the calling program.
+
+=item *
+
+The values pushed onto the return stack of the XSUB are actually mortal SV's.
+They are made mortal so that once the values are copied by the calling
+program, the SV's that held the returned values can be deallocated.
+If they were not mortal, then they would continue to exist after the XSUB
+routine returned, but would not be accessible. This is a memory leak.
+
+=item *
+
+If we were interested in performance, not in code compactness, in the success
+branch we would not use C<XPUSHs> macros, but C<PUSHs> macros, and would
+pre-extend the stack before pushing the return values:
+
+ EXTEND(SP, 7);
+
+The tradeoff is that one needs to calculate the number of return values
+in advance (though overextending the stack will not typically hurt
+anything but memory consumption).
+
+Similarly, in the failure branch we could use C<PUSHs> I<without> extending
+the stack: the Perl function reference comes to an XSUB on the stack, thus
+the stack is I<always> large enough to take one return value.
+
+=back
+
+=head2 EXAMPLE 6
+
+In this example, we will accept a reference to an array as an input
+parameter, and return a reference to an array of hashes. This will
+demonstrate manipulation of complex Perl data types from an XSUB.
+
+This extension is somewhat contrived. It is based on the code in
+the previous example. It calls the statfs function multiple times,
+accepting a reference to an array of filenames as input, and returning
+a reference to an array of hashes containing the data for each of the
+filesystems.
+
+Return to the Mytest directory and add the following code to the end of
+Mytest.xs:
+
+ SV *
+ multi_statfs(paths)
+ SV * paths
+ INIT:
+ AV * results;
+ I32 numpaths = 0;
+ int i, n;
+ struct statfs buf;
+
+ SvGETMAGIC(paths);
+ if ((!SvROK(paths))
+ || (SvTYPE(SvRV(paths)) != SVt_PVAV)
+ || ((numpaths = av_top_index((AV *)SvRV(paths))) < 0))
+ {
+ XSRETURN_UNDEF;
+ }
+ results = (AV *)sv_2mortal((SV *)newAV());
+ CODE:
+ for (n = 0; n <= numpaths; n++) {
+ HV * rh;
+ STRLEN l;
+ char * fn = SvPV(*av_fetch((AV *)SvRV(paths), n, 0), l);
+
+ i = statfs(fn, &buf);
+ if (i != 0) {
+ av_push(results, newSVnv(errno));
+ continue;
+ }
+
+ rh = (HV *)sv_2mortal((SV *)newHV());
+
+ hv_store(rh, "f_bavail", 8, newSVnv(buf.f_bavail), 0);
+ hv_store(rh, "f_bfree", 7, newSVnv(buf.f_bfree), 0);
+ hv_store(rh, "f_blocks", 8, newSVnv(buf.f_blocks), 0);
+ hv_store(rh, "f_bsize", 7, newSVnv(buf.f_bsize), 0);
+ hv_store(rh, "f_ffree", 7, newSVnv(buf.f_ffree), 0);
+ hv_store(rh, "f_files", 7, newSVnv(buf.f_files), 0);
+ hv_store(rh, "f_type", 6, newSVnv(buf.f_type), 0);
+
+ av_push(results, newRV((SV *)rh));
+ }
+ RETVAL = newRV((SV *)results);
+ OUTPUT:
+ RETVAL
+
+And add the following code to Mytest.t, while incrementing the "11"
+tests to "13":
+
+ $results = Mytest::multi_statfs([ '/', '/blech' ]);
+ ok( ref $results->[0] );
+ ok( ! ref $results->[1] );
+
+=head2 New Things in this Example
+
+There are a number of new concepts introduced here, described below:
+
+=over 4
+
+=item *
+
+This function does not use a typemap. Instead, we declare it as accepting
+one SV* (scalar) parameter, and returning an SV* value, and we take care of
+populating these scalars within the code. Because we are only returning
+one value, we don't need a C<PPCODE:> directive - instead, we use C<CODE:>
+and C<OUTPUT:> directives.
+
+=item *
+
+When dealing with references, it is important to handle them with caution.
+The C<INIT:> block first calls SvGETMAGIC(paths), in case
+paths is a tied variable. Then it checks that C<SvROK> returns
+true, which indicates that paths is a valid reference. (Simply
+checking C<SvROK> won't trigger FETCH on a tied variable.) It
+then verifies that the object referenced by paths is an array, using C<SvRV>
+to dereference paths, and C<SvTYPE> to discover its type. As an added test,
+it checks that the array referenced by paths is non-empty, using the C<av_top_index>
+function (which returns -1 if the array is empty). The XSRETURN_UNDEF macro
+is used to abort the XSUB and return the undefined value whenever all three of
+these conditions are not met.
+
+=item *
+
+We manipulate several arrays in this XSUB. Note that an array is represented
+internally by an AV* pointer. The functions and macros for manipulating
+arrays are similar to the functions in Perl: C<av_top_index> returns the highest
+index in an AV*, much like $#array; C<av_fetch> fetches a single scalar value
+from an array, given its index; C<av_push> pushes a scalar value onto the
+end of the array, automatically extending the array as necessary.
+
+Specifically, we read pathnames one at a time from the input array, and
+store the results in an output array (results) in the same order. If
+statfs fails, the element pushed onto the return array is the value of
+errno after the failure. If statfs succeeds, though, the value pushed
+onto the return array is a reference to a hash containing some of the
+information in the statfs structure.
+
+As with the return stack, it would be possible (and a small performance win)
+to pre-extend the return array before pushing data into it, since we know
+how many elements we will return:
+
+ av_extend(results, numpaths);
+
+=item *
+
+We are performing only one hash operation in this function, which is storing
+a new scalar under a key using C<hv_store>. A hash is represented by an HV*
+pointer. Like arrays, the functions for manipulating hashes from an XSUB
+mirror the functionality available from Perl. See L<perlguts> and L<perlapi>
+for details.
+
+=item *
+
+To create a reference, we use the C<newRV> function. Note that you can
+cast an AV* or an HV* to type SV* in this case (and many others). This
+allows you to take references to arrays, hashes and scalars with the same
+function. Conversely, the C<SvRV> function always returns an SV*, which may
+need to be cast to the appropriate type if it is something other than a
+scalar (check with C<SvTYPE>).
+
+=item *
+
+At this point, xsubpp is doing very little work - the differences between
+Mytest.xs and Mytest.c are minimal.
+
+=back
+
+=head2 EXAMPLE 7 (Coming Soon)
+
+XPUSH args AND set RETVAL AND assign return value to array
+
+=head2 EXAMPLE 8 (Coming Soon)
+
+Setting $!
+
+=head2 EXAMPLE 9 Passing open files to XSes
+
+You would think passing files to an XS is difficult, with all the
+typeglobs and stuff. Well, it isn't.
+
+Suppose that for some strange reason we need a wrapper around the
+standard C library function C<fputs()>. This is all we need:
+
+ #define PERLIO_NOT_STDIO 0
+ #include "EXTERN.h"
+ #include "perl.h"
+ #include "XSUB.h"
+
+ #include <stdio.h>
+
+ int
+ fputs(s, stream)
+ char * s
+ FILE * stream
+
+The real work is done in the standard typemap.
+
+B<But> you lose all the fine stuff done by the perlio layers. This
+calls the stdio function C<fputs()>, which knows nothing about them.
+
+The standard typemap offers three variants of PerlIO *:
+C<InputStream> (T_IN), C<InOutStream> (T_INOUT) and C<OutputStream>
+(T_OUT). A bare C<PerlIO *> is considered a T_INOUT. If it matters
+in your code (see below for why it might) #define or typedef
+one of the specific names and use that as the argument or result
+type in your XS file.
+
+The standard typemap does not contain PerlIO * before perl 5.7,
+but it has the three stream variants. Using a PerlIO * directly
+is not backwards compatible unless you provide your own typemap.
+
+For streams coming I<from> perl the main difference is that
+C<OutputStream> will get the output PerlIO * - which may make
+a difference on a socket. Like in our example...
+
+For streams being handed I<to> perl a new file handle is created
+(i.e. a reference to a new glob) and associated with the PerlIO *
+provided. If the read/write state of the PerlIO * is not correct then you
+may get errors or warnings from when the file handle is used.
+So if you opened the PerlIO * as "w" it should really be an
+C<OutputStream> if open as "r" it should be an C<InputStream>.
+
+Now, suppose you want to use perlio layers in your XS. We'll use the
+perlio C<PerlIO_puts()> function as an example.
+
+In the C part of the XS file (above the first MODULE line) you
+have
+
+ #define OutputStream PerlIO *
+ or
+ typedef PerlIO * OutputStream;
+
+
+And this is the XS code:
+
+ int
+ perlioputs(s, stream)
+ char * s
+ OutputStream stream
+ CODE:
+ RETVAL = PerlIO_puts(stream, s);
+ OUTPUT:
+ RETVAL
+
+We have to use a C<CODE> section because C<PerlIO_puts()> has the arguments
+reversed compared to C<fputs()>, and we want to keep the arguments the same.
+
+Wanting to explore this thoroughly, we want to use the stdio C<fputs()>
+on a PerlIO *. This means we have to ask the perlio system for a stdio
+C<FILE *>:
+
+ int
+ perliofputs(s, stream)
+ char * s
+ OutputStream stream
+ PREINIT:
+ FILE *fp = PerlIO_findFILE(stream);
+ CODE:
+ if (fp != (FILE*) 0) {
+ RETVAL = fputs(s, fp);
+ } else {
+ RETVAL = -1;
+ }
+ OUTPUT:
+ RETVAL
+
+Note: C<PerlIO_findFILE()> will search the layers for a stdio
+layer. If it can't find one, it will call C<PerlIO_exportFILE()> to
+generate a new stdio C<FILE>. Please only call C<PerlIO_exportFILE()> if
+you want a I<new> C<FILE>. It will generate one on each call and push a
+new stdio layer. So don't call it repeatedly on the same
+file. C<PerlIO_findFILE()> will retrieve the stdio layer once it has been
+generated by C<PerlIO_exportFILE()>.
+
+This applies to the perlio system only. For versions before 5.7,
+C<PerlIO_exportFILE()> is equivalent to C<PerlIO_findFILE()>.
+
+=head2 Troubleshooting these Examples
+
+As mentioned at the top of this document, if you are having problems with
+these example extensions, you might see if any of these help you.
+
+=over 4
+
+=item *
+
+In versions of 5.002 prior to the gamma version, the test script in Example
+1 will not function properly. You need to change the "use lib" line to
+read:
+
+ use lib './blib';
+
+=item *
+
+In versions of 5.002 prior to version 5.002b1h, the test.pl file was not
+automatically created by h2xs. This means that you cannot say "make test"
+to run the test script. You will need to add the following line before the
+"use extension" statement:
+
+ use lib './blib';
+
+=item *
+
+In versions 5.000 and 5.001, instead of using the above line, you will need
+to use the following line:
+
+ BEGIN { unshift(@INC, "./blib") }
+
+=item *
+
+This document assumes that the executable named "perl" is Perl version 5.
+Some systems may have installed Perl version 5 as "perl5".
+
+=back
+
+=head1 See also
+
+For more information, consult L<perlguts>, L<perlapi>, L<perlxs>, L<perlmod>,
+and L<perlpod>.
+
+=head1 Author
+
+Jeff Okamoto <F<okamoto at corp.hp.com>>
+
+Reviewed and assisted by Dean Roehrich, Ilya Zakharevich, Andreas Koenig,
+and Tim Bunce.
+
+PerlIO material contributed by Lupe Christoph, with some clarification
+by Nick Ing-Simmons.
+
+Changes for h2xs as of Perl 5.8.x by Renee Baecker
+
+=head2 Last Changed
+
+2012-01-20
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,699 @@
+=head1 NAME
+
+perlxstypemap - Perl XS C/Perl type mapping
+
+=head1 DESCRIPTION
+
+The more you think about interfacing between two languages, the more
+you'll realize that the majority of programmer effort has to go into
+converting between the data structures that are native to either of
+the languages involved. This trumps other matter such as differing
+calling conventions because the problem space is so much greater.
+There are simply more ways to shove data into memory than there are
+ways to implement a function call.
+
+Perl XS' attempt at a solution to this is the concept of typemaps.
+At an abstract level, a Perl XS typemap is nothing but a recipe for
+converting from a certain Perl data structure to a certain C
+data structure and vice versa. Since there can be C types that
+are sufficiently similar to warrant converting with the same logic,
+XS typemaps are represented by a unique identifier, henceforth
+called an <XS type> in this document. You can then tell the XS
+compiler that multiple C types are to be mapped with the same
+XS typemap.
+
+In your XS code, when you define an argument with a C type or when
+you are using a C<CODE:> and an C<OUTPUT:> section together with a
+C return type of your XSUB, it'll be the typemapping mechanism that
+makes this easy.
+
+=head2 Anatomy of a typemap
+
+In more practical terms, the typemap is a collection of code
+fragments which are used by the B<xsubpp> compiler to map C function
+parameters and values to Perl values. The typemap file may consist
+of three sections labelled C<TYPEMAP>, C<INPUT>, and C<OUTPUT>.
+An unlabelled initial section is assumed to be a C<TYPEMAP> section.
+The INPUT section tells the compiler how to translate Perl values
+into variables of certain C types. The OUTPUT section tells the
+compiler how to translate the values from certain C types into values
+Perl can understand. The TYPEMAP section tells the compiler which
+of the INPUT and OUTPUT code fragments should be used to map a given
+C type to a Perl value. The section labels C<TYPEMAP>, C<INPUT>, or
+C<OUTPUT> must begin in the first column on a line by themselves,
+and must be in uppercase.
+
+Each type of section can appear an arbitrary number of times
+and does not have to appear at all. For example, a typemap may
+commonly lack C<INPUT> and C<OUTPUT> sections if all it needs to
+do is associate additional C types with core XS types like T_PTROBJ.
+Lines that start with a hash C<#> are considered comments and ignored
+in the C<TYPEMAP> section, but are considered significant in C<INPUT>
+and C<OUTPUT>. Blank lines are generally ignored.
+
+Traditionally, typemaps needed to be written to a separate file,
+conventionally called C<typemap> in a CPAN distribution. With
+ExtUtils::ParseXS (the XS compiler) version 3.12 or better which
+comes with perl 5.16, typemaps can also be embedded directly into
+XS code using a HERE-doc like syntax:
+
+ TYPEMAP: <<HERE
+ ...
+ HERE
+
+where C<HERE> can be replaced by other identifiers like with normal
+Perl HERE-docs. All details below about the typemap textual format
+remain valid.
+
+The C<TYPEMAP> section should contain one pair of C type and
+XS type per line as follows. An example from the core typemap file:
+
+ TYPEMAP
+ # all variants of char* is handled by the T_PV typemap
+ char * T_PV
+ const char * T_PV
+ unsigned char * T_PV
+ ...
+
+The C<INPUT> and C<OUTPUT> sections have identical formats, that is,
+each unindented line starts a new in- or output map respectively.
+A new in- or output map must start with the name of the XS type to
+map on a line by itself, followed by the code that implements it
+indented on the following lines. Example:
+
+ INPUT
+ T_PV
+ $var = ($type)SvPV_nolen($arg)
+ T_PTR
+ $var = INT2PTR($type,SvIV($arg))
+
+We'll get to the meaning of those Perlish-looking variables in a
+little bit.
+
+Finally, here's an example of the full typemap file for mapping C
+strings of the C<char *> type to Perl scalars/strings:
+
+ TYPEMAP
+ char * T_PV
+
+ INPUT
+ T_PV
+ $var = ($type)SvPV_nolen($arg)
+
+ OUTPUT
+ T_PV
+ sv_setpv((SV*)$arg, $var);
+
+Here's a more complicated example: suppose that you wanted
+C<struct netconfig> to be blessed into the class C<Net::Config>.
+One way to do this is to use underscores (_) to separate package
+names, as follows:
+
+ typedef struct netconfig * Net_Config;
+
+And then provide a typemap entry C<T_PTROBJ_SPECIAL> that maps
+underscores to double-colons (::), and declare C<Net_Config> to be of
+that type:
+
+ TYPEMAP
+ Net_Config T_PTROBJ_SPECIAL
+
+ INPUT
+ T_PTROBJ_SPECIAL
+ if (sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")){
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = INT2PTR($type, tmp);
+ }
+ else
+ croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")
+
+ OUTPUT
+ T_PTROBJ_SPECIAL
+ sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
+ (void*)$var);
+
+The INPUT and OUTPUT sections substitute underscores for double-colons
+on the fly, giving the desired effect. This example demonstrates some
+of the power and versatility of the typemap facility.
+
+The C<INT2PTR> macro (defined in perl.h) casts an integer to a pointer
+of a given type, taking care of the possible different size of integers
+and pointers. There are also C<PTR2IV>, C<PTR2UV>, C<PTR2NV> macros,
+to map the other way, which may be useful in OUTPUT sections.
+
+=head2 The Role of the typemap File in Your Distribution
+
+The default typemap in the F<lib/ExtUtils> directory of the Perl source
+contains many useful types which can be used by Perl extensions. Some
+extensions define additional typemaps which they keep in their own directory.
+These additional typemaps may reference INPUT and OUTPUT maps in the main
+typemap. The B<xsubpp> compiler will allow the extension's own typemap to
+override any mappings which are in the default typemap. Instead of using
+an additional F<typemap> file, typemaps may be embedded verbatim in XS
+with a heredoc-like syntax. See the documentation on the C<TYPEMAP:> XS
+keyword.
+
+For CPAN distributions, you can assume that the XS types defined by
+the perl core are already available. Additionally, the core typemap
+has default XS types for a large number of C types. For example, if
+you simply return a C<char *> from your XSUB, the core typemap will
+have this C type associated with the T_PV XS type. That means your
+C string will be copied into the PV (pointer value) slot of a new scalar
+that will be returned from your XSUB to to Perl.
+
+If you're developing a CPAN distribution using XS, you may add your own
+file called F<typemap> to the distribution. That file may contain
+typemaps that either map types that are specific to your code or that
+override the core typemap file's mappings for common C types.
+
+=head2 Sharing typemaps Between CPAN Distributions
+
+Starting with ExtUtils::ParseXS version 3.13_01 (comes with perl 5.16
+and better), it is rather easy to share typemap code between multiple
+CPAN distributions. The general idea is to share it as a module that
+offers a certain API and have the dependent modules declare that as a
+built-time requirement and import the typemap into the XS. An example
+of such a typemap-sharing module on CPAN is
+C<ExtUtils::Typemaps::Basic>. Two steps to getting that module's
+typemaps available in your code:
+
+=over 4
+
+=item *
+
+Declare C<ExtUtils::Typemaps::Basic> as a build-time dependency
+in C<Makefile.PL> (use C<BUILD_REQUIRES>), or in your C<Build.PL>
+(use C<build_requires>).
+
+=item *
+
+Include the following line in the XS section of your XS file:
+(don't break the line)
+
+ INCLUDE_COMMAND: $^X -MExtUtils::Typemaps::Cmd
+ -e "print embeddable_typemap(q{Basic})"
+
+=back
+
+=head2 Writing typemap Entries
+
+Each INPUT or OUTPUT typemap entry is a double-quoted Perl string that
+will be evaluated in the presence of certain variables to get the
+final C code for mapping a certain C type.
+
+This means that you can embed Perl code in your typemap (C) code using
+constructs such as
+C<${ perl code that evaluates to scalar reference here }>. A common
+use case is to generate error messages that refer to the true function
+name even when using the ALIAS XS feature:
+
+ ${ $ALIAS ? \q[GvNAME(CvGV(cv))] : \qq[\"$pname\"] }
+
+For many typemap examples, refer to the core typemap file that can be
+found in the perl source tree at F<lib/ExtUtils/typemap>.
+
+The Perl variables that are available for interpolation into typemaps
+are the following:
+
+=over 4
+
+=item *
+
+I<$var> - the name of the input or output variable, eg. RETVAL for
+return values.
+
+=item *
+
+I<$type> - the raw C type of the parameter, any C<:> replaced with
+C<_>.
+
+=item *
+
+I<$ntype> - the supplied type with C<*> replaced with C<Ptr>.
+e.g. for a type of C<Foo::Bar>, I<$ntype> is C<Foo::Bar>
+
+=item *
+
+I<$arg> - the stack entry, that the parameter is input from or output
+to, e.g. C<ST(0)>
+
+=item *
+
+I<$argoff> - the argument stack offset of the argument. ie. 0 for the
+first argument, etc.
+
+=item *
+
+I<$pname> - the full name of the XSUB, with including the C<PACKAGE>
+name, with any C<PREFIX> stripped. This is the non-ALIAS name.
+
+=item *
+
+I<$Package> - the package specified by the most recent C<PACKAGE>
+keyword.
+
+=item *
+
+I<$ALIAS> - non-zero if the current XSUB has any aliases declared with
+C<ALIAS>.
+
+=back
+
+=head2 Full Listing of Core Typemaps
+
+Each C type is represented by an entry in the typemap file that
+is responsible for converting perl variables (SV, AV, HV, CV, etc.)
+to and from that type. The following sections list all XS types
+that come with perl by default.
+
+=over 4
+
+=item T_SV
+
+This simply passes the C representation of the Perl variable (an SV*)
+in and out of the XS layer. This can be used if the C code wants
+to deal directly with the Perl variable.
+
+=item T_SVREF
+
+Used to pass in and return a reference to an SV.
+
+Note that this typemap does not decrement the reference count
+when returning the reference to an SV*.
+See also: T_SVREF_REFCOUNT_FIXED
+
+=item T_SVREF_FIXED
+
+Used to pass in and return a reference to an SV.
+This is a fixed
+variant of T_SVREF that decrements the refcount appropriately
+when returning a reference to an SV*. Introduced in perl 5.15.4.
+
+=item T_AVREF
+
+From the perl level this is a reference to a perl array.
+From the C level this is a pointer to an AV.
+
+Note that this typemap does not decrement the reference count
+when returning an AV*. See also: T_AVREF_REFCOUNT_FIXED
+
+=item T_AVREF_REFCOUNT_FIXED
+
+From the perl level this is a reference to a perl array.
+From the C level this is a pointer to an AV. This is a fixed
+variant of T_AVREF that decrements the refcount appropriately
+when returning an AV*. Introduced in perl 5.15.4.
+
+=item T_HVREF
+
+From the perl level this is a reference to a perl hash.
+From the C level this is a pointer to an HV.
+
+Note that this typemap does not decrement the reference count
+when returning an HV*. See also: T_HVREF_REFCOUNT_FIXED
+
+=item T_HVREF_REFCOUNT_FIXED
+
+From the perl level this is a reference to a perl hash.
+From the C level this is a pointer to an HV. This is a fixed
+variant of T_HVREF that decrements the refcount appropriately
+when returning an HV*. Introduced in perl 5.15.4.
+
+=item T_CVREF
+
+From the perl level this is a reference to a perl subroutine
+(e.g. $sub = sub { 1 };). From the C level this is a pointer
+to a CV.
+
+Note that this typemap does not decrement the reference count
+when returning an HV*. See also: T_HVREF_REFCOUNT_FIXED
+
+=item T_CVREF_REFCOUNT_FIXED
+
+From the perl level this is a reference to a perl subroutine
+(e.g. $sub = sub { 1 };). From the C level this is a pointer
+to a CV.
+
+This is a fixed
+variant of T_HVREF that decrements the refcount appropriately
+when returning an HV*. Introduced in perl 5.15.4.
+
+=item T_SYSRET
+
+The T_SYSRET typemap is used to process return values from system calls.
+It is only meaningful when passing values from C to perl (there is
+no concept of passing a system return value from Perl to C).
+
+System calls return -1 on error (setting ERRNO with the reason)
+and (usually) 0 on success. If the return value is -1 this typemap
+returns C<undef>. If the return value is not -1, this typemap
+translates a 0 (perl false) to "0 but true" (which
+is perl true) or returns the value itself, to indicate that the
+command succeeded.
+
+The L<POSIX|POSIX> module makes extensive use of this type.
+
+=item T_UV
+
+An unsigned integer.
+
+=item T_IV
+
+A signed integer. This is cast to the required integer type when
+passed to C and converted to an IV when passed back to Perl.
+
+=item T_INT
+
+A signed integer. This typemap converts the Perl value to a native
+integer type (the C<int> type on the current platform). When returning
+the value to perl it is processed in the same way as for T_IV.
+
+Its behaviour is identical to using an C<int> type in XS with T_IV.
+
+=item T_ENUM
+
+An enum value. Used to transfer an enum component
+from C. There is no reason to pass an enum value to C since
+it is stored as an IV inside perl.
+
+=item T_BOOL
+
+A boolean type. This can be used to pass true and false values to and
+from C.
+
+=item T_U_INT
+
+This is for unsigned integers. It is equivalent to using T_UV
+but explicitly casts the variable to type C<unsigned int>.
+The default type for C<unsigned int> is T_UV.
+
+=item T_SHORT
+
+Short integers. This is equivalent to T_IV but explicitly casts
+the return to type C<short>. The default typemap for C<short>
+is T_IV.
+
+=item T_U_SHORT
+
+Unsigned short integers. This is equivalent to T_UV but explicitly
+casts the return to type C<unsigned short>. The default typemap for
+C<unsigned short> is T_UV.
+
+T_U_SHORT is used for type C<U16> in the standard typemap.
+
+=item T_LONG
+
+Long integers. This is equivalent to T_IV but explicitly casts
+the return to type C<long>. The default typemap for C<long>
+is T_IV.
+
+=item T_U_LONG
+
+Unsigned long integers. This is equivalent to T_UV but explicitly
+casts the return to type C<unsigned long>. The default typemap for
+C<unsigned long> is T_UV.
+
+T_U_LONG is used for type C<U32> in the standard typemap.
+
+=item T_CHAR
+
+Single 8-bit characters.
+
+=item T_U_CHAR
+
+An unsigned byte.
+
+=item T_FLOAT
+
+A floating point number. This typemap guarantees to return a variable
+cast to a C<float>.
+
+=item T_NV
+
+A Perl floating point number. Similar to T_IV and T_UV in that the
+return type is cast to the requested numeric type rather than
+to a specific type.
+
+=item T_DOUBLE
+
+A double precision floating point number. This typemap guarantees to
+return a variable cast to a C<double>.
+
+=item T_PV
+
+A string (char *).
+
+=item T_PTR
+
+A memory address (pointer). Typically associated with a C<void *>
+type.
+
+=item T_PTRREF
+
+Similar to T_PTR except that the pointer is stored in a scalar and the
+reference to that scalar is returned to the caller. This can be used
+to hide the actual pointer value from the programmer since it is usually
+not required directly from within perl.
+
+The typemap checks that a scalar reference is passed from perl to XS.
+
+=item T_PTROBJ
+
+Similar to T_PTRREF except that the reference is blessed into a class.
+This allows the pointer to be used as an object. Most commonly used to
+deal with C structs. The typemap checks that the perl object passed
+into the XS routine is of the correct class (or part of a subclass).
+
+The pointer is blessed into a class that is derived from the name
+of type of the pointer but with all '*' in the name replaced with
+'Ptr'.
+
+=item T_REF_IV_REF
+
+NOT YET
+
+=item T_REF_IV_PTR
+
+Similar to T_PTROBJ in that the pointer is blessed into a scalar object.
+The difference is that when the object is passed back into XS it must be
+of the correct type (inheritance is not supported).
+
+The pointer is blessed into a class that is derived from the name
+of type of the pointer but with all '*' in the name replaced with
+'Ptr'.
+
+=item T_PTRDESC
+
+NOT YET
+
+=item T_REFREF
+
+Similar to T_PTRREF, except the pointer stored in the referenced scalar
+is dereferenced and copied to the output variable. This means that
+T_REFREF is to T_PTRREF as T_OPAQUE is to T_OPAQUEPTR. All clear?
+
+Only the INPUT part of this is implemented (Perl to XSUB) and there
+are no known users in core or on CPAN.
+
+=item T_REFOBJ
+
+NOT YET
+
+=item T_OPAQUEPTR
+
+This can be used to store bytes in the string component of the
+SV. Here the representation of the data is irrelevant to perl and the
+bytes themselves are just stored in the SV. It is assumed that the C
+variable is a pointer (the bytes are copied from that memory
+location). If the pointer is pointing to something that is
+represented by 8 bytes then those 8 bytes are stored in the SV (and
+length() will report a value of 8). This entry is similar to T_OPAQUE.
+
+In principle the unpack() command can be used to convert the bytes
+back to a number (if the underlying type is known to be a number).
+
+This entry can be used to store a C structure (the number
+of bytes to be copied is calculated using the C C<sizeof> function)
+and can be used as an alternative to T_PTRREF without having to worry
+about a memory leak (since Perl will clean up the SV).
+
+=item T_OPAQUE
+
+This can be used to store data from non-pointer types in the string
+part of an SV. It is similar to T_OPAQUEPTR except that the
+typemap retrieves the pointer directly rather than assuming it
+is being supplied. For example, if an integer is imported into
+Perl using T_OPAQUE rather than T_IV the underlying bytes representing
+the integer will be stored in the SV but the actual integer value will
+not be available. i.e. The data is opaque to perl.
+
+The data may be retrieved using the C<unpack> function if the
+underlying type of the byte stream is known.
+
+T_OPAQUE supports input and output of simple types.
+T_OPAQUEPTR can be used to pass these bytes back into C if a pointer
+is acceptable.
+
+=item Implicit array
+
+xsubpp supports a special syntax for returning
+packed C arrays to perl. If the XS return type is given as
+
+ array(type, nelem)
+
+xsubpp will copy the contents of C<nelem * sizeof(type)> bytes from
+RETVAL to an SV and push it onto the stack. This is only really useful
+if the number of items to be returned is known at compile time and you
+don't mind having a string of bytes in your SV. Use T_ARRAY to push a
+variable number of arguments onto the return stack (they won't be
+packed as a single string though).
+
+This is similar to using T_OPAQUEPTR but can be used to process more
+than one element.
+
+=item T_PACKED
+
+Calls user-supplied functions for conversion. For C<OUTPUT>
+(XSUB to Perl), a function named C<XS_pack_$ntype> is called
+with the output Perl scalar and the C variable to convert from.
+C<$ntype> is the normalized C type that is to be mapped to
+Perl. Normalized means that all C<*> are replaced by the
+string C<Ptr>. The return value of the function is ignored.
+
+Conversely for C<INPUT> (Perl to XSUB) mapping, the
+function named C<XS_unpack_$ntype> is called with the input Perl
+scalar as argument and the return value is cast to the mapped
+C type and assigned to the output C variable.
+
+An example conversion function for a typemapped struct
+C<foo_t *> might be:
+
+ static void
+ XS_pack_foo_tPtr(SV *out, foo_t *in)
+ {
+ dTHX; /* alas, signature does not include pTHX_ */
+ HV* hash = newHV();
+ hv_stores(hash, "int_member", newSViv(in->int_member));
+ hv_stores(hash, "float_member", newSVnv(in->float_member));
+ /* ... */
+
+ /* mortalize as thy stack is not refcounted */
+ sv_setsv(out, sv_2mortal(newRV_noinc((SV*)hash)));
+ }
+
+The conversion from Perl to C is left as an exercise to the reader,
+but the prototype would be:
+
+ static foo_t *
+ XS_unpack_foo_tPtr(SV *in);
+
+Instead of an actual C function that has to fetch the thread context
+using C<dTHX>, you can define macros of the same name and avoid the
+overhead. Also, keep in mind to possibly free the memory allocated by
+C<XS_unpack_foo_tPtr>.
+
+=item T_PACKEDARRAY
+
+T_PACKEDARRAY is similar to T_PACKED. In fact, the C<INPUT> (Perl
+to XSUB) typemap is indentical, but the C<OUTPUT> typemap passes
+an additional argument to the C<XS_pack_$ntype> function. This
+third parameter indicates the number of elements in the output
+so that the function can handle C arrays sanely. The variable
+needs to be declared by the user and must have the name
+C<count_$ntype> where C<$ntype> is the normalized C type name
+as explained above. The signature of the function would be for
+the example above and C<foo_t **>:
+
+ static void
+ XS_pack_foo_tPtrPtr(SV *out, foo_t *in, UV count_foo_tPtrPtr);
+
+The type of the third parameter is arbitrary as far as the typemap
+is concerned. It just has to be in line with the declared variable.
+
+Of course, unless you know the number of elements in the
+C<sometype **> C array, within your XSUB, the return value from
+C<foo_t ** XS_unpack_foo_tPtrPtr(...)> will be hard to decypher.
+Since the details are all up to the XS author (the typemap user),
+there are several solutions, none of which particularly elegant.
+The most commonly seen solution has been to allocate memory for
+N+1 pointers and assign C<NULL> to the (N+1)th to facilitate
+iteration.
+
+Alternatively, using a customized typemap for your purposes in
+the first place is probably preferrable.
+
+=item T_DATAUNIT
+
+NOT YET
+
+=item T_CALLBACK
+
+NOT YET
+
+=item T_ARRAY
+
+This is used to convert the perl argument list to a C array
+and for pushing the contents of a C array onto the perl
+argument stack.
+
+The usual calling signature is
+
+ @out = array_func( @in );
+
+Any number of arguments can occur in the list before the array but
+the input and output arrays must be the last elements in the list.
+
+When used to pass a perl list to C the XS writer must provide a
+function (named after the array type but with 'Ptr' substituted for
+'*') to allocate the memory required to hold the list. A pointer
+should be returned. It is up to the XS writer to free the memory on
+exit from the function. The variable C<ix_$var> is set to the number
+of elements in the new array.
+
+When returning a C array to Perl the XS writer must provide an integer
+variable called C<size_$var> containing the number of elements in the
+array. This is used to determine how many elements should be pushed
+onto the return argument stack. This is not required on input since
+Perl knows how many arguments are on the stack when the routine is
+called. Ordinarily this variable would be called C<size_RETVAL>.
+
+Additionally, the type of each element is determined from the type of
+the array. If the array uses type C<intArray *> xsubpp will
+automatically work out that it contains variables of type C<int> and
+use that typemap entry to perform the copy of each element. All
+pointer '*' and 'Array' tags are removed from the name to determine
+the subtype.
+
+=item T_STDIO
+
+This is used for passing perl filehandles to and from C using
+C<FILE *> structures.
+
+=item T_INOUT
+
+This is used for passing perl filehandles to and from C using
+C<PerlIO *> structures. The file handle can used for reading and
+writing. This corresponds to the C<+E<lt>> mode, see also T_IN
+and T_OUT.
+
+See L<perliol> for more information on the Perl IO abstraction
+layer. Perl must have been built with C<-Duseperlio>.
+
+There is no check to assert that the filehandle passed from Perl
+to C was created with the right C<open()> mode.
+
+Hint: The L<perlxstut> tutorial covers the T_INOUT, T_IN, and T_OUT
+XS types nicely.
+
+=item T_IN
+
+Same as T_INOUT, but the filehandle that is returned from C to Perl
+can only be used for reading (mode C<E<lt>>).
+
+=item T_OUT
+
+Same as T_INOUT, but the filehandle that is returned from C to Perl
+is set to use the open mode C<+E<gt>>.
+
+=back
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/001-basic.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/001-basic.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/001-basic.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/001-basic.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,89 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 11;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+
+my ($source_file, $obj_file, $lib_file);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+# Try sending to filehandle
+tie *FH, 'Foo';
+process_file( filename => 'XSTest.xs', output => \*FH, prototypes => 1 );
+like tied(*FH)->content, '/is_even/', "Test that output contains some text";
+
+$source_file = 'XSTest.c';
+
+# Try sending to file
+process_file(filename => 'XSTest.xs', output => $source_file, prototypes => 0);
+ok -e $source_file, "Create an output file";
+
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+ skip "no compiler available", 2
+ if ! $b->have_compiler;
+ $obj_file = $b->compile( source => $source_file );
+ ok $obj_file, "ExtUtils::CBuilder::compile() returned true value";
+ ok -e $obj_file, "Make sure $obj_file exists";
+}
+
+SKIP: {
+ skip "no dynamic loading", 5
+ if !$b->have_compiler || !$Config{usedl};
+ my $module = 'XSTest';
+ $lib_file = $b->link( objects => $obj_file, module_name => $module );
+ ok $lib_file, "ExtUtils::CBuilder::link() returned true value";
+ ok -e $lib_file, "Make sure $lib_file exists";
+
+ eval {require XSTest};
+ is $@, '', "No error message recorded, as expected";
+ ok XSTest::is_even(8),
+ "Function created thru XS returned expected true value";
+ ok !XSTest::is_even(9),
+ "Function created thru XS returned expected false value";
+
+ # Win32 needs to close the DLL before it can unlink it, but unfortunately
+ # dl_unload_file was missing on Win32 prior to perl change #24679!
+ if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+ for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+ if ($DynaLoader::dl_modules[$i] eq $module) {
+ DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+ last;
+ }
+ }
+ }
+}
+
+my $seen = 0;
+open my $IN, '<', $source_file
+ or die "Unable to open $source_file: $!";
+while (my $l = <$IN>) {
+ $seen++ if $l =~ m/#line\s1\s/;
+}
+close $IN or die "Unable to close $source_file: $!";
+is( $seen, 1, "Linenumbers created in output file, as intended" );
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+ for ( $obj_file, $lib_file, $source_file) {
+ next unless defined $_;
+ 1 while unlink $_;
+ }
+}
+
+#####################################################################
+
+sub Foo::TIEHANDLE { bless {}, 'Foo' }
+sub Foo::PRINT { shift->{buf} .= join '', @_ }
+sub Foo::content { shift->{buf} }
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/002-more.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/002-more.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/002-more.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/002-more.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+use attributes;
+use overload;
+
+plan tests => 28;
+
+my ($source_file, $obj_file, $lib_file);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+$source_file = 'XSMore.c';
+
+# Try sending to file
+ExtUtils::ParseXS->process_file(
+ filename => 'XSMore.xs',
+ output => $source_file,
+);
+ok -e $source_file, "Create an output file";
+
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+ skip "no compiler available", 2
+ if ! $b->have_compiler;
+ $obj_file = $b->compile( source => $source_file );
+ ok $obj_file, "ExtUtils::CBuilder::compile() returned true value";
+ ok -e $obj_file, "Make sure $obj_file exists";
+}
+
+SKIP: {
+ skip "no dynamic loading", 24
+ if !$b->have_compiler || !$Config{usedl};
+ my $module = 'XSMore';
+ $lib_file = $b->link( objects => $obj_file, module_name => $module );
+ ok $lib_file, "ExtUtils::CBuilder::link() returned true value";
+ ok -e $lib_file, "Make sure $lib_file exists";
+
+ eval{
+ package XSMore;
+ our $VERSION = 42;
+ our $boot_ok;
+ DynaLoader::bootstrap_inherit(__PACKAGE__, $VERSION); # VERSIONCHECK disabled
+
+ sub new{ bless {}, shift }
+ };
+ is $@, '', "No error message recorded, as expected";
+ is ExtUtils::ParseXS::report_error_count(), 0, 'ExtUtils::ParseXS::errors()';
+
+ is $XSMore::boot_ok, 100, 'the BOOT keyword';
+
+ ok XSMore::include_ok(), 'the INCLUDE keyword';
+ is prototype(\&XSMore::include_ok), "", 'the PROTOTYPES keyword';
+
+ is prototype(\&XSMore::prototype_ssa), '$$@', 'the PROTOTYPE keyword';
+
+ is_deeply [attributes::get(\&XSMore::attr_method)], [qw(method)], 'the ATTRS keyword';
+ is prototype(\&XSMore::attr_method), '$;@', 'ATTRS with prototype';
+
+ is XSMore::return_1(), 1, 'the CASE keyword (1)';
+ is XSMore::return_2(), 2, 'the CASE keyword (2)';
+ is prototype(\&XSMore::return_1), "", 'ALIAS with prototype (1)';
+ is prototype(\&XSMore::return_2), "", 'ALIAS with prototype (2)';
+
+ is XSMore::arg_init(200), 200, 'argument init';
+
+ ok overload::Overloaded(XSMore->new), 'the FALLBACK keyword';
+ is abs(XSMore->new), 42, 'the OVERLOAD keyword';
+
+ my @a;
+ XSMore::hook(\@a);
+ is_deeply \@a, [qw(INIT CODE POSTCALL CLEANUP)], 'the INIT & POSTCALL & CLEANUP keywords';
+
+ is_deeply [XSMore::outlist()], [ord('a'), ord('b')], 'the OUTLIST keyword';
+
+ is XSMore::len("foo"), 3, 'the length keyword';
+
+ is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive';
+
+ # Tests for embedded typemaps
+ is XSMore::typemaptest1(), 42, 'Simple embedded typemap works';
+ is XSMore::typemaptest2(), 42, 'Simple embedded typemap works with funny end marker';
+ is XSMore::typemaptest3(12, 13, 14), 12, 'Simple embedded typemap works for input, too';
+
+ # Win32 needs to close the DLL before it can unlink it, but unfortunately
+ # dl_unload_file was missing on Win32 prior to perl change #24679!
+ if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+ for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+ if ($DynaLoader::dl_modules[$i] eq $module) {
+ DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+ last;
+ }
+ }
+ }
+}
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+ for ( $obj_file, $lib_file, $source_file) {
+ next unless defined $_;
+ 1 while unlink $_;
+ }
+}
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/003-usage.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/003-usage.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/003-usage.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/003-usage.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+
+if ( $] < 5.008 ) {
+ plan skip_all => "INTERFACE keyword support broken before 5.8";
+}
+else {
+ plan tests => 24;
+}
+
+my ($source_file, $obj_file, $lib_file, $module);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+$source_file = 'XSUsage.c';
+
+# Try sending to file
+process_file(filename => 'XSUsage.xs', output => $source_file);
+ok -e $source_file, "Create an output file";
+
+# TEST doesn't like extraneous output
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+
+# Try to compile the file! Don't get too fancy, though.
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+ skip "no compiler available", 2
+ if ! $b->have_compiler;
+ $module = 'XSUsage';
+
+ $obj_file = $b->compile( source => $source_file );
+ ok $obj_file;
+ ok -e $obj_file, "Make sure $obj_file exists";
+}
+SKIP: {
+ skip "no dynamic loading", 20
+ if !$b->have_compiler || !$Config{usedl};
+
+ $lib_file = $b->link( objects => $obj_file, module_name => $module );
+ ok $lib_file;
+ ok -e $lib_file, "Make sure $lib_file exists";
+
+ eval {require XSUsage};
+ is $@, '';
+
+ # The real tests here - for each way of calling the functions, call with the
+ # wrong number of arguments and check the Usage line is what we expect
+
+ eval { XSUsage::one(1) };
+ ok $@;
+ ok $@ =~ /^Usage: XSUsage::one/;
+
+ eval { XSUsage::two(1) };
+ ok $@;
+ ok $@ =~ /^Usage: XSUsage::two/;
+
+ eval { XSUsage::two_x(1) };
+ ok $@;
+ ok $@ =~ /^Usage: XSUsage::two_x/;
+
+ eval { FOO::two(1) };
+ ok $@;
+ ok $@ =~ /^Usage: FOO::two/;
+
+ eval { XSUsage::three(1) };
+ ok $@;
+ ok $@ =~ /^Usage: XSUsage::three/;
+
+ eval { XSUsage::four(1) };
+ ok !$@;
+
+ eval { XSUsage::five() };
+ ok $@;
+ ok $@ =~ /^Usage: XSUsage::five/;
+
+ eval { XSUsage::six() };
+ ok !$@;
+
+ eval { XSUsage::six(1) };
+ ok !$@;
+
+ eval { XSUsage::six(1,2) };
+ ok $@;
+ ok $@ =~ /^Usage: XSUsage::six/;
+
+ # Win32 needs to close the DLL before it can unlink it, but unfortunately
+ # dl_unload_file was missing on Win32 prior to perl change #24679!
+ if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+ for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+ if ($DynaLoader::dl_modules[$i] eq $module) {
+ DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+ last;
+ }
+ }
+ }
+}
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+ for ( $obj_file, $lib_file, $source_file) {
+ next unless defined $_;
+ 1 while unlink $_;
+ }
+}
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,100 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 11;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+
+my ($source_file, $obj_file, $lib_file);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+# Try sending to filehandle
+tie *FH, 'Foo';
+process_file(
+ filename => 'XSTest.xs',
+ output => \*FH,
+ prototypes => 1,
+ linenumbers => 0,
+);
+like tied(*FH)->content, '/is_even/', "Test that output contains some text";
+
+$source_file = 'XSTest.c';
+
+# Try sending to file
+process_file(
+ filename => 'XSTest.xs',
+ output => $source_file,
+ prototypes => 0,
+ linenumbers => 0,
+);
+ok -e $source_file, "Create an output file";
+
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+ skip "no compiler available", 2
+ if ! $b->have_compiler;
+ $obj_file = $b->compile( source => $source_file );
+ ok $obj_file, "ExtUtils::CBuilder::compile() returned true value";
+ ok -e $obj_file, "Make sure $obj_file exists";
+}
+
+SKIP: {
+ skip "no dynamic loading", 5
+ if !$b->have_compiler || !$Config{usedl};
+ my $module = 'XSTest';
+ $lib_file = $b->link( objects => $obj_file, module_name => $module );
+ ok $lib_file, "ExtUtils::CBuilder::link() returned true value";
+ ok -e $lib_file, "Make sure $lib_file exists";
+
+ eval {require XSTest};
+ is $@, '', "No error message recorded, as expected";
+ ok XSTest::is_even(8),
+ "Function created thru XS returned expected true value";
+ ok !XSTest::is_even(9),
+ "Function created thru XS returned expected false value";
+
+ # Win32 needs to close the DLL before it can unlink it, but unfortunately
+ # dl_unload_file was missing on Win32 prior to perl change #24679!
+ if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+ for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+ if ($DynaLoader::dl_modules[$i] eq $module) {
+ DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+ last;
+ }
+ }
+ }
+}
+
+my $seen = 0;
+open my $IN, '<', $source_file
+ or die "Unable to open $source_file: $!";
+while (my $l = <$IN>) {
+ $seen++ if $l =~ m/#line\s1\s/;
+}
+close $IN or die "Unable to close $source_file: $!";
+is( $seen, 0, "No linenumbers created in output file, as intended" );
+
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+ for ( $obj_file, $lib_file, $source_file) {
+ next unless defined $_;
+ 1 while unlink $_;
+ }
+}
+
+#####################################################################
+
+sub Foo::TIEHANDLE { bless {}, 'Foo' }
+sub Foo::PRINT { shift->{buf} .= join '', @_ }
+sub Foo::content { shift->{buf} }
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests => 3;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ standard_typemap_locations
+);
+
+{
+ local @INC = @INC;
+ my @stl = standard_typemap_locations( \@INC );
+ ok( @stl >= 9, "At least 9 entries in typemap locations list" );
+ is( $stl[$#stl], 'typemap',
+ "Last element is typemap in current directory");
+ SKIP: {
+ skip "No lib/ExtUtils/ directories under directories in \@INC",
+ 1
+ unless @stl > 9;
+
+ # We check only as many location entries from the start of the array
+ # (where the @INC-related entries are) as there are entries from @INC.
+ # We manage to do that by stopping when we find the "updir" related
+ # entries, which we assume is never contained in a default @INC entry.
+ my $updir = File::Spec->updir;
+ my $max = $#INC;
+ $max = $#stl if $#stl < $max;
+ foreach my $i (0.. $max) {
+ $max = $i, last if $stl[$i] =~ /\Q$updir\E/;
+ }
+
+ ok(
+ ( 0 < (grep -f $_, @stl[0..$max]) ),
+ "At least one typemap file exists underneath \@INC directories"
+ );
+ }
+}
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests => 5;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ trim_whitespace
+);
+
+my $str;
+
+$str = 'overworked';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = ' overworked';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = 'overworked ';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = ' overworked ';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = "\toverworked";
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/103-tidy_type.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/103-tidy_type.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/103-tidy_type.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/103-tidy_type.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests => 3;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ tidy_type
+);
+
+my $input;
+
+$input = ' * ** ';
+is( tidy_type($input), '***',
+ "Got expected value for '$input'" );
+
+$input = ' * ** ';
+is( tidy_type($input), '***',
+ "Got expected value for '$input'" );
+
+$input = ' * ** foobar * ';
+is( tidy_type($input), '*** foobar *',
+ "Got expected value for '$input'" );
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/104-map_type.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/104-map_type.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/104-map_type.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/104-map_type.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests => 7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ map_type
+);
+
+my ($self, $type, $varname);
+my ($result, $expected);
+
+$type = 'struct DATA *';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "$type\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+ "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = 'Crypt::Shark';
+$varname = undef;
+$self->{hiertype} = 0;
+$expected = 'Crypt__Shark';
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+ "Got expected map_type for <$type>, undef, <$self->{hiertype}>" );
+
+$type = 'Crypt::Shark';
+$varname = undef;
+$self->{hiertype} = 1;
+$expected = 'Crypt::Shark';
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+ "Got expected map_type for <$type>, undef, <$self->{hiertype}>" );
+
+$type = 'Crypt::TC18';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "Crypt__TC18\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+ "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = 'Crypt::TC18';
+$varname = 'RETVAL';
+$self->{hiertype} = 1;
+$expected = "Crypt::TC18\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+ "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = 'array(alpha,beta) gamma';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "alpha *\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+ "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = '(*)';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "(* $varname )";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+ "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests => 6;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ valid_proto_string
+);
+
+my ($input, $output);
+
+$input = '[\$]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+
+$input = '[$]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+
+$input = '[\$\@]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+
+$input = '[\$alpha]';
+$output = valid_proto_string($input);
+is( $output, 0, "Got expected value for <$input>" );
+
+$input = '[alpha]';
+$output = valid_proto_string($input);
+is( $output, 0, "Got expected value for <$input>" );
+
+$input = '[_]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/106-process_typemaps.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/106-process_typemaps.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/106-process_typemaps.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/106-process_typemaps.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More tests => 2;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ process_typemaps
+);
+
+my $startdir = cwd();
+{
+ my ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+ my $typemap = 'typemap';
+ my $tdir = tempdir( CLEANUP => 1 );
+ chdir $tdir or croak "Unable to change to tempdir for testing";
+ eval {
+ ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref)
+ = process_typemaps( $typemap, $tdir );
+ };
+ like( $@, qr/Can't find \Q$typemap\E in \Q$tdir\E/, #'
+ "Got expected result for no typemap in current directory" );
+ chdir $startdir;
+}
+
+{
+ my ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+ my $typemap = [ qw( pseudo typemap ) ];
+ my $tdir = tempdir( CLEANUP => 1 );
+ chdir $tdir or croak "Unable to change to tempdir for testing";
+ open my $IN, '>', 'typemap' or croak "Cannot open for writing";
+ print $IN "\n";
+ close $IN or croak "Cannot close after writing";
+ eval {
+ ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref)
+ = process_typemaps( $typemap, $tdir );
+ };
+ like( $@, qr/Can't find pseudo in \Q$tdir\E/, #'
+ "Got expected result for no typemap in current directory" );
+ chdir $startdir;
+}
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/107-make_targetable.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/107-make_targetable.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/107-make_targetable.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/107-make_targetable.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests => 7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ make_targetable
+);
+
+my $output_expr_ref = {
+ 'T_CALLBACK' => ' sv_setpvn($arg, $var.context.value().chp(),
+ $var.context.value().size());
+',
+ 'T_OUT' => ' {
+ GV *gv = newGVgen("$Package");
+ if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
+',
+ 'T_REF_IV_PTR' => ' sv_setref_pv($arg, \\"${ntype}\\", (void*)$var);
+',
+ 'T_U_LONG' => ' sv_setuv($arg, (UV)$var);
+',
+ 'T_U_CHAR' => ' sv_setuv($arg, (UV)$var);
+',
+ 'T_U_INT' => ' sv_setuv($arg, (UV)$var);
+',
+ 'T_ARRAY' => ' {
+ U32 ix_$var;
+ EXTEND(SP,size_$var);
+ for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
+ ST(ix_$var) = sv_newmortal();
+ DO_ARRAY_ELEM
+ }
+ }
+',
+ 'T_NV' => ' sv_setnv($arg, (NV)$var);
+',
+ 'T_SHORT' => ' sv_setiv($arg, (IV)$var);
+',
+ 'T_OPAQUE' => ' sv_setpvn($arg, (char *)&$var, sizeof($var));
+',
+ 'T_PTROBJ' => ' sv_setref_pv($arg, \\"${ntype}\\", (void*)$var);
+',
+ 'T_HVREF' => ' $arg = newRV((SV*)$var);
+',
+ 'T_PACKEDARRAY' => ' XS_pack_$ntype($arg, $var, count_$ntype);
+',
+ 'T_INT' => ' sv_setiv($arg, (IV)$var);
+',
+ 'T_OPAQUEPTR' => ' sv_setpvn($arg, (char *)$var, sizeof(*$var));
+',
+ 'T_BOOL' => ' $arg = boolSV($var);
+',
+ 'T_REFREF' => ' NOT_IMPLEMENTED
+',
+ 'T_REF_IV_REF' => ' sv_setref_pv($arg, \\"${ntype}\\", (void*)new $ntype($var));
+',
+ 'T_STDIO' => ' {
+ GV *gv = newGVgen("$Package");
+ PerlIO *fp = PerlIO_importFILE($var,0);
+ if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
+',
+ 'T_FLOAT' => ' sv_setnv($arg, (double)$var);
+',
+ 'T_IN' => ' {
+ GV *gv = newGVgen("$Package");
+ if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
+',
+ 'T_PV' => ' sv_setpv((SV*)$arg, $var);
+',
+ 'T_INOUT' => ' {
+ GV *gv = newGVgen("$Package");
+ if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
+ sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+ else
+ $arg = &PL_sv_undef;
+ }
+',
+ 'T_CHAR' => ' sv_setpvn($arg, (char *)&$var, 1);
+',
+ 'T_LONG' => ' sv_setiv($arg, (IV)$var);
+',
+ 'T_DOUBLE' => ' sv_setnv($arg, (double)$var);
+',
+ 'T_PTR' => ' sv_setiv($arg, PTR2IV($var));
+',
+ 'T_AVREF' => ' $arg = newRV((SV*)$var);
+',
+ 'T_SV' => ' $arg = $var;
+',
+ 'T_ENUM' => ' sv_setiv($arg, (IV)$var);
+',
+ 'T_REFOBJ' => ' NOT IMPLEMENTED
+',
+ 'T_CVREF' => ' $arg = newRV((SV*)$var);
+',
+ 'T_UV' => ' sv_setuv($arg, (UV)$var);
+',
+ 'T_PACKED' => ' XS_pack_$ntype($arg, $var);
+',
+ 'T_SYSRET' => ' if ($var != -1) {
+ if ($var == 0)
+ sv_setpvn($arg, "0 but true", 10);
+ else
+ sv_setiv($arg, (IV)$var);
+ }
+',
+ 'T_IV' => ' sv_setiv($arg, (IV)$var);
+',
+ 'T_PTRDESC' => ' sv_setref_pv($arg, \\"${ntype}\\", (void*)new\\U${type}_DESC\\E($var));
+',
+ 'T_DATAUNIT' => ' sv_setpvn($arg, $var.chp(), $var.size());
+',
+ 'T_U_SHORT' => ' sv_setuv($arg, (UV)$var);
+',
+ 'T_SVREF' => ' $arg = newRV((SV*)$var);
+',
+ 'T_PTRREF' => ' sv_setref_pv($arg, Nullch, (void*)$var);
+',
+};
+
+my %targetable;
+%targetable = make_targetable($output_expr_ref);
+
+ok(! exists $targetable{'T_AVREF'},
+ "Element found in 'output_expr' not found in \%targetable: not an 'sv_set'" );
+
+ok(exists $targetable{'T_CALLBACK'},
+ "Element found in 'output_expr' found in \%targetable as expected" );
+
+pass("Passed all tests in $0");
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/108-map_type.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/108-map_type.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/108-map_type.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/108-map_type.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,18 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests => 7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ map_type
+);
+
+#print "\t" . map_type($self->{ret_type}, 'RETVAL', $self->{hiertype}) . ";\n"
+#print "\t" . map_type($var_type, $var_name, $self->{hiertype});
+#print "\t" . map_type($var_type, undef, $self->{hiertype});
+
+pass("Passed all tests in $0");
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+$| = 1;
+use Test::More tests => 5;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS::Utilities qw(
+ standard_XS_defs
+);
+use PrimitiveCapture;
+
+my @statements = (
+ '#ifndef PERL_UNUSED_VAR',
+ '#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE',
+ '#ifdef PERL_IMPLICIT_CONTEXT',
+ '#ifdef newXS_flags',
+);
+
+my $stdout = PrimitiveCapture::capture_stdout(sub {
+ standard_XS_defs();
+});
+
+foreach my $s (@statements) {
+ like( $stdout, qr/$s/s, "Printed <$s>" );
+}
+
+pass("Passed all tests in $0");
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/110-assign_func_args.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/110-assign_func_args.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/110-assign_func_args.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/110-assign_func_args.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests => 7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ assign_func_args
+);
+
+#sub assign_func_args {
+# my ($self, $argsref, $class) = @_;
+# return join(", ", @func_args);
+
+my ($self, @args, $class);
+my ($func_args, $expected);
+
+ at args = qw( alpha beta gamma );
+$self->{in_out}->{alpha} = 'OUT';
+$expected = q|&alpha, beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+ "Got expected func_args: in_out true; class undefined" );
+
+ at args = ( 'My::Class', qw( beta gamma ) );
+$self->{in_out}->{beta} = 'OUT';
+$class = 'My::Class';
+$expected = q|&beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+ "Got expected func_args: in_out true; class defined" );
+
+ at args = ( 'My::Class', qw( beta gamma ) );
+$self->{in_out}->{beta} = '';
+$class = 'My::Class';
+$expected = q|beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+ "Got expected func_args: in_out false; class defined" );
+
+ at args = qw( alpha beta gamma );
+$self->{in_out}->{alpha} = '';
+$class = undef;
+$expected = q|alpha, beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+ "Got expected func_args: in_out false; class undefined" );
+
+pass("Passed all tests in $0");
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+$| = 1;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests => 7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ analyze_preprocessor_statements
+);
+
+# ( $self, $XSS_work_idx, $BootCode_ref ) =
+# analyze_preprocessor_statements(
+# $self, $statement, $XSS_work_idx, $BootCode_ref
+# );
+
+pass("Passed all tests in $0");
+
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/112-set_cond.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/112-set_cond.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/112-set_cond.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/112-set_cond.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests => 7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+ set_cond
+);
+
+pass("Passed all tests in $0");
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,149 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More tests => 13;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS;
+use ExtUtils::ParseXS::Utilities qw(
+ check_conditional_preprocessor_statements
+);
+use PrimitiveCapture;
+
+my $self = bless({} => 'ExtUtils::ParseXS');
+$self->{line} = [];
+$self->{XSStack} = [];
+$self->{XSStack}->[0] = {};
+
+{
+ $self->{line} = [
+ "#if this_is_an_if_statement",
+ "Alpha this is not an if/elif/elsif/endif",
+ "#elif this_is_an_elif_statement",
+ "Beta this is not an if/elif/elsif/endif",
+ "#else this_is_an_else_statement",
+ "Gamma this is not an if/elif/elsif/endif",
+ "#endif this_is_an_endif_statement",
+ ];
+ $self->{line_no} = [ 17 .. 23 ];
+ $self->{XSStack}->[-1]{type} = 'if';
+ $self->{filename} = 'myfile1';
+
+ my $rv;
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ $rv = check_conditional_preprocessor_statements($self);
+ });
+
+ is( $rv, 0, "Basic case: returned 0: all ifs resolved" );
+ ok( ! $stderr, "No warnings captured, as expected" );
+}
+
+{
+ $self->{line} = [
+ "#if this_is_an_if_statement",
+ "Alpha this is not an if/elif/elsif/endif",
+ "#if this_is_a_different_if_statement",
+ "Beta this is not an if/elif/elsif/endif",
+ "#endif this_is_a_different_endif_statement",
+ "Gamma this is not an if/elif/elsif/endif",
+ "#endif this_is_an_endif_statement",
+ ];
+ $self->{line_no} = [ 17 .. 23 ];
+ $self->{XSStack}->[-1]{type} = 'if';
+ $self->{filename} = 'myfile1';
+
+ my $rv;
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ $rv = check_conditional_preprocessor_statements($self);
+ });
+ is( $rv, 0, "One nested if case: returned 0: all ifs resolved" );
+ ok( ! $stderr, "No warnings captured, as expected" );
+}
+
+{
+ $self->{line} = [
+ "Alpha this is not an if/elif/elsif/endif",
+ "#elif this_is_an_elif_statement",
+ "Beta this is not an if/elif/elsif/endif",
+ "#else this_is_an_else_statement",
+ "Gamma this is not an if/elif/elsif/endif",
+ "#endif this_is_an_endif_statement",
+ ];
+ $self->{line_no} = [ 17 .. 22 ];
+ $self->{XSStack}->[-1]{type} = 'if';
+ $self->{filename} = 'myfile1';
+
+ my $rv;
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ $rv = check_conditional_preprocessor_statements($self);
+ });
+ is( $rv, undef,
+ "Missing 'if' case: returned undef: all ifs resolved" );
+ like( $stderr,
+ qr/Warning: #else\/elif\/endif without #if in this function/,
+ "Got expected warning: lack of #if"
+ );
+ like( $stderr,
+ qr/precede it with a blank line/s,
+ "Got expected warning: advice re blank line"
+ );
+}
+
+{
+ $self->{line} = [
+ "Alpha this is not an if/elif/elsif/endif",
+ "#elif this_is_an_elif_statement",
+ "Beta this is not an if/elif/elsif/endif",
+ "#else this_is_an_else_statement",
+ "Gamma this is not an if/elif/elsif/endif",
+ "#endif this_is_an_endif_statement",
+ ];
+ $self->{line_no} = [ 17 .. 22 ];
+ $self->{XSStack}->[-1]{type} = 'file';
+ $self->{filename} = 'myfile1';
+
+ my $rv;
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ $rv = check_conditional_preprocessor_statements($self);
+ });
+ is( $rv, undef,
+ "Missing 'if' case: returned undef: all ifs resolved" );
+ like( $stderr,
+ qr/Warning: #else\/elif\/endif without #if in this function/,
+ "Got expected warning: lack of #if"
+ );
+ unlike( $stderr,
+ qr/precede it with a blank line/s,
+ "Did not get unexpected stderr"
+ );
+}
+
+{
+ $self->{line} = [
+ "#if this_is_an_if_statement",
+ "Alpha this is not an if/elif/elsif/endif",
+ "#elif this_is_an_elif_statement",
+ "Beta this is not an if/elif/elsif/endif",
+ "#else this_is_an_else_statement",
+ "Gamma this is not an if/elif/elsif/endif",
+ ];
+ $self->{line_no} = [ 17 .. 22 ];
+ $self->{XSStack}->[-1]{type} = 'if';
+ $self->{filename} = 'myfile1';
+
+ my $rv;
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ $rv = check_conditional_preprocessor_statements($self);
+ });
+ isnt( $rv, 0,
+ "Missing 'endif' case: returned non-zero as expected" );
+ like( $stderr,
+ qr/Warning: #if without #endif in this function/s,
+ "Got expected warning: lack of #endif"
+ );
+}
+
+pass("Passed all tests in $0");
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,132 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+$| = 1;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More tests => 7;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS;
+use ExtUtils::ParseXS::Utilities qw(
+ Warn
+ blurt
+ death
+);
+use PrimitiveCapture;
+
+my $self = bless({} => 'ExtUtils::ParseXS');
+$self->{line} = [];
+$self->{line_no} = [];
+
+{
+ $self->{line} = [
+ 'Alpha',
+ 'Beta',
+ 'Gamma',
+ 'Delta',
+ ];
+ $self->{line_no} = [ 17 .. 20 ];
+ $self->{filename} = 'myfile1';
+
+ my $message = 'Warning: Ignoring duplicate alias';
+
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ Warn( $self, $message);
+ });
+ like( $stderr,
+ qr/$message in $self->{filename}, line 20/,
+ "Got expected Warn output",
+ );
+}
+
+{
+ $self->{line} = [
+ 'Alpha',
+ 'Beta',
+ 'Gamma',
+ 'Delta',
+ 'Epsilon',
+ ];
+ $self->{line_no} = [ 17 .. 20 ];
+ $self->{filename} = 'myfile2';
+
+ my $message = 'Warning: Ignoring duplicate alias';
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ Warn( $self, $message);
+ });
+ like( $stderr,
+ qr/$message in $self->{filename}, line 19/,
+ "Got expected Warn output",
+ );
+}
+
+{
+ $self->{line} = [
+ 'Alpha',
+ 'Beta',
+ 'Gamma',
+ 'Delta',
+ ];
+ $self->{line_no} = [ 17 .. 21 ];
+ $self->{filename} = 'myfile1';
+
+ my $message = 'Warning: Ignoring duplicate alias';
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ Warn( $self, $message);
+ });
+ like( $stderr,
+ qr/$message in $self->{filename}, line 17/,
+ "Got expected Warn output",
+ );
+}
+
+{
+ $self->{line} = [
+ 'Alpha',
+ 'Beta',
+ 'Gamma',
+ 'Delta',
+ ];
+ $self->{line_no} = [ 17 .. 20 ];
+ $self->{filename} = 'myfile1';
+ $self->{errors} = 0;
+
+
+ my $message = 'Error: Cannot parse function definition';
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ blurt( $self, $message);
+ });
+ like( $stderr,
+ qr/$message in $self->{filename}, line 20/,
+ "Got expected blurt output",
+ );
+ is( $self->{errors}, 1, "Error count incremented correctly" );
+}
+
+SKIP: {
+ skip "death() not testable as long as it contains hard-coded 'exit'", 1;
+
+ $self->{line} = [
+ 'Alpha',
+ 'Beta',
+ 'Gamma',
+ 'Delta',
+ ];
+ $self->{line_no} = [ 17 .. 20 ];
+ $self->{filename} = 'myfile1';
+
+ my $message = "Code is not inside a function";
+ eval {
+ my $stderr = PrimitiveCapture::capture_stderr(sub {
+ death( $self, $message);
+ });
+ like( $stderr,
+ qr/$message in $self->{filename}, line 20/,
+ "Got expected death output",
+ );
+ };
+}
+
+pass("Passed all tests in $0");
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/115-avoid-noise.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,21 @@
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+use File::Spec;
+use Test::More tests => 1;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS qw(process_file);
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+# Module-Build uses ExtUtils::ParseXS with $^W set, try to avoid
+# warning in that case.
+
+{
+ my $out;
+ open my $out_fh, ">", \$out;
+ my @warnings;
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+ process_file(filename => "XSWarn.xs", output => $out_fh);
+ is_deeply(\@warnings, [], "shouldn't be any warnings");
+}
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/501-t-compile.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/501-t-compile.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/501-t-compile.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/501-t-compile.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+use strict;
+BEGIN {
+ $| = 1;
+ $^W = 1;
+}
+
+use Test::More tests => 2;
+
+# Check their perl version
+ok( $] >= 5.006001, "Your perl is new enough" );
+
+# Does the module load
+use_ok( 'ExtUtils::Typemaps' );
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/510-t-bare.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/510-t-bare.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/510-t-bare.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/510-t-bare.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,160 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 43;
+use ExtUtils::Typemaps;
+
+# empty typemap
+SCOPE: {
+ ok(ExtUtils::Typemaps->new()->is_empty(), "This is an empty typemap");
+}
+
+# typemap only
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_typemap(ctype => 'unsigned int', xstype => 'T_IV');
+ ok(!$map->is_empty(), "This is not an empty typemap");
+
+ is($map->as_string(), <<'HERE', "Simple typemap matches expectations");
+TYPEMAP
+unsigned int T_IV
+HERE
+
+ my $type = $map->get_typemap(ctype => 'unsigned int');
+ isa_ok($type, 'ExtUtils::Typemaps::Type');
+ is($type->ctype, 'unsigned int');
+ is($type->xstype, 'T_IV');
+ is($type->tidy_ctype, 'unsigned int');
+
+
+ # test failure
+ ok(!$map->get_typemap(ctype => 'foo'), "Access to nonexistent typemap doesn't die");
+ ok(!$map->get_inputmap(ctype => 'foo'), "Access to nonexistent inputmap via ctype doesn't die");
+ ok(!$map->get_outputmap(ctype => 'foo'), "Access to nonexistent outputmap via ctype doesn't die");
+ ok(!$map->get_inputmap(xstype => 'foo'), "Access to nonexistent inputmap via xstype doesn't die");
+ ok(!$map->get_outputmap(xstype => 'foo'), "Access to nonexistent outputmap via xstype doesn't die");
+ ok(!eval{$map->get_typemap('foo')} && $@, "Access to typemap with positional params dies");
+ ok(!eval{$map->get_inputmap('foo')} && $@, "Access to inputmap with positional params dies");
+ ok(!eval{$map->get_outputmap('foo')} && $@, "Access to outputmap with positional params dies");
+}
+
+# typemap & input
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+ ok(!$map->is_empty(), "This is not an empty typemap");
+ $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+ is($map->as_string(), <<'HERE', "Simple typemap (with input) matches expectations");
+TYPEMAP
+unsigned int T_UV
+
+INPUT
+T_UV
+ $var = ($type)SvUV($arg);
+HERE
+
+ my $type = $map->get_typemap(ctype => 'unsigned int');
+ isa_ok($type, 'ExtUtils::Typemaps::Type');
+ is($type->ctype, 'unsigned int');
+ is($type->xstype, 'T_UV');
+ is($type->tidy_ctype, 'unsigned int');
+
+ my $in = $map->get_inputmap(xstype => 'T_UV');
+ isa_ok($in, 'ExtUtils::Typemaps::InputMap');
+ is($in->xstype, 'T_UV');
+
+ # test fetching inputmap by ctype
+ my $in2 = $map->get_inputmap(ctype => 'unsigned int');
+ is_deeply($in2, $in, "get_inputmap returns the same typemap for ctype and xstype");
+}
+
+
+# typemap & output
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+ ok(!$map->is_empty(), "This is not an empty typemap");
+ $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+ is($map->as_string(), <<'HERE', "Simple typemap (with output) matches expectations");
+TYPEMAP
+unsigned int T_UV
+
+OUTPUT
+T_UV
+ sv_setuv($arg, (UV)$var);
+HERE
+
+ my $type = $map->get_typemap(ctype => 'unsigned int');
+ isa_ok($type, 'ExtUtils::Typemaps::Type');
+ is($type->ctype, 'unsigned int');
+ is($type->xstype, 'T_UV');
+ is($type->tidy_ctype, 'unsigned int');
+
+ my $in = $map->get_outputmap(xstype => 'T_UV');
+ isa_ok($in, 'ExtUtils::Typemaps::OutputMap');
+ is($in->xstype, 'T_UV');
+}
+
+# typemap & input & output
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+ $map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+ $map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+ ok(!$map->is_empty(), "This is not an empty typemap");
+ is($map->as_string(), <<'HERE', "Simple typemap (with in- & output) matches expectations");
+TYPEMAP
+unsigned int T_UV
+
+INPUT
+T_UV
+ $var = ($type)SvUV($arg);
+
+OUTPUT
+T_UV
+ sv_setuv($arg, (UV)$var);
+HERE
+}
+
+# two typemaps & input & output
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+ $map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+ $map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+
+ $map->add_typemap(ctype => 'int', xstype => 'T_IV');
+ $map->add_inputmap(xstype => 'T_IV', code => '$var = ($type)SvIV($arg);');
+ $map->add_outputmap(xstype => 'T_IV', code => 'sv_setiv($arg, (IV)$var);');
+ is($map->as_string(), <<'HERE', "Simple typemap (with in- & output) matches expectations");
+TYPEMAP
+unsigned int T_UV
+int T_IV
+
+INPUT
+T_UV
+ $var = ($type)SvUV($arg);
+T_IV
+ $var = ($type)SvIV($arg);
+
+OUTPUT
+T_UV
+ sv_setuv($arg, (UV)$var);
+T_IV
+ sv_setiv($arg, (IV)$var);
+HERE
+ my $type = $map->get_typemap(ctype => 'unsigned int');
+ isa_ok($type, 'ExtUtils::Typemaps::Type');
+ is($type->ctype, 'unsigned int');
+ is($type->xstype, 'T_UV');
+ is($type->tidy_ctype, 'unsigned int');
+
+ my $in = $map->get_outputmap(xstype => 'T_UV');
+ isa_ok($in, 'ExtUtils::Typemaps::OutputMap');
+ is($in->xstype, 'T_UV');
+ $in = $map->get_outputmap(xstype => 'T_IV');
+ isa_ok($in, 'ExtUtils::Typemaps::OutputMap');
+ is($in->xstype, 'T_IV');
+}
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/511-t-whitespace.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/511-t-whitespace.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/511-t-whitespace.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/511-t-whitespace.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+use ExtUtils::Typemaps;
+
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+ $map->add_inputmap(xstype => 'T_UV', code => ' $var = ($type)SvUV($arg);');
+ is($map->as_string(), <<'HERE', "Simple typemap (with input and code including leading whitespace) matches expectations");
+TYPEMAP
+unsigned int T_UV
+
+INPUT
+T_UV
+ $var = ($type)SvUV($arg);
+HERE
+}
+
+
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+ $map->add_inputmap(xstype => 'T_UV', code => " \$var =\n(\$type)\n SvUV(\$arg);");
+ is($map->as_string(), <<'HERE', "Simple typemap (with input and multi-line code) matches expectations");
+TYPEMAP
+unsigned int T_UV
+
+INPUT
+T_UV
+ $var =
+ ($type)
+ SvUV($arg);
+HERE
+}
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/512-t-file.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/512-t-file.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/512-t-file.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/512-t-file.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 6;
+use ExtUtils::Typemaps;
+use File::Spec;
+use File::Temp;
+
+my $datadir = -d 't' ? File::Spec->catdir(qw/t data/) : 'data';
+
+sub slurp {
+ my $file = shift;
+ open my $fh, '<', $file
+ or die "Cannot open file '$file' for reading: $!";
+ local $/ = undef;
+ return <$fh>;
+}
+
+my $cmp_typemap_file = File::Spec->catfile($datadir, 'simple.typemap');
+my $cmp_typemap_str = slurp($cmp_typemap_file);
+
+my $map = ExtUtils::Typemaps->new();
+$map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+$map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+$map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+$map->add_typemap(ctype => 'int', xstype => 'T_IV');
+$map->add_inputmap(xstype => 'T_IV', code => '$var = ($type)SvIV($arg);');
+$map->add_outputmap(xstype => 'T_IV', code => 'sv_setiv($arg, (IV)$var);');
+
+is($map->as_string(), $cmp_typemap_str, "Simple typemap matches reference file");
+
+my $tmpdir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
+my $tmpfile = File::Spec->catfile($tmpdir, 'simple.typemap');
+
+$map->write(file => $tmpfile);
+is($map->as_string(), slurp($tmpfile), "Simple typemap write matches as_string");
+is(ExtUtils::Typemaps->new(file => $cmp_typemap_file)->as_string(), $cmp_typemap_str, "Simple typemap roundtrips");
+is(ExtUtils::Typemaps->new(file => $tmpfile)->as_string(), $cmp_typemap_str, "Simple typemap roundtrips (2)");
+
+SCOPE: {
+ local $map->{file} = $cmp_typemap_file;
+ is_deeply(ExtUtils::Typemaps->new(file => $cmp_typemap_file), $map, "Simple typemap roundtrips (in memory)");
+}
+
+# test that we can also create them from a string
+my $map_from_str = ExtUtils::Typemaps->new(string => $map->as_string());
+is_deeply($map_from_str, $map);
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/513-t-merge.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/513-t-merge.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/513-t-merge.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/513-t-merge.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 19;
+use ExtUtils::Typemaps;
+use File::Spec;
+use File::Temp;
+
+my $datadir = -d 't' ? File::Spec->catdir(qw/t data/) : 'data';
+
+sub slurp {
+ my $file = shift;
+ open my $fh, '<', $file
+ or die "Cannot open file '$file' for reading: $!";
+ local $/ = undef;
+ return <$fh>;
+}
+
+my $first_typemap_file = File::Spec->catfile($datadir, 'simple.typemap');
+my $second_typemap_file = File::Spec->catfile($datadir, 'other.typemap');
+my $combined_typemap_file = File::Spec->catfile($datadir, 'combined.typemap');
+my $conflicting_typemap_file = File::Spec->catfile($datadir, 'conflicting.typemap');
+my $confl_replace_typemap_file = File::Spec->catfile($datadir, 'confl_repl.typemap');
+my $confl_skip_typemap_file = File::Spec->catfile($datadir, 'confl_skip.typemap');
+
+# test merging two typemaps
+SCOPE: {
+ my $first = ExtUtils::Typemaps->new(file => $first_typemap_file);
+ isa_ok($first, 'ExtUtils::Typemaps');
+ my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+ isa_ok($second, 'ExtUtils::Typemaps');
+
+ $first->merge(typemap => $second);
+
+ is($first->as_string(), slurp($combined_typemap_file), "merging produces expected output");
+}
+
+# test merging a typemap from file
+SCOPE: {
+ my $first = ExtUtils::Typemaps->new(file => $first_typemap_file);
+ isa_ok($first, 'ExtUtils::Typemaps');
+
+ $first->merge(file => $second_typemap_file);
+
+ is($first->as_string(), slurp($combined_typemap_file), "merging produces expected output");
+}
+
+
+# test merging a typemap as string
+SCOPE: {
+ my $first = ExtUtils::Typemaps->new(file => $first_typemap_file);
+ isa_ok($first, 'ExtUtils::Typemaps');
+ my $second_str = slurp($second_typemap_file);
+
+ $first->add_string(string => $second_str);
+
+ is($first->as_string(), slurp($combined_typemap_file), "merging (string) produces expected output");
+}
+
+# test merging a conflicting typemap without "replace"
+SCOPE: {
+ my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+ isa_ok($second, 'ExtUtils::Typemaps');
+ my $conflict = ExtUtils::Typemaps->new(file => $conflicting_typemap_file);
+ isa_ok($conflict, 'ExtUtils::Typemaps');
+
+ ok(
+ !eval {
+ $second->merge(typemap => $conflict);
+ 1;
+ },
+ "Merging conflicting typemap croaks"
+ );
+ ok(
+ $@ =~ /Multiple definition/,
+ "Conflicting typemap error as expected"
+ );
+}
+
+# test merging a conflicting typemap with "replace"
+SCOPE: {
+ my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+ isa_ok($second, 'ExtUtils::Typemaps');
+ my $conflict = ExtUtils::Typemaps->new(file => $conflicting_typemap_file);
+ isa_ok($conflict, 'ExtUtils::Typemaps');
+
+ ok(
+ eval {
+ $second->merge(typemap => $conflict, replace => 1);
+ 1;
+ },
+ "Conflicting typemap merge with 'replace' doesn't croak"
+ );
+
+ is($second->as_string(), slurp($confl_replace_typemap_file), "merging (string) produces expected output");
+}
+
+# test merging a conflicting typemap file with "skip"
+SCOPE: {
+ my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+ isa_ok($second, 'ExtUtils::Typemaps');
+ my $conflict = ExtUtils::Typemaps->new(file => $conflicting_typemap_file);
+ isa_ok($conflict, 'ExtUtils::Typemaps');
+
+ ok(
+ eval {
+ $second->merge(typemap => $conflict, skip => 1);
+ 1;
+ },
+ "Conflicting typemap merge with 'skip' doesn't croak"
+ );
+
+ is($second->as_string(), slurp($confl_skip_typemap_file), "merging (string) produces expected output");
+}
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/514-t-embed.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/514-t-embed.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/514-t-embed.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/514-t-embed.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# tests for generating embedded typemaps
+
+use Test::More tests => 1;
+use ExtUtils::Typemaps;
+
+SCOPE: {
+ my $map = ExtUtils::Typemaps->new();
+ $map->add_string(string => <<HERE);
+char* T_PV
+HERE
+ is($map->as_embedded_typemap(), <<'HERE', "Embedded typemap as expected");
+TYPEMAP: <<END_TYPEMAP;
+TYPEMAP
+char* T_PV
+
+END_TYPEMAP
+HERE
+}
+
+
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/515-t-cmd.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/515-t-cmd.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/515-t-cmd.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/515-t-cmd.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# tests for the quick-n-dirty interface for XS inclusion
+
+use Test::More tests => 6;
+use File::Spec;
+use ExtUtils::Typemaps::Cmd;
+
+my $datadir = -d 't' ? File::Spec->catdir(qw/t data/) : 'data';
+my $libdir = -d 't' ? File::Spec->catdir(qw/t lib/) : 'lib';
+
+unshift @INC, $libdir;
+
+sub slurp {
+ my $file = shift;
+ open my $fh, '<', $file
+ or die "Cannot open file '$file' for reading: $!";
+ local $/ = undef;
+ return <$fh>;
+}
+
+sub permute (&@) {
+ my $code = shift;
+ my @idx = 0..$#_;
+ while ( $code->(@_[@idx]) ) {
+ my $p = $#idx;
+ --$p while $idx[$p-1] > $idx[$p];
+ my $q = $p or return;
+ push @idx, reverse splice @idx, $p;
+ ++$q while $idx[$p-1] > $idx[$q];
+ @idx[$p-1,$q]=@idx[$q,$p-1];
+ }
+}
+
+
+SCOPE: {
+ no warnings 'once';
+ ok(defined(*embeddable_typemap{CODE}), "function exported");
+}
+
+my $start = "TYPEMAP: <<END_TYPEMAP;\n";
+my $end = "\nEND_TYPEMAP\n";
+is(
+ embeddable_typemap(),
+ "${start}TYPEMAP\n$end",
+ "empty call to embeddable_typemap"
+);
+
+my $typemap_file = File::Spec->catfile($datadir, "simple.typemap");
+is(
+ embeddable_typemap($typemap_file),
+ $start . slurp($typemap_file) . $end,
+ "embeddable typemap from file"
+);
+
+my $foo_content = <<HERE;
+TYPEMAP
+myfoo* T_PV
+HERE
+is(
+ embeddable_typemap("TypemapTest::Foo"),
+ "$start$foo_content$end",
+ "embeddable typemap from full module name"
+);
+
+
+my $test_content = <<HERE;
+TYPEMAP
+mytype* T_SV
+HERE
+is(
+ embeddable_typemap("Test"),
+ "$start$test_content$end",
+ "embeddable typemap from relative module name"
+);
+
+SCOPE: {
+ my $combined = embeddable_typemap("Test", "TypemapTest::Foo");
+ my @lines = (
+ 'myfoo* T_PV',
+ 'mytype* T_SV',
+ );
+ my @exp = map {"TYPEMAP\n" . join("\n", @$_) . "\n"}
+ (\@lines, [reverse @lines]);
+ ok(scalar(grep "$start$_$end" eq $combined, @exp), "combined both modules")
+ or note("Actual output: '$combined'");
+}
+
+# in theory, we should test
+# embeddable_typemap($typemap_file, "Test", "TypemapTest::Foo"),
+# but I can't be bothered.
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/600-t-compat.t (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/600-t-compat.t)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/600-t-compat.t (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/600-t-compat.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,182 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More;
+
+# This test is for making sure that the new EU::Typemaps
+# based typemap merging produces the same result as the old
+# EU::ParseXS code.
+
+use ExtUtils::Typemaps;
+use ExtUtils::ParseXS::Utilities qw(
+ C_string
+ tidy_type
+ trim_whitespace
+ process_typemaps
+);
+use ExtUtils::ParseXS::Constants;
+use File::Spec;
+
+my $path_prefix = File::Spec->catdir(-d 't' ? qw(t data) : qw(data));
+
+my @tests = (
+ {
+ name => 'Simple conflict',
+ local_maps => [
+ File::Spec->catfile($path_prefix, "conflicting.typemap"),
+ ],
+ std_maps => [
+ File::Spec->catfile($path_prefix, "other.typemap"),
+ ],
+ },
+ {
+ name => 'B',
+ local_maps => [
+ File::Spec->catfile($path_prefix, "b.typemap"),
+ ],
+ std_maps => [],
+ },
+ {
+ name => 'B and perl',
+ local_maps => [
+ File::Spec->catfile($path_prefix, "b.typemap"),
+ ],
+ std_maps => [
+ File::Spec->catfile($path_prefix, "perl.typemap"),
+ ],
+ },
+ {
+ name => 'B and perl and B again',
+ local_maps => [
+ File::Spec->catfile($path_prefix, "b.typemap"),
+ ],
+ std_maps => [
+ File::Spec->catfile($path_prefix, "perl.typemap"),
+ File::Spec->catfile($path_prefix, "b.typemap"),
+ ],
+ },
+);
+plan tests => scalar(@tests);
+
+my @local_tmaps;
+my @standard_typemap_locations;
+SCOPE: {
+ no warnings 'redefine';
+ sub ExtUtils::ParseXS::Utilities::standard_typemap_locations {
+ @standard_typemap_locations;
+ }
+ sub standard_typemap_locations {
+ @standard_typemap_locations;
+ }
+}
+
+foreach my $test (@tests) {
+ @local_tmaps = @{ $test->{local_maps} };
+ @standard_typemap_locations = @{ $test->{std_maps} };
+
+ my $res = [_process_typemaps([@local_tmaps], '.')];
+ my $tm = process_typemaps([@local_tmaps], '.');
+ my $res_new = [map $tm->$_(), qw(_get_typemap_hash _get_prototype_hash _get_inputmap_hash _get_outputmap_hash) ];
+
+ # Normalize trailing whitespace. Let's be that lenient, mkay?
+ for ($res, $res_new) {
+ for ($_->[2], $_->[3]) {
+ for (values %$_) {
+ s/\s+\z//;
+ }
+ }
+ }
+ #use Data::Dumper; warn Dumper $res;
+ #use Data::Dumper; warn Dumper $res_new;
+
+ is_deeply($res_new, $res, "typemap equivalency for '$test->{name}'");
+}
+
+
+# The code below is a reproduction of what the pre-ExtUtils::Typemap
+# typemap-parsing/handling code in ExtUtils::ParseXS looked like. For
+# bug-compatibility, we want to produce the same data structures as that
+# code as much as possible.
+sub _process_typemaps {
+ my ($tmap, $pwd) = @_;
+
+ my @tm = ref $tmap ? @{$tmap} : ($tmap);
+
+ foreach my $typemap (@tm) {
+ die "Can't find $typemap in $pwd\n" unless -r $typemap;
+ }
+
+ push @tm, standard_typemap_locations( \@INC );
+
+ my ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref)
+ = ( {}, {}, {}, {} );
+
+ foreach my $typemap (@tm) {
+ next unless -f $typemap;
+ # skip directories, binary files etc.
+ warn("Warning: ignoring non-text typemap file '$typemap'\n"), next
+ unless -T $typemap;
+ ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref) =
+ _process_single_typemap( $typemap,
+ $type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+ }
+ return ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+}
+
+sub _process_single_typemap {
+ my ($typemap,
+ $type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref) = @_;
+ open my $TYPEMAP, '<', $typemap
+ or warn ("Warning: could not open typemap file '$typemap': $!\n"), next;
+ my $mode = 'Typemap';
+ my $junk = "";
+ my $current = \$junk;
+ while (<$TYPEMAP>) {
+ # skip comments
+ next if /^\s*#/;
+ if (/^INPUT\s*$/) {
+ $mode = 'Input'; $current = \$junk; next;
+ }
+ if (/^OUTPUT\s*$/) {
+ $mode = 'Output'; $current = \$junk; next;
+ }
+ if (/^TYPEMAP\s*$/) {
+ $mode = 'Typemap'; $current = \$junk; next;
+ }
+ if ($mode eq 'Typemap') {
+ chomp;
+ my $logged_line = $_;
+ trim_whitespace($_);
+ # skip blank lines
+ next if /^$/;
+ my($type,$kind, $proto) =
+ m/^\s*(.*?\S)\s+(\S+)\s*($ExtUtils::ParseXS::Constants::PrototypeRegexp*)\s*$/
+ or warn(
+ "Warning: File '$typemap' Line $. '$logged_line' " .
+ "TYPEMAP entry needs 2 or 3 columns\n"
+ ),
+ next;
+ $type = tidy_type($type);
+ $type_kind_ref->{$type} = $kind;
+ # prototype defaults to '$'
+ $proto = "\$" unless $proto;
+ $proto_letter_ref->{$type} = C_string($proto);
+ }
+ elsif (/^\s/) {
+ $$current .= $_;
+ }
+ elsif ($mode eq 'Input') {
+ s/\s+$//;
+ $input_expr_ref->{$_} = '';
+ $current = \$input_expr_ref->{$_};
+ }
+ else {
+ s/\s+$//;
+ $output_expr_ref->{$_} = '';
+ $current = \$output_expr_ref->{$_};
+ }
+ }
+ close $TYPEMAP;
+ return ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+}
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSInclude.xsh
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSInclude.xsh 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSInclude.xsh 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSInclude.xsh
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSMore.xs
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSMore.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSMore.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,6 +2,13 @@
#include "perl.h"
#include "XSUB.h"
+typedef IV MyType;
+typedef IV MyType2;
+typedef IV MyType3;
+typedef IV MyType4;
+typedef IV MyType5;
+
+
=for testing
This parts are ignored.
@@ -8,6 +15,22 @@
=cut
+/* Old perls (pre 5.8.9 or so) did not have PERL_UNUSED_ARG in XSUB.h.
+ * This is normally covered by ppport.h. */
+#ifndef PERL_UNUSED_ARG
+# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
+# include <note.h>
+# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
+# else
+# define PERL_UNUSED_ARG(x) ((void)x)
+# endif
+#endif
+#ifndef PERL_UNUSED_VAR
+# define PERL_UNUSED_VAR(x) ((void)x)
+#endif
+
+
+
STATIC void
outlist(int* a, int* b){
*a = 'a';
@@ -42,6 +65,67 @@
sv_setiv(get_sv("XSMore::boot_ok", TRUE), 100);
+TYPEMAP: <<END
+MyType T_IV
+END
+
+TYPEMAP: <<" FOO BAR BAZ";
+MyType2 T_FOOOO
+
+OUTPUT
+T_FOOOO
+ sv_setiv($arg, (IV)$var);
+ FOO BAR BAZ
+
+TYPEMAP: <<'END'
+MyType3 T_BAAR
+MyType4 T_BAAR
+
+OUTPUT
+T_BAAR
+ sv_setiv($arg, (IV)$var);
+
+INPUT
+T_BAAR
+ $var = ($type)SvIV($arg)
+END
+
+TYPEMAP: <<END
+MyType5 T_WITHSEMICOLON
+
+INPUT
+
+T_WITHSEMICOLON
+ $var = ($type)SvIV($arg);
+END
+
+
+MyType
+typemaptest1()
+ CODE:
+ RETVAL = 42;
+ OUTPUT:
+ RETVAL
+
+MyType2
+typemaptest2()
+ CODE:
+ RETVAL = 42;
+ OUTPUT:
+ RETVAL
+
+MyType3
+typemaptest3(foo, bar, baz)
+ MyType4 foo
+ MyType5 bar
+ MyType5 baz
+ CODE:
+ PERL_UNUSED_VAR(bar);
+ PERL_UNUSED_VAR(baz);
+ RETVAL = foo;
+ OUTPUT:
+ RETVAL
+
void
prototype_ssa()
PROTOTYPE: $$@
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSMore.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.xs
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.xs 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSTest.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.xs
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,6 +2,20 @@
#include "perl.h"
#include "XSUB.h"
+/* Old perls (pre 5.8.9 or so) did not have PERL_UNUSED_ARG in XSUB.h.
+ * This is normally covered by ppport.h. */
+#ifndef PERL_UNUSED_ARG
+# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
+# include <note.h>
+# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
+# else
+# define PERL_UNUSED_ARG(x) ((void)x)
+# endif
+#endif
+#ifndef PERL_UNUSED_VAR
+# define PERL_UNUSED_VAR(x) ((void)x)
+#endif
+
int xsusage_one() { return 1; }
int xsusage_two() { return 2; }
int xsusage_three() { return 3; }
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSUsage.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/XSWarn.xs)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,14 @@
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+MODULE = XSWarn PACKAGE = XSWarn PREFIX = xswarn_
+
+PROTOTYPES: DISABLE
+
+void
+xswarn_nonargs()
+# see perl #112776
+ SV *sv = sv_2mortal(newSV());
+ CODE:
+ ;
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/basic.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/basic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/basic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/basic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/IncludeTester.pm
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/IncludeTester.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/IncludeTester.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/IncludeTester.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,77 @@
+package PrimitiveCapture;
+use strict;
+use warnings;
+
+if ("$]" >= 5.008000) {
+ eval "#line @{[__LINE__+1]} ".q{"lib/PrimitiveCapture.pm"
+ sub capture_stdout {
+ my $sub = shift;
+ my $stdout;
+ open my $oldout, ">&STDOUT" or die "Can't dup STDOUT: $!";
+ close STDOUT;
+ open STDOUT, '>', \$stdout or die "Can't open STDOUT: $!";
+ $sub->();
+ close STDOUT;
+ open STDOUT, ">&", $oldout or die "Can't dup \$oldout: $!";
+ return $stdout;
+ }
+ sub capture_stderr {
+ my $sub = shift;
+ my $stderr;
+ open my $olderr, ">&STDERR" or die "Can't dup STDERR: $!";
+ close STDERR;
+ open STDERR, '>', \$stderr or die "Can't open STDERR: $!";
+ $sub->();
+ close STDERR;
+ open STDERR, ">&", $olderr or die "Can't dup \$olderr: $!";
+ return $stderr;
+ }
+ }; die $@ unless $@ eq "";
+} else {
+ eval "#line @{[__LINE__+1]} ".q{"lib/PrimitiveCapture.pm"
+ use File::Spec;
+ use File::Temp;
+ my $tmpdir;
+ my $i = 0;
+ sub _tmpfile {
+ $tmpdir ||= File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
+ return File::Spec->catfile($tmpdir, $i++);
+ }
+ sub _slurp {
+ my $filename = shift;
+ open my $fh, "<", $filename or die "Can't read $filename: $!";
+ local $/ = undef;
+ my $content = <$fh>;
+ defined $content or die "Can't read $filename: $!";
+ return $content;
+ }
+ sub capture_stdout {
+ my $sub = shift;
+ my $tmpfile = _tmpfile();
+ local *OLDSTDOUT;
+ open OLDSTDOUT, ">&STDOUT" or die "Can't dup STDOUT: $!";
+ close STDOUT;
+ open STDOUT, '>', $tmpfile or die "Can't open STDOUT: $!";
+ $sub->();
+ close STDOUT;
+ open STDOUT, ">&OLDSTDOUT" or die "Can't dup OLDSTDOUT: $!";
+ close OLDSTDOUT;
+ return _slurp($tmpfile);
+ }
+ sub capture_stderr {
+ my $sub = shift;
+ my $tmpfile = _tmpfile();
+ local *OLDSTDERR;
+ open OLDSTDERR, ">&STDERR" or die "Can't dup STDERR: $!";
+ close STDERR;
+ open STDERR, '>', $tmpfile or die "Can't open STDERR: $!";
+ $sub->();
+ close STDERR;
+ open STDERR, ">&OLDSTDERR" or die "Can't dup OLDSTDERR: $!";
+ close OLDSTDERR;
+ return _slurp($tmpfile);
+ }
+ }; die $@ unless $@ eq "";
+}
+
+1;
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/more.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/more.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/more.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/more.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/pseudotypemap1 (from rev 6437, vendor/perl/5.18.1/dist/ExtUtils-ParseXS/t/pseudotypemap1)
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/pseudotypemap1 (rev 0)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/pseudotypemap1 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,5 @@
+ # pseudotypemap1: comment with leading whitespace
+TYPEMAP
+
+line_to_generate_insufficient_columns_warning
+unsigned long T_UV
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/typemap
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/typemap 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/typemap 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/typemap
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/usage.t
===================================================================
--- trunk/contrib/perl/dist/ExtUtils-ParseXS/t/usage.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/ExtUtils-ParseXS/t/usage.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/ExtUtils-ParseXS/t/usage.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/File-CheckTree/lib/File/CheckTree.pm
===================================================================
--- trunk/contrib/perl/dist/File-CheckTree/lib/File/CheckTree.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/File-CheckTree/lib/File/CheckTree.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/File-CheckTree/lib/File/CheckTree.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/File-CheckTree/t/CheckTree.t
===================================================================
--- trunk/contrib/perl/dist/File-CheckTree/t/CheckTree.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/File-CheckTree/t/CheckTree.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/File-CheckTree/t/CheckTree.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Filter-Simple/lib/Filter/Simple.pm
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/lib/Filter/Simple.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/lib/Filter/Simple.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
use vars qw{ $VERSION @EXPORT };
-$VERSION = '0.86';
+$VERSION = '0.89';
use Filter::Util::Call;
use Carp;
@@ -36,22 +36,31 @@
my $pod_or_DATA = qr/
^=(?:head[1-4]|item) .*? $CUT
| ^=pod .*? $CUT
- | ^=for .*? $EOP
- | ^=begin \s* (\S+) .*? \n=end \s* \1 .*? $EOP
+ | ^=for .*? $CUT
+ | ^=begin .*? $CUT
| ^__(DATA|END)__\r?\n.*
/smx;
+my $variable = qr{
+ [\$*\@%]\s*
+ \{\s*(?!::)(?:\d+|[][&`'#+*./|,";%=~:?!\@<>()-]|\^[A-Z]?)\}
+ | (?:\$#?|[*\@\%]|\\&)\$*\s*
+ (?: \{\s*(?:\^(?=[A-Z_]))?(?:\w|::|'\w)*\s*\}
+ | (?:\^(?=[A-Z_]))?(?:\w|::|'\w)*
+ | (?=\{) # ${ block }
+ )
+ )
+ | \$\s*(?!::)(?:\d+|[][&`'#+*./|,";%=~:?!\@<>()-]|\^[A-Z]?)
+ }x;
my %extractor_for = (
- quotelike => [ $ws, \&extract_variable, $id, { MATCH => \&extract_quotelike } ],
+ quotelike => [ $ws, $variable, $id, { MATCH => \&extract_quotelike } ],
regex => [ $ws, $pod_or_DATA, $id, $exql ],
string => [ $ws, $pod_or_DATA, $id, $exql ],
- code => [ $ws, { DONT_MATCH => $pod_or_DATA },
- \&extract_variable,
+ code => [ $ws, { DONT_MATCH => $pod_or_DATA }, $variable,
$id, { DONT_MATCH => \&extract_quotelike } ],
code_no_comments
=> [ { DONT_MATCH => $comment },
- $ncws, { DONT_MATCH => $pod_or_DATA },
- \&extract_variable,
+ $ncws, { DONT_MATCH => $pod_or_DATA }, $variable,
$id, { DONT_MATCH => \&extract_quotelike } ],
executable => [ $ws, { DONT_MATCH => $pod_or_DATA } ],
executable_no_comments
@@ -242,7 +251,7 @@
package MyFilter;
use Filter::Simple;
-
+
FILTER { ... };
# or just:
@@ -329,7 +338,7 @@
C<use BANG;> statement (until the next C<no BANG;> statement, if any):
package BANG;
-
+
use Filter::Util::Call ;
sub import {
@@ -394,7 +403,7 @@
package BANG;
use Filter::Simple;
-
+
FILTER {
s/BANG\s+BANG/die 'BANG' if \$BANG/g;
};
@@ -438,7 +447,7 @@
package BANG;
use Filter::Simple;
-
+
FILTER {
s/BANG\s+BANG/die 'BANG' if \$BANG/g;
}
@@ -455,7 +464,7 @@
package BANG;
use Filter::Simple;
-
+
FILTER {
s/BANG\s+BANG/die 'BANG' if \$BANG/g;
}
@@ -752,9 +761,9 @@
be made parametric:
package BANG;
-
+
use Filter::Simple;
-
+
FILTER {
my ($die_msg, $var_name) = @_;
s/BANG\s+BANG/die '$die_msg' if \${$var_name}/g;
Property changes on: trunk/contrib/perl/dist/Filter-Simple/lib/Filter/Simple.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Filter-Simple/t/code_no_comments.t (from rev 6437, vendor/perl/5.18.1/dist/Filter-Simple/t/code_no_comments.t)
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/code_no_comments.t (rev 0)
+++ trunk/contrib/perl/dist/Filter-Simple/t/code_no_comments.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,15 @@
+BEGIN {
+ unshift @INC, 't/lib/';
+}
+
+use Filter::Simple::CodeNoComments qr/ok/ => 'not ok';
+
+print "1..1\n";
+
+
+# Perl bug #92436 (the second bug in the ticket)
+
+sub method { $_[1] }
+my $obj = bless[];
+
+print $obj->method("ok 1\n");
Index: trunk/contrib/perl/dist/Filter-Simple/t/data.t
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/data.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/data.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/data.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Filter-Simple/t/export.t
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/export.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/export.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/export.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Filter-Simple/t/filter.t
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/filter.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/filter.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/filter.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Filter-Simple/t/filter_only.t
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/filter_only.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/filter_only.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -20,6 +20,20 @@
ok 7 unless not ok 6;
+=begin scrumbly
+
+=end scrumbly
+
+shromple
+
+=cut
+
+=for us
+
+shromple again
+
+=cut
+
no Filter::Simple::FilterOnlyTest; # THE FUN STOPS HERE
print "not " unless "not ok" =~ /^not /;
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/filter_only.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Filter-Simple/t/import.t
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/import.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/import.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/import.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm (from rev 6437, vendor/perl/5.18.1/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm)
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm (rev 0)
+++ trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,13 @@
+package Filter::Simple::CodeNoComments;
+
+use Filter::Simple;
+
+FILTER_ONLY
+ code_no_comments => sub {
+ shift;
+ while (my($pat, $str) = splice @_, 0, 2) {
+ s/$pat/$str/g;
+ }
+ };
+
+1;
Index: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ExportTest.pm
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ExportTest.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ExportTest.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ExportTest.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterOnlyTest.pm
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterOnlyTest.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterOnlyTest.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -8,4 +8,7 @@
while (my($pat, $str) = splice @_, 0, 2) {
s/$pat/$str/g;
}
+ },
+ code_no_comments => sub {
+ $_ =~ /shromple/ and die "We wants no shromples!";
};
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterOnlyTest.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterTest.pm
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterTest.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterTest.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/FilterTest.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ImportTest.pm
===================================================================
--- trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ImportTest.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ImportTest.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Filter-Simple/t/lib/Filter/Simple/ImportTest.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-Collate/lib/I18N/Collate.pm
===================================================================
--- trunk/contrib/perl/dist/I18N-Collate/lib/I18N/Collate.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-Collate/lib/I18N/Collate.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-Collate/lib/I18N/Collate.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-Collate/t/I18N-Collate.t
===================================================================
--- trunk/contrib/perl/dist/I18N-Collate/t/I18N-Collate.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-Collate/t/I18N-Collate.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-Collate/t/I18N-Collate.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/I18N-LangTags/ChangeLog
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/ChangeLog 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/ChangeLog 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,6 +1,12 @@
Revision history for Perl module I18N::LangTags.
Time-stamp: "2004-10-06 23:26:53 ADT"
+2011-06-12
+
+ * Release 0.36
+
+ Fix broken URLs for RFCs
+
2004-10-06 Sean M. Burke sburke at cpan.org
* Release 0.35
@@ -137,7 +143,7 @@
* Release 0.21
- * extract_language_tags and locale2langauge_tag now
+ * extract_language_tags and locale2language_tag now
return untainted output. Useful if you feed tainted
things, like $ENV{'LANG'}.
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/ChangeLog
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/README
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/README 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/README 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/README
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
# Time-stamp: "2004-10-06 23:26:21 ADT"
use strict;
use vars qw(%Name %Is_Disrec $Debug $VERSION);
-$VERSION = '0.35_01';
+$VERSION = '0.39';
# POD at the end.
#----------------------------------------------------------------------
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -19,7 +19,7 @@
);
%EXPORT_TAGS = ('ALL' => \@EXPORT_OK);
-$VERSION = "0.35_01";
+$VERSION = "0.39";
sub uniq { my %seen; return grep(!($seen{$_}++), @_); } # a util function
@@ -579,16 +579,16 @@
Examples:
- alternate_language_tags('no-bok') is ('nb')
- alternate_language_tags('nb') is ('no-bok')
- alternate_language_tags('he') is ('iw')
- alternate_language_tags('iw') is ('he')
- alternate_language_tags('i-hakka') is ('zh-hakka', 'x-hakka')
- alternate_language_tags('zh-hakka') is ('i-hakka', 'x-hakka')
- alternate_language_tags('en') is ()
- alternate_language_tags('x-mingo-tom') is ('i-mingo-tom')
- alternate_language_tags('x-klikitat') is ('i-klikitat')
- alternate_language_tags('i-klikitat') is ('x-klikitat')
+ alternate_language_tags('no-bok') is ('nb')
+ alternate_language_tags('nb') is ('no-bok')
+ alternate_language_tags('he') is ('iw')
+ alternate_language_tags('iw') is ('he')
+ alternate_language_tags('i-hakka') is ('zh-hakka', 'x-hakka')
+ alternate_language_tags('zh-hakka') is ('i-hakka', 'x-hakka')
+ alternate_language_tags('en') is ()
+ alternate_language_tags('x-mingo-tom') is ('i-mingo-tom')
+ alternate_language_tags('x-klikitat') is ('i-klikitat')
+ alternate_language_tags('i-klikitat') is ('x-klikitat')
This function returns empty-list if given anything other than a formally
valid language tag.
@@ -844,17 +844,17 @@
* L<I18N::LangTags::List|I18N::LangTags::List>
-* RFC 3066, C<ftp://ftp.isi.edu/in-notes/rfc3066.txt>, "Tags for the
+* RFC 3066, C<http://www.ietf.org/rfc/rfc3066.txt>, "Tags for the
Identification of Languages". (Obsoletes RFC 1766)
-* RFC 2277, C<ftp://ftp.isi.edu/in-notes/rfc2277.txt>, "IETF Policy on
+* RFC 2277, C<http://www.ietf.org/rfc/rfc2277.txt>, "IETF Policy on
Character Sets and Languages".
-* RFC 2231, C<ftp://ftp.isi.edu/in-notes/rfc2231.txt>, "MIME Parameter
+* RFC 2231, C<http://www.ietf.org/rfc/rfc2231.txt>, "MIME Parameter
Value and Encoded Word Extensions: Character Sets, Languages, and
Continuations".
-* RFC 2482, C<ftp://ftp.isi.edu/in-notes/rfc2482.txt>,
+* RFC 2482, C<http://www.ietf.org/rfc/rfc2482.txt>,
"Language Tagging in Unicode Plain Text".
* Locale::Codes, in
@@ -862,7 +862,7 @@
* ISO 639-2, "Codes for the representation of names of languages",
including two-letter and three-letter codes,
-C<http://www.loc.gov/standards/iso639-2/langcodes.html>
+C<http://www.loc.gov/standards/iso639-2/php/code_list.php>
* The IANA list of registered languages (hopefully up-to-date),
C<http://www.iana.org/assignments/language-tags>
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/01_about_verbose.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/01_about_verbose.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/01_about_verbose.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/01_about_verbose.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/05_main.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/05_main.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/05_main.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/05_main.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/07_listy.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/07_listy.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/07_listy.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/07_listy.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/10_http.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/10_http.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/10_http.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/10_http.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/20_locales.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/20_locales.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/20_locales.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/20_locales.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/50_super.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/50_super.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/50_super.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/50_super.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/55_supers_strict.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/55_supers_strict.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/55_supers_strict.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/55_supers_strict.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/I18N-LangTags/t/80_all_env.t
===================================================================
--- trunk/contrib/perl/dist/I18N-LangTags/t/80_all_env.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/I18N-LangTags/t/80_all_env.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/I18N-LangTags/t/80_all_env.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/ChangeLog
===================================================================
--- trunk/contrib/perl/dist/IO/ChangeLog 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/ChangeLog 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/ChangeLog
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/IO.pm
===================================================================
--- trunk/contrib/perl/dist/IO/IO.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/IO.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -7,7 +7,7 @@
use strict;
use warnings;
-our $VERSION = "1.25_04";
+our $VERSION = "1.28";
XSLoader::load 'IO', $VERSION;
sub import {
@@ -32,8 +32,8 @@
=head1 SYNOPSIS
- use IO qw(Handle File); # loads IO modules, here IO::Handle, IO::File
- use IO; # DEPRECATED
+ use IO qw(Handle File); # loads IO modules, here IO::Handle, IO::File
+ use IO; # DEPRECATED
=head1 DESCRIPTION
Property changes on: trunk/contrib/perl/dist/IO/IO.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/IO.xs
===================================================================
--- trunk/contrib/perl/dist/IO/IO.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/IO.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -57,6 +57,10 @@
# define NORETURN_FUNCTION_END /* NOT REACHED */ return 0
#endif
+#ifndef dVAR
+# define dVAR dNOOP
+#endif
+
static int not_here(const char *s) __attribute__noreturn__;
static int
not_here(const char *s)
@@ -122,8 +126,20 @@
return RETVAL;
#else
# ifdef WIN32
- char flags = (char)block;
- return ioctl(PerlIO_fileno(f), FIONBIO, &flags);
+ if (block >= 0) {
+ unsigned long flags = !block;
+ /* ioctl claims to take char* but really needs a u_long sized buffer */
+ const int ret = ioctl(PerlIO_fileno(f), FIONBIO, (char*)&flags);
+ if (ret != 0)
+ return -1;
+ /* Win32 has no way to get the current blocking status of a socket.
+ * However, we don't want to just return undef, because there's no way
+ * to tell that the ioctl succeeded.
+ */
+ return flags;
+ }
+ /* TODO: Perhaps set $! to ENOTSUP? */
+ return -1;
# else
return -1;
# endif
@@ -130,6 +146,27 @@
#endif
}
+static OP *
+io_pp_nextstate(pTHX)
+{
+ dVAR;
+ COP *old_curcop = PL_curcop;
+ OP *next = PL_ppaddr[PL_op->op_type](aTHX);
+ PL_curcop = old_curcop;
+ return next;
+}
+
+static OP *
+io_ck_lineseq(pTHX_ OP *o)
+{
+ OP *kid = cBINOPo->op_first;
+ for (; kid; kid = kid->op_sibling)
+ if (kid->op_type == OP_NEXTSTATE || kid->op_type == OP_DBSTATE)
+ kid->op_ppaddr = io_pp_nextstate;
+ return o;
+}
+
+
MODULE = IO PACKAGE = IO::Seekable PREFIX = f
void
@@ -290,14 +327,38 @@
int
ungetc(handle, c)
InputStream handle
- int c
+ SV * c
CODE:
- if (handle)
+ if (handle) {
#ifdef PerlIO
- RETVAL = PerlIO_ungetc(handle, c);
+ UV v;
+
+ if ((SvIOK_notUV(c) && SvIV(c) < 0) || (SvNOK(c) && SvNV(c) < 0.0))
+ croak("Negative character number in ungetc()");
+
+ v = SvUV(c);
+ if (NATIVE_IS_INVARIANT(v) || (v <= 0xFF && !PerlIO_isutf8(handle)))
+ RETVAL = PerlIO_ungetc(handle, (int)v);
+ else {
+ U8 buf[UTF8_MAXBYTES + 1], *end;
+ Size_t len;
+
+ if (!PerlIO_isutf8(handle))
+ croak("Wide character number in ungetc()");
+
+ /* This doesn't warn for non-chars, surrogate, and
+ * above-Unicodes */
+ end = uvchr_to_utf8_flags(buf, v, 0);
+ len = end - buf;
+ if (PerlIO_unread(handle, &buf, len) == len)
+ XSRETURN_UV(v);
+ else
+ RETVAL = EOF;
+ }
#else
- RETVAL = ungetc(c, handle);
+ RETVAL = ungetc((int)SvIV(c), handle);
#endif
+ }
else {
RETVAL = -1;
errno = EINVAL;
@@ -429,10 +490,15 @@
SysRet
-fsync(handle)
- OutputStream handle
+fsync(arg)
+ SV * arg
+ PREINIT:
+ OutputStream handle = NULL;
CODE:
#ifdef HAS_FSYNC
+ handle = IoOFP(sv_2io(arg));
+ if (!handle)
+ handle = IoIFP(sv_2io(arg));
if(handle)
RETVAL = fsync(PerlIO_fileno(handle));
else {
@@ -445,7 +511,17 @@
OUTPUT:
RETVAL
+SV *
+_create_getline_subs(const char *code)
+ CODE:
+ OP *(*io_old_ck_lineseq)(pTHX_ OP *) = PL_check[OP_LINESEQ];
+ PL_check[OP_LINESEQ] = io_ck_lineseq;
+ RETVAL = SvREFCNT_inc(eval_pv(code,FALSE));
+ PL_check[OP_LINESEQ] = io_old_ck_lineseq;
+ OUTPUT:
+ RETVAL
+
MODULE = IO PACKAGE = IO::Socket
SysRet
Property changes on: trunk/contrib/perl/dist/IO/IO.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/Makefile.PL
===================================================================
--- trunk/contrib/perl/dist/IO/Makefile.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/Makefile.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -33,10 +33,13 @@
OBJECT => '$(O_FILES)',
ABSTRACT => 'Perl core IO modules',
AUTHOR => 'Graham Barr <gbarr at cpan.org>',
+ PREREQ_PM => {
+ 'Test::More' => 0,
+ },
( $PERL_CORE
? ()
: (
- INSTALLDIRS => 'perl',
+ INSTALLDIRS => ($] < 5.011 ? 'perl' : 'site'),
clean => {FILES => 'typemap'},
)
),
Property changes on: trunk/contrib/perl/dist/IO/Makefile.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/README
===================================================================
--- trunk/contrib/perl/dist/IO/README 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/README 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/README
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/hints/sco.pl
===================================================================
--- trunk/contrib/perl/dist/IO/hints/sco.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/hints/sco.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/hints/sco.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Dir.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Dir.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Dir.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -19,7 +19,7 @@
use File::Spec;
@ISA = qw(Tie::Hash Exporter);
-$VERSION = "1.08";
+$VERSION = "1.10";
$VERSION = eval $VERSION;
@EXPORT_OK = qw(DIR_UNLINK);
@@ -186,7 +186,7 @@
=back
The following methods are wrappers for the directory related functions built
-into perl (the trailing `dir' has been removed from the names). See L<perlfunc>
+into perl (the trailing 'dir' has been removed from the names). See L<perlfunc>
for details of these functions.
=over 4
@@ -237,7 +237,7 @@
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters at perl.org>.
+bugs to <perlbug at perl.org>.
=head1 COPYRIGHT
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Dir.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/File.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/File.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/File.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -131,13 +131,12 @@
use Symbol;
use SelectSaver;
use IO::Seekable;
-use File::Spec;
require Exporter;
@ISA = qw(IO::Handle IO::Seekable Exporter);
-$VERSION = "1.15";
+$VERSION = "1.16";
@EXPORT = @IO::Seekable::EXPORT;
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/File.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Handle.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Handle.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Handle.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -139,9 +139,12 @@
=item $io->write ( BUF, LEN [, OFFSET ] )
-This C<write> is like C<write> found in C, that is it is the
+This C<write> is somewhat like C<write> found in C, in that it is the
opposite of read. The wrapper for the perl C<write> function is
-called C<format_write>.
+called C<format_write>. However, whilst the C C<write> function returns
+the number of bytes written, this C<write> function simply returns true
+if successful (like C<print>). A more C-like C<write> is C<syswrite>
+(see above).
=item $io->error
@@ -268,7 +271,7 @@
require Exporter;
@ISA = qw(Exporter);
-$VERSION = "1.31";
+$VERSION = "1.34";
$VERSION = eval $VERSION;
@EXPORT_OK = qw(
@@ -430,6 +433,8 @@
print $this @_;
}
+# Special XS wrapper to make them inherit lexical hints from the caller.
+_create_getline_subs( <<'END' ) or die $@;
sub getline {
@_ == 1 or croak 'usage: $io->getline()';
my $this = shift;
@@ -436,8 +441,6 @@
return scalar <$this>;
}
-*gets = \&getline; # deprecated
-
sub getlines {
@_ == 1 or croak 'usage: $io->getlines()';
wantarray or
@@ -445,7 +448,11 @@
my $this = shift;
return <$this>;
}
+1; # return true for error checking
+END
+*gets = \&getline; # deprecated
+
sub truncate {
@_ == 2 or croak 'usage: $io->truncate(LEN)';
truncate($_[0], $_[1]);
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Handle.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Pipe.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Pipe.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Pipe.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -14,7 +14,7 @@
use Carp;
use Symbol;
-$VERSION = "1.14";
+$VERSION = "1.15";
sub new {
my $type = shift;
@@ -246,7 +246,7 @@
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters at perl.org>.
+bugs to <perlbug at perl.org>.
=head1 COPYRIGHT
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Pipe.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Poll.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Poll.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Poll.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -13,7 +13,7 @@
our(@ISA, @EXPORT_OK, @EXPORT, $VERSION);
@ISA = qw(Exporter);
-$VERSION = "0.08";
+$VERSION = "0.09";
@EXPORT = qw( POLLIN
POLLOUT
@@ -198,7 +198,7 @@
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters at perl.org>.
+bugs to <perlbug at perl.org>.
=head1 COPYRIGHT
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Poll.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/lib/IO/Seekable.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Seekable.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Seekable.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Seekable.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Select.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Select.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Select.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -11,7 +11,7 @@
use vars qw($VERSION @ISA);
require Exporter;
-$VERSION = "1.20";
+$VERSION = "1.21";
@ISA = qw(Exporter); # This is only so we can do version checking
@@ -375,7 +375,7 @@
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters at perl.org>.
+bugs to <perlbug at perl.org>.
=head1 COPYRIGHT
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Select.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Socket/INET.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Socket/INET.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Socket/INET.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -15,7 +15,7 @@
use Errno;
@ISA = qw(IO::Socket);
-$VERSION = "1.31";
+$VERSION = "1.33";
my $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1;
@@ -338,22 +338,23 @@
C<IO::Socket::INET> provides.
- PeerAddr Remote host address <hostname>[:<port>]
- PeerHost Synonym for PeerAddr
- PeerPort Remote port or service <service>[(<no>)] | <no>
- LocalAddr Local host bind address hostname[:port]
- LocalHost Synonym for LocalAddr
- LocalPort Local host bind port <service>[(<no>)] | <no>
- Proto Protocol name (or number) "tcp" | "udp" | ...
- Type Socket type SOCK_STREAM | SOCK_DGRAM | ...
- Listen Queue size for listen
- ReuseAddr Set SO_REUSEADDR before binding
- Reuse Set SO_REUSEADDR before binding (deprecated, prefer ReuseAddr)
- ReusePort Set SO_REUSEPORT before binding
- Broadcast Set SO_BROADCAST before binding
- Timeout Timeout value for various operations
- MultiHomed Try all addresses for multi-homed hosts
- Blocking Determine if connection will be blocking mode
+ PeerAddr Remote host address <hostname>[:<port>]
+ PeerHost Synonym for PeerAddr
+ PeerPort Remote port or service <service>[(<no>)] | <no>
+ LocalAddr Local host bind address hostname[:port]
+ LocalHost Synonym for LocalAddr
+ LocalPort Local host bind port <service>[(<no>)] | <no>
+ Proto Protocol name (or number) "tcp" | "udp" | ...
+ Type Socket type SOCK_STREAM | SOCK_DGRAM | ...
+ Listen Queue size for listen
+ ReuseAddr Set SO_REUSEADDR before binding
+ Reuse Set SO_REUSEADDR before binding (deprecated,
+ prefer ReuseAddr)
+ ReusePort Set SO_REUSEPORT before binding
+ Broadcast Set SO_BROADCAST before binding
+ Timeout Timeout value for various operations
+ MultiHomed Try all addresses for multi-homed hosts
+ Blocking Determine if connection will be blocking mode
If C<Listen> is defined then a listen socket is created, else if the
socket type, which is derived from the protocol, is SOCK_STREAM then
@@ -397,12 +398,13 @@
$sock = IO::Socket::INET->new('127.0.0.1:25');
- $sock = IO::Socket::INET->new(PeerPort => 9999,
- PeerAddr => inet_ntoa(INADDR_BROADCAST),
- Proto => udp,
- LocalAddr => 'localhost',
- Broadcast => 1 )
- or die "Can't bind : $@\n";
+ $sock = IO::Socket::INET->new(
+ PeerPort => 9999,
+ PeerAddr => inet_ntoa(INADDR_BROADCAST),
+ Proto => udp,
+ LocalAddr => 'localhost',
+ Broadcast => 1 )
+ or die "Can't bind : $@\n";
NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
@@ -453,7 +455,7 @@
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters at perl.org>.
+bugs to <perlbug at perl.org>.
=head1 COPYRIGHT
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Socket/INET.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Socket/UNIX.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Socket/UNIX.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Socket/UNIX.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -12,7 +12,7 @@
use Carp;
@ISA = qw(IO::Socket);
-$VERSION = "1.23";
+$VERSION = "1.24";
$VERSION = eval $VERSION;
IO::Socket::UNIX->register_domain( AF_UNIX );
@@ -132,7 +132,7 @@
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters at perl.org>.
+bugs to <perlbug at perl.org>.
=head1 COPYRIGHT
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Socket/UNIX.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/lib/IO/Socket.pm
===================================================================
--- trunk/contrib/perl/dist/IO/lib/IO/Socket.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/lib/IO/Socket.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,4 @@
+
# IO::Socket.pm
#
# Copyright (c) 1997-8 Graham Barr <gbarr at pobox.com>. All rights reserved.
@@ -23,7 +24,7 @@
@ISA = qw(IO::Handle);
-$VERSION = "1.32";
+$VERSION = "1.36";
@EXPORT_OK = qw(sockatmark);
@@ -118,7 +119,18 @@
my $sel = new IO::Select $sock;
undef $!;
- if (!$sel->can_write($timeout)) {
+ my($r,$w,$e) = IO::Select::select(undef,$sel,$sel,$timeout);
+ if(@$e[0]) {
+ # Windows return from select after the timeout in case of
+ # WSAECONNREFUSED(10061) if exception set is not used.
+ # This behavior is different from Linux.
+ # Using the exception
+ # set we now emulate the behavior in Linux
+ # - Karthik Rajagopalan
+ $err = $sock->getsockopt(SOL_SOCKET,SO_ERROR);
+ $@ = "connect: $err";
+ }
+ elsif(!@$w[0]) {
$err = $! || (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1);
$@ = "connect: timeout";
}
@@ -155,7 +167,7 @@
my $sock = shift;
return $sock->SUPER::blocking(@_)
- if $^O ne 'MSWin32';
+ if $^O ne 'MSWin32' && $^O ne 'VMS';
# Windows handles blocking differently
#
@@ -237,6 +249,8 @@
$peer = accept($new,$sock)
or return;
+ ${*$new}{$_} = ${*$sock}{$_} for qw( io_socket_domain io_socket_type io_socket_proto );
+
return wantarray ? ($new, $peer)
: $new;
}
@@ -337,6 +351,11 @@
sub sockdomain {
@_ == 1 or croak 'usage: $sock->sockdomain()';
my $sock = shift;
+ if (!defined(${*$sock}{'io_socket_domain'})) {
+ my $addr = $sock->sockname();
+ ${*$sock}{'io_socket_domain'} = sockaddr_family($addr)
+ if (defined($addr));
+ }
${*$sock}{'io_socket_domain'};
}
@@ -343,6 +362,8 @@
sub socktype {
@_ == 1 or croak 'usage: $sock->socktype()';
my $sock = shift;
+ ${*$sock}{'io_socket_type'} = $sock->sockopt(Socket::SO_TYPE)
+ if (!defined(${*$sock}{'io_socket_type'}) && defined(eval{Socket::SO_TYPE}));
${*$sock}{'io_socket_type'}
}
@@ -349,6 +370,8 @@
sub protocol {
@_ == 1 or croak 'usage: $sock->protocol()';
my($sock) = @_;
+ ${*$sock}{'io_socket_proto'} = $sock->sockopt(Socket::SO_PROTOCOL)
+ if (!defined(${*$sock}{'io_socket_proto'}) && defined(eval{Socket::SO_PROTOCOL}));
${*$sock}{'io_socket_proto'};
}
@@ -517,6 +540,12 @@
=back
+=head1 LIMITATIONS
+
+On some systems, for an IO::Socket object created with new_from_fd(),
+or created with accept() from such an object, the protocol(),
+sockdomain() and socktype() methods may return undef.
+
=head1 SEE ALSO
L<Socket>, L<IO::Handle>, L<IO::Socket::INET>, L<IO::Socket::UNIX>
@@ -524,7 +553,7 @@
=head1 AUTHOR
Graham Barr. atmark() by Lincoln Stein. Currently maintained by the
-Perl Porters. Please report all bugs to <perl5-porters at perl.org>.
+Perl Porters. Please report all bugs to <perlbug at perl.org>.
=head1 COPYRIGHT
Property changes on: trunk/contrib/perl/dist/IO/lib/IO/Socket.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/poll.c
===================================================================
--- trunk/contrib/perl/dist/IO/poll.c 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/poll.c 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/poll.c
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/poll.h
===================================================================
--- trunk/contrib/perl/dist/IO/poll.h 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/poll.h 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/poll.h
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/t/IO.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/IO.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/IO.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -21,8 +21,10 @@
my @load;
local $^W;
+ my $xsl = \&XSLoader::load;
local *XSLoader::load = sub {
push @load, \@_;
+ &$xsl(@_);
};
# use_ok() calls import, which we do not want to do
@@ -47,6 +49,7 @@
{
local $^W = 0;
+ no if $^V >= 5.17.4, warnings => "deprecated";
IO->import();
is( $warn, '', "... import default, should not warn");
$warn = '' ;
Property changes on: trunk/contrib/perl/dist/IO/t/IO.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/IO/t/cachepropagate-tcp.t (from rev 6437, vendor/perl/5.18.1/dist/IO/t/cachepropagate-tcp.t)
===================================================================
--- trunk/contrib/perl/dist/IO/t/cachepropagate-tcp.t (rev 0)
+++ trunk/contrib/perl/dist/IO/t/cachepropagate-tcp.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use IO::Socket;
+use IO::Socket::INET;
+use Socket;
+use Test::More;
+use Config;
+
+plan tests => 8;
+
+my $listener = IO::Socket::INET->new(Listen => 1,
+ LocalAddr => '127.0.0.1',
+ Proto => 'tcp');
+ok(defined($listener), 'socket created');
+
+my $port = $listener->sockport();
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+SKIP: {
+ skip "fork not available", 4
+ unless $Config{d_fork} || $Config{d_pseudofork};
+
+ my $cpid = fork();
+ if (0 == $cpid) {
+ # the child:
+ sleep(1);
+ my $connector = IO::Socket::INET->new(PeerAddr => '127.0.0.1',
+ PeerPort => $port,
+ Proto => 'tcp');
+ exit(0);
+ } else {;
+ ok(defined($cpid), 'spawned a child');
+ }
+
+ my $new = $listener->accept();
+
+ is($new->sockdomain(), $d, 'domain match');
+ SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ is($new->protocol(), $p, 'protocol match');
+ }
+ SKIP: {
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ is($new->socktype(), $s, 'type match');
+ }
+
+ wait();
+}
Copied: trunk/contrib/perl/dist/IO/t/cachepropagate-udp.t (from rev 6437, vendor/perl/5.18.1/dist/IO/t/cachepropagate-udp.t)
===================================================================
--- trunk/contrib/perl/dist/IO/t/cachepropagate-udp.t (rev 0)
+++ trunk/contrib/perl/dist/IO/t/cachepropagate-udp.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use IO::Socket;
+use IO::Socket::INET;
+use Socket;
+use Test::More;
+
+plan tests => 7;
+
+my $listener = IO::Socket::INET->new(LocalAddr => '127.0.0.1',
+ Proto => 'udp');
+ok(defined($listener), 'socket created');
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+my $new = IO::Socket::INET->new_from_fd($listener->fileno(), 'r+');
+
+is($new->sockdomain(), $d, 'domain match');
+SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ skip "SO_PROTOCOL defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_PROTOCOL);
+ is($new->protocol(), $p, 'protocol match');
+}
+SKIP: {
+ skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1
+ if $^O eq "aix";
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ skip "SO_TYPE defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_TYPE);
+ is($new->socktype(), $s, 'type match');
+}
Copied: trunk/contrib/perl/dist/IO/t/cachepropagate-unix.t (from rev 6437, vendor/perl/5.18.1/dist/IO/t/cachepropagate-unix.t)
===================================================================
--- trunk/contrib/perl/dist/IO/t/cachepropagate-unix.t (rev 0)
+++ trunk/contrib/perl/dist/IO/t/cachepropagate-unix.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use File::Temp qw(tempdir);
+use File::Spec::Functions;
+use IO::Socket;
+use IO::Socket::UNIX;
+use Socket;
+use Config;
+use Test::More;
+
+plan skip_all => "UNIX domain sockets not implemented on $^O"
+ if ($^O =~ m/^(?:qnx|nto|vos|MSWin32|VMS)$/);
+
+plan tests => 15;
+
+my $socketpath = catfile(tempdir( CLEANUP => 1 ), 'testsock');
+
+# start testing stream sockets:
+my $listener = IO::Socket::UNIX->new(Type => SOCK_STREAM,
+ Listen => 1,
+ Local => $socketpath);
+ok(defined($listener), 'stream socket created');
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+SKIP: {
+ skip "fork not available", 4
+ unless $Config{d_fork} || $Config{d_pseudofork};
+
+ my $cpid = fork();
+ if (0 == $cpid) {
+ # the child:
+ sleep(1);
+ my $connector = IO::Socket::UNIX->new(Peer => $socketpath);
+ exit(0);
+ } else {
+ ok(defined($cpid), 'spawned a child');
+ }
+
+ my $new = $listener->accept();
+
+ is($new->sockdomain(), $d, 'domain match');
+ SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ skip "SO_PROTOCOL defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_PROTOCOL);
+ is($new->protocol(), $p, 'protocol match');
+ }
+ SKIP: {
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ skip "SO_TYPE defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_TYPE);
+ is($new->socktype(), $s, 'type match');
+ }
+
+ unlink($socketpath);
+ wait();
+}
+
+undef $TODO;
+SKIP: {
+ skip "datagram unix sockets not supported on $^O", 7
+ if $^O eq "haiku";
+ # now test datagram sockets:
+ $listener = IO::Socket::UNIX->new(Type => SOCK_DGRAM,
+ Local => $socketpath);
+ ok(defined($listener), 'datagram socket created');
+
+ $p = $listener->protocol();
+ ok(defined($p), 'protocol defined');
+ $d = $listener->sockdomain();
+ ok(defined($d), 'domain defined');
+ $s = $listener->socktype();
+ ok(defined($s), 'type defined');
+
+ my $new = IO::Socket::UNIX->new_from_fd($listener->fileno(), 'r+');
+
+ is($new->sockdomain(), $d, 'domain match');
+ SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ skip "SO_PROTOCOL defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_PROTOCOL);
+ is($new->protocol(), $p, 'protocol match');
+ }
+ SKIP: {
+ skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1
+ if $^O eq "aix";
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ skip "SO_TYPE defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_TYPE);
+ is($new->socktype(), $s, 'type match');
+ }
+}
+unlink($socketpath);
Index: trunk/contrib/perl/dist/IO/t/io_const.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_const.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_const.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_const.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_dir.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_dir.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_dir.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_dir.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_dup.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_dup.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_dup.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_dup.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_file.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_file.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_file.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_file.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_file_export.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_file_export.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_file_export.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_file_export.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_linenum.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_linenum.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_linenum.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_linenum.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_multihomed.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_multihomed.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_multihomed.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_multihomed.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_pipe.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_pipe.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_pipe.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_pipe.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_poll.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_poll.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_poll.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_poll.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_sel.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_sel.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_sel.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_sel.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_sock.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_sock.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_sock.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_sock.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/t/io_taint.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_taint.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_taint.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -3,7 +3,10 @@
use Config;
BEGIN {
- if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bIO\b/ && $^O ne 'VMS') {
+ if ($ENV{PERL_CORE}
+ and $Config{'extensions'} !~ /\bIO\b/ && $^O ne 'VMS'
+ or not ${^TAINT}) # not ${^TAINT} => perl without taint support
+ {
print "1..0\n";
exit 0;
}
Property changes on: trunk/contrib/perl/dist/IO/t/io_taint.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_tell.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_tell.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_tell.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_tell.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_udp.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_udp.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_udp.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_udp.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/IO/t/io_unix.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_unix.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_unix.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/IO/t/io_unix.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/IO/t/io_utf8.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_utf8.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_utf8.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -9,8 +9,10 @@
require($ENV{PERL_CORE} ? "../../t/test.pl" : "./t/test.pl");
-plan(tests => 5);
+my $buf_size_count = 8200; # Above default buffer size of 8192
+plan(tests => 5 + 2 * $buf_size_count);
+
my $io;
use_ok('IO::File');
@@ -24,6 +26,15 @@
$io = IO::File->new;
ok($io->open("io_utf8", "<:utf8"), "open <:utf8");
is(ord(<$io>), 256, "readline chr(256)");
+
+for my $i (0 .. $buf_size_count - 1) {
+ is($io->ungetc($i), $i, "ungetc of $i returns itself");
+}
+
+for (my $i = $buf_size_count - 1; $i >= 0; $i--) {
+ is(ord($io->getc()), $i, "getc gets back $i");
+}
+
undef $io;
END {
Property changes on: trunk/contrib/perl/dist/IO/t/io_utf8.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/IO/t/io_utf8argv.t (from rev 6437, vendor/perl/5.18.1/dist/IO/t/io_utf8argv.t)
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_utf8argv.t (rev 0)
+++ trunk/contrib/perl/dist/IO/t/io_utf8argv.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,38 @@
+#!./perl
+
+BEGIN {
+ unless ($] >= 5.008 and find PerlIO::Layer 'perlio') {
+ print "1..0 # Skip: not perlio\n";
+ exit 0;
+ }
+ require($ENV{PERL_CORE} ? "../../t/test.pl" : "./t/test.pl");
+}
+
+use utf8;
+
+
+plan(tests => 2);
+
+open my $fh, ">:raw", 'io_utf8argv';
+print $fh
+ "\xce\x9c\xe1\xbd\xb7\xce\xb1\x20\xcf\x80\xe1\xbd\xb1\xcf\x80\xce".
+ "\xb9\xce\xb1\x2c\x20\xce\xbc\xe1\xbd\xb0\x20\xcf\x80\xce\xbf\xce".
+ "\xb9\xe1\xbd\xb0\x20\xcf\x80\xe1\xbd\xb1\xcf\x80\xce\xb9\xce\xb1".
+ "\xcd\xbe\x0a";
+close $fh or die "close: $!";
+
+
+use open ":std", ":utf8";
+
+use IO::Handle;
+
+ at ARGV = ('io_utf8argv') x 2;
+is *ARGV->getline, "Μία πάπια, μὰ ποιὰ πάπια;\n",
+ 'getline respects open pragma when magically opening ARGV';
+
+is join('',*ARGV->getlines), "Μία πάπια, μὰ ποιὰ πάπια;\n",
+ 'getlines respects open pragma when magically opening ARGV';
+
+END {
+ 1 while unlink "io_utf8argv";
+}
Modified: trunk/contrib/perl/dist/IO/t/io_xs.t
===================================================================
--- trunk/contrib/perl/dist/IO/t/io_xs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/IO/t/io_xs.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -15,16 +15,16 @@
}
}
+use Test::More tests => 5;
use IO::File;
use IO::Seekable;
-print "1..4\n";
-
-$x = new_tmpfile IO::File or print "not ";
-print "ok 1\n";
+$x = new_tmpfile IO::File;
+ok($x, "new_tmpfile");
print $x "ok 2\n";
$x->seek(0,SEEK_SET);
-print <$x>;
+my $line = <$x>;
+is($line, "ok 2\n", "check we can write to the tempfile");
$x->seek(0,SEEK_SET);
print $x "not ok 3\n";
@@ -32,9 +32,23 @@
print $x "ok 3\n";
$x->flush;
$x->setpos($p);
-print scalar <$x>;
+$line = <$x>;
+is($line, "ok 3\n", "test getpos/setpos");
$! = 0;
$x->setpos(undef);
-print $! ? "ok 4 # $!\n" : "not ok 4\n";
+ok($!, "setpos(undef) makes errno non-zero");
+SKIP:
+{ # [perl #64772] IO::Handle->sync fails on an O_RDONLY descriptor
+ $Config{d_fsync}
+ or skip "No fsync", 1;
+ $^O eq 'aix'
+ and skip "fsync() documented to fail on non-writable handles on AIX", 1;
+ $^O eq 'cygwin'
+ and skip "fsync() on cygwin uses FlushFileBuffers which requires a writable handle", 1;
+ open my $fh, "<", "t/io_xs.t"
+ or skip "Cannot open t/io_xs.t read-only: $!", 1;
+ ok($fh->sync, "sync to a read only handle")
+ or diag "sync(): ", $!;
+}
Property changes on: trunk/contrib/perl/dist/IO/t/io_xs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Locale-Maketext/ChangeLog
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/ChangeLog 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/ChangeLog 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,5 +1,34 @@
Revision history for Perl suite Locale::Maketext
+2012-12-04
+ * Fix misparsing of maketext strings.
+
+2012-11-22
+ * Fix hash order dependency bug in tests
+
+2012-01-14
+ * Minor POD documentation update to sync with upstream blead.
+
+2011-12-23
+ * No changes. Production release after CPAN testers cleared.
+
+2011-12-14
+ * Update to 1.19_01 from upstream blead for release testing
+
+ Fix broken URLs in dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod for RFCs
+
+ Keep verbatim pod in various dist/* pods within 79 cols
+
+2011-05-25
+ * Update to 1.19 from upstream blead
+
+ [perl #89896] Locale::Maketext test failure
+ when environment has variable containing unbalanced brackets
+
+ Suppress "Name used only once" warnings.
+
+ [perl #81888] Fix typos (spelling errors) in dist/*
+
2010-10-20
* Release 1.17
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/ChangeLog
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/README
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/README 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/README 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/README
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,7 +2,7 @@
use Locale::Maketext;
-our $VERSION = '1.17';
+our $VERSION = '1.20';
=head1 NAME
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,7 +2,7 @@
use Locale::Maketext;
-our $VERSION = '1.17';
+our $VERSION = '1.20';
sub zorp { return scalar @_ }
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod 2013-12-02 21:27:05 UTC (rev 6440)
@@ -750,12 +750,12 @@
Alvestrand, Harald Tveit. 1995. I<RFC 1766: Tags for the
Identification of Languages.>
-C<ftp://ftp.isi.edu/in-notes/rfc1766.txt>
+C<http://www.ietf.org/rfc/rfc1766.txt>
[Now see RFC 3066.]
Callon, Ross, editor. 1996. I<RFC 1925: The Twelve
Networking Truths.>
-C<ftp://ftp.isi.edu/in-notes/rfc1925.txt>
+C<http://www.ietf.org/rfc/rfc1925.txt>
Drepper, Ulrich, Peter Miller,
and FranE<ccedil>ois Pinard. 1995-2001. GNU
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -27,7 +27,7 @@
}
-$VERSION = '1.19';
+$VERSION = '1.23';
@ISA = ();
$MATCH_SUPERS = 1;
@@ -625,21 +625,9 @@
# 0-length method name means to just interpolate:
push @code, ' (';
}
- elsif($m =~ /^\w+(?:\:\:\w+)*$/s
- and $m !~ m/(?:^|\:)\d/s
- # exclude starting a (sub)package or symbol with a digit
+ elsif($m =~ /^\w+$/s
+ # exclude anything fancy, especially fully-qualified module names
) {
- # Yes, it even supports the demented (and undocumented?)
- # $obj->Foo::bar(...) syntax.
- $target->_die_pointing(
- $string_to_compile, q{Can't use "SUPER::" in a bracket-group method},
- 2 + length($c[-1])
- )
- if $m =~ m/^SUPER::/s;
- # Because for SUPER:: to work, we'd have to compile this into
- # the right package, and that seems just not worth the bother,
- # unless someone convinces me otherwise.
-
push @code, ' $_[0]->' . $m . '(';
}
else {
@@ -693,7 +681,9 @@
elsif(substr($1,0,1) ne '~') {
# it's stuff not containing "~" or "[" or "]"
# i.e., a literal blob
- $c[-1] .= $1;
+ my $text = $1;
+ $text =~ s/\\/\\\\/g;
+ $c[-1] .= $text;
}
elsif($1 eq '~~') { # "~~"
@@ -731,7 +721,9 @@
else {
# It's a "~X" where X is not a special character.
# Consider it a literal ~ and X.
- $c[-1] .= $1;
+ my $text = $1;
+ $text =~ s/\\/\\\\/g;
+ $c[-1] .= $text;
}
}
}
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod 2013-12-02 21:27:05 UTC (rev 6440)
@@ -166,7 +166,8 @@
my $lh;
if($chosen_language) {
$lh = $class->get_handle($chosen_language)
- || die "No language handle for \"$chosen_language\" or the like";
+ || die "No language handle for \"$chosen_language\""
+ . " or the like";
} else {
# Config file missing, maybe?
$lh = $class->get_handle()
@@ -385,6 +386,14 @@
Note that numf is called by quant for stringifying all quantifying
numbers.
+=item $language->numerate($number, $singular, $plural, $negative)
+
+This returns the given noun form which is appropriate for the quantity
+C<$number> according to this language's conventions. C<numerate> is
+used internally by C<quant> to quantify nouns. Use it directly --
+usually from bracket notation -- to avoid C<quant>'s implicit call to
+C<numf> and output of a numeric quantity.
+
=item $language->sprintf($format, @items)
This is just a wrapper around Perl's normal C<sprintf> function.
@@ -434,10 +443,6 @@
any point on which this documentation is unclear.> This documentation
is vastly longer than the module source itself.
-=over
-
-=back
-
=head1 LANGUAGE CLASS HIERARCHIES
These are Locale::Maketext's assumptions about the class
@@ -690,7 +695,7 @@
")!\n",
}
# to be called by $lh->maketext(KEY, params...)
-
+
In other words, text outside bracket groups is turned into string
literals. Text in brackets is rather more complex, and currently follows
these rules:
@@ -990,10 +995,10 @@
# Set to a method name:
$lh->fail_with( 'failure_method' );
-
+
# Set to nothing (i.e., so failure throws a plain exception)
$lh->fail_with( undef );
-
+
# Get the current value
$handler = $lh->fail_with();
@@ -1106,10 +1111,10 @@
package Projname::L10N;
use base qw(Locale::Maketext);
...any methods you might want all your languages to share...
-
+
# And, assuming you want the base class to be an _AUTO lexicon,
# as is discussed a few sections up:
-
+
1;
=item *
@@ -1244,7 +1249,7 @@
But for other languages (as is discussed at length
in L<Locale::Maketext::TPJ13|Locale::Maketext::TPJ13>), simple
-C<quant>/C<numerify> is not enough. For the particularly problematic
+C<quant>/C<numf> is not enough. For the particularly problematic
Slavic languages, what you may need is a method which you provide
with the number, the citation form of the noun to quantify, and
the case and gender that the sentence's syntax projects onto that
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/01_about_verbose.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/01_about_verbose.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/01_about_verbose.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/01_about_verbose.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/04_use_external_lex_cache.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/04_use_external_lex_cache.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/04_use_external_lex_cache.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/04_use_external_lex_cache.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Locale-Maketext/t/09_compile.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/09_compile.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/09_compile.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -8,12 +8,15 @@
use Scalar::Util qw(tainted);
use Locale::Maketext;
-my @ENV_values = values %ENV;
-my $tainted_value;
-do { $tainted_value = shift @ENV_values } while(!$tainted_value || ref $tainted_value);
+my @ENV_values = map { !/^PERL/ && defined($ENV{$_}) && !ref($ENV{$_}) && $ENV{$_} ? $ENV{$_} : () } sort keys %ENV;
+die "No %ENV vars to test?" if !@ENV_values;
+
+my ($tainted_value)= @ENV_values;
$tainted_value =~ s/([\[\]])/~$1/g;
-ok(tainted($tainted_value), "\$tainted_value is tainted") or die('huh... %ENV has no entries? I don\'t know how to test taint without it');
+# If ${^TAINT} is not set despite -T, this perl doesn't have taint support
+ok(!${^TAINT} || tainted($tainted_value), "\$tainted_value is tainted")
+ or die("Could not find tainted value to use for testing (maybe fix the test?)");
my $result = Locale::Maketext::_compile("hello [_1]", $tainted_value);
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/09_compile.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/10_make.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/10_make.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/10_make.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/10_make.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/20_get.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/20_get.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/20_get.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/20_get.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/30_eval_dollar_at.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/30_eval_dollar_at.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/30_eval_dollar_at.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/30_eval_dollar_at.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/40_super.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/40_super.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/40_super.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/40_super.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/50_super.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/50_super.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/50_super.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/50_super.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/60_super.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/60_super.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/60_super.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/60_super.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/70_fail_auto.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/70_fail_auto.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/70_fail_auto.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/70_fail_auto.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Locale-Maketext/t/90_utf8.t
===================================================================
--- trunk/contrib/perl/dist/Locale-Maketext/t/90_utf8.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Locale-Maketext/t/90_utf8.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Locale-Maketext/t/90_utf8.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigFloat.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigFloat.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigFloat.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -12,7 +12,7 @@
# _a : accuracy
# _p : precision
-$VERSION = '1.993';
+$VERSION = '1.998';
require 5.006002;
require Exporter;
@@ -437,10 +437,10 @@
sub numify
{
- # Make a number from a BigFloat object
- # simple return a string and let Perl's atoi()/atof() handle the rest
+ # Convert a Perl scalar number from a BigFloat object.
+ # Create a string and let Perl's atoi()/atof() handle the rest.
my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1, at _);
- $x->bsstr();
+ return 0 + $x->bsstr();
}
##############################################################################
@@ -3816,122 +3816,122 @@
=head1 SYNOPSIS
- use Math::BigFloat;
+ use Math::BigFloat;
- # Number creation
- my $x = Math::BigFloat->new($str); # defaults to 0
- my $y = $x->copy(); # make a true copy
- my $nan = Math::BigFloat->bnan(); # create a NotANumber
- my $zero = Math::BigFloat->bzero(); # create a +0
- my $inf = Math::BigFloat->binf(); # create a +inf
- my $inf = Math::BigFloat->binf('-'); # create a -inf
- my $one = Math::BigFloat->bone(); # create a +1
- my $mone = Math::BigFloat->bone('-'); # create a -1
+ # Number creation
+ my $x = Math::BigFloat->new($str); # defaults to 0
+ my $y = $x->copy(); # make a true copy
+ my $nan = Math::BigFloat->bnan(); # create a NotANumber
+ my $zero = Math::BigFloat->bzero(); # create a +0
+ my $inf = Math::BigFloat->binf(); # create a +inf
+ my $inf = Math::BigFloat->binf('-'); # create a -inf
+ my $one = Math::BigFloat->bone(); # create a +1
+ my $mone = Math::BigFloat->bone('-'); # create a -1
- my $pi = Math::BigFloat->bpi(100); # PI to 100 digits
+ my $pi = Math::BigFloat->bpi(100); # PI to 100 digits
- # the following examples compute their result to 100 digits accuracy:
- my $cos = Math::BigFloat->new(1)->bcos(100); # cosinus(1)
- my $sin = Math::BigFloat->new(1)->bsin(100); # sinus(1)
- my $atan = Math::BigFloat->new(1)->batan(100); # arcus tangens(1)
+ # the following examples compute their result to 100 digits accuracy:
+ my $cos = Math::BigFloat->new(1)->bcos(100); # cosinus(1)
+ my $sin = Math::BigFloat->new(1)->bsin(100); # sinus(1)
+ my $atan = Math::BigFloat->new(1)->batan(100); # arcus tangens(1)
- my $atan2 = Math::BigFloat->new( 1 )->batan2( 1 ,100); # batan(1)
- my $atan2 = Math::BigFloat->new( 1 )->batan2( 8 ,100); # batan(1/8)
- my $atan2 = Math::BigFloat->new( -2 )->batan2( 1 ,100); # batan(-2)
+ my $atan2 = Math::BigFloat->new( 1 )->batan2( 1 ,100); # batan(1)
+ my $atan2 = Math::BigFloat->new( 1 )->batan2( 8 ,100); # batan(1/8)
+ my $atan2 = Math::BigFloat->new( -2 )->batan2( 1 ,100); # batan(-2)
- # Testing
- $x->is_zero(); # true if arg is +0
- $x->is_nan(); # true if arg is NaN
- $x->is_one(); # true if arg is +1
- $x->is_one('-'); # true if arg is -1
- $x->is_odd(); # true if odd, false for even
- $x->is_even(); # true if even, false for odd
- $x->is_pos(); # true if >= 0
- $x->is_neg(); # true if < 0
- $x->is_inf(sign); # true if +inf, or -inf (default is '+')
+ # Testing
+ $x->is_zero(); # true if arg is +0
+ $x->is_nan(); # true if arg is NaN
+ $x->is_one(); # true if arg is +1
+ $x->is_one('-'); # true if arg is -1
+ $x->is_odd(); # true if odd, false for even
+ $x->is_even(); # true if even, false for odd
+ $x->is_pos(); # true if >= 0
+ $x->is_neg(); # true if < 0
+ $x->is_inf(sign); # true if +inf, or -inf (default is '+')
- $x->bcmp($y); # compare numbers (undef,<0,=0,>0)
- $x->bacmp($y); # compare absolutely (undef,<0,=0,>0)
- $x->sign(); # return the sign, either +,- or NaN
- $x->digit($n); # return the nth digit, counting from right
- $x->digit(-$n); # return the nth digit, counting from left
+ $x->bcmp($y); # compare numbers (undef,<0,=0,>0)
+ $x->bacmp($y); # compare absolutely (undef,<0,=0,>0)
+ $x->sign(); # return the sign, either +,- or NaN
+ $x->digit($n); # return the nth digit, counting from right
+ $x->digit(-$n); # return the nth digit, counting from left
- # The following all modify their first argument. If you want to preserve
- # $x, use $z = $x->copy()->bXXX($y); See under L<CAVEATS> for why this is
- # necessary when mixing $a = $b assignments with non-overloaded math.
+ # The following all modify their first argument. If you want to pre-
+ # serve $x, use $z = $x->copy()->bXXX($y); See under L</CAVEATS> for
+ # necessary when mixing $a = $b assignments with non-overloaded math.
- # set
- $x->bzero(); # set $i to 0
- $x->bnan(); # set $i to NaN
- $x->bone(); # set $x to +1
- $x->bone('-'); # set $x to -1
- $x->binf(); # set $x to inf
- $x->binf('-'); # set $x to -inf
+ # set
+ $x->bzero(); # set $i to 0
+ $x->bnan(); # set $i to NaN
+ $x->bone(); # set $x to +1
+ $x->bone('-'); # set $x to -1
+ $x->binf(); # set $x to inf
+ $x->binf('-'); # set $x to -inf
- $x->bneg(); # negation
- $x->babs(); # absolute value
- $x->bnorm(); # normalize (no-op)
- $x->bnot(); # two's complement (bit wise not)
- $x->binc(); # increment x by 1
- $x->bdec(); # decrement x by 1
+ $x->bneg(); # negation
+ $x->babs(); # absolute value
+ $x->bnorm(); # normalize (no-op)
+ $x->bnot(); # two's complement (bit wise not)
+ $x->binc(); # increment x by 1
+ $x->bdec(); # decrement x by 1
- $x->badd($y); # addition (add $y to $x)
- $x->bsub($y); # subtraction (subtract $y from $x)
- $x->bmul($y); # multiplication (multiply $x by $y)
- $x->bdiv($y); # divide, set $x to quotient
- # return (quo,rem) or quo if scalar
+ $x->badd($y); # addition (add $y to $x)
+ $x->bsub($y); # subtraction (subtract $y from $x)
+ $x->bmul($y); # multiplication (multiply $x by $y)
+ $x->bdiv($y); # divide, set $x to quotient
+ # return (quo,rem) or quo if scalar
- $x->bmod($y); # modulus ($x % $y)
- $x->bpow($y); # power of arguments ($x ** $y)
- $x->bmodpow($exp,$mod); # modular exponentiation (($num**$exp) % $mod))
- $x->blsft($y, $n); # left shift by $y places in base $n
- $x->brsft($y, $n); # right shift by $y places in base $n
- # returns (quo,rem) or quo if in scalar context
+ $x->bmod($y); # modulus ($x % $y)
+ $x->bpow($y); # power of arguments ($x ** $y)
+ $x->bmodpow($exp,$mod); # modular exponentiation (($num**$exp) % $mod))
+ $x->blsft($y, $n); # left shift by $y places in base $n
+ $x->brsft($y, $n); # right shift by $y places in base $n
+ # returns (quo,rem) or quo if in scalar context
- $x->blog(); # logarithm of $x to base e (Euler's number)
- $x->blog($base); # logarithm of $x to base $base (f.i. 2)
- $x->bexp(); # calculate e ** $x where e is Euler's number
+ $x->blog(); # logarithm of $x to base e (Euler's number)
+ $x->blog($base); # logarithm of $x to base $base (f.i. 2)
+ $x->bexp(); # calculate e ** $x where e is Euler's number
- $x->band($y); # bit-wise and
- $x->bior($y); # bit-wise inclusive or
- $x->bxor($y); # bit-wise exclusive or
- $x->bnot(); # bit-wise not (two's complement)
+ $x->band($y); # bit-wise and
+ $x->bior($y); # bit-wise inclusive or
+ $x->bxor($y); # bit-wise exclusive or
+ $x->bnot(); # bit-wise not (two's complement)
- $x->bsqrt(); # calculate square-root
- $x->broot($y); # $y'th root of $x (e.g. $y == 3 => cubic root)
- $x->bfac(); # factorial of $x (1*2*3*4*..$x)
+ $x->bsqrt(); # calculate square-root
+ $x->broot($y); # $y'th root of $x (e.g. $y == 3 => cubic root)
+ $x->bfac(); # factorial of $x (1*2*3*4*..$x)
- $x->bround($N); # accuracy: preserve $N digits
- $x->bfround($N); # precision: round to the $Nth digit
+ $x->bround($N); # accuracy: preserve $N digits
+ $x->bfround($N); # precision: round to the $Nth digit
- $x->bfloor(); # return integer less or equal than $x
- $x->bceil(); # return integer greater or equal than $x
+ $x->bfloor(); # return integer less or equal than $x
+ $x->bceil(); # return integer greater or equal than $x
# The following do not modify their arguments:
- bgcd(@values); # greatest common divisor
- blcm(@values); # lowest common multiplicator
+ bgcd(@values); # greatest common divisor
+ blcm(@values); # lowest common multiplicator
- $x->bstr(); # return string
- $x->bsstr(); # return string in scientific notation
+ $x->bstr(); # return string
+ $x->bsstr(); # return string in scientific notation
- $x->as_int(); # return $x as BigInt
- $x->exponent(); # return exponent as BigInt
- $x->mantissa(); # return mantissa as BigInt
- $x->parts(); # return (mantissa,exponent) as BigInt
+ $x->as_int(); # return $x as BigInt
+ $x->exponent(); # return exponent as BigInt
+ $x->mantissa(); # return mantissa as BigInt
+ $x->parts(); # return (mantissa,exponent) as BigInt
- $x->length(); # number of digits (w/o sign and '.')
- ($l,$f) = $x->length(); # number of digits, and length of fraction
+ $x->length(); # number of digits (w/o sign and '.')
+ ($l,$f) = $x->length(); # number of digits, and length of fraction
- $x->precision(); # return P of $x (or global, if P of $x undef)
- $x->precision($n); # set P of $x to $n
- $x->accuracy(); # return A of $x (or global, if A of $x undef)
- $x->accuracy($n); # set A $x to $n
+ $x->precision(); # return P of $x (or global, if P of $x undef)
+ $x->precision($n); # set P of $x to $n
+ $x->accuracy(); # return A of $x (or global, if A of $x undef)
+ $x->accuracy($n); # set A $x to $n
- # these get/set the appropriate global value for all BigFloat objects
- Math::BigFloat->precision(); # Precision
- Math::BigFloat->accuracy(); # Accuracy
- Math::BigFloat->round_mode(); # rounding mode
+ # these get/set the appropriate global value for all BigFloat objects
+ Math::BigFloat->precision(); # Precision
+ Math::BigFloat->accuracy(); # Accuracy
+ Math::BigFloat->round_mode(); # rounding mode
=head1 DESCRIPTION
@@ -4023,7 +4023,7 @@
=head2 Accuracy vs. Precision
-See also: L<Rounding|Rounding>.
+See also: L<Rounding|/Rounding>.
Math::BigFloat supports both precision (rounding to a certain place before or
after the dot) and accuracy (rounding to a certain number of digits). For a
@@ -4040,8 +4040,8 @@
be used. For historical reasons, it is called C<div_scale> and can be accessed
via:
- $d = Math::BigFloat->div_scale(); # query
- Math::BigFloat->div_scale($n); # set to $n digits
+ $d = Math::BigFloat->div_scale(); # query
+ Math::BigFloat->div_scale($n); # set to $n digits
The default value for C<div_scale> is 40.
@@ -4049,13 +4049,13 @@
it is rounded. The rounding mode taken is either the default mode, or the one
supplied to the operation after the I<scale>:
- $x = Math::BigFloat->new(2);
- Math::BigFloat->accuracy(5); # 5 digits max
- $y = $x->copy()->bdiv(3); # will give 0.66667
- $y = $x->copy()->bdiv(3,6); # will give 0.666667
- $y = $x->copy()->bdiv(3,6,undef,'odd'); # will give 0.666667
- Math::BigFloat->round_mode('zero');
- $y = $x->copy()->bdiv(3,6); # will also give 0.666667
+ $x = Math::BigFloat->new(2);
+ Math::BigFloat->accuracy(5); # 5 digits max
+ $y = $x->copy()->bdiv(3); # will give 0.66667
+ $y = $x->copy()->bdiv(3,6); # will give 0.666667
+ $y = $x->copy()->bdiv(3,6,undef,'odd'); # will give 0.666667
+ Math::BigFloat->round_mode('zero');
+ $y = $x->copy()->bdiv(3,6); # will also give 0.666667
Note that C<< Math::BigFloat->accuracy() >> and C<< Math::BigFloat->precision() >>
set the global variables, and thus B<any> newly created number will be subject
@@ -4138,12 +4138,12 @@
=head2 accuracy
- $x->accuracy(5); # local for $x
- CLASS->accuracy(5); # global for all members of CLASS
- # Note: This also applies to new()!
+ $x->accuracy(5); # local for $x
+ CLASS->accuracy(5); # global for all members of CLASS
+ # Note: This also applies to new()!
- $A = $x->accuracy(); # read out accuracy that affects $x
- $A = CLASS->accuracy(); # read out global accuracy
+ $A = $x->accuracy(); # read out accuracy that affects $x
+ $A = CLASS->accuracy(); # read out global accuracy
Set or get the global or local accuracy, aka how many significant digits the
results have. If you set a global accuracy, then this also applies to new()!
@@ -4153,7 +4153,7 @@
that number will also be rounded.
In most cases, you should probably round the results explicitly using one of
-L<round()>, L<bround()> or L<bfround()> or by passing the desired accuracy
+L<Math::BigInt/round()>, L<Math::BigInt/bround()> or L<Math::BigInt/bfround()> or by passing the desired accuracy
to the math operation as additional parameter:
my $x = Math::BigInt->new(30000);
@@ -4163,18 +4163,20 @@
=head2 precision()
- $x->precision(-2); # local for $x, round at the second digit right of the dot
- $x->precision(2); # ditto, round at the second digit left of the dot
+ $x->precision(-2); # local for $x, round at the second
+ # digit right of the dot
+ $x->precision(2); # ditto, round at the second digit left
+ # of the dot
CLASS->precision(5); # Global for all members of CLASS
# This also applies to new()!
CLASS->precision(-5); # ditto
- $P = CLASS->precision(); # read out global precision
- $P = $x->precision(); # read out precision that affects $x
+ $P = CLASS->precision(); # read out global precision
+ $P = $x->precision(); # read out precision that affects $x
-Note: You probably want to use L<accuracy()> instead. With L<accuracy> you
-set the number of digits each result should have, with L<precision> you
+Note: You probably want to use L</accuracy> instead. With L</accuracy> you
+set the number of digits each result should have, with L</precision()> you
set the place where to round!
=head2 bexp()
@@ -4187,7 +4189,7 @@
=head2 bnok()
- $x->bnok($y); # x over y (binomial coefficient n over k)
+ $x->bnok($y); # x over y (binomial coefficient n over k)
Calculates the binomial coefficient n over k, also called the "choose"
function. The result is equivalent to:
@@ -4232,7 +4234,7 @@
print $y->batan2($x), "\n";
Calculate the arcus tanges of C<$y> divided by C<$x>, modifying $y in place.
-See also L<batan()>.
+See also L</batan()>.
This method was added in v1.87 of Math::BigInt (June 2007).
@@ -4241,7 +4243,7 @@
my $x = Math::BigFloat->new(1);
print $x->batan(100), "\n";
-Calculate the arcus tanges of $x, modifying $x in place. See also L<batan2()>.
+Calculate the arcus tanges of $x, modifying $x in place. See also L</batan2()>.
This method was added in v1.87 of Math::BigInt (June 2007).
@@ -4351,10 +4353,10 @@
Do not try to be clever to insert some operations in between switching
libraries:
- require Math::BigFloat;
- my $matter = Math::BigFloat->bone() + 4; # load BigInt and Calc
- Math::BigFloat->import( lib => 'Pari' ); # load Pari, too
- my $anti_matter = Math::BigFloat->bone()+4; # now use Pari
+ require Math::BigFloat;
+ my $matter = Math::BigFloat->bone() + 4; # load BigInt and Calc
+ Math::BigFloat->import( lib => 'Pari' ); # load Pari, too
+ my $anti_matter = Math::BigFloat->bone()+4; # now use Pari
This will create objects with numbers stored in two different backend libraries,
and B<VERY BAD THINGS> will happen when you use these together:
@@ -4378,8 +4380,8 @@
It prints both quotient and remainder since print works in list context. Also,
bdiv() will modify $c, so be careful. You probably want to use
- print $c / 123.456,"\n";
- print scalar $c->bdiv(123.456),"\n"; # or if you want to modify $c
+ print $c / 123.456,"\n";
+ print scalar $c->bdiv(123.456),"\n"; # or if you want to modify $c
instead.
@@ -4424,42 +4426,44 @@
=item precision() vs. accuracy()
-A common pitfall is to use L<precision()> when you want to round a result to
+A common pitfall is to use L</precision()> when you want to round a result to
a certain number of digits:
- use Math::BigFloat;
+ use Math::BigFloat;
- Math::BigFloat->precision(4); # does not do what you think it does
- my $x = Math::BigFloat->new(12345); # rounds $x to "12000"!
- print "$x\n"; # print "12000"
- my $y = Math::BigFloat->new(3); # rounds $y to "0"!
- print "$y\n"; # print "0"
- $z = $x / $y; # 12000 / 0 => NaN!
- print "$z\n";
- print $z->precision(),"\n"; # 4
+ Math::BigFloat->precision(4); # does not do what you
+ # think it does
+ my $x = Math::BigFloat->new(12345); # rounds $x to "12000"!
+ print "$x\n"; # print "12000"
+ my $y = Math::BigFloat->new(3); # rounds $y to "0"!
+ print "$y\n"; # print "0"
+ $z = $x / $y; # 12000 / 0 => NaN!
+ print "$z\n";
+ print $z->precision(),"\n"; # 4
-Replacing L<precision> with L<accuracy> is probably not what you want, either:
+Replacing L</precision()> with L</accuracy> is probably not what you want, either:
- use Math::BigFloat;
+ use Math::BigFloat;
- Math::BigFloat->accuracy(4); # enables global rounding:
- my $x = Math::BigFloat->new(123456); # rounded immediately to "12350"
- print "$x\n"; # print "123500"
- my $y = Math::BigFloat->new(3); # rounded to "3
- print "$y\n"; # print "3"
- print $z = $x->copy()->bdiv($y),"\n"; # 41170
- print $z->accuracy(),"\n"; # 4
+ Math::BigFloat->accuracy(4); # enables global rounding:
+ my $x = Math::BigFloat->new(123456); # rounded immediately
+ # to "12350"
+ print "$x\n"; # print "123500"
+ my $y = Math::BigFloat->new(3); # rounded to "3
+ print "$y\n"; # print "3"
+ print $z = $x->copy()->bdiv($y),"\n"; # 41170
+ print $z->accuracy(),"\n"; # 4
What you want to use instead is:
- use Math::BigFloat;
+ use Math::BigFloat;
- my $x = Math::BigFloat->new(123456); # no rounding
- print "$x\n"; # print "123456"
- my $y = Math::BigFloat->new(3); # no rounding
- print "$y\n"; # print "3"
- print $z = $x->copy()->bdiv($y,4),"\n"; # 41150
- print $z->accuracy(),"\n"; # undef
+ my $x = Math::BigFloat->new(123456); # no rounding
+ print "$x\n"; # print "123456"
+ my $y = Math::BigFloat->new(3); # no rounding
+ print "$y\n"; # print "3"
+ print $z = $x->copy()->bdiv($y,4),"\n"; # 41150
+ print $z->accuracy(),"\n"; # undef
In addition to computing what you expected, the last example also does B<not>
"taint" the result with an accuracy or precision setting, which would
@@ -4470,7 +4474,7 @@
=head1 SEE ALSO
L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well as
-L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
The pragmas L<bignum>, L<bigint> and L<bigrat> might also be of interest
because they solve the autoupgrading/downgrading issue, at least partly.
Property changes on: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigFloat.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/Calc.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/Calc.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/Calc.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,7 @@
use strict;
# use warnings; # dont use warnings for older Perls
-our $VERSION = '1.993';
+our $VERSION = '1.997';
# Package to store unsigned big integers in decimal and do math with them
Property changes on: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/Calc.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,7 +5,7 @@
# use warnings; # dont use warnings for older Perls
use vars qw/$VERSION/;
-$VERSION = '1.993';
+$VERSION = '1.998';
package Math::BigInt;
@@ -323,7 +323,7 @@
=head1 SEE ALSO
-L<Math::BigInt>, L<Math::BigFloat>, L<Math::BigInt::BitVect>,
+L<Math::BigInt>, L<Math::BigFloat>,
L<Math::BigInt::GMP> and L<Math::BigInt::Pari>.
=cut
Property changes on: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -18,7 +18,7 @@
my $class = "Math::BigInt";
use 5.006002;
-$VERSION = '1.994';
+$VERSION = '1.9991';
@ISA = qw(Exporter);
@EXPORT_OK = qw(objectify bgcd blcm);
@@ -40,6 +40,8 @@
# Thus inheritance of overload operators becomes possible and transparent for
# our subclasses without the need to repeat the entire overload section there.
+# We register ops that are not registerable yet, so suppress warnings
+{ no warnings;
use overload
'=' => sub { $_[0]->copy(); },
@@ -151,6 +153,7 @@
'""' => sub { $_[0]->bstr(); },
'0+' => sub { $_[0]->numify(); }
;
+} # no warnings scope
##############################################################################
# global constants, flags and accessory
@@ -1013,6 +1016,18 @@
$x;
}
+sub bsgn {
+ # Signum function.
+
+ my $self = shift;
+
+ return $self if $self->modify('bsgn');
+
+ return $self -> bone("+") if $self -> is_pos();
+ return $self -> bone("-") if $self -> is_neg();
+ return $self; # zero or NaN
+}
+
sub bneg
{
# (BINT or num_str) return BINT
@@ -2577,103 +2592,138 @@
##############################################################################
# private stuff (internal use only)
-sub objectify
- {
- # check for strings, if yes, return objects instead
-
- # the first argument is number of args objectify() should look at it will
- # return $count+1 elements, the first will be a classname. This is because
- # overloaded '""' calls bstr($object,undef,undef) and this would result in
- # useless objects being created and thrown away. So we cannot simple loop
- # over @_. If the given count is 0, all arguments will be used.
-
- # If the second arg is a ref, use it as class.
- # If not, try to use it as classname, unless undef, then use $class
- # (aka Math::BigInt). The latter shouldn't happen,though.
+sub objectify {
+ # Convert strings and "foreign objects" to the objects we want.
- # caller: gives us:
- # $x->badd(1); => ref x, scalar y
- # Class->badd(1,2); => classname x (scalar), scalar x, scalar y
- # Class->badd( Class->(1),2); => classname x (scalar), ref x, scalar y
- # Math::BigInt::badd(1,2); => scalar x, scalar y
- # In the last case we check number of arguments to turn it silently into
- # $class,1,2. (We can not take '1' as class ;o)
- # badd($class,1) is not supported (it should, eventually, try to add undef)
- # currently it tries 'Math::BigInt' + 1, which will not work.
+ # The first argument, $count, is the number of following arguments that
+ # objectify() looks at and converts to objects. The first is a classname.
+ # If the given count is 0, all arguments will be used.
- # some shortcut for the common cases
- # $x->unary_op();
- return (ref($_[1]),$_[1]) if (@_ == 2) && ($_[0]||0 == 1) && ref($_[1]);
+ # After the count is read, objectify obtains the name of the class to which
+ # the following arguments are converted. If the second argument is a
+ # reference, use the reference type as the class name. Otherwise, if it is
+ # a string that looks like a class name, use that. Otherwise, use $class.
- my $count = abs(shift || 0);
-
- my (@a,$k,$d); # resulting array, temp, and downgrade
- if (ref $_[0])
- {
- # okay, got object as first
- $a[0] = ref $_[0];
+ # Caller: Gives us:
+ #
+ # $x->badd(1); => ref x, scalar y
+ # Class->badd(1,2); => classname x (scalar), scalar x, scalar y
+ # Class->badd(Class->(1),2); => classname x (scalar), ref x, scalar y
+ # Math::BigInt::badd(1,2); => scalar x, scalar y
+
+ # A shortcut for the common case $x->unary_op():
+
+ return (ref($_[1]), $_[1]) if (@_ == 2) && ($_[0]||0 == 1) && ref($_[1]);
+
+ # Check the context.
+
+ unless (wantarray) {
+ require Carp;
+ Carp::croak ("${class}::objectify() needs list context");
}
- else
+
+ # Get the number of arguments to objectify.
+
+ my $count = shift;
+ $count ||= @_;
+
+ # Initialize the output array.
+
+ my @a = @_;
+
+ # If the first argument is a reference, use that reference type as our
+ # class name. Otherwise, if the first argument looks like a class name,
+ # then use that as our class name. Otherwise, use the default class name.
+
{
- # nope, got 1,2 (Class->xxx(1) => Class,1 and not supported)
- $a[0] = $class;
- $a[0] = shift if $_[0] =~ /^[A-Z].*::/; # classname as first?
+ if (ref($a[0])) { # reference?
+ unshift @a, ref($a[0]);
+ last;
+ }
+ if ($a[0] =~ /^[A-Z].*::/) { # string with class name?
+ last;
+ }
+ unshift @a, $class; # default class name
}
- no strict 'refs';
- # disable downgrading, because Math::BigFLoat->foo('1.0','2.0') needs floats
- if (defined ${"$a[0]::downgrade"})
- {
- $d = ${"$a[0]::downgrade"};
- ${"$a[0]::downgrade"} = undef;
+ no strict 'refs';
+
+ # What we upgrade to, if anything.
+
+ my $up = ${"$a[0]::upgrade"};
+
+ # Disable downgrading, because Math::BigFloat -> foo('1.0','2.0') needs
+ # floats.
+
+ my $down;
+ if (defined ${"$a[0]::downgrade"}) {
+ $down = ${"$a[0]::downgrade"};
+ ${"$a[0]::downgrade"} = undef;
}
- my $up = ${"$a[0]::upgrade"};
- # print STDERR "# Now in objectify, my class is today $a[0], count = $count\n";
- if ($count == 0)
- {
- while (@_)
- {
- $k = shift;
- if (!ref($k))
- {
- $k = $a[0]->new($k);
+ for my $i (1 .. $count) {
+ my $ref = ref $a[$i];
+
+ # If it is an object of the right class, all is fine.
+
+ if ($ref eq $a[0]) {
+ next;
}
- elsif (!defined $up && ref($k) ne $a[0])
- {
- # foreign object, try to convert to integer
- $k->can('as_number') ? $k = $k->as_number() : $k = $a[0]->new($k);
- }
- push @a,$k;
- }
- }
- else
- {
- while ($count > 0)
- {
- $count--;
- $k = shift;
- if (!ref($k))
- {
- $k = $a[0]->new($k);
+
+ # Don't do anything with undefs.
+
+ unless (defined($a[$i])) {
+ next;
}
- elsif (ref($k) ne $a[0] and !defined $up || ref $k ne $up)
- {
- # foreign object, try to convert to integer
- $k->can('as_number') ? $k = $k->as_number() : $k = $a[0]->new($k);
- }
- push @a,$k;
- }
- push @a, at _; # return other params, too
+
+ # Perl scalars are fed to the appropriate constructor.
+
+ unless ($ref) {
+ $a[$i] = $a[0] -> new($a[$i]);
+ next;
+ }
+
+ # Upgrading is OK, so skip further tests if the argument is upgraded.
+
+ if (defined $up && $ref eq $up) {
+ next;
+ }
+
+ # If we want a Math::BigInt, see if the object can become one.
+ # Support the old misnomer as_number().
+
+ if ($a[0] eq 'Math::BigInt') {
+ if ($a[$i] -> can('as_int')) {
+ $a[$i] = $a[$i] -> as_int();
+ next;
+ }
+ if ($a[$i] -> can('as_number')) {
+ $a[$i] = $a[$i] -> as_number();
+ next;
+ }
+ }
+
+ # If we want a Math::BigFloat, see if the object can become one.
+
+ if ($a[0] eq 'Math::BigFloat') {
+ if ($a[$i] -> can('as_float')) {
+ $a[$i] = $a[$i] -> as_float();
+ next;
+ }
+ }
+
+ # Last resort.
+
+ $a[$i] = $a[0] -> new($a[$i]);
}
- if (! wantarray)
- {
- require Carp; Carp::croak ("$class objectify needs list context");
- }
- ${"$a[0]::downgrade"} = $d;
- @a;
- }
+ # Reset the downgrading.
+
+ ${"$a[0]::downgrade"} = $down;
+
+ return @a;
+}
+
sub _register_callback
{
my ($class,$callback) = @_;
@@ -3297,9 +3347,10 @@
$x->digit($n); # return the nth digit, counting from right
$x->digit(-$n); # return the nth digit, counting from left
- # The following all modify their first argument. If you want to preserve
- # $x, use $z = $x->copy()->bXXX($y); See under L<CAVEATS> for why this is
- # necessary when mixing $a = $b assignments with non-overloaded math.
+ # The following all modify their first argument. If you want to pre-
+ # serve $x, use $z = $x->copy()->bXXX($y); See under L<CAVEATS> for
+ # why this is necessary when mixing $a = $b assignments with non-over-
+ # loaded math.
$x->bzero(); # set $x to 0
$x->bnan(); # set $x to NaN
@@ -3310,6 +3361,7 @@
$x->bneg(); # negation
$x->babs(); # absolute value
+ $x->bsgn(); # sign function (-1, 0, 1, or NaN)
$x->bnorm(); # normalize (no-op in BigInt)
$x->bnot(); # two's complement (bit wise not)
$x->binc(); # increment $x by 1
@@ -3329,10 +3381,12 @@
$x->bpow($y); # power of arguments (x ** y)
$x->blsft($y); # left shift in base 2
$x->brsft($y); # right shift in base 2
- # returns (quo,rem) or quo if in scalar context
+ # returns (quo,rem) or quo if in sca-
+ # lar context
$x->blsft($y,$n); # left shift by $y places in base $n
$x->brsft($y,$n); # right shift by $y places in base $n
- # returns (quo,rem) or quo if in scalar context
+ # returns (quo,rem) or quo if in sca-
+ # lar context
$x->band($y); # bitwise and
$x->bior($y); # bitwise inclusive or
@@ -3349,7 +3403,8 @@
$x->blog($base); # logarithm of $x to base $base (f.i. 2)
$x->bexp(); # calculate e ** $x where e is Euler's number
- $x->round($A,$P,$mode); # round to accuracy or precision using mode $mode
+ $x->round($A,$P,$mode); # round to accuracy or precision using
+ # mode $mode
$x->bround($n); # accuracy: preserve $n digits
$x->bfround($n); # $n > 0: round $nth digits,
# $n < 0: round to the $nth digit after the
@@ -3369,36 +3424,38 @@
my $lcm = Math::BigInt::blcm(@values);
$x->length(); # return number of digits in number
- ($xl,$f) = $x->length(); # length of number and length of fraction part,
- # latter is always 0 digits long for BigInts
+ ($xl,$f) = $x->length(); # length of number and length of fraction
+ # part, latter is always 0 digits long
+ # for BigInts
- $x->exponent(); # return exponent as BigInt
- $x->mantissa(); # return (signed) mantissa as BigInt
- $x->parts(); # return (mantissa,exponent) as BigInt
- $x->copy(); # make a true copy of $x (unlike $y = $x;)
- $x->as_int(); # return as BigInt (in BigInt: same as copy())
- $x->numify(); # return as scalar (might overflow!)
+ $x->exponent(); # return exponent as BigInt
+ $x->mantissa(); # return (signed) mantissa as BigInt
+ $x->parts(); # return (mantissa,exponent) as BigInt
+ $x->copy(); # make a true copy of $x (unlike $y = $x;)
+ $x->as_int(); # return as BigInt (in BigInt: same as copy())
+ $x->numify(); # return as scalar (might overflow!)
# conversion to string (do not modify their argument)
- $x->bstr(); # normalized string (e.g. '3')
- $x->bsstr(); # norm. string in scientific notation (e.g. '3E0')
- $x->as_hex(); # as signed hexadecimal string with prefixed 0x
- $x->as_bin(); # as signed binary string with prefixed 0b
- $x->as_oct(); # as signed octal string with prefixed 0
+ $x->bstr(); # normalized string (e.g. '3')
+ $x->bsstr(); # norm. string in scientific notation (e.g. '3E0')
+ $x->as_hex(); # as signed hexadecimal string with prefixed 0x
+ $x->as_bin(); # as signed binary string with prefixed 0b
+ $x->as_oct(); # as signed octal string with prefixed 0
# precision and accuracy (see section about rounding for more)
- $x->precision(); # return P of $x (or global, if P of $x undef)
- $x->precision($n); # set P of $x to $n
- $x->accuracy(); # return A of $x (or global, if A of $x undef)
- $x->accuracy($n); # set A $x to $n
+ $x->precision(); # return P of $x (or global, if P of $x undef)
+ $x->precision($n); # set P of $x to $n
+ $x->accuracy(); # return A of $x (or global, if A of $x undef)
+ $x->accuracy($n); # set A $x to $n
# Global methods
- Math::BigInt->precision(); # get/set global P for all BigInt objects
- Math::BigInt->accuracy(); # get/set global A for all BigInt objects
- Math::BigInt->round_mode(); # get/set global round mode, one of
- # 'even', 'odd', '+inf', '-inf', 'zero', 'trunc' or 'common'
- Math::BigInt->config(); # return hash containing configuration
+ Math::BigInt->precision(); # get/set global P for all BigInt objects
+ Math::BigInt->accuracy(); # get/set global A for all BigInt objects
+ Math::BigInt->round_mode(); # get/set global round mode, one of
+ # 'even', 'odd', '+inf', '-inf', 'zero',
+ # 'trunc' or 'common'
+ Math::BigInt->config(); # return hash containing configuration
=head1 DESCRIPTION
@@ -3453,7 +3510,7 @@
=item Output
Output values are BigInt objects (normalized), except for the methods which
-return a string (see L<SYNOPSIS>).
+return a string (see L</SYNOPSIS>).
Some routines (C<is_odd()>, C<is_even()>, C<is_zero()>, C<is_one()>,
C<is_nan()>, etc.) return true or false, while others (C<bcmp()>, C<bacmp()>)
@@ -3466,7 +3523,7 @@
Each of the methods below (except config(), accuracy() and precision())
accepts three additional parameters. These arguments C<$A>, C<$P> and C<$R>
are C<accuracy>, C<precision> and C<round_mode>. Please see the section about
-L<ACCURACY and PRECISION> for more information.
+L</ACCURACY and PRECISION> for more information.
=head2 config()
@@ -3479,33 +3536,33 @@
loaded etc. The following hash keys are currently filled in with the
appropriate information.
- key Description
- Example
+ key Description
+ Example
============================================================
- lib Name of the low-level math library
- Math::BigInt::Calc
- lib_version Version of low-level math library (see 'lib')
- 0.30
- class The class name of config() you just called
- Math::BigInt
- upgrade To which class math operations might be upgraded
- Math::BigFloat
- downgrade To which class math operations might be downgraded
- undef
- precision Global precision
- undef
- accuracy Global accuracy
- undef
- round_mode Global round mode
- even
- version version number of the class you used
- 1.61
- div_scale Fallback accuracy for div
- 40
- trap_nan If true, traps creation of NaN via croak()
- 1
- trap_inf If true, traps creation of +inf/-inf via croak()
- 1
+ lib Name of the low-level math library
+ Math::BigInt::Calc
+ lib_version Version of low-level math library (see 'lib')
+ 0.30
+ class The class name of config() you just called
+ Math::BigInt
+ upgrade To which class math operations might be upgraded
+ Math::BigFloat
+ downgrade To which class math operations might be downgraded
+ undef
+ precision Global precision
+ undef
+ accuracy Global accuracy
+ undef
+ round_mode Global round mode
+ even
+ version version number of the class you used
+ 1.61
+ div_scale Fallback accuracy for div
+ 40
+ trap_nan If true, traps creation of NaN via croak()
+ 1
+ trap_inf If true, traps creation of +inf/-inf via croak()
+ 1
The following values can be set by passing C<config()> a reference to a hash:
@@ -3514,16 +3571,18 @@
Example:
- $new_cfg = Math::BigInt->config( { trap_inf => 1, precision => 5 } );
+ $new_cfg = Math::BigInt->config(
+ { trap_inf => 1, precision => 5 }
+ );
=head2 accuracy()
- $x->accuracy(5); # local for $x
- CLASS->accuracy(5); # global for all members of CLASS
- # Note: This also applies to new()!
+ $x->accuracy(5); # local for $x
+ CLASS->accuracy(5); # global for all members of CLASS
+ # Note: This also applies to new()!
- $A = $x->accuracy(); # read out accuracy that affects $x
- $A = CLASS->accuracy(); # read out global accuracy
+ $A = $x->accuracy(); # read out accuracy that affects $x
+ $A = CLASS->accuracy(); # read out global accuracy
Set or get the global or local accuracy, aka how many significant digits the
results have. If you set a global accuracy, then this also applies to new()!
@@ -3533,34 +3592,35 @@
that number will also be rounded.
In most cases, you should probably round the results explicitly using one of
-L<round()>, L<bround()> or L<bfround()> or by passing the desired accuracy
+L</round()>, L</bround()> or L</bfround()> or by passing the desired accuracy
to the math operation as additional parameter:
- my $x = Math::BigInt->new(30000);
- my $y = Math::BigInt->new(7);
- print scalar $x->copy()->bdiv($y, 2); # print 4300
- print scalar $x->copy()->bdiv($y)->bround(2); # print 4300
+ my $x = Math::BigInt->new(30000);
+ my $y = Math::BigInt->new(7);
+ print scalar $x->copy()->bdiv($y, 2); # print 4300
+ print scalar $x->copy()->bdiv($y)->bround(2); # print 4300
-Please see the section about L<ACCURACY and PRECISION> for further details.
+Please see the section about L</ACCURACY and PRECISION> for further details.
Value must be greater than zero. Pass an undef value to disable it:
- $x->accuracy(undef);
- Math::BigInt->accuracy(undef);
+ $x->accuracy(undef);
+ Math::BigInt->accuracy(undef);
Returns the current accuracy. For C<< $x->accuracy() >> it will return either
the local accuracy, or if not defined, the global. This means the return value
represents the accuracy that will be in effect for $x:
- $y = Math::BigInt->new(1234567); # unrounded
- print Math::BigInt->accuracy(4),"\n"; # set 4, print 4
- $x = Math::BigInt->new(123456); # $x will be automatically rounded!
- print "$x $y\n"; # '123500 1234567'
- print $x->accuracy(),"\n"; # will be 4
- print $y->accuracy(),"\n"; # also 4, since global is 4
- print Math::BigInt->accuracy(5),"\n"; # set to 5, print 5
- print $x->accuracy(),"\n"; # still 4
- print $y->accuracy(),"\n"; # 5, since global is 5
+ $y = Math::BigInt->new(1234567); # unrounded
+ print Math::BigInt->accuracy(4),"\n"; # set 4, print 4
+ $x = Math::BigInt->new(123456); # $x will be automatic-
+ # ally rounded!
+ print "$x $y\n"; # '123500 1234567'
+ print $x->accuracy(),"\n"; # will be 4
+ print $y->accuracy(),"\n"; # also 4, since global is 4
+ print Math::BigInt->accuracy(5),"\n"; # set to 5, print 5
+ print $x->accuracy(),"\n"; # still 4
+ print $y->accuracy(),"\n"; # 5, since global is 5
Note: Works also for subclasses like Math::BigFloat. Each class has it's own
globals separated from Math::BigInt, but it is possible to subclass
@@ -3569,18 +3629,20 @@
=head2 precision()
- $x->precision(-2); # local for $x, round at the second digit right of the dot
- $x->precision(2); # ditto, round at the second digit left of the dot
+ $x->precision(-2); # local for $x, round at the second
+ # digit right of the dot
+ $x->precision(2); # ditto, round at the second digit left
+ # of the dot
- CLASS->precision(5); # Global for all members of CLASS
- # This also applies to new()!
- CLASS->precision(-5); # ditto
+ CLASS->precision(5); # Global for all members of CLASS
+ # This also applies to new()!
+ CLASS->precision(-5); # ditto
- $P = CLASS->precision(); # read out global precision
- $P = $x->precision(); # read out precision that affects $x
+ $P = CLASS->precision(); # read out global precision
+ $P = $x->precision(); # read out precision that affects $x
-Note: You probably want to use L<accuracy()> instead. With L<accuracy> you
-set the number of digits each result should have, with L<precision> you
+Note: You probably want to use L</accuracy()> instead. With L</accuracy()> you
+set the number of digits each result should have, with L</precision()> you
set the place where to round!
C<precision()> sets or gets the global or local precision, aka at which digit
@@ -3591,21 +3653,21 @@
numbers have digits after the dot. In L<Math::BigFloat>, it will round all
results to P digits after the dot.
-Please see the section about L<ACCURACY and PRECISION> for further details.
+Please see the section about L</ACCURACY and PRECISION> for further details.
Pass an undef value to disable it:
- $x->precision(undef);
- Math::BigInt->precision(undef);
+ $x->precision(undef);
+ Math::BigInt->precision(undef);
Returns the current precision. For C<< $x->precision() >> it will return either
the local precision of $x, or if not defined, the global. This means the return
value represents the prevision that will be in effect for $x:
- $y = Math::BigInt->new(1234567); # unrounded
- print Math::BigInt->precision(4),"\n"; # set 4, print 4
- $x = Math::BigInt->new(123456); # will be automatically rounded
- print $x; # print "120000"!
+ $y = Math::BigInt->new(1234567); # unrounded
+ print Math::BigInt->precision(4),"\n"; # set 4, print 4
+ $x = Math::BigInt->new(123456); # will be automatically rounded
+ print $x; # print "120000"!
Note: Works also for subclasses like L<Math::BigFloat>. Each class has its
own globals separated from Math::BigInt, but it is possible to subclass
@@ -3645,7 +3707,7 @@
input is accepted as decimal, hex (with leading '0x') or binary (with leading
'0b').
-See L<Input> for more info on accepted input formats.
+See L</Input> for more info on accepted input formats.
=head2 from_oct()
@@ -3714,12 +3776,12 @@
=head2 is_one()/is_zero()/is_nan()/is_inf()
- $x->is_zero(); # true if arg is +0
- $x->is_nan(); # true if arg is NaN
- $x->is_one(); # true if arg is +1
- $x->is_one('-'); # true if arg is -1
- $x->is_inf(); # true if +inf
- $x->is_inf('-'); # true if -inf (sign is default '+')
+ $x->is_zero(); # true if arg is +0
+ $x->is_nan(); # true if arg is NaN
+ $x->is_one(); # true if arg is +1
+ $x->is_one('-'); # true if arg is -1
+ $x->is_inf(); # true if +inf
+ $x->is_inf('-'); # true if -inf (sign is default '+')
These methods all test the BigInt for being one specific value and return
true or false depending on the input. These are faster than doing something
@@ -3783,7 +3845,7 @@
=head2 digit()
- $x->digit($n); # return the nth digit, counting from right
+ $x->digit($n); # return the nth digit, counting from right
If C<$n> is negative, returns the digit counting from left.
@@ -3802,6 +3864,13 @@
and from '-inf' to '+inf', respectively. Does nothing for NaN or positive
numbers.
+=head2 bsgn()
+
+ $x->bsgn();
+
+Signum function. Set the number to -1, 0, or 1, depending on whether the
+number is negative, zero, or positive, respectivly. Does not modify NaNs.
+
=head2 bnorm()
$x->bnorm(); # normalize (no-op)
@@ -3818,23 +3887,23 @@
=head2 binc()
- $x->binc(); # increment x by 1
+ $x->binc(); # increment x by 1
=head2 bdec()
- $x->bdec(); # decrement x by 1
+ $x->bdec(); # decrement x by 1
=head2 badd()
- $x->badd($y); # addition (add $y to $x)
+ $x->badd($y); # addition (add $y to $x)
=head2 bsub()
- $x->bsub($y); # subtraction (subtract $y from $x)
+ $x->bsub($y); # subtraction (subtract $y from $x)
=head2 bmul()
- $x->bmul($y); # multiplication (multiply $x by $y)
+ $x->bmul($y); # multiplication (multiply $x by $y)
=head2 bmuladd()
@@ -3846,16 +3915,16 @@
=head2 bdiv()
- $x->bdiv($y); # divide, set $x to quotient
- # return (quo,rem) or quo if scalar
+ $x->bdiv($y); # divide, set $x to quotient
+ # return (quo,rem) or quo if scalar
=head2 bmod()
- $x->bmod($y); # modulus (x % y)
+ $x->bmod($y); # modulus (x % y)
=head2 bmodinv()
- $x->bmodinv($mod); # modular multiplicative inverse
+ $x->bmodinv($mod); # modular multiplicative inverse
Returns the multiplicative inverse of C<$x> modulo C<$mod>. If
@@ -3894,29 +3963,29 @@
=head2 bpow()
- $x->bpow($y); # power of arguments (x ** y)
+ $x->bpow($y); # power of arguments (x ** y)
=head2 blog()
- $x->blog($base, $accuracy); # logarithm of x to the base $base
+ $x->blog($base, $accuracy); # logarithm of x to the base $base
If C<$base> is not defined, Euler's number (e) is used:
- print $x->blog(undef, 100); # log(x) to 100 digits
+ print $x->blog(undef, 100); # log(x) to 100 digits
=head2 bexp()
- $x->bexp($accuracy); # calculate e ** X
+ $x->bexp($accuracy); # calculate e ** X
Calculates the expression C<e ** $x> where C<e> is Euler's number.
This method was added in v1.82 of Math::BigInt (April 2007).
-See also L<blog()>.
+See also L</blog()>.
=head2 bnok()
- $x->bnok($y); # x over y (binomial coefficient n over k)
+ $x->bnok($y); # x over y (binomial coefficient n over k)
Calculates the binomial coefficient n over k, also called the "choose"
function. The result is equivalent to:
@@ -4106,11 +4175,11 @@
=head2 parts()
- $x->parts(); # return (mantissa,exponent) as BigInt
+ $x->parts(); # return (mantissa,exponent) as BigInt
=head2 copy()
- $x->copy(); # make a true copy of $x (unlike $y = $x;)
+ $x->copy(); # make a true copy of $x (unlike $y = $x;)
=head2 as_int()/as_number()
@@ -4130,19 +4199,19 @@
=head2 bsstr()
- $x->bsstr(); # normalized string in scientific notation
+ $x->bsstr(); # normalized string in scientific notation
=head2 as_hex()
- $x->as_hex(); # as signed hexadecimal string with prefixed 0x
+ $x->as_hex(); # as signed hexadecimal string with prefixed 0x
=head2 as_bin()
- $x->as_bin(); # as signed binary string with prefixed 0b
+ $x->as_bin(); # as signed binary string with prefixed 0b
=head2 as_oct()
- $x->as_oct(); # as signed octal string with prefixed 0
+ $x->as_oct(); # as signed octal string with prefixed 0
=head2 numify()
@@ -4151,7 +4220,7 @@
This returns a normal Perl scalar from $x. It is used automatically
whenever a scalar is needed, for instance in array index operations.
-This loses precision, to avoid this use L<as_int()> instead.
+This loses precision, to avoid this use L<as_int()|/"as_int()/as_number()"> instead.
=head2 modify()
@@ -4367,25 +4436,25 @@
=item Setting/Accessing
- * You can set the A global via C<< Math::BigInt->accuracy() >> or
- C<< Math::BigFloat->accuracy() >> or whatever class you are using.
- * You can also set P globally by using C<< Math::SomeClass->precision() >>
+ * You can set the A global via Math::BigInt->accuracy() or
+ Math::BigFloat->accuracy() or whatever class you are using.
+ * You can also set P globally by using Math::SomeClass->precision()
likewise.
* Globals are classwide, and not inherited by subclasses.
- * to undefine A, use C<< Math::SomeCLass->accuracy(undef); >>
- * to undefine P, use C<< Math::SomeClass->precision(undef); >>
- * Setting C<< Math::SomeClass->accuracy() >> clears automatically
- C<< Math::SomeClass->precision() >>, and vice versa.
+ * to undefine A, use Math::SomeCLass->accuracy(undef);
+ * to undefine P, use Math::SomeClass->precision(undef);
+ * Setting Math::SomeClass->accuracy() clears automatically
+ Math::SomeClass->precision(), and vice versa.
* To be valid, A must be > 0, P can have any value.
* If P is negative, this means round to the P'th place to the right of the
decimal point; positive values mean to the left of the decimal point.
P of 0 means round to integer.
- * to find out the current global A, use C<< Math::SomeClass->accuracy() >>
- * to find out the current global P, use C<< Math::SomeClass->precision() >>
- * use C<< $x->accuracy() >> respective C<< $x->precision() >> for the local
- setting of C<< $x >>.
- * Please note that C<< $x->accuracy() >> respective C<< $x->precision() >>
- return eventually defined global A or P, when C<< $x >>'s A or P is not
+ * to find out the current global A, use Math::SomeClass->accuracy()
+ * to find out the current global P, use Math::SomeClass->precision()
+ * use $x->accuracy() respective $x->precision() for the local
+ setting of $x.
+ * Please note that $x->accuracy() respective $x->precision()
+ return eventually defined global A or P, when $x's A or P is not
set.
=item Creating numbers
@@ -4397,11 +4466,11 @@
globals (if set) will be used. Thus changing the global defaults later on
will not change the A or P of previously created numbers (i.e., A and P of
$x will be what was in effect when $x was created)
- * If given undef for A and P, B<no> rounding will occur, and the globals will
- B<not> be used. This is used by subclasses to create numbers without
+ * If given undef for A and P, NO rounding will occur, and the globals will
+ NOT be used. This is used by subclasses to create numbers without
suffering rounding in the parent. Thus a subclass is able to have its own
globals enforced upon creation of a number by using
- C<< $x = Math::BigInt->new($number,undef,undef) >>:
+ $x = Math::BigInt->new($number,undef,undef):
use Math::BigInt::SomeSubclass;
use Math::BigInt;
@@ -4493,11 +4562,11 @@
=item Local settings
- * You can set A or P locally by using C<< $x->accuracy() >> or
- C<< $x->precision() >>
+ * You can set A or P locally by using $x->accuracy() or
+ $x->precision()
and thus force different A and P for different objects/numbers.
* Setting A or P this way immediately rounds $x to the new value.
- * C<< $x->accuracy() >> clears C<< $x->precision() >>, and vice versa.
+ * $x->accuracy() clears $x->precision(), and vice versa.
=item Rounding
@@ -4507,12 +4576,12 @@
* the two rounding functions take as the second parameter one of the
following rounding modes (R):
'even', 'odd', '+inf', '-inf', 'zero', 'trunc', 'common'
- * you can set/get the global R by using C<< Math::SomeClass->round_mode() >>
- or by setting C<< $Math::SomeClass::round_mode >>
- * after each operation, C<< $result->round() >> is called, and the result may
+ * you can set/get the global R by using Math::SomeClass->round_mode()
+ or by setting $Math::SomeClass::round_mode
+ * after each operation, $result->round() is called, and the result may
eventually be rounded (that is, if A or P were set either locally,
globally or as parameter to the operation)
- * to manually round a number, call C<< $x->round($A,$P,$round_mode); >>
+ * to manually round a number, call $x->round($A,$P,$round_mode);
this will round the number by using the appropriate rounding function
and then normalize it.
* rounding modifies the local settings of the number:
@@ -4801,13 +4870,13 @@
=head2 Alternative math libraries
You can use an alternative library to drive Math::BigInt. See the section
-L<MATH LIBRARY> for more information.
+L</MATH LIBRARY> for more information.
For more benchmark results see L<http://bloodgate.com/perl/benchmarks.html>.
-=head2 SUBCLASSING
+=head1 SUBCLASSING
-=head1 Subclassing Math::BigInt
+=head2 Subclassing Math::BigInt
The basic design of Math::BigInt allows simple subclasses with very little
work, as long as a few simple rules are followed:
@@ -5182,7 +5251,7 @@
use Math::BigInt;
use Math::BigFloat;
-
+
$mbf = Math::BigFloat->new(5);
$mbi2 = Math::BigInteger->new(5);
$mbi = Math::BigInteger->new(2);
@@ -5249,7 +5318,7 @@
=item brsft()
-For negative numbers in base see also L<brsft|brsft>.
+For negative numbers in base see also L<brsft|/brsft()>.
=back
@@ -5261,7 +5330,7 @@
=head1 SEE ALSO
L<Math::BigFloat>, L<Math::BigRat> and L<Math::Big> as well as
-L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
The pragmas L<bignum>, L<bigint> and L<bigrat> also might be of interest
because they solve the autoupgrading/downgrading issue, at least partly.
Property changes on: trunk/contrib/perl/dist/Math-BigInt/lib/Math/BigInt.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigFloat/Subclass.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/Math/BigFloat/Subclass.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/Math/BigFloat/Subclass.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigFloat/Subclass.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/BareCalc.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/BareCalc.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/BareCalc.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/BareCalc.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Scalar.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Scalar.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Scalar.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Scalar.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Subclass.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Subclass.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Subclass.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/Math/BigInt/Subclass.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/_e_math.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/_e_math.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/_e_math.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/_e_math.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/alias.inc
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/alias.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/alias.inc 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/alias.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/bare_mbf.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bare_mbf.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bare_mbf.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bare_mbf.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/t/bare_mbi.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bare_mbi.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bare_mbi.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
#!/usr/bin/perl -w
use strict;
-use Test::More tests => 3623;
+use Test::More tests => 3635;
BEGIN { unshift @INC, 't'; }
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bare_mbi.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/bare_mif.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bare_mif.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bare_mif.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bare_mif.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/big_pi_e.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/big_pi_e.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/big_pi_e.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/big_pi_e.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.inc
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.inc 2013-12-02 21:27:05 UTC (rev 6440)
@@ -258,6 +258,14 @@
is ($x,'0.0027');
###############################################################################
+# Verify that numify() returns a normalized value, and underflows and
+# overflows when given "extreme" values.
+
+like($class->new("12345e67")->numify(), qr/^1\.2345e\+?0*71$/);
+like($class->new("1e-9999")->numify(), qr/^\+?0$/); # underflow
+unlike($class->new("1e9999")->numify(), qr/^1(\.0*)?e\+?9+$/); # overflow
+
+###############################################################################
# fsqrt() with set global A/P or A/P enabled on $x, also a test whether fsqrt()
# correctly modifies $x
@@ -637,15 +645,12 @@
-5:-0b101
&numify
# uses bsstr() so 5 => 5e+0 to be compatible w/ Perls output
-0:0e+1
-+1:1e+0
-1234:1234e+0
-NaN:NaN
-+inf:inf
--inf:-inf
--5:-5e+0
-100:1e+2
--100:-1e+2
+0:0
++1:1
+1234:1234
+-5:-5
+100:100
+-100:-100
&fnan
abc:NaN
2:NaN
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bigfltpm.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/bigintc.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bigintc.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bigintc.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bigintc.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.inc
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.inc 2013-12-02 21:27:05 UTC (rev 6440)
@@ -73,7 +73,7 @@
} elsif ($f eq "bone") {
$try .= "\$x->bone('$args[1]');";
# some unary ops
- } elsif ($f =~ /^b(nan|floor|ceil|sstr|neg|abs|inc|dec|not|sqrt|fac)$/) {
+ } elsif ($f =~ /^b(nan|floor|ceil|sstr|neg|abs|sgn|inc|dec|not|sqrt|fac)$/) {
$try .= "\$x->$f();";
} elsif ($f =~ /^(numify|length|stringify|as_hex|as_bin)$/) {
$try .= "\$x->$f();";
@@ -1222,6 +1222,13 @@
-1:1
+123456789:123456789
-123456789:123456789
+&bsgn
+NaN:NaN
++inf:1
+-inf:-1
+0:0
++123456789:1
+-123456789:-1
&bcmp
bcmpNaN:bcmpNaN:
bcmpNaN:0:
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
#!/usr/bin/perl -w
use strict;
-use Test::More tests => 3623 + 6;
+use Test::More tests => 3635 + 6;
use Math::BigInt lib => 'Calc';
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bigintpm.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/bigints.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bigints.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bigints.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bigints.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/biglog.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/biglog.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/biglog.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/biglog.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/bigroot.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/bigroot.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/bigroot.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/bigroot.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/calling.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/calling.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/calling.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/calling.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/config.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/config.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/config.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/config.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/const_mbf.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/const_mbf.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/const_mbf.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/const_mbf.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/constant.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/constant.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/constant.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/constant.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/downgrade.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/downgrade.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/downgrade.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/downgrade.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/inf_nan.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/inf_nan.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/inf_nan.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/inf_nan.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/isa.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/isa.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/isa.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/isa.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/lib_load.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/lib_load.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/lib_load.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/lib_load.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/mbf_ali.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/mbf_ali.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/mbf_ali.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/mbf_ali.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/mbi_ali.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/mbi_ali.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/mbi_ali.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/mbi_ali.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/mbi_rand.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/mbi_rand.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/mbi_rand.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/mbi_rand.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.inc
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.inc 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/mbimbf.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/nan_cmp.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/nan_cmp.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/nan_cmp.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/nan_cmp.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/new_overloaded.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/new_overloaded.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/new_overloaded.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/new_overloaded.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/req_mbf0.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/req_mbf0.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/req_mbf0.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/req_mbf0.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/req_mbf1.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/req_mbf1.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/req_mbf1.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/req_mbf1.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfa.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/req_mbfa.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/req_mbfa.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfa.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfi.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/req_mbfi.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/req_mbfi.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfi.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfn.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/req_mbfn.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/req_mbfn.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfn.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfw.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/req_mbfw.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/req_mbfw.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/req_mbfw.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/require.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/require.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/require.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/require.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/round.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/round.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/round.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/round.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Math-BigInt/t/rt-16221.t (from rev 6437, vendor/perl/5.18.1/dist/Math-BigInt/t/rt-16221.t)
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/rt-16221.t (rev 0)
+++ trunk/contrib/perl/dist/Math-BigInt/t/rt-16221.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+#
+# Verify that
+# - Math::BigInt::objectify() calls as_int() (or as_number(), as a fallback)
+# if the target object class is Math::BigInt.
+# - Math::BigInt::objectify() calls as_float() if the target object class is
+# Math::BigFloat.
+#
+# See RT #16221 and RT #52124.
+
+use strict;
+use warnings;
+
+package main;
+
+use Test::More tests => 2;
+use Math::BigInt;
+use Math::BigFloat;
+
+############################################################################
+
+my $int = Math::BigInt->new(10);
+my $int_percent = My::Percent::Float->new(100);
+
+is($int * $int_percent, 10);
+
+############################################################################
+
+my $float = Math::BigFloat->new(10);
+my $float_percent = My::Percent::Float->new(100);
+
+is($float * $float_percent, 10);
+
+############################################################################
+
+package My::Percent::Int;
+
+sub new {
+ my $class = shift;
+ my $num = shift;
+ return bless \$num, $class;
+}
+
+sub as_number {
+ my $self = shift;
+ return Math::BigInt->new($$self / 100);
+}
+
+sub as_string {
+ my $self = shift;
+ return $$self;
+}
+
+############################################################################
+
+package My::Percent::Float;
+
+sub new {
+ my $class = shift;
+ my $num = shift;
+ return bless \$num, $class;
+}
+
+sub as_int {
+ my $self = shift;
+ return Math::BigInt->new($$self / 100);
+}
+
+sub as_float {
+ my $self = shift;
+ return Math::BigFloat->new($$self / 100);
+}
+
+sub as_string {
+ my $self = shift;
+ return $$self;
+}
Index: trunk/contrib/perl/dist/Math-BigInt/t/sub_ali.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/sub_ali.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/sub_ali.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/sub_ali.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/sub_mbf.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/sub_mbf.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/sub_mbf.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/sub_mbf.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt/t/sub_mbi.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/sub_mbi.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/sub_mbi.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
#!/usr/bin/perl -w
use strict;
-use Test::More tests => 3623
+use Test::More tests => 3635
+ 5; # +5 own tests
BEGIN { unshift @INC, 't'; }
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/sub_mbi.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/sub_mif.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/sub_mif.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/sub_mif.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/sub_mif.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/trap.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/trap.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/trap.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/trap.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/upgrade.inc
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/upgrade.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/upgrade.inc 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/upgrade.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/upgrade.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/upgrade.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/upgrade.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/upgrade.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/upgrade2.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/upgrade2.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/upgrade2.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/upgrade2.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/upgradef.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/upgradef.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/upgradef.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/upgradef.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/use.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/use.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/use.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/use.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/use_lib1.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/use_lib1.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/use_lib1.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/use_lib1.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/use_lib2.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/use_lib2.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/use_lib2.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/use_lib2.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/use_lib3.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/use_lib3.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/use_lib3.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/use_lib3.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/use_lib4.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/use_lib4.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/use_lib4.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/use_lib4.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/use_mbfw.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/use_mbfw.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/use_mbfw.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/use_mbfw.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt/t/with_sub.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt/t/with_sub.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt/t/with_sub.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt/t/with_sub.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt-FastCalc/FastCalc.xs
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt-FastCalc/FastCalc.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt-FastCalc/FastCalc.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,5 @@
+#define PERL_NO_GET_CONTEXT
+
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
Property changes on: trunk/contrib/perl/dist/Math-BigInt-FastCalc/FastCalc.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,11 +4,11 @@
use strict;
use warnings;
-use Math::BigInt::Calc 1.993;
+use Math::BigInt::Calc 1.997;
use vars '$VERSION';
-$VERSION = '0.28';
+$VERSION = '0.30';
##############################################################################
# global constants, flags and accessory
Property changes on: trunk/contrib/perl/dist/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bigintfc.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bigintfc.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bigintfc.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bigintfc.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bootstrap.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bootstrap.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bootstrap.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/bootstrap.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/leak.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/leak.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/leak.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/leak.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/mbi_rand.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/mbi_rand.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/mbi_rand.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigInt-FastCalc/t/mbi_rand.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigRat/lib/Math/BigRat.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/lib/Math/BigRat.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/lib/Math/BigRat.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -24,7 +24,7 @@
@ISA = qw(Math::BigFloat);
-$VERSION = '0.26_02';
+$VERSION = '0.2604';
$VERSION = eval $VERSION;
# inherit overload from Math::BigFloat, but disable the bitwise ops that don't
@@ -1428,8 +1428,8 @@
return Math::BigInt->new($x->{sign}) if $x->{sign} !~ /^[+-]$/;
my $u = Math::BigInt->bzero();
- $u->{sign} = $x->{sign};
$u->{value} = $MBI->_div( $MBI->_copy($x->{_n}), $x->{_d}); # 22/7 => 3
+ $u->bneg if $x->{sign} eq '-'; # no negative zero
$u;
}
@@ -1692,7 +1692,7 @@
Returns the object as a scalar. This will lose some data if the object
cannot be represented by a normal Perl scalar (integer or float), so
-use L<as_int()> or L<as_float()> instead.
+use L<as_int()|/as_int()E<sol>as_number()> or L</as_float()> instead.
This routine is automatically used whenever a scalar is required:
@@ -1925,7 +1925,7 @@
This method was added in v0.20 of Math::BigRat (May 2007).
-See also L<blog()>.
+See also L</blog()>.
=head2 bnok()
@@ -2012,7 +2012,7 @@
=head1 SEE ALSO
-L<Math::BigFloat> and L<Math::Big> as well as L<Math::BigInt::BitVect>,
+L<Math::BigFloat> and L<Math::Big> as well as
L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
See L<http://search.cpan.org/search?dist=bignum> for a way to use
Property changes on: trunk/contrib/perl/dist/Math-BigRat/lib/Math/BigRat.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/Math/BigRat/Test.pm
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/Math/BigRat/Test.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/Math/BigRat/Test.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/Math/BigRat/Test.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/big_ap.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/big_ap.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/big_ap.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/big_ap.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/bigfltpm.inc
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bigfltpm.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bigfltpm.inc 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bigfltpm.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/bigfltrt.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bigfltrt.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bigfltrt.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bigfltrt.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/biglog.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/biglog.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/biglog.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/biglog.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Math-BigRat/t/bigrat.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bigrat.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bigrat.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,7 +1,7 @@
#!/usr/bin/perl -w
use strict;
-use Test::More tests => 200;
+use Test::More tests => 202;
# basic testing of Math::BigRat
@@ -319,6 +319,14 @@
is ($f, '0.66667', 'as_float(2/3,5)');
##############################################################################
+# int()
+
+$x = Math::BigRat->new('5/2');
+is int($x), '2', '5/2 converted to integer';
+$x = Math::BigRat->new('-1/2');
+is int($x), '0', '-1/2 converted to integer';
+
+##############################################################################
# done
1;
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bigrat.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.inc
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.inc 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bigratpm.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/bigratup.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bigratup.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bigratup.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bigratup.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/bigroot.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bigroot.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bigroot.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bigroot.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/bitwise.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/bitwise.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/bitwise.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/bitwise.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/hang.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/hang.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/hang.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/hang.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/requirer.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/requirer.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/requirer.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/requirer.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Math-BigRat/t/trap.t
===================================================================
--- trunk/contrib/perl/dist/Math-BigRat/t/trap.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Math-BigRat/t/trap.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Math-BigRat/t/trap.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Module-CoreList/Changes
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,158 @@
+2.95 Mon Jun 22 2013
+ - Updated for v5.19.3
+
+2.94 Sun Jun 21 2013
+ - Updated for v5.19.2
+
+2.93 Thu 20 Jun 2013
+ - Updated for v5.19.1
+
+2.92 Thu Jun 21 2013
+ - Make switches case-sensitive (keep -d and -D distinct)
+ - correct omission of Text::Soundex and File::CheckTree from deprecations
+ - switch %deprecated to a delta hash
+
+2.91 Mon May 20 2013
+ - Updated for v5.19.0
+
+2.90 Mon May 18 2013
+ - Updated for v5.18.0
+
+2.88 Tue Apr 23 2013
+ - Include deprecations for v5.17.10 and v5.17.11
+
+2.87 Sat Apr 20 2013
+ - Updated for v5.17.11
+2.85 Thu Mar 19 2013
+ - Updated for v5.17.10
+
+2.84 Mon Mar 11 2013
+ - Updated for v5.16.3
+
+2.83 Sun Mar 10 2013
+ - Updated for v5.14.4
+
+2.82 Wed Feb 20 2013
+ - --feature switch added
+ - --upstream switch added
+ - Updated for v5.17.9
+
+2.81 Sun Jan 27 2013
+ - Add modules deprecated with v5.17.9
+
+2.80 Sun Jan 20 2013
+ - Updated for v5.17.8
+
+ - v5.17.7 contained Module::CoreList::TieHashDelta 2.79, not 2.78
+
+2.79 Tue Dec 18 2012
+ - Updated for v5.17.7
+
+ - Errno was added in 5.5, not in 5.5.4
+
+2.78 Sat Nov 12 2012
+ - Updated for v5.17.6
+
+ - Fix hash order dependency bug in deprecated_in().
+ Tests would would fail or succeed depending on what order keys()
+ would return the version list in. List::Utils::min() considers
+ '5.011' and '5.011000' to be equivalent, and returns the first
+ whichever it encounters. Changing to List::Utils::minstr() fixes
+ this.
+
+2.77 Sat Nov 10 2012
+ - Updated for v5.12.5
+ - deprecated_in() function added
+ - corelist reports deprecated data
+
+2.76 Fri Nov 1 2012
+ - Updated for v5.16.2
+
+2.75 Fri Oct 20 2012
+ - Updated for v5.17.5
+
+2.74 Fri Oct 12 2012
+ - Updated for v5.14.3
+
+2.73 Thu Sep 20 2012
+ - Updated for v.5.17.4
+
+2.72 Tue aug 21 2012
+ - Fix for older perls
+
+2.71 Mon Aug 20 2012
+ - Updated for v5.17.3
+
+2.70 Thu Aug 9 2012
+ - Updated for v5.16.1
+
+2.69 Fri Jul 20 2012
+ - Updated for v5.17.2
+
+2.68 Tue Jun 19 2012
+ - Updated for v5.17.1
+
+2.67 Sat May 26 2012
+ - Updated for v5.17.0
+
+2.66 ??
+ - Add the --diff option to compare two perl core modlibs
+
+2.65 Tue Mar 20 2012
+ - Update of lib/charnames
+
+2.64 Tue Mar 20 2012
+ - Update of Data::Dumper and XS::APItest
+
+2.63 Tue Mar 20 2012
+ - Update for v5.15.9
+
+2.62 Thu Mar 15 2012
+ - Separate the POD (bingos)
+
+2.61 Fri Feb 20 2012
+ - Updated for v5.15.8
+
+2.60 Fri Jan 20 2012
+ - Updated for v5.15.7
+
+2.59 Sun Dec 20 2011
+ - Updated for v5.15.6
+
+2.58 Sun Nov 20 2011
+ - Updated for v5.15.5
+
+2.57 Thu Oct 20 2011
+ - Updated for v5.15.4
+
+2.56 Tues Sept 20 2011
+ - Updated for v5.15.3
+ - Corrected version of Module::CoreList shipped
+ with v5.10.0
+ - Corrected Errno being shipped with v5.6.0 and v5.6.1
+ - Corrected VMS::Filespec being shipped with v5.12.3
+ - Corrected DB_File being shipped with v5.8.2
+ - Added http://perlpunks.de/corelist to SEE ALSO
+
+2.55 Sat Aug 20 2011
+ - Updated for v5.15.2
+
+2.54 Wed Jul 20 2011
+ - Updated for v5.15.1
+
+2.53 Thu Jul 14 2011
+ - Added release date option '-r' to corelist
+
+2.52 Mon Jul 4 2011
+ - [rt.cpan.org #69108] Extraneous modules listed
+ reported by Dee Newcum
+
+2.51
+ - Updated for v5.15.0
+
+2.50
+ - Updated for v5.12.4
+
2.49
- Updated for v5.14.0
Property changes on: trunk/contrib/perl/dist/Module-CoreList/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Module-CoreList/MANIFEST
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/MANIFEST 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/MANIFEST 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,6 +2,9 @@
corelist
identify-dependencies
lib/Module/CoreList.pm
+lib/Module/CoreList.pod
+lib/Module/CoreList/TieHashDelta.pm
+lib/Module/CoreList/Utils.pm
README
MANIFEST
Makefile.PL
@@ -10,3 +13,4 @@
t/deprecated.t
t/find_modules.t
t/pod.t
+META.json Module JSON meta-data (added by MakeMaker)
Property changes on: trunk/contrib/perl/dist/Module-CoreList/MANIFEST
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Module-CoreList/Makefile.PL
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/Makefile.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/Makefile.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,18 +1,51 @@
use ExtUtils::MakeMaker;
-push @extra, 'INSTALLDIRS' => 'perl' if $] >= 5.008009;
+push @extra, 'INSTALLDIRS' => 'perl' if $] >= 5.008009 and $] < 5.012;
+push @extra, 'META_MERGE' => {
+ resources => {
+ repository => 'git://perl5.git.perl.org/perl.git',
+ bugtracker => 'https://rt.perl.org/rt3/',
+ homepage => "http://dev.perl.org/",
+ },
+ } unless $ExtUtils::MakeMaker::VERSION < 6.46;
+
+
WriteMakefile
(
'NAME' => 'Module::CoreList',
'VERSION_FROM' => 'lib/Module/CoreList.pm',
- 'ABSTRACT_FROM' => 'lib/Module/CoreList.pm',
+ 'ABSTRACT_FROM' => 'lib/Module/CoreList.pod',
'PREREQ_PM' => {
- 'Test::More' => '0',
+ 'Test::More' => '0',
+ 'List::Util' => 0,
},
- 'EXE_FILES' => [ 'corelist' ],
+ 'EXE_FILES' => [ _scripts() ],
+ 'INSTALLDIRS' => ($] < 5.011 ? 'perl' : 'site'),
'PL_FILES' => {},
LICENSE => 'perl',
+ META_MERGE => {
+ resources => {
+ repository => 'git://perl5.git.perl.org/perl.git',
+ bugtracker => 'https://rt.perl.org/rt3/',
+ homepage => "http://dev.perl.org/",
+ },
+ },
@extra,
)
;
+
+sub _scripts {
+ my $scripts = 'corelist';
+ if ( $] >= 5.008009 and !$ENV{PERL_CORE} ) {
+ require Config;
+ my $version = sprintf("%vd",$^V);
+ if ( $Config::Config{versiononly} and
+ $Config::Config{startperl} =~ /\Q$version\E$/ ) {
+ require File::Copy;
+ File::Copy::copy( 'corelist', "corelist$version" );
+ $scripts = "corelist$version";
+ }
+ }
+ return $scripts;
+}
Property changes on: trunk/contrib/perl/dist/Module-CoreList/Makefile.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Module-CoreList/README
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/README 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/README 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Module-CoreList/README
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Module-CoreList/corelist
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/corelist 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/corelist 2013-12-02 21:27:05 UTC (rev 6440)
@@ -10,9 +10,13 @@
=head1 SYNOPSIS
- corelist -v
- corelist [-a|-d] <ModuleName> | /<ModuleRegex>/ [<ModuleVersion>] ...
- corelist [-v <PerlVersion>] [ <ModuleName> | /<ModuleRegex>/ ] ...
+ corelist -v
+ corelist [-a|-d] <ModuleName> | /<ModuleRegex>/ [<ModuleVersion>] ...
+ corelist [-v <PerlVersion>] [ <ModuleName> | /<ModuleRegex>/ ] ...
+ corelist [-r <PerlVersion>] ...
+ corelist --feature <FeatureName> [<FeatureName>] ...
+ corelist --diff PerlVersion PerlVersion
+ corelist --upstream <ModuleName>
=head1 OPTIONS
@@ -23,26 +27,54 @@
lists all versions of the given module (or the matching modules, in case you
used a module regexp) in the perls Module::CoreList knows about.
- corelist -a utf8
+ corelist -a Unicode
- utf8 was first released with perl 5.006
- 5.006 undef
- 5.006001 undef
- 5.006002 undef
- 5.007003 1.00
- 5.008 1.00
- 5.008001 1.02
- 5.008002 1.02
- 5.008003 1.02
- 5.008004 1.03
- 5.008005 1.04
- 5.008006 1.04
- 5.008007 1.05
- 5.008008 1.06
- 5.009 1.02
- 5.009001 1.02
- 5.009002 1.04
- 5.009003 1.06
+ Unicode was first released with perl v5.6.2
+ v5.6.2 3.0.1
+ v5.8.0 3.2.0
+ v5.8.1 4.0.0
+ v5.8.2 4.0.0
+ v5.8.3 4.0.0
+ v5.8.4 4.0.1
+ v5.8.5 4.0.1
+ v5.8.6 4.0.1
+ v5.8.7 4.1.0
+ v5.8.8 4.1.0
+ v5.8.9 5.1.0
+ v5.9.0 4.0.0
+ v5.9.1 4.0.0
+ v5.9.2 4.0.1
+ v5.9.3 4.1.0
+ v5.9.4 4.1.0
+ v5.9.5 5.0.0
+ v5.10.0 5.0.0
+ v5.10.1 5.1.0
+ v5.11.0 5.1.0
+ v5.11.1 5.1.0
+ v5.11.2 5.1.0
+ v5.11.3 5.2.0
+ v5.11.4 5.2.0
+ v5.11.5 5.2.0
+ v5.12.0 5.2.0
+ v5.12.1 5.2.0
+ v5.12.2 5.2.0
+ v5.12.3 5.2.0
+ v5.12.4 5.2.0
+ v5.13.0 5.2.0
+ v5.13.1 5.2.0
+ v5.13.2 5.2.0
+ v5.13.3 5.2.0
+ v5.13.4 5.2.0
+ v5.13.5 5.2.0
+ v5.13.6 5.2.0
+ v5.13.7 6.0.0
+ v5.13.8 6.0.0
+ v5.13.9 6.0.0
+ v5.13.10 6.0.0
+ v5.13.11 6.0.0
+ v5.14.0 6.0.0
+ v5.14.1 6.0.0
+ v5.15.0 6.0.0
=item -d
@@ -49,6 +81,13 @@
finds the first perl version where a module has been released by
date, and not by version number (as is the default).
+=item --diff
+
+Given two versions of perl, this prints a human-readable table of all module
+changes between the two. The output format may change in the future, and is
+meant for I<humans>, not programs. For programs, use the L<Module::CoreList>
+API.
+
=item -? or -help
help! help! help! to see more help, try --man.
@@ -68,6 +107,21 @@
In module filtering context, it can be used as Perl version filter.
+=item -r
+
+lists all of the perl releases and when they were released
+
+If you pass a perl version you get the release date for that version only.
+
+=item --feature, -f
+
+lists the first version bundle of each named feature given
+
+=item --upstream, -u
+
+Shows if the given module is primarily maintained in perl core or on CPAN
+and bug tracker URL.
+
=back
As a special case, if you specify the module name C<Unicode>, you'll get
@@ -77,18 +131,46 @@
=cut
use Module::CoreList;
-use Getopt::Long;
+use Getopt::Long qw(:config no_ignore_case);
use Pod::Usage;
use strict;
use warnings;
+use List::Util qw/maxstr/;
my %Opts;
-GetOptions(\%Opts, qw[ help|?! man! v|version:s a! d ] );
+GetOptions(
+ \%Opts,
+ qw[ help|?! man! r|release:s v|version:s a! d diff|D feature|f u|upstream ]
+);
pod2usage(1) if $Opts{help};
pod2usage(-verbose=>2) if $Opts{man};
+if(exists $Opts{r} ){
+ if ( !$Opts{r} ) {
+ print "\nModule::CoreList has release info for the following perl versions:\n";
+ my $versions = { };
+ my $max_ver_len = max_mod_len(\%Module::CoreList::released);
+ for my $ver ( sort keys %Module::CoreList::released ) {
+ printf "%-${max_ver_len}s %s\n", format_perl_version($ver), $Module::CoreList::released{$ver};
+ }
+ print "\n";
+ exit 0;
+ }
+
+ my $num_r = numify_version( $Opts{r} );
+ my $version_hash = Module::CoreList->find_version($num_r);
+
+ if( !$version_hash ) {
+ print "\nModule::CoreList has no info on perl $Opts{r}\n\n";
+ exit 1;
+ }
+
+ printf "Perl %s was released on %s\n\n", format_perl_version($num_r), $Module::CoreList::released{$num_r};
+ exit 0;
+}
+
if(exists $Opts{v} ){
if( !$Opts{v} ) {
print "\nModule::CoreList has info on the following perl versions:\n";
@@ -116,6 +198,78 @@
}
}
+if ($Opts{diff}) {
+ if(@ARGV != 2) {
+ die "\nprovide exactly two perl core versions to diff with --diff\n";
+ }
+
+ my ($old_ver, $new_ver) = @ARGV;
+
+ my $old = numify_version($old_ver);
+ my $new = numify_version($new_ver);
+
+ my %diff = Module::CoreList::changes_between($old, $new);
+
+ for my $lib (sort keys %diff) {
+ my $diff = $diff{$lib};
+
+ my $was = ! exists $diff->{left} ? '(absent)'
+ : ! defined $diff->{left} ? '(undef)'
+ : $diff->{left};
+
+ my $now = ! exists $diff->{right} ? '(absent)'
+ : ! defined $diff->{right} ? '(undef)'
+ : $diff->{right};
+
+ printf "%-35s %10s %10s\n", $lib, $was, $now;
+ }
+ exit(0);
+}
+
+if ($Opts{feature}) {
+ die "\n--feature is only available with perl v5.16.0 or greater\n"
+ if $] < 5.016;
+
+ die "\nprovide at least one feature name to --feature\n"
+ unless @ARGV;
+
+ no warnings 'once';
+ require feature;
+
+ my %feature2version;
+ my @bundles = map { $_->[0] }
+ sort { $b->[1] <=> $a->[1] }
+ map { [$_, numify_version($_)] }
+ grep { not /[^0-9.]/ }
+ keys %feature::feature_bundle;
+
+ for my $version (@bundles) {
+ $feature2version{$_} = $version =~ /^\d\.\d+$/ ? "$version.0" : $version
+ for @{ $feature::feature_bundle{$version} };
+ }
+
+ # allow internal feature names, just in case someone gives us __SUB__
+ # instead of current_sub.
+ while (my ($name, $internal) = each %feature::feature) {
+ $internal =~ s/^feature_//;
+ $feature2version{$internal} = $feature2version{$name}
+ if $feature2version{$name};
+ }
+
+ my $when = maxstr(values %Module::CoreList::released);
+ print "\n","Data for $when\n";
+
+ for my $feature (@ARGV) {
+ print "feature \"$feature\" ",
+ exists $feature2version{$feature}
+ ? "was first released with the perl "
+ . format_perl_version(numify_version($feature2version{$feature}))
+ . " feature bundle\n"
+ : "doesn't exist (or so I think)\n";
+ }
+ exit(0);
+}
+
if ( !@ARGV ) {
pod2usage(0);
}
@@ -177,17 +331,33 @@
? Module::CoreList->removed_from_by_date($mod)
: Module::CoreList->removed_from($mod);
+ my $when = maxstr(values %Module::CoreList::released);
+ print "\n","Data for $when\n";
+
if( defined $ret ) {
+ my $deprecated = Module::CoreList->deprecated_in($mod);
$msg .= " was ";
$msg .= "first " unless $ver;
$msg .= "released with perl " . format_perl_version($ret);
+ $msg .= ( $rem ? ',' : ' and' ) . " deprecated (will be CPAN-only) in " . format_perl_version($deprecated) if $deprecated;
$msg .= " and removed from " . format_perl_version($rem) if $rem;
} else {
$msg .= " was not in CORE (or so I think)";
}
- print "\n",$msg,"\n";
+ print $msg,"\n";
+ if( defined $ret and exists $Opts{u} ) {
+ my $upsream = $Module::CoreList::upstream{$mod};
+ $upsream = 'undef' unless $upsream;
+ print "upstream: $upsream\n";
+ if ( $upsream ne 'blead' ) {
+ my $bugtracker = $Module::CoreList::bug_tracker{$mod};
+ $bugtracker = 'unknown' unless $bugtracker;
+ print "bug tracker: $bugtracker\n";
+ }
+ }
+
if(defined $ret and exists $Opts{a} and $Opts{a}){
display_a($mod);
}
Property changes on: trunk/contrib/perl/dist/Module-CoreList/corelist
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Module-CoreList/identify-dependencies
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/identify-dependencies 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/identify-dependencies 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Module-CoreList/identify-dependencies
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pm
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,200 +2,9 @@
use strict;
use vars qw/$VERSION %released %version %families %upstream
%bug_tracker %deprecated/;
-$VERSION = '2.49_02';
+use Module::CoreList::TieHashDelta;
+$VERSION = '2.96';
-=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
-
- 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. Returns that perl version if it exists or C<undef>
-otherwise.
-
-=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<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.
-
-=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::released>
-
-Keyed on perl version this contains ISO
-formatted versions of the release dates, as gleaned from L<perlhist>.
-
-=item C<%Module::CoreList::families>
-
-New, in 1.96, a hash that
-clusters known perl releases by their major versions.
-
-=item C<%Module::CoreList::deprecated>
-
-A hash of hashes keyed on perl version and on module name.
-If a module is defined it indicates that that module is
-deprecated in that perl version and is scheduled for removal
-from core at some future point.
-
-=item C<%Module::CoreList::upstream>
-
-A hash that contains information on where patches should be directed
-for each core module.
-
-UPSTREAM indicates where patches should go. C<undef> implies
-that this hasn't been discussed for the module at hand.
-C<blead> indicates that the copy of the module in the blead
-sources is to be considered canonical, C<cpan> means that the
-module on CPAN is to be patched first. C<first-come> means
-that blead can be patched freely if it is in sync with the
-latest release on CPAN.
-
-=item C<%Module::CoreList::bug_tracker>
-
-A hash that contains information on the appropriate bug tracker
-for each core module.
-
-BUGS is an email or url to post bug reports. For modules with
-UPSTREAM => 'blead', use perl5-porters at perl.org. rt.cpan.org
-appears to automatically provide a URL for CPAN modules; any value
-given here overrides the default:
-http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName
-
-=back
-
-=head1 CAVEATS
-
-Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07,
-5.004, 5.004_05, 5.005, 5.005_03, 5.005_04, 5.6.0, 5.6.1, 5.6.2, 5.7.3,
-5.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.8.5, 5.8.6, 5.8.7, 5.8.8, 5.8.9,
-5.9.0, 5.9.1, 5.9.2, 5.9.3, 5.9.4, 5.9.5, 5.10.0, 5.10.1, 5.11.0, 5.11.1,
-5.11.2, 5.11.3, 5.11.4, 5.11.5, 5.12.0, 5.12.1, 5.12.2, 5.12.3, 5.13.0,
-5.13.1, 5.13.2, 5.13.3, 5.13.4, 5.13.5, 5.13.6, 5.13.7, 5.13.8, 5.13.9,
-5.13.10, 5.13.11, 5.14.0, 5.14.1 and 5.14.2 releases of perl.
-
-=head1 HISTORY
-
-Moved to Changes file.
-
-=head1 AUTHOR
-
-Richard Clamp E<lt>richardc at unixbeard.netE<gt>
-
-Currently maintained by the perl 5 porters E<lt>perl5-porters at 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>
-
-=cut
-
my $dumpinc = 0;
sub import {
my $self = shift;
@@ -269,6 +78,17 @@
return $deprecated{$perl_version}{$module};
}
+sub deprecated_in {
+ my $module = shift;
+ $module = shift if eval { $module->isa(__PACKAGE__) }
+ and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z#;
+ return unless $module;
+ 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;
@@ -289,6 +109,36 @@
return @removed;
}
+sub changes_between {
+ my ($left_ver, $right_ver) = @_;
+
+ 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
@@ -348,8 +198,43 @@
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',
);
for my $version ( sort { $a <=> $b } keys %released ) {
@@ -357,25436 +242,8485 @@
push @{ $families{ $family }} , $version;
}
-
-%version = (
- 5.000 => {
- 'AnyDBM_File' => undef, # lib/AnyDBM_File.pm
- 'AutoLoader' => undef, # lib/AutoLoader.pm
- 'AutoSplit' => undef, # lib/AutoSplit.pm
- 'Benchmark' => undef, # lib/Benchmark.pm
- 'Carp' => undef, # lib/Carp.pm
- 'Cwd' => undef, # lib/Cwd.pm
- 'DB_File' => undef, # ext/DB_File/DB_File.pm
- 'DynaLoader' => undef, # ext/DynaLoader/DynaLoader.pm
- 'English' => undef, # lib/English.pm
- 'Env' => undef, # lib/Env.pm
- 'Exporter' => undef, # lib/Exporter.pm
- 'ExtUtils::MakeMaker' => undef, # lib/ExtUtils/MakeMaker.pm
- 'Fcntl' => undef, # ext/Fcntl/Fcntl.pm
- 'File::Basename' => undef, # lib/File/Basename.pm
- 'File::CheckTree' => undef, # lib/File/CheckTree.pm
- 'File::Find' => undef, # lib/File/Find.pm
- 'FileHandle' => undef, # lib/FileHandle.pm
- 'GDBM_File' => undef, # ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => undef, # lib/Getopt/Long.pm
- 'Getopt::Std' => undef, # lib/Getopt/Std.pm
- 'I18N::Collate' => undef, # lib/I18N/Collate.pm
- 'IPC::Open2' => undef, # lib/IPC/Open2.pm
- 'IPC::Open3' => undef, # lib/IPC/Open3.pm
- 'Math::BigFloat' => undef, # lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, # lib/Math/BigInt.pm
- 'Math::Complex' => undef, # lib/Math/Complex.pm
- 'NDBM_File' => undef, # ext/NDBM_File/NDBM_File.pm
- 'Net::Ping' => undef, # lib/Net/Ping.pm
- 'ODBM_File' => undef, # ext/ODBM_File/ODBM_File.pm
- 'POSIX' => undef, # ext/POSIX/POSIX.pm
- 'SDBM_File' => undef, # ext/SDBM_File/SDBM_File.pm
- 'Search::Dict' => undef, # lib/Search/Dict.pm
- 'Shell' => undef, # lib/Shell.pm
- 'Socket' => undef, # ext/Socket/Socket.pm
- 'Sys::Hostname' => undef, # lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, # lib/Sys/Syslog.pm
- 'Term::Cap' => undef, # lib/Term/Cap.pm
- 'Term::Complete' => undef, # lib/Term/Complete.pm
- 'Test::Harness' => undef, # lib/Test/Harness.pm
- 'Text::Abbrev' => undef, # lib/Text/Abbrev.pm
- 'Text::ParseWords' => undef, # lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, # lib/Text/Soundex.pm
- 'Text::Tabs' => undef, # lib/Text/Tabs.pm
- 'TieHash' => undef, # lib/TieHash.pm
- 'Time::Local' => undef, # lib/Time/Local.pm
- 'integer' => undef, # lib/integer.pm
- 'less' => undef, # lib/less.pm
- 'sigtrap' => undef, # lib/sigtrap.pm
- 'strict' => undef, # lib/strict.pm
- 'subs' => undef, # lib/subs.pm
+my %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 => {
- 'AnyDBM_File' => undef, # lib/AnyDBM_File.pm
- 'AutoLoader' => undef, # lib/AutoLoader.pm
- 'AutoSplit' => undef, # lib/AutoSplit.pm
- 'Benchmark' => undef, # lib/Benchmark.pm
- 'Carp' => undef, # lib/Carp.pm
- 'Cwd' => undef, # lib/Cwd.pm
- 'DB_File' => undef, # ext/DB_File/DB_File.pm
- 'DynaLoader' => undef, # ext/DynaLoader/DynaLoader.pm
- 'English' => undef, # lib/English.pm
- 'Env' => undef, # lib/Env.pm
- 'Exporter' => undef, # lib/Exporter.pm
- 'ExtUtils::Liblist' => undef, # lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => undef, # lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => undef, # lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => undef, # lib/ExtUtils/Mkbootstrap.pm
- 'Fcntl' => undef, # ext/Fcntl/Fcntl.pm
- 'File::Basename' => undef, # lib/File/Basename.pm
- 'File::CheckTree' => undef, # lib/File/CheckTree.pm
- 'File::Find' => undef, # lib/File/Find.pm
- 'File::Path' => undef, # lib/File/Path.pm
- 'FileHandle' => undef, # lib/FileHandle.pm
- 'GDBM_File' => undef, # ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => undef, # lib/Getopt/Long.pm
- 'Getopt::Std' => undef, # lib/Getopt/Std.pm
- 'I18N::Collate' => undef, # lib/I18N/Collate.pm
- 'IPC::Open2' => undef, # lib/IPC/Open2.pm
- 'IPC::Open3' => undef, # lib/IPC/Open3.pm
- 'Math::BigFloat' => undef, # lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, # lib/Math/BigInt.pm
- 'Math::Complex' => undef, # lib/Math/Complex.pm
- 'NDBM_File' => undef, # ext/NDBM_File/NDBM_File.pm
- 'Net::Ping' => undef, # lib/Net/Ping.pm
- 'ODBM_File' => undef, # ext/ODBM_File/ODBM_File.pm
- 'POSIX' => undef, # ext/POSIX/POSIX.pm
- 'SDBM_File' => undef, # ext/SDBM_File/SDBM_File.pm
- 'Search::Dict' => undef, # lib/Search/Dict.pm
- 'Shell' => undef, # lib/Shell.pm
- 'Socket' => undef, # ext/Socket/Socket.pm
- 'SubstrHash' => undef, # lib/SubstrHash.pm
- 'Sys::Hostname' => undef, # lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, # lib/Sys/Syslog.pm
- 'Term::Cap' => undef, # lib/Term/Cap.pm
- 'Term::Complete' => undef, # lib/Term/Complete.pm
- 'Test::Harness' => undef, # lib/Test/Harness.pm
- 'Text::Abbrev' => undef, # lib/Text/Abbrev.pm
- 'Text::ParseWords' => undef, # lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, # lib/Text/Soundex.pm
- 'Text::Tabs' => undef, # lib/Text/Tabs.pm
- 'TieHash' => undef, # lib/TieHash.pm
- 'Time::Local' => undef, # lib/Time/Local.pm
- 'integer' => undef, # lib/integer.pm
- 'less' => undef, # lib/less.pm
- 'lib' => undef, # lib/lib.pm
- 'sigtrap' => undef, # lib/sigtrap.pm
- 'strict' => undef, # lib/strict.pm
- 'subs' => undef, # lib/subs.pm
+ delta_from => 5,
+ changed => {
+ 'ExtUtils::Liblist' => undef,
+ 'ExtUtils::Manifest' => undef,
+ 'ExtUtils::Mkbootstrap' => undef,
+ 'File::Path' => undef,
+ 'SubstrHash' => undef,
+ 'lib' => undef,
+ },
+ removed => {
+ }
},
-
5.002 => {
- 'AnyDBM_File' => undef, # lib/AnyDBM_File.pm
- 'AutoLoader' => undef, # lib/AutoLoader.pm
- 'AutoSplit' => undef, # lib/AutoSplit.pm
- 'Benchmark' => undef, # lib/Benchmark.pm
- 'Carp' => undef, # lib/Carp.pm
- 'Cwd' => undef, # lib/Cwd.pm
- 'DB_File' => '1.01', # ext/DB_File/DB_File.pm
- 'Devel::SelfStubber' => '1.01', # lib/Devel/SelfStubber.pm
- 'DirHandle' => undef, # lib/DirHandle.pm
- 'DynaLoader' => '1.00', # ext/DynaLoader/DynaLoader.pm
- 'English' => undef, # lib/English.pm
- 'Env' => undef, # lib/Env.pm
- 'Exporter' => undef, # lib/Exporter.pm
- 'ExtUtils::Install' => undef, # lib/ExtUtils/Install.pm
- 'ExtUtils::Liblist' => undef, # lib/ExtUtils/Liblist.pm
- 'ExtUtils::MM_OS2' => undef, # lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => undef, # lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_VMS' => undef, # lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MakeMaker' => '5.21', # lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.22', # lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => undef, # lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.00', # lib/ExtUtils/Mksymlists.pm
- 'Fcntl' => '1.00', # ext/Fcntl/Fcntl.pm
- 'File::Basename' => undef, # lib/File/Basename.pm
- 'File::CheckTree' => undef, # lib/File/CheckTree.pm
- 'File::Copy' => '1.5', # lib/File/Copy.pm
- 'File::Find' => undef, # lib/File/Find.pm
- 'File::Path' => '1.01', # lib/File/Path.pm
- 'FileCache' => undef, # lib/FileCache.pm
- 'FileHandle' => '1.00', # ext/FileHandle/FileHandle.pm
- 'GDBM_File' => '1.00', # ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.01', # lib/Getopt/Long.pm
- 'Getopt::Std' => undef, # lib/Getopt/Std.pm
- 'I18N::Collate' => undef, # lib/I18N/Collate.pm
- 'IPC::Open2' => undef, # lib/IPC/Open2.pm
- 'IPC::Open3' => undef, # lib/IPC/Open3.pm
- 'Math::BigFloat' => undef, # lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, # lib/Math/BigInt.pm
- 'Math::Complex' => undef, # lib/Math/Complex.pm
- 'NDBM_File' => '1.00', # ext/NDBM_File/NDBM_File.pm
- 'Net::Ping' => '1', # lib/Net/Ping.pm
- 'ODBM_File' => '1.00', # ext/ODBM_File/ODBM_File.pm
- 'POSIX' => '1.00', # ext/POSIX/POSIX.pm
- 'Pod::Functions' => undef, # lib/Pod/Functions.pm
- 'Pod::Text' => undef, # lib/Pod/Text.pm
- 'SDBM_File' => '1.00', # ext/SDBM_File/SDBM_File.pm
- 'Safe' => '1.00', # ext/Safe/Safe.pm
- 'Search::Dict' => undef, # lib/Search/Dict.pm
- 'SelectSaver' => undef, # lib/SelectSaver.pm
- 'SelfLoader' => '1.06', # lib/SelfLoader.pm
- 'Shell' => undef, # lib/Shell.pm
- 'Socket' => '1.5', # ext/Socket/Socket.pm
- 'Symbol' => undef, # lib/Symbol.pm
- 'Sys::Hostname' => undef, # lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, # lib/Sys/Syslog.pm
- 'Term::Cap' => undef, # lib/Term/Cap.pm
- 'Term::Complete' => undef, # lib/Term/Complete.pm
- 'Term::ReadLine' => undef, # lib/Term/ReadLine.pm
- 'Test::Harness' => '1.07', # lib/Test/Harness.pm
- 'Text::Abbrev' => undef, # lib/Text/Abbrev.pm
- 'Text::ParseWords' => undef, # lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, # lib/Text/Soundex.pm
- 'Text::Tabs' => undef, # lib/Text/Tabs.pm
- 'Text::Wrap' => undef, # lib/Text/Wrap.pm
- 'Tie::Hash' => undef, # lib/Tie/Hash.pm
- 'Tie::Scalar' => undef, # lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, # lib/Tie/SubstrHash.pm
- 'Time::Local' => undef, # lib/Time/Local.pm
- 'diagnostics' => undef, # lib/diagnostics.pm
- 'integer' => undef, # lib/integer.pm
- 'less' => undef, # lib/less.pm
- 'lib' => undef, # lib/lib.pm
- 'overload' => undef, # lib/overload.pm
- 'sigtrap' => undef, # lib/sigtrap.pm
- 'strict' => undef, # lib/strict.pm
- 'subs' => undef, # lib/subs.pm
- 'vars' => undef, # lib/vars.pm
+ 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 => {
- 'AnyDBM_File' => undef, #./lib/AnyDBM_File.pm
- 'AutoLoader' => undef, #./lib/AutoLoader.pm
- 'AutoSplit' => undef, #./lib/AutoSplit.pm
- 'Benchmark' => undef, #./lib/Benchmark.pm
- 'Carp' => undef, #./lib/Carp.pm
- 'Config' => undef,
- 'Cwd' => undef, #./lib/Cwd.pm
- 'DB_File' => '1.03', #./lib/DB_File.pm
- 'Devel::SelfStubber' => '1.01', #./lib/Devel/SelfStubber.pm
- 'diagnostics' => undef, #./lib/diagnostics.pm
- 'DirHandle' => undef, #./lib/DirHandle.pm
- 'DynaLoader' => '1.00', #./ext/DynaLoader/DynaLoader.pm
- 'English' => undef, #./lib/English.pm
- 'Env' => undef, #./lib/Env.pm
- 'Exporter' => undef, #./lib/Exporter.pm
- 'ExtUtils::Embed' => '1.18', #./lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.15 ', #./lib/ExtUtils/Install.pm
- 'ExtUtils::Liblist' => '1.20 ', #./lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => '5.38', #./lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.27', #./lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => '1.13 ', #./lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.12 ', #./lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM_OS2' => undef, #./lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.107 ', #./lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_VMS' => undef, #./lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::testlib' => '1.11 ', #./lib/ExtUtils/testlib.pm
- 'Fatal' => undef, #./lib/Fatal.pm
- 'Fcntl' => '1.00', #./ext/Fcntl/Fcntl.pm
- 'File::Basename' => '2.4', #./lib/File/Basename.pm
- 'File::CheckTree' => undef, #./lib/File/CheckTree.pm
- 'File::Copy' => '1.5', #./lib/File/Copy.pm
- 'File::Find' => undef, #./lib/File/Find.pm
- 'File::Path' => '1.01', #./lib/File/Path.pm
- 'FileCache' => undef, #./lib/FileCache.pm
- 'FileHandle' => '1.00', #./ext/FileHandle/FileHandle.pm
- 'FindBin' => '1.04', #./lib/FindBin.pm
- 'GDBM_File' => '1.00', #./ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.04', #./lib/Getopt/Long.pm
- 'Getopt::Std' => undef, #./lib/Getopt/Std.pm
- 'I18N::Collate' => undef, #./lib/I18N/Collate.pm
- 'integer' => undef, #./lib/integer.pm
- 'IO' => undef, #./ext/IO/IO.pm
- 'IO::File' => '1.05', #./ext/IO/lib/IO/File.pm
- 'IO::Handle' => '1.12', #./ext/IO/lib/IO/Handle.pm
- 'IO::Pipe' => '1.07', #./ext/IO/lib/IO/Pipe.pm
- 'IO::Seekable' => '1.05', #./ext/IO/lib/IO/Seekable.pm
- 'IO::Select' => '1.09', #./ext/IO/lib/IO/Select.pm
- 'IO::Socket' => '1.13', #./ext/IO/lib/IO/Socket.pm
- 'IPC::Open2' => undef, #./lib/IPC/Open2.pm
- 'IPC::Open3' => undef, #./lib/IPC/Open3.pm
- 'less' => undef, #./lib/less.pm
- 'lib' => undef, #./lib/lib.pm
- 'Math::BigFloat' => undef, #./lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, #./lib/Math/BigInt.pm
- 'Math::Complex' => undef, #./lib/Math/Complex.pm
- 'NDBM_File' => '1.00', #./ext/NDBM_File/NDBM_File.pm
- 'Net::Ping' => '1.01', #./lib/Net/Ping.pm
- 'ODBM_File' => '1.00', #./ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.01', #./ext/Opcode/Opcode.pm
- 'ops' => undef, #./ext/Opcode/ops.pm
- 'OS2::ExtAttr' => '0.01', #./os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #./os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => undef, #./os2/OS2/Process/Process.pm
- 'OS2::REXX' => undef, #./os2/OS2/REXX/REXX.pm
- 'overload' => undef, #./lib/overload.pm
- 'Pod::Functions' => undef, #./lib/Pod/Functions.pm
- 'Pod::Text' => undef, #./lib/Pod/Text.pm
- 'POSIX' => '1.00', #./ext/POSIX/POSIX.pm
- 'Safe' => '2.06', #./ext/Opcode/Safe.pm
- 'SDBM_File' => '1.00', #./ext/SDBM_File/SDBM_File.pm
- 'Search::Dict' => undef, #./lib/Search/Dict.pm
- 'SelectSaver' => undef, #./lib/SelectSaver.pm
- 'SelfLoader' => '1.06', #./lib/SelfLoader.pm
- 'Shell' => undef, #./lib/Shell.pm
- 'sigtrap' => '1.01', #./lib/sigtrap.pm
- 'Socket' => '1.5', #./ext/Socket/Socket.pm
- 'strict' => undef, #./lib/strict.pm
- 'subs' => undef, #./lib/subs.pm
- 'Symbol' => undef, #./lib/Symbol.pm
- 'Sys::Hostname' => undef, #./lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, #./lib/Sys/Syslog.pm
- 'Term::Cap' => undef, #./lib/Term/Cap.pm
- 'Term::Complete' => undef, #./lib/Term/Complete.pm
- 'Term::ReadLine' => undef, #./lib/Term/ReadLine.pm
- 'Test::Harness' => '1.13', #./lib/Test/Harness.pm
- 'Text::Abbrev' => undef, #./lib/Text/Abbrev.pm
- 'Text::ParseWords' => undef, #./lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, #./lib/Text/Soundex.pm
- 'Text::Tabs' => '96.051501', #./lib/Text/Tabs.pm
- 'Text::Wrap' => '96.041801', #./lib/Text/Wrap.pm
- 'Tie::Hash' => undef, #./lib/Tie/Hash.pm
- 'Tie::Scalar' => undef, #./lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, #./lib/Tie/SubstrHash.pm
- 'Time::Local' => undef, #./lib/Time/Local.pm
- 'UNIVERSAL' => undef, #./lib/UNIVERSAL.pm
- 'vars' => undef, #./lib/vars.pm
- 'VMS::Filespec' => undef, #./vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.0', #./vms/ext/Stdio/Stdio.pm
+ 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 => {
- 'AnyDBM_File' => undef, #./lib/AnyDBM_File.pm
- 'AutoLoader' => undef, #./lib/AutoLoader.pm
- 'AutoSplit' => undef, #./lib/AutoSplit.pm
- 'autouse' => '1.01', #./lib/autouse.pm
- 'Benchmark' => undef, #./lib/Benchmark.pm
- 'blib' => undef, #./lib/blib.pm
- 'Bundle::CPAN' => '0.02', #./lib/Bundle/CPAN.pm
- 'Carp' => undef, #./lib/Carp.pm
- 'CGI' => '2.36', #./lib/CGI.pm
- 'CGI::Apache' => '1.01', #./lib/CGI/Apache.pm
- 'CGI::Carp' => '1.06', #./lib/CGI/Carp.pm
- 'CGI::Fast' => '1.00a', #./lib/CGI/Fast.pm
- 'CGI::Push' => '1.00', #./lib/CGI/Push.pm
- 'CGI::Switch' => '0.05', #./lib/CGI/Switch.pm
- 'Class::Struct' => undef, #./lib/Class/Struct.pm
- 'Config' => undef,
- 'constant' => '1.00', #./lib/constant.pm
- 'CPAN' => '1.2401', #./lib/CPAN.pm
- 'CPAN::FirstTime' => '1.18 ', #./lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => undef, #./lib/CPAN/Nox.pm
- 'Cwd' => '2.00', #./lib/Cwd.pm
- 'DB_File' => '1.14', #./ext/DB_File/DB_File.pm
- 'Devel::SelfStubber' => '1.01', #./lib/Devel/SelfStubber.pm
- 'diagnostics' => undef, #./lib/diagnostics.pm
- 'DirHandle' => undef, #./lib/DirHandle.pm
- 'DynaLoader' => '1.02', #./ext/DynaLoader/DynaLoader.pm
- 'English' => undef, #./lib/English.pm
- 'Env' => undef, #./lib/Env.pm
- 'Exporter' => undef, #./lib/Exporter.pm
- 'ExtUtils::Command' => '1.00', #./lib/ExtUtils/Command.pm
- 'ExtUtils::Embed' => '1.2501', #./lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.16 ', #./lib/ExtUtils/Install.pm
- 'ExtUtils::Liblist' => '1.2201 ', #./lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => '5.4002', #./lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.33 ', #./lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => '1.13 ', #./lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.13 ', #./lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM_OS2' => undef, #./lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.114 ', #./lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_VMS' => undef, #./lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => undef, #./lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::testlib' => '1.11 ', #./lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #./vms/ext/XSSymSet.pm
- 'Fcntl' => '1.03', #./ext/Fcntl/Fcntl.pm
- 'File::Basename' => '2.5', #./lib/File/Basename.pm
- 'File::CheckTree' => undef, #./lib/File/CheckTree.pm
- 'File::Compare' => '1.1001', #./lib/File/Compare.pm
- 'File::Copy' => '2.02', #./lib/File/Copy.pm
- 'File::Find' => undef, #./lib/File/Find.pm
- 'File::Path' => '1.04', #./lib/File/Path.pm
- 'File::stat' => undef, #./lib/File/stat.pm
- 'FileCache' => undef, #./lib/FileCache.pm
- 'FileHandle' => '2.00', #./lib/FileHandle.pm
- 'FindBin' => '1.04', #./lib/FindBin.pm
- 'GDBM_File' => '1.00', #./ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.10', #./lib/Getopt/Long.pm
- 'Getopt::Std' => undef, #./lib/Getopt/Std.pm
- 'I18N::Collate' => undef, #./lib/I18N/Collate.pm
- 'integer' => undef, #./lib/integer.pm
- 'IO' => undef, #./ext/IO/IO.pm
- 'IO::File' => '1.0602', #./ext/IO/lib/IO/File.pm
- 'IO::Handle' => '1.1504', #./ext/IO/lib/IO/Handle.pm
- 'IO::Pipe' => '1.0901', #./ext/IO/lib/IO/Pipe.pm
- 'IO::Seekable' => '1.06', #./ext/IO/lib/IO/Seekable.pm
- 'IO::Select' => '1.10', #./ext/IO/lib/IO/Select.pm
- 'IO::Socket' => '1.1602', #./ext/IO/lib/IO/Socket.pm
- 'IPC::Open2' => '1.01', #./lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0101', #./lib/IPC/Open3.pm
- 'less' => undef, #./lib/less.pm
- 'lib' => undef, #./lib/lib.pm
- 'locale' => undef, #./lib/locale.pm
- 'Math::BigFloat' => undef, #./lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, #./lib/Math/BigInt.pm
- 'Math::Complex' => '1.01', #./lib/Math/Complex.pm
- 'Math::Trig' => '1', #./lib/Math/Trig.pm
- 'NDBM_File' => '1.00', #./ext/NDBM_File/NDBM_File.pm
- 'Net::hostent' => undef, #./lib/Net/hostent.pm
- 'Net::netent' => undef, #./lib/Net/netent.pm
- 'Net::Ping' => '2.02', #./lib/Net/Ping.pm
- 'Net::protoent' => undef, #./lib/Net/protoent.pm
- 'Net::servent' => undef, #./lib/Net/servent.pm
- 'ODBM_File' => '1.00', #./ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.04', #./ext/Opcode/Opcode.pm
- 'ops' => undef, #./ext/Opcode/ops.pm
- 'Safe' => '2.06', #./ext/Opcode/Safe.pm
- 'OS2::ExtAttr' => '0.01', #./os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #./os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => undef, #./os2/OS2/Process/Process.pm
- 'OS2::REXX' => undef, #./os2/OS2/REXX/REXX.pm
- 'overload' => undef, #./lib/overload.pm
- 'Pod::Functions' => undef, #./lib/Pod/Functions.pm
- 'Pod::Html' => undef, #./lib/Pod/Html.pm
- 'Pod::Text' => '1.0203', #./lib/Pod/Text.pm
- 'POSIX' => '1.02', #./ext/POSIX/POSIX.pm
- 'SDBM_File' => '1.00', #./ext/SDBM_File/SDBM_File.pm
- 'Search::Dict' => undef, #./lib/Search/Dict.pm
- 'SelectSaver' => undef, #./lib/SelectSaver.pm
- 'SelfLoader' => '1.07', #./lib/SelfLoader.pm
- 'Shell' => undef, #./lib/Shell.pm
- 'sigtrap' => '1.02', #./lib/sigtrap.pm
- 'Socket' => '1.6', #./ext/Socket/Socket.pm
- 'strict' => undef, #./lib/strict.pm
- 'subs' => undef, #./lib/subs.pm
- 'Symbol' => '1.02', #./lib/Symbol.pm
- 'Sys::Hostname' => undef, #./lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, #./lib/Sys/Syslog.pm
- 'Term::Cap' => undef, #./lib/Term/Cap.pm
- 'Term::Complete' => undef, #./lib/Term/Complete.pm
- 'Term::ReadLine' => undef, #./lib/Term/ReadLine.pm
- 'Test::Harness' => '1.1502', #./lib/Test/Harness.pm
- 'Text::Abbrev' => undef, #./lib/Text/Abbrev.pm
- 'Text::ParseWords' => undef, #./lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, #./lib/Text/Soundex.pm
- 'Text::Tabs' => '96.121201', #./lib/Text/Tabs.pm
- 'Text::Wrap' => '97.011701', #./lib/Text/Wrap.pm
- 'Tie::Hash' => undef, #./lib/Tie/Hash.pm
- 'Tie::RefHash' => undef, #./lib/Tie/RefHash.pm
- 'Tie::Scalar' => undef, #./lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, #./lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.01', #./lib/Time/gmtime.pm
- 'Time::Local' => undef, #./lib/Time/Local.pm
- 'Time::localtime' => '1.01', #./lib/Time/localtime.pm
- 'Time::tm' => undef, #./lib/Time/tm.pm
- 'UNIVERSAL' => undef, #./lib/UNIVERSAL.pm
- 'User::grent' => undef, #./lib/User/grent.pm
- 'User::pwent' => undef, #./lib/User/pwent.pm
- 'vars' => undef, #./lib/vars.pm
- 'VMS::DCLsym' => '1.01', #./vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => undef, #./vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.02', #./vms/ext/Stdio/Stdio.pm
- 'vmsish' => undef, #./vms/ext/vmsish.pm
+ 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.005 => {
- 'AnyDBM_File' => undef, #./lib/AnyDBM_File.pm
- 'attrs' => '1.0', #./ext/attrs/attrs.pm
- 'AutoLoader' => undef, #./lib/AutoLoader.pm
- 'AutoSplit' => '1.0302', #./lib/AutoSplit.pm
- 'autouse' => '1.01', #./lib/autouse.pm
- 'B' => undef, #./ext/B/B.pm
- 'B::Asmdata' => undef, #./ext/B/B/Asmdata.pm
- 'B::Assembler' => undef, #./ext/B/B/Assembler.pm
- 'B::Bblock' => undef, #./ext/B/B/Bblock.pm
- 'B::Bytecode' => undef, #./ext/B/B/Bytecode.pm
- 'B::C' => undef, #./ext/B/B/C.pm
- 'B::CC' => undef, #./ext/B/B/CC.pm
- 'B::Debug' => undef, #./ext/B/B/Debug.pm
- 'B::Deparse' => '0.56', #./ext/B/B/Deparse.pm
- 'B::Disassembler' => undef, #./ext/B/B/Disassembler.pm
- 'B::Lint' => undef, #./ext/B/B/Lint.pm
- 'B::Showlex' => undef, #./ext/B/B/Showlex.pm
- 'B::Stackobj' => undef, #./ext/B/B/Stackobj.pm
- 'B::Terse' => undef, #./ext/B/B/Terse.pm
- 'B::Xref' => undef, #./ext/B/B/Xref.pm
- 'base' => undef, #./lib/base.pm
- 'Benchmark' => undef, #./lib/Benchmark.pm
- 'blib' => '1.00', #./lib/blib.pm
- 'Carp' => undef, #./lib/Carp.pm
- 'CGI' => '2.42', #./lib/CGI.pm
- 'CGI::Apache' => '1.1', #./lib/CGI/Apache.pm
- 'CGI::Carp' => '1.101', #./lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.06', #./lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.00a', #./lib/CGI/Fast.pm
- 'CGI::Push' => '1.01', #./lib/CGI/Push.pm
- 'CGI::Switch' => '0.06', #./lib/CGI/Switch.pm
- 'Class::Struct' => undef, #./lib/Class/Struct.pm
- 'Config' => undef,
- 'constant' => '1.00', #./lib/constant.pm
- 'CPAN' => '1.3901', #./lib/CPAN.pm
- 'CPAN::FirstTime' => '1.29 ', #./lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => undef, #./lib/CPAN/Nox.pm
- 'Cwd' => '2.01', #./lib/Cwd.pm
- 'Data::Dumper' => '2.09', #./ext/Data/Dumper/Dumper.pm
- 'DB_File' => '1.60', #./ext/DB_File/DB_File.pm
- 'Devel::SelfStubber' => '1.01', #./lib/Devel/SelfStubber.pm
- 'DynaLoader' => '1.03',
- 'diagnostics' => undef, #./lib/diagnostics.pm
- 'DirHandle' => undef, #./lib/DirHandle.pm
- 'English' => undef, #./lib/English.pm
- 'Env' => undef, #./lib/Env.pm
- 'Exporter' => undef, #./lib/Exporter.pm
- 'ExtUtils::Command' => '1.01', #./lib/ExtUtils/Command.pm
- 'ExtUtils::Embed' => '1.2505', #./lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.28 ', #./lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.02', #./lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.25 ', #./lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => '5.4301', #./lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.33 ', #./lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => '1.13 ', #./lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.17 ', #./lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM_OS2' => undef, #./lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.12601 ', #./lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_VMS' => undef, #./lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => undef, #./lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::Packlist' => '0.03', #./lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.11 ', #./lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #./vms/ext/XSSymSet.pm
- 'Fatal' => '1.02', #./lib/Fatal.pm
- 'Fcntl' => '1.03', #./ext/Fcntl/Fcntl.pm
- 'fields' => '0.02', #./lib/fields.pm
- 'File::Basename' => '2.6', #./lib/File/Basename.pm
- 'File::CheckTree' => undef, #./lib/File/CheckTree.pm
- 'File::Compare' => '1.1001', #./lib/File/Compare.pm
- 'File::Copy' => '2.02', #./lib/File/Copy.pm
- 'File::DosGlob' => undef, #./lib/File/DosGlob.pm
- 'File::Find' => undef, #./lib/File/Find.pm
- 'File::Path' => '1.0401', #./lib/File/Path.pm
- 'File::Spec' => '0.6', #./lib/File/Spec.pm
- 'File::Spec::Mac' => '1.0', #./lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => undef, #./lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => undef, #./lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => undef, #./lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => undef, #./lib/File/Spec/Win32.pm
- 'File::stat' => undef, #./lib/File/stat.pm
- 'FileCache' => undef, #./lib/FileCache.pm
- 'FileHandle' => '2.00', #./lib/FileHandle.pm
- 'FindBin' => '1.41', #./lib/FindBin.pm
- 'GDBM_File' => '1.00', #./ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.17', #./lib/Getopt/Long.pm
- 'Getopt::Std' => undef, #./lib/Getopt/Std.pm
- 'I18N::Collate' => undef, #./lib/I18N/Collate.pm
- 'integer' => undef, #./lib/integer.pm
- 'IO' => undef, #./ext/IO/IO.pm
- 'IO::File' => '1.06021', #./ext/IO/lib/IO/File.pm
- 'IO::Handle' => '1.1505', #./ext/IO/lib/IO/Handle.pm
- 'IO::Pipe' => '1.0901', #./ext/IO/lib/IO/Pipe.pm
- 'IO::Seekable' => '1.06', #./ext/IO/lib/IO/Seekable.pm
- 'IO::Select' => '1.10', #./ext/IO/lib/IO/Select.pm
- 'IO::Socket' => '1.1603', #./ext/IO/lib/IO/Socket.pm
- 'IPC::Open2' => '1.01', #./lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0102', #./lib/IPC/Open3.pm
- 'IPC::Msg' => '1.00', #./ext/IPC/SysV/Msg.pm
- 'IPC::Semaphore' => '1.00', #./ext/IPC/SysV/Semaphore.pm
- 'IPC::SysV' => '1.03', #./ext/IPC/SysV/SysV.pm
- 'less' => undef, #./lib/less.pm
- 'lib' => undef, #./lib/lib.pm
- 'locale' => undef, #./lib/locale.pm
- 'Math::BigFloat' => undef, #./lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, #./lib/Math/BigInt.pm
- 'Math::Complex' => '1.25', #./lib/Math/Complex.pm
- 'Math::Trig' => '1', #./lib/Math/Trig.pm
- 'NDBM_File' => '1.01', #./ext/NDBM_File/NDBM_File.pm
- 'Net::hostent' => undef, #./lib/Net/hostent.pm
- 'Net::netent' => undef, #./lib/Net/netent.pm
- 'Net::Ping' => '2.02', #./lib/Net/Ping.pm
- 'Net::protoent' => undef, #./lib/Net/protoent.pm
- 'Net::servent' => undef, #./lib/Net/servent.pm
- 'O' => undef, #./ext/B/O.pm
- 'ODBM_File' => '1.00', #./ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.04', #./ext/Opcode/Opcode.pm
- 'ops' => undef, #./ext/Opcode/ops.pm
- 'Safe' => '2.06', #./ext/Opcode/Safe.pm
- 'OS2::ExtAttr' => '0.01', #./os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #./os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '0.2', #./os2/OS2/Process/Process.pm
- 'OS2::REXX' => undef, #./os2/OS2/REXX/REXX.pm
- 'overload' => undef, #./lib/overload.pm
- 'Pod::Functions' => undef, #./lib/Pod/Functions.pm
- 'Pod::Html' => '1.01', #./lib/Pod/Html.pm
- 'Pod::Text' => '1.0203', #./lib/Pod/Text.pm
- 'POSIX' => '1.02', #./ext/POSIX/POSIX.pm
- 're' => '0.02', #./ext/re/re.pm
- 'SDBM_File' => '1.00', #./ext/SDBM_File/SDBM_File.pm
- 'Search::Dict' => undef, #./lib/Search/Dict.pm
- 'SelectSaver' => undef, #./lib/SelectSaver.pm
- 'SelfLoader' => '1.08', #./lib/SelfLoader.pm
- 'Shell' => undef, #./lib/Shell.pm
- 'sigtrap' => '1.02', #./lib/sigtrap.pm
- 'Socket' => '1.7', #./ext/Socket/Socket.pm
- 'strict' => '1.01', #./lib/strict.pm
- 'subs' => undef, #./lib/subs.pm
- 'Symbol' => '1.02', #./lib/Symbol.pm
- 'Sys::Hostname' => undef, #./lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, #./lib/Sys/Syslog.pm
- 'Term::Cap' => undef, #./lib/Term/Cap.pm
- 'Term::Complete' => undef, #./lib/Term/Complete.pm
- 'Term::ReadLine' => undef, #./lib/Term/ReadLine.pm
- 'Test' => '1.04', #./lib/Test.pm
- 'Test::Harness' => '1.1602', #./lib/Test/Harness.pm
- 'Text::Abbrev' => undef, #./lib/Text/Abbrev.pm
- 'Text::ParseWords' => '3.1', #./lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, #./lib/Text/Soundex.pm
- 'Text::Tabs' => '96.121201', #./lib/Text/Tabs.pm
- 'Text::Wrap' => '97.02', #./lib/Text/Wrap.pm
- 'Thread' => '1.0', #./ext/Thread/Thread.pm
- 'Thread::Queue' => undef, #./ext/Thread/Thread/Queue.pm
- 'Thread::Semaphore' => undef, #./ext/Thread/Thread/Semaphore.pm
- 'Thread::Signal' => undef, #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => undef, #./ext/Thread/Thread/Specific.pm
- 'Tie::Array' => '1.00', #./lib/Tie/Array.pm
- 'Tie::Handle' => undef, #./lib/Tie/Handle.pm
- 'Tie::Hash' => undef, #./lib/Tie/Hash.pm
- 'Tie::RefHash' => undef, #./lib/Tie/RefHash.pm
- 'Tie::Scalar' => undef, #./lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, #./lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.01', #./lib/Time/gmtime.pm
- 'Time::Local' => undef, #./lib/Time/Local.pm
- 'Time::localtime' => '1.01', #./lib/Time/localtime.pm
- 'Time::tm' => undef, #./lib/Time/tm.pm
- 'UNIVERSAL' => undef, #./lib/UNIVERSAL.pm
- 'User::grent' => undef, #./lib/User/grent.pm
- 'User::pwent' => undef, #./lib/User/pwent.pm
- 'vars' => undef, #./lib/vars.pm
- 'VMS::DCLsym' => '1.01', #./vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => undef, #./vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.1', #./vms/ext/Stdio/Stdio.pm
- 'vmsish' => undef, #./vms/ext/vmsish.pm
+ 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.00503 => {
- 'AnyDBM_File' => undef,
- 'attrs' => '1.0',
- 'AutoLoader' => undef,
- 'AutoSplit' => 1.0303,
- 'autouse' => 1.01,
- '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' => undef,
- 'B::Showlex' => undef,
- 'B::Stackobj' => undef,
- 'B::Terse' => undef,
- 'B::Xref' => undef,
- 'base' => undef,
- 'Benchmark' => undef,
- 'blib' => '1.00',
- 'Carp' => undef,
- 'CGI' => 2.46,
- 'CGI::Apache' => 1.1,
- 'CGI::Carp' => 1.13,
- 'CGI::Cookie' => 1.06,
- 'CGI::Fast' => 1.01,
- 'CGI::Push' => 1.01,
- 'CGI::Switch' => 0.06,
- 'Class::Struct' => undef,
- 'Config' => undef,
- 'constant' => '1.00',
- 'CPAN::FirstTime' => 1.36 ,
- 'CPAN' => 1.48,
- 'CPAN::Nox' => '1.00',
- 'Cwd' => 2.01,
- 'Data::Dumper' => 2.101,
- 'DB_File' => 1.65,
- 'Devel::SelfStubber' => 1.01,
- 'diagnostics' => undef,
- 'DirHandle' => undef,
- 'Dumpvalue' => undef,
- 'DynaLoader' => 1.03,
- 'English' => undef,
- 'Env' => undef,
- 'Exporter' => undef,
- 'ExtUtils::Command' => 1.01,
- 'ExtUtils::Embed' => 1.2505,
- 'ExtUtils::Install' => 1.28 ,
- 'ExtUtils::Installed' => 0.02,
- 'ExtUtils::Liblist' => 1.25 ,
- 'ExtUtils::MakeMaker' => 5.4302,
- 'ExtUtils::Manifest' => 1.33 ,
- 'ExtUtils::Mkbootstrap' => 1.14 ,
- 'ExtUtils::Mksymlists' => 1.17 ,
- 'ExtUtils::MM_OS2' => undef,
- 'ExtUtils::MM_Unix' => 1.12602 ,
- 'ExtUtils::MM_VMS' => undef,
- 'ExtUtils::MM_Win32' => undef,
- 'ExtUtils::Packlist' => 0.03,
- 'ExtUtils::testlib' => 1.11 ,
- 'ExtUtils::XSSymSet' => '1.0',
- 'Fatal' => 1.02,
- 'Fcntl' => 1.03,
- 'fields' => 0.02,
- 'File::Basename' => 2.6,
- 'File::CheckTree' => undef,
- 'File::Compare' => 1.1001,
- 'File::Copy' => 2.02,
- 'File::DosGlob' => undef,
- 'File::Find' => undef,
- 'File::Path' => 1.0401,
- '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,
- 'File::stat' => undef,
- 'FileCache' => undef,
- 'FileHandle' => '2.00',
- 'FindBin' => 1.42,
- 'GDBM_File' => '1.00',
- 'Getopt::Long' => 2.19,
- 'Getopt::Std' => 1.01,
- 'I18N::Collate' => undef,
- 'integer' => undef,
- 'IO' => undef,
- 'IO::File' => 1.06021,
- 'IO::Handle' => 1.1505,
- 'IO::Pipe' => 1.0902,
- 'IO::Seekable' => 1.06,
- 'IO::Select' => '1.10',
- 'IO::Socket' => 1.1603,
- 'IPC::Msg' => '1.00',
- 'IPC::Open2' => 1.01,
- 'IPC::Open3' => 1.0103,
- 'IPC::Semaphore' => '1.00',
- 'IPC::SysV' => 1.03,
- 'less' => undef,
- 'lib' => undef,
- 'locale' => undef,
- 'Math::BigFloat' => undef,
- 'Math::BigInt' => undef,
- 'Math::Complex' => 1.26,
- 'Math::Trig' => 1,
- 'NDBM_File' => 1.01,
- 'Net::hostent' => undef,
- 'Net::netent' => undef,
- 'Net::Ping' => 2.02,
- 'Net::protoent' => undef,
- 'Net::servent' => undef,
- 'O' => undef,
- 'ODBM_File' => '1.00',
- 'Opcode' => 1.04,
- 'ops' => undef,
- 'OS2::ExtAttr' => 0.01,
- 'OS2::PrfDB' => 0.02,
- 'OS2::Process' => 0.2,
- 'OS2::REXX' => undef,
- 'overload' => undef,
- 'Pod::Functions' => undef,
- 'Pod::Html' => 1.01,
- 'Pod::Text' => 1.0203,
- 'POSIX' => 1.02,
- 're' => 0.02,
- 'Safe' => 2.06,
- 'SDBM_File' => '1.00',
- 'Search::Dict' => undef,
- 'SelectSaver' => undef,
- 'SelfLoader' => 1.08,
- 'Shell' => undef,
- 'sigtrap' => 1.02,
- 'Socket' => 1.7,
- 'strict' => 1.01,
- 'subs' => undef,
- 'Symbol' => 1.02,
- 'Sys::Hostname' => undef,
- 'Sys::Syslog' => undef,
- 'Term::Cap' => undef,
- 'Term::Complete' => undef,
- 'Term::ReadLine' => undef,
- 'Test' => 1.122,
- 'Test::Harness' => 1.1602,
- 'Text::Abbrev' => undef,
- 'Text::ParseWords' => 3.1,
- 'Text::Soundex' => undef,
- 'Text::Tabs' => 96.121201,
- 'Text::Wrap' => 98.112902,
- 'Thread' => '1.0',
- 'Thread::Queue' => undef,
- 'Thread::Semaphore' => undef,
- 'Thread::Specific' => undef,
- 'Thread::Signal' => undef,
- 'Tie::Array' => '1.00',
- 'Tie::Handle' => undef,
- 'Tie::Hash' => undef,
- 'Tie::RefHash' => undef,
- 'Tie::Scalar' => undef,
- 'Tie::SubstrHash' => undef,
- 'Time::gmtime' => 1.01,
- 'Time::Local' => undef,
- 'Time::localtime' => 1.01,
- 'Time::tm' => undef,
- 'UNIVERSAL' => undef,
- 'User::grent' => undef,
- 'User::pwent' => undef,
- 'vars' => undef,
- 'VMS::DCLsym' => 1.01,
- 'VMS::Filespec' => undef,
- 'VMS::Stdio' => 2.1,
- 'vmsish' => undef,
+ 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.00405 => {
- 'AnyDBM_File' => undef, #./lib/AnyDBM_File.pm
- 'attrs' => '0.1', #./lib/attrs.pm
- 'AutoLoader' => '5.56', #./lib/AutoLoader.pm
- 'AutoSplit' => '1.0303', #./lib/AutoSplit.pm
- 'autouse' => '1.01', #./lib/autouse.pm
- 'base' => undef, #./lib/base.pm
- 'Benchmark' => undef, #./lib/Benchmark.pm
- 'blib' => '1.00', #./lib/blib.pm
- 'Bundle::CPAN' => '0.03', #./lib/Bundle/CPAN.pm
- 'Carp' => undef, #./lib/Carp.pm
- 'CGI' => '2.42', #./lib/CGI.pm
- 'CGI::Apache' => '1.1', #./lib/CGI/Apache.pm
- 'CGI::Carp' => '1.10', #./lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.06', #./lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.00a', #./lib/CGI/Fast.pm
- 'CGI::Push' => '1.01', #./lib/CGI/Push.pm
- 'CGI::Switch' => '0.06', #./lib/CGI/Switch.pm
- 'Class::Struct' => undef, #./lib/Class/Struct.pm
- 'Config' => undef,
- 'constant' => '1.00', #./lib/constant.pm
- 'CPAN' => '1.40', #./lib/CPAN.pm
- 'CPAN::FirstTime' => '1.30 ', #./lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => undef, #./lib/CPAN/Nox.pm
- 'Cwd' => '2.01', #./lib/Cwd.pm
- 'DB_File' => '1.15', #./ext/DB_File/DB_File.pm
- 'Devel::SelfStubber' => '1.01', #./lib/Devel/SelfStubber.pm
- 'diagnostics' => undef, #./lib/diagnostics.pm
- 'DirHandle' => undef, #./lib/DirHandle.pm
- 'DynaLoader' => '1.03',
- 'English' => undef, #./lib/English.pm
- 'Env' => undef, #./lib/Env.pm
- 'Exporter' => undef, #./lib/Exporter.pm
- 'ExtUtils::Command' => '1.01', #./lib/ExtUtils/Command.pm
- 'ExtUtils::Embed' => '1.2505', #./lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.28 ', #./lib/ExtUtils/Install.pm
- 'ExtUtils::Liblist' => '1.25 ', #./lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => '5.42', #./lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.33 ', #./lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => '1.14 ', #./lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.16 ', #./lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM_OS2' => undef, #./lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.118 ', #./lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_VMS' => undef, #./lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => undef, #./lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::testlib' => '1.11 ', #./lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #./vms/ext/XSSymSet.pm
- 'Fcntl' => '1.03', #./ext/Fcntl/Fcntl.pm
- 'File::Basename' => '2.6', #./lib/File/Basename.pm
- 'File::CheckTree' => undef, #./lib/File/CheckTree.pm
- 'File::Compare' => '1.1001', #./lib/File/Compare.pm
- 'File::Copy' => '2.02', #./lib/File/Copy.pm
- 'File::DosGlob' => undef, #./lib/File/DosGlob.pm
- 'File::Find' => undef, #./lib/File/Find.pm
- 'File::Path' => '1.0402', #./lib/File/Path.pm
- 'File::Spec' => '0.6', #./lib/File/Spec.pm
- 'File::Spec::Mac' => '1.0', #./lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => undef, #./lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => undef, #./lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => undef, #./lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => undef, #./lib/File/Spec/Win32.pm
- 'File::stat' => undef, #./lib/File/stat.pm
- 'FileCache' => undef, #./lib/FileCache.pm
- 'FileHandle' => '2.00', #./lib/FileHandle.pm
- 'FindBin' => '1.41', #./lib/FindBin.pm
- 'GDBM_File' => '1.00', #./ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.19', #./lib/Getopt/Long.pm
- 'Getopt::Std' => undef, #./lib/Getopt/Std.pm
- 'I18N::Collate' => undef, #./lib/I18N/Collate.pm
- 'integer' => undef, #./lib/integer.pm
- 'IO' => undef, #./ext/IO/IO.pm
- 'IO::File' => '1.06021', #./ext/IO/lib/IO/File.pm
- 'IO::Handle' => '1.1504', #./ext/IO/lib/IO/Handle.pm
- 'IO::Pipe' => '1.0901', #./ext/IO/lib/IO/Pipe.pm
- 'IO::Seekable' => '1.06', #./ext/IO/lib/IO/Seekable.pm
- 'IO::Select' => '1.10', #./ext/IO/lib/IO/Select.pm
- 'IO::Socket' => '1.1603', #./ext/IO/lib/IO/Socket.pm
- 'IPC::Open2' => '1.01', #./lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0103', #./lib/IPC/Open3.pm
- 'less' => undef, #./lib/less.pm
- 'lib' => undef, #./lib/lib.pm
- 'locale' => undef, #./lib/locale.pm
- 'Math::BigFloat' => undef, #./lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, #./lib/Math/BigInt.pm
- 'Math::Complex' => '1.25', #./lib/Math/Complex.pm
- 'Math::Trig' => '1', #./lib/Math/Trig.pm
- 'NDBM_File' => '1.01', #./ext/NDBM_File/NDBM_File.pm
- 'Net::hostent' => undef, #./lib/Net/hostent.pm
- 'Net::netent' => undef, #./lib/Net/netent.pm
- 'Net::Ping' => '2.02', #./lib/Net/Ping.pm
- 'Net::protoent' => undef, #./lib/Net/protoent.pm
- 'Net::servent' => undef, #./lib/Net/servent.pm
- 'ODBM_File' => '1.00', #./ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.04', #./ext/Opcode/Opcode.pm
- 'ops' => undef, #./ext/Opcode/ops.pm
- 'OS2::ExtAttr' => '0.01', #./os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #./os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => undef, #./os2/OS2/Process/Process.pm
- 'OS2::REXX' => undef, #./os2/OS2/REXX/REXX.pm
- 'overload' => undef, #./lib/overload.pm
- 'Pod::Functions' => undef, #./lib/Pod/Functions.pm
- 'Pod::Html' => '1.0101', #./lib/Pod/Html.pm
- 'Pod::Text' => '1.0204', #./lib/Pod/Text.pm
- 'POSIX' => '1.02', #./ext/POSIX/POSIX.pm
- 're' => undef, #./lib/re.pm
- 'Safe' => '2.06', #./ext/Opcode/Safe.pm
- 'SDBM_File' => '1.00', #./ext/SDBM_File/SDBM_File.pm
- 'Search::Dict' => undef, #./lib/Search/Dict.pm
- 'SelectSaver' => undef, #./lib/SelectSaver.pm
- 'SelfLoader' => '1.08', #./lib/SelfLoader.pm
- 'Shell' => undef, #./lib/Shell.pm
- 'sigtrap' => '1.02', #./lib/sigtrap.pm
- 'Socket' => '1.7', #./ext/Socket/Socket.pm
- 'strict' => '1.01', #./lib/strict.pm
- 'subs' => undef, #./lib/subs.pm
- 'Symbol' => '1.02', #./lib/Symbol.pm
- 'Sys::Hostname' => undef, #./lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, #./lib/Sys/Syslog.pm
- 'Term::Cap' => undef, #./lib/Term/Cap.pm
- 'Term::Complete' => undef, #./lib/Term/Complete.pm
- 'Term::ReadLine' => undef, #./lib/Term/ReadLine.pm
- 'Test' => '1.04', #./lib/Test.pm
- 'Test::Harness' => '1.1602', #./lib/Test/Harness.pm
- 'Text::Abbrev' => undef, #./lib/Text/Abbrev.pm
- 'Text::ParseWords' => '3.1001', #./lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, #./lib/Text/Soundex.pm
- 'Text::Tabs' => '96.121201', #./lib/Text/Tabs.pm
- 'Text::Wrap' => '98.112902', #./lib/Text/Wrap.pm
- 'Tie::Handle' => undef, #./lib/Tie/Handle.pm
- 'Tie::Hash' => undef, #./lib/Tie/Hash.pm
- 'Tie::RefHash' => undef, #./lib/Tie/RefHash.pm
- 'Tie::Scalar' => undef, #./lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, #./lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.01', #./lib/Time/gmtime.pm
- 'Time::Local' => undef, #./lib/Time/Local.pm
- 'Time::localtime' => '1.01', #./lib/Time/localtime.pm
- 'Time::tm' => undef, #./lib/Time/tm.pm
- 'UNIVERSAL' => undef, #./lib/UNIVERSAL.pm
- 'User::grent' => undef, #./lib/User/grent.pm
- 'User::pwent' => undef, #./lib/User/pwent.pm
- 'vars' => undef, #./lib/vars.pm
- 'VMS::DCLsym' => '1.01', #./vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => undef, #./vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.02', #./vms/ext/Stdio/Stdio.pm
- 'vmsish' => undef, #./vms/ext/vmsish.pm
+ 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 => {
- 'AnyDBM_File' => undef, #lib/AnyDBM_File.pm
- 'attrs' => '1.0', #lib/attrs.pm
- 'AutoLoader' => undef, #lib/AutoLoader.pm
- 'AutoSplit' => '1.0303', #lib/AutoSplit.pm
- 'autouse' => '1.01', #lib/autouse.pm
- 'base' => undef, #lib/base.pm
- 'B::Asmdata' => undef, #lib/B/Asmdata.pm
- 'B::Assembler' => undef, #lib/B/Assembler.pm
- 'B::Bblock' => undef, #lib/B/Bblock.pm
- 'B::Bytecode' => undef, #lib/B/Bytecode.pm
- 'B::CC' => undef, #lib/B/CC.pm
- 'B::C' => undef, #lib/B/C.pm
- 'B::Debug' => undef, #lib/B/Debug.pm
- 'B::Deparse' => '0.56', #lib/B/Deparse.pm
- 'B::Disassembler' => undef, #lib/B/Disassembler.pm
- 'Benchmark' => undef, #lib/Benchmark.pm
- 'blib' => '1.00', #lib/blib.pm
- 'B::Lint' => undef, #lib/B/Lint.pm
- 'B::Showlex' => undef, #lib/B/Showlex.pm
- 'B::Stackobj' => undef, #lib/B/Stackobj.pm
- 'B::Terse' => undef, #lib/B/Terse.pm
- 'B' => undef, #lib/B.pm
- 'B::Xref' => undef, #lib/B/Xref.pm
- 'Carp' => undef, #lib/Carp.pm
- 'CGI' => '2.46', #lib/CGI.pm
- 'CGI::Apache' => '1.1', #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.13', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.06', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.01', #lib/CGI/Fast.pm
- 'CGI::Push' => '1.01', #lib/CGI/Push.pm
- 'CGI::Switch' => '0.06', #lib/CGI/Switch.pm
- 'Class::Struct' => undef, #lib/Class/Struct.pm
- 'Config' => undef, #lib/Config.pm
- 'constant' => '1.00', #lib/constant.pm
- 'CPAN' => '1.48', #lib/CPAN.pm
- 'CPAN::FirstTime' => '1.36 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.00', #lib/CPAN/Nox.pm
- 'Cwd' => '2.01', #lib/Cwd.pm
- 'Data::Dumper' => '2.101', #lib/Data/Dumper.pm
- 'DB_File' => '1.807', #lib/DB_File.pm
- 'Devel::SelfStubber' => '1.01', #lib/Devel/SelfStubber.pm
- 'diagnostics' => undef, #lib/diagnostics.pm
- 'DirHandle' => undef, #lib/DirHandle.pm
- 'Dumpvalue' => undef, #lib/Dumpvalue.pm
- 'DynaLoader' => '1.03', #lib/DynaLoader.pm
- 'English' => undef, #lib/English.pm
- 'Env' => undef, #lib/Env.pm
- 'Errno' => '1.111', #lib/Errno.pm
- 'Exporter' => undef, #lib/Exporter.pm
- 'ExtUtils::Command' => '1.01', #lib/ExtUtils/Command.pm
- 'ExtUtils::Embed' => '1.2505', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.28 ', #lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.02', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.25 ', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => '5.4302', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.33 ', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Mkbootstrap' => '1.14 ', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.17 ', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM_OS2' => undef, #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.12602 ', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_VMS' => undef, #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => undef, #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::Packlist' => '0.03', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.11 ', #lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'Fatal' => '1.02', #lib/Fatal.pm
- 'Fcntl' => '1.03', #lib/Fcntl.pm
- 'fields' => '0.02', #lib/fields.pm
- 'File::Basename' => '2.6', #lib/File/Basename.pm
- 'FileCache' => undef, #lib/FileCache.pm
- 'File::CheckTree' => undef, #lib/File/CheckTree.pm
- 'File::Compare' => '1.1002', #lib/File/Compare.pm
- 'File::Copy' => '2.02', #lib/File/Copy.pm
- 'File::DosGlob' => undef, #lib/File/DosGlob.pm
- 'File::Find' => undef, #lib/File/Find.pm
- 'FileHandle' => '2.00', #lib/FileHandle.pm
- 'File::Path' => '1.0401', #lib/File/Path.pm
- 'File::Spec' => '0.8', #lib/File/Spec.pm
- 'File::Spec::Functions' => undef, #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => undef, #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => undef, #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => undef, #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => undef, #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => undef, #lib/File/Spec/Win32.pm
- 'File::stat' => undef, #lib/File/stat.pm
- 'FindBin' => '1.42', #lib/FindBin.pm
- 'GDBM_File' => '1.00', #lib/GDBM_File.pm
- 'Getopt::Long' => '2.20', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.01', #lib/Getopt/Std.pm
- 'I18N::Collate' => undef, #lib/I18N/Collate.pm
- 'integer' => undef, #lib/integer.pm
- 'IO::File' => '1.06021', #lib/IO/File.pm
- 'IO::Handle' => '1.1505', #lib/IO/Handle.pm
- 'IO::Pipe' => '1.0902', #lib/IO/Pipe.pm
- 'IO::Seekable' => '1.06', #lib/IO/Seekable.pm
- 'IO::Select' => '1.10', #lib/IO/Select.pm
- 'IO::Socket' => '1.1603', #lib/IO/Socket.pm
- 'IO' => undef, #lib/IO.pm
- 'IPC::Msg' => '1.00', #lib/IPC/Msg.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0103', #lib/IPC/Open3.pm
- 'IPC::Semaphore' => '1.00', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.03', #lib/IPC/SysV.pm
- 'less' => undef, #lib/less.pm
- 'lib' => undef, #lib/lib.pm
- 'locale' => undef, #lib/locale.pm
- 'Math::BigFloat' => undef, #lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, #lib/Math/BigInt.pm
- 'Math::Complex' => '1.26', #lib/Math/Complex.pm
- 'Math::Trig' => '1', #lib/Math/Trig.pm
- 'NDBM_File' => '1.01', #ext/NDBM_File/NDBM_File.pm
- 'Net::hostent' => undef, #lib/Net/hostent.pm
- 'Net::netent' => undef, #lib/Net/netent.pm
- 'Net::Ping' => '2.02', #lib/Net/Ping.pm
- 'Net::protoent' => undef, #lib/Net/protoent.pm
- 'Net::servent' => undef, #lib/Net/servent.pm
- 'ODBM_File' => '1.00', #ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.04', #lib/Opcode.pm
- 'ops' => undef, #lib/ops.pm
- 'O' => undef, #lib/O.pm
- 'OS2::ExtAttr' => '0.01', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '0.2', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => undef, #os2/OS2/REXX/REXX.pm
- 'overload' => undef, #lib/overload.pm
- 'Pod::Functions' => undef, #lib/Pod/Functions.pm
- 'Pod::Html' => '1.02', #lib/Pod/Html.pm
- 'Pod::Text' => '1.0203', #lib/Pod/Text.pm
- 'POSIX' => '1.02', #lib/POSIX.pm
- 're' => '0.02', #lib/re.pm
- 'Safe' => '2.06', #lib/Safe.pm
- 'SDBM_File' => '1.00', #lib/SDBM_File.pm
- 'Search::Dict' => undef, #lib/Search/Dict.pm
- 'SelectSaver' => undef, #lib/SelectSaver.pm
- 'SelfLoader' => '1.08', #lib/SelfLoader.pm
- 'Shell' => undef, #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'Socket' => '1.7', #lib/Socket.pm
- 'strict' => '1.01', #lib/strict.pm
- 'subs' => undef, #lib/subs.pm
- 'Symbol' => '1.02', #lib/Symbol.pm
- 'Sys::Hostname' => undef, #lib/Sys/Hostname.pm
- 'Sys::Syslog' => undef, #lib/Sys/Syslog.pm
- 'Term::Cap' => undef, #lib/Term/Cap.pm
- 'Term::Complete' => undef, #lib/Term/Complete.pm
- 'Term::ReadLine' => undef, #lib/Term/ReadLine.pm
- 'Test' => '1.122', #lib/Test.pm
- 'Test::Harness' => '1.1602', #lib/Test/Harness.pm
- 'Text::Abbrev' => undef, #lib/Text/Abbrev.pm
- 'Text::ParseWords' => '3.1', #lib/Text/ParseWords.pm
- 'Text::Soundex' => undef, #lib/Text/Soundex.pm
- 'Text::Tabs' => '96.121201', #lib/Text/Tabs.pm
- 'Text::Wrap' => '98.112902', #lib/Text/Wrap.pm
- 'Thread' => '1.0', #ext/Thread/Thread.pm
- 'Thread::Queue' => undef, #ext/Thread/Thread/Queue.pm
- 'Thread::Semaphore' => undef, #ext/Thread/Thread/Semaphore.pm
- 'Thread::Signal' => undef, #ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => undef, #ext/Thread/Thread/Specific.pm
- 'Tie::Array' => '1.00', #lib/Tie/Array.pm
- 'Tie::Handle' => undef, #lib/Tie/Handle.pm
- 'Tie::Hash' => undef, #lib/Tie/Hash.pm
- 'Tie::RefHash' => undef, #lib/Tie/RefHash.pm
- 'Tie::Scalar' => undef, #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.01', #lib/Time/gmtime.pm
- 'Time::localtime' => '1.01', #lib/Time/localtime.pm
- 'Time::Local' => undef, #lib/Time/Local.pm
- 'Time::tm' => undef, #lib/Time/tm.pm
- 'UNIVERSAL' => undef, #lib/UNIVERSAL.pm
- 'User::grent' => undef, #lib/User/grent.pm
- 'User::pwent' => undef, #lib/User/pwent.pm
- 'vars' => undef, #lib/vars.pm
- 'VMS::DCLsym' => '1.01', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => undef, #vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.1', #vms/ext/Stdio/Stdio.pm
- 'vmsish' => undef, #vms/ext/vmsish.pm
+ 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 => {
- 'AnyDBM_File' => undef, #./lib/AnyDBM_File.pm
- 'AutoLoader' => '5.57', #./lib/AutoLoader.pm
- 'AutoSplit' => '1.0305', #./lib/AutoSplit.pm
- 'B' => undef, #./ext/B/B.pm
- 'B::Asmdata' => undef, #./ext/B/B/Asmdata.pm
- 'B::Assembler' => undef, #./ext/B/B/Assembler.pm
- 'B::Bblock' => undef, #./ext/B/B/Bblock.pm
- 'B::Bytecode' => undef, #./ext/B/B/Bytecode.pm
- 'B::C' => undef, #./ext/B/B/C.pm
- 'B::CC' => undef, #./ext/B/B/CC.pm
- 'B::Debug' => undef, #./ext/B/B/Debug.pm
- 'B::Deparse' => '0.59', #./ext/B/B/Deparse.pm
- 'B::Disassembler' => undef, #./ext/B/B/Disassembler.pm
- 'B::Lint' => undef, #./ext/B/B/Lint.pm
- 'B::Showlex' => undef, #./ext/B/B/Showlex.pm
- 'B::Stackobj' => undef, #./ext/B/B/Stackobj.pm
- 'B::Stash' => undef, #./ext/B/B/Stash.pm
- 'B::Terse' => undef, #./ext/B/B/Terse.pm
- 'B::Xref' => undef, #./ext/B/B/Xref.pm
- 'Benchmark' => '1', #./lib/Benchmark.pm
- 'ByteLoader' => '0.03', #./ext/ByteLoader/ByteLoader.pm
- 'CGI' => '2.56', #./lib/CGI.pm
- 'CGI::Apache' => undef, #./lib/CGI/Apache.pm
- 'CGI::Carp' => '1.14', #./lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.12', #./lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.02', #./lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.03', #./lib/CGI/Pretty.pm
- 'CGI::Push' => '1.01', #./lib/CGI/Push.pm
- 'CGI::Switch' => undef, #./lib/CGI/Switch.pm
- 'CPAN' => '1.52', #./lib/CPAN.pm
- 'CPAN::FirstTime' => '1.38 ', #./lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.00', #./lib/CPAN/Nox.pm
- 'Carp' => undef, #./lib/Carp.pm
- 'Carp::Heavy' => undef, #./lib/Carp/Heavy.pm
- 'Class::Struct' => '0.58', #./lib/Class/Struct.pm
- 'Config' => undef,
- 'Cwd' => '2.02', #./lib/Cwd.pm
- 'DB' => '1.0', #./lib/DB.pm
- 'DB_File' => '1.72', #./ext/DB_File/DB_File.pm
- 'Data::Dumper' => '2.101', #./ext/Data/Dumper/Dumper.pm
- 'Devel::DProf' => '20000000.00_00', #./ext/Devel/DProf/DProf.pm
- 'Devel::Peek' => '1.00_01', #./ext/Devel/Peek/Peek.pm
- 'Devel::SelfStubber' => '1.01', #./lib/Devel/SelfStubber.pm
- 'DirHandle' => undef, #./lib/DirHandle.pm
- 'Dumpvalue' => undef, #./lib/Dumpvalue.pm
- 'DynaLoader' => '1.04',
- 'English' => undef, #./lib/English.pm
- 'Env' => undef, #./lib/Env.pm
- 'Exporter' => '5.562', #./lib/Exporter.pm
- 'Exporter::Heavy' => undef, #./lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.01', #./lib/ExtUtils/Command.pm
- 'ExtUtils::Embed' => '1.2505', #./lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.28 ', #./lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.02', #./lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.25 ', #./lib/ExtUtils/Liblist.pm
- 'ExtUtils::MM_Cygwin' => undef, #./lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_OS2' => undef, #./lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.12603 ', #./lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_VMS' => undef, #./lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => undef, #./lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MakeMaker' => '5.45', #./lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.33 ', #./lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.14 ', #./lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.17 ', #./lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::Packlist' => '0.03', #./lib/ExtUtils/Packlist.pm
- 'ExtUtils::XSSymSet' => '1.0', #./vms/ext/XSSymSet.pm
- 'ExtUtils::testlib' => '1.11 ', #./lib/ExtUtils/testlib.pm
- 'Fatal' => '1.02', #./lib/Fatal.pm
- 'Fcntl' => '1.03', #./ext/Fcntl/Fcntl.pm
- 'File::Basename' => '2.6', #./lib/File/Basename.pm
- 'File::CheckTree' => undef, #./lib/File/CheckTree.pm
- 'File::Compare' => '1.1002', #./lib/File/Compare.pm
- 'File::Copy' => '2.03', #./lib/File/Copy.pm
- 'File::DosGlob' => undef, #./lib/File/DosGlob.pm
- 'File::Find' => undef, #./lib/File/Find.pm
- 'File::Glob' => '0.991', #./ext/File/Glob/Glob.pm
- 'File::Path' => '1.0403', #./lib/File/Path.pm
- 'File::Spec' => '0.8', #./lib/File/Spec.pm
- 'File::Spec::Functions' => undef, #./lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => undef, #./lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => undef, #./lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => undef, #./lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => undef, #./lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => undef, #./lib/File/Spec/Win32.pm
- 'File::stat' => undef, #./lib/File/stat.pm
- 'FileCache' => undef, #./lib/FileCache.pm
- 'FileHandle' => '2.00', #./lib/FileHandle.pm
- 'FindBin' => '1.42', #./lib/FindBin.pm
- 'GDBM_File' => '1.03', #./ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.23', #./lib/Getopt/Long.pm
- 'Getopt::Std' => '1.02', #./lib/Getopt/Std.pm
- 'I18N::Collate' => undef, #./lib/I18N/Collate.pm
- 'IO' => '1.20', #./ext/IO/IO.pm
- 'IO::Dir' => '1.03', #./ext/IO/lib/IO/Dir.pm
- 'IO::File' => '1.08', #./ext/IO/lib/IO/File.pm
- 'IO::Handle' => '1.21', #./ext/IO/lib/IO/Handle.pm
- 'IO::Pipe' => '1.121', #./ext/IO/lib/IO/Pipe.pm
- 'IO::Poll' => '0.01', #./ext/IO/lib/IO/Poll.pm
- 'IO::Seekable' => '1.08', #./ext/IO/lib/IO/Seekable.pm
- 'IO::Select' => '1.14', #./ext/IO/lib/IO/Select.pm
- 'IO::Socket' => '1.26', #./ext/IO/lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.25', #./ext/IO/lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.20', #./ext/IO/lib/IO/Socket/UNIX.pm
- 'IPC::Open2' => '1.01', #./lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0103', #./lib/IPC/Open3.pm
- 'IPC::Msg' => '1.00', #./ext/IPC/SysV/Msg.pm
- 'IPC::Semaphore' => '1.00', #./ext/IPC/SysV/Semaphore.pm
- 'IPC::SysV' => '1.03', #./ext/IPC/SysV/SysV.pm
- 'JNI' => '0.01', #./jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #./jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #./jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #./jpl/JPL/Compile.pm
- 'Math::BigFloat' => undef, #./lib/Math/BigFloat.pm
- 'Math::BigInt' => undef, #./lib/Math/BigInt.pm
- 'Math::Complex' => '1.26', #./lib/Math/Complex.pm
- 'Math::Trig' => '1', #./lib/Math/Trig.pm
- 'NDBM_File' => '1.03', #./ext/NDBM_File/NDBM_File.pm
- 'Net::Ping' => '2.02', #./lib/Net/Ping.pm
- 'Net::hostent' => undef, #./lib/Net/hostent.pm
- 'Net::netent' => undef, #./lib/Net/netent.pm
- 'Net::protoent' => undef, #./lib/Net/protoent.pm
- 'Net::servent' => undef, #./lib/Net/servent.pm
- 'O' => undef, #./ext/B/O.pm
- 'ODBM_File' => '1.02', #./ext/ODBM_File/ODBM_File.pm
- 'OS2::ExtAttr' => '0.01', #./os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #./os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '0.2', #./os2/OS2/Process/Process.pm
- 'OS2::REXX' => undef, #./os2/OS2/REXX/REXX.pm
- 'OS2::DLL' => undef, #./os2/OS2/REXX/DLL/DLL.pm
- 'Opcode' => '1.04', #./ext/Opcode/Opcode.pm
- 'POSIX' => '1.03', #./ext/POSIX/POSIX.pm
- 'Pod::Checker' => '1.098', #./lib/Pod/Checker.pm
- 'Pod::Find' => '0.12', #./lib/Pod/Find.pm
- 'Pod::Functions' => undef, #./lib/Pod/Functions.pm
- 'Pod::Html' => '1.03', #./lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.12', #./lib/Pod/InputObjects.pm
- 'Pod::Man' => '1.02', #./lib/Pod/Man.pm
- 'Pod::ParseUtils' => '0.2', #./lib/Pod/ParseUtils.pm
- 'Pod::Parser' => '1.12', #./lib/Pod/Parser.pm
- 'Pod::Plainer' => '0.01', #./lib/Pod/Plainer.pm
- 'Pod::Select' => '1.12', #./lib/Pod/Select.pm
- 'Pod::Text' => '2.03', #./lib/Pod/Text.pm
- 'Pod::Text::Color' => '0.05', #./lib/Pod/Text/Color.pm
- 'Pod::Text::Termcap' => '0.04', #./lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.12', #./lib/Pod/Usage.pm
- 'SDBM_File' => '1.02', #./ext/SDBM_File/SDBM_File.pm
- 'Safe' => '2.06', #./ext/Opcode/Safe.pm
- 'Search::Dict' => undef, #./lib/Search/Dict.pm
- 'SelectSaver' => undef, #./lib/SelectSaver.pm
- 'SelfLoader' => '1.0901', #./lib/SelfLoader.pm
- 'Shell' => '0.2', #./lib/Shell.pm
- 'Socket' => '1.72', #./ext/Socket/Socket.pm
- 'Symbol' => '1.02', #./lib/Symbol.pm
- 'Sys::Hostname' => '1.1', #./ext/Sys/Hostname/Hostname.pm
- 'Sys::Syslog' => '0.01', #./ext/Sys/Syslog/Syslog.pm
- 'Term::ANSIColor' => '1.01', #./lib/Term/ANSIColor.pm
- 'Term::Cap' => undef, #./lib/Term/Cap.pm
- 'Term::Complete' => undef, #./lib/Term/Complete.pm
- 'Term::ReadLine' => undef, #./lib/Term/ReadLine.pm
- 'Test' => '1.13', #./lib/Test.pm
- 'Test::Harness' => '1.1604', #./lib/Test/Harness.pm
- 'Text::Abbrev' => undef, #./lib/Text/Abbrev.pm
- 'Text::ParseWords' => '3.2', #./lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.0', #./lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #./lib/Text/Tabs.pm
- 'Text::Wrap' => '98.112902', #./lib/Text/Wrap.pm
- 'Thread' => '1.0', #./ext/Thread/Thread.pm
- 'Thread::Queue' => undef, #./ext/Thread/Thread/Queue.pm
- 'Thread::Semaphore' => undef, #./ext/Thread/Thread/Semaphore.pm
- 'Thread::Signal' => undef, #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => undef, #./ext/Thread/Thread/Specific.pm
- 'Tie::Array' => '1.01', #./lib/Tie/Array.pm
- 'Tie::Handle' => '1.0', #./lib/Tie/Handle.pm
- 'Tie::Hash' => undef, #./lib/Tie/Hash.pm
- 'Tie::RefHash' => undef, #./lib/Tie/RefHash.pm
- 'Tie::Scalar' => undef, #./lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, #./lib/Tie/SubstrHash.pm
- 'Time::Local' => undef, #./lib/Time/Local.pm
- 'Time::gmtime' => '1.01', #./lib/Time/gmtime.pm
- 'Time::localtime' => '1.01', #./lib/Time/localtime.pm
- 'Time::tm' => undef, #./lib/Time/tm.pm
- 'UNIVERSAL' => undef, #./lib/UNIVERSAL.pm
- 'User::grent' => undef, #./lib/User/grent.pm
- 'User::pwent' => undef, #./lib/User/pwent.pm
- 'VMS::DCLsym' => '1.01', #./vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => undef, #./vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.2', #./vms/ext/Stdio/Stdio.pm
- 'XSLoader' => '0.01',
- 'attributes' => '0.03', #./lib/attributes.pm
- 'attrs' => '1.0', #./ext/attrs/attrs.pm
- 'autouse' => '1.02', #./lib/autouse.pm
- 'base' => '1.01', #./lib/base.pm
- 'blib' => '1.00', #./lib/blib.pm
- 'bytes' => undef, #./lib/bytes.pm
- 'charnames' => undef, #./lib/charnames.pm
- 'constant' => '1.02', #./lib/constant.pm
- 'diagnostics' => '1.0', #./lib/diagnostics.pm
- 'fields' => '1.01', #./lib/fields.pm
- 'filetest' => undef, #./lib/filetest.pm
- 'integer' => undef, #./lib/integer.pm
- 'less' => undef, #./lib/less.pm
- 'lib' => '0.5564', #./lib/lib.pm
- 'locale' => undef, #./lib/locale.pm
- 'open' => undef, #./lib/open.pm
- 'ops' => undef, #./ext/Opcode/ops.pm
- 'overload' => undef, #./lib/overload.pm
- 're' => '0.02', #./ext/re/re.pm
- 'sigtrap' => '1.02', #./lib/sigtrap.pm
- 'strict' => '1.01', #./lib/strict.pm
- 'subs' => undef, #./lib/subs.pm
- 'utf8' => undef, #./lib/utf8.pm
- 'vars' => undef, #./lib/vars.pm
- 'vmsish' => undef, #./vms/ext/vmsish.pm
- 'warnings' => undef, #./lib/warnings.pm
- 'warnings::register' => undef, #./lib/warnings/register.pm
+ 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 => {
- 'AnyDBM_File' => undef,
- 'attributes' => 0.03,
- 'attrs' => '1.0',
- 'AutoLoader' => 5.58,
- 'AutoSplit' => 1.0305,
- 'autouse' => 1.02,
- 'B::Asmdata' => undef,
- 'B::Assembler' => 0.02,
- 'B::Bblock' => undef,
- 'B::Bytecode' => undef,
- 'B::C' => undef,
- 'B::CC' => undef,
- 'B::Concise' => 0.51,
- 'B::Debug' => undef,
- 'B::Deparse' => 0.6,
- 'B::Disassembler' => undef,
- 'B::Lint' => undef,
- 'B' => undef,
- 'B::Showlex' => undef,
- 'B::Stackobj' => undef,
- 'B::Stash' => undef,
- 'B::Terse' => undef,
- 'B::Xref' => undef,
- 'base' => 1.01,
- 'Benchmark' => 1,
- 'blib' => '1.00',
- 'ByteLoader' => 0.04,
- 'bytes' => undef,
- 'Carp' => undef,
- 'Carp::Heavy' => undef,
- 'CGI' => 2.752,
- 'CGI::Apache' => undef,
- 'CGI::Carp' => '1.20',
- 'CGI::Cookie' => 1.18,
- 'CGI::Fast' => 1.02,
- 'CGI::Pretty' => 1.05,
- 'CGI::Push' => 1.04,
- 'CGI::Switch' => undef,
- 'CGI::Util' => 1.1,
- 'charnames' => undef,
- 'Class::Struct' => 0.59,
- 'Config' => undef,
- 'constant' => 1.02,
- 'CPAN::FirstTime' => 1.53 ,
- 'CPAN' => '1.59_54',
- 'CPAN::Nox' => '1.00',
- 'Cwd' => 2.04,
- 'Data::Dumper' => 2.102,
- 'DB' => '1.0',
- 'DB_File' => 1.75,
- 'Devel::DProf' => '20000000.00_00',
- 'Devel::Peek' => '1.00_01',
- 'Devel::SelfStubber' => 1.01,
- 'diagnostics' => '1.0', # really v1.0, but that causes breakage
- 'DirHandle' => undef,
- 'Dumpvalue' => undef,
- 'DynaLoader' => 1.04,
- 'English' => undef,
- 'Env' => undef,
- 'Exporter' => 5.562,
- 'Exporter::Heavy' => undef,
- 'ExtUtils::Command' => 1.01,
- 'ExtUtils::Embed' => 1.2505,
- 'ExtUtils::Install' => 1.28 ,
- 'ExtUtils::Installed' => 0.02,
- 'ExtUtils::Liblist' => 1.26 ,
- 'ExtUtils::MakeMaker' => 5.45,
- 'ExtUtils::Manifest' => 1.33 ,
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => 1.14 ,
- 'ExtUtils::Mksymlists' => 1.17 ,
- 'ExtUtils::MM_Cygwin' => undef,
- 'ExtUtils::MM_OS2' => undef,
- 'ExtUtils::MM_Unix' => 1.12603 ,
- 'ExtUtils::MM_VMS' => undef,
- 'ExtUtils::MM_Win32' => undef,
- 'ExtUtils::Packlist' => 0.03,
- 'ExtUtils::testlib' => 1.11 ,
- 'ExtUtils::XSSymSet' => '1.0',
- 'Fatal' => 1.02,
- 'Fcntl' => 1.03,
- 'fields' => 1.01,
- 'File::Basename' => 2.6,
- 'File::CheckTree' => undef,
- 'File::Compare' => 1.1002,
- 'File::Copy' => 2.03,
- 'File::DosGlob' => undef,
- 'File::Find' => undef,
- 'File::Glob' => 0.991,
- '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::stat' => undef,
- 'File::Temp' => 0.12,
- 'FileCache' => undef,
- 'FileHandle' => '2.00',
- 'filetest' => undef,
- 'FindBin' => 1.42,
- 'GDBM_File' => 1.05,
- 'Getopt::Long' => 2.25,
- 'Getopt::Std' => 1.02,
- 'I18N::Collate' => undef,
- 'integer' => undef,
- 'IO' => '1.20',
- 'IO::Dir' => 1.03,
- 'IO::File' => 1.08,
- 'IO::Handle' => 1.21,
- 'IO::Pipe' => 1.121,
- 'IO::Poll' => 0.05,
- 'IO::Seekable' => 1.08,
- 'IO::Select' => 1.14,
- 'IO::Socket' => 1.26,
- 'IO::Socket::INET' => 1.25,
- 'IO::Socket::UNIX' => '1.20',
- 'IPC::Msg' => '1.00',
- 'IPC::Open2' => 1.01,
- 'IPC::Open3' => 1.0103,
- 'IPC::Semaphore' => '1.00',
- 'IPC::SysV' => 1.03,
- 'JNI' => 0.1,
- 'JPL::AutoLoader' => undef,
- 'JPL::Class' => undef,
- 'JPL::Compile' => undef,
- 'less' => undef,
- 'lib' => 0.5564,
- 'locale' => undef,
- 'Math::BigFloat' => 0.02,
- 'Math::BigInt' => 0.01,
- 'Math::Complex' => 1.31,
- 'Math::Trig' => 1,
- 'NDBM_File' => 1.04,
- 'Net::hostent' => undef,
- 'Net::netent' => undef,
- 'Net::Ping' => 2.02,
- 'Net::protoent' => undef,
- 'Net::servent' => undef,
- 'O' => undef,
- 'ODBM_File' => 1.03,
- 'Opcode' => 1.04,
- 'open' => undef,
- 'ops' => undef,
- 'OS2::DLL' => undef,
- 'OS2::ExtAttr' => 0.01,
- 'OS2::PrfDB' => 0.02,
- 'OS2::Process' => 0.2,
- 'OS2::REXX' => '1.00',
- 'overload' => undef,
- 'Pod::Checker' => 1.2,
- 'Pod::Find' => 0.21,
- 'Pod::Functions' => undef,
- 'Pod::Html' => 1.03,
- 'Pod::LaTeX' => 0.53,
- 'Pod::Man' => 1.15,
- 'Pod::InputObjects' => 1.13,
- 'Pod::Parser' => 1.13,
- 'Pod::ParseUtils' => 0.22,
- 'Pod::Plainer' => 0.01,
- '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,
- 'POSIX' => 1.03,
- 're' => 0.02,
- 'Safe' => 2.06,
- 'SDBM_File' => 1.03,
- 'Search::Dict' => undef,
- 'SelectSaver' => undef,
- 'SelfLoader' => 1.0902,
- 'Shell' => 0.3,
- 'sigtrap' => 1.02,
- 'Socket' => 1.72,
- 'strict' => 1.01,
- 'subs' => undef,
- 'Symbol' => 1.02,
- 'Sys::Hostname' => 1.1,
- 'Sys::Syslog' => 0.01,
- 'Term::ANSIColor' => 1.03,
- 'Term::Cap' => undef,
- 'Term::Complete' => undef,
- 'Term::ReadLine' => undef,
- 'Test' => 1.15,
- 'Test::Harness' => 1.1604,
- 'Text::Abbrev' => undef,
- 'Text::ParseWords' => 3.2,
- 'Text::Soundex' => '1.0',
- 'Text::Tabs' => 98.112801,
- 'Text::Wrap' => 2001.0131,
- 'Thread' => '1.0',
- 'Thread::Queue' => undef,
- 'Thread::Semaphore' => undef,
- 'Thread::Signal' => undef,
- 'Thread::Specific' => undef,
- 'Tie::Array' => 1.01,
- 'Tie::Handle' => '4.0',
- 'Tie::Hash' => undef,
- 'Tie::RefHash' => 1.3,
- 'Tie::Scalar' => undef,
- 'Tie::SubstrHash' => undef,
- 'Time::gmtime' => 1.01,
- 'Time::Local' => undef,
- 'Time::localtime' => 1.01,
- 'Time::tm' => undef,
- 'UNIVERSAL' => undef,
- 'User::grent' => undef,
- 'User::pwent' => undef,
- 'utf8' => undef,
- 'vars' => undef,
- 'VMS::DCLsym' => 1.01,
- 'VMS::Filespec' => undef,
- 'VMS::Stdio' => 2.2,
- 'vmsish' => undef,
- 'warnings' => undef,
- 'warnings::register' => undef,
- 'XSLoader' => '0.01',
+ 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 => {
- 'AnyDBM_File' => undef, #lib/AnyDBM_File.pm
- 'attributes' => '0.03', #lib/attributes.pm
- 'attrs' => '1.0', #lib/attrs.pm
- 'AutoLoader' => '5.58', #lib/AutoLoader.pm
- 'AutoSplit' => '1.0305', #lib/AutoSplit.pm
- 'autouse' => '1.02', #lib/autouse.pm
- 'B' => undef, #lib/B.pm
- 'B::Asmdata' => undef, #lib/B/Asmdata.pm
- 'B::Assembler' => '0.02', #lib/B/Assembler.pm
- 'B::Bblock' => undef, #lib/B/Bblock.pm
- 'B::Bytecode' => undef, #lib/B/Bytecode.pm
- 'B::C' => undef, #lib/B/C.pm
- 'B::CC' => undef, #lib/B/CC.pm
- 'B::Concise' => '0.51', #lib/B/Concise.pm
- 'B::Debug' => undef, #lib/B/Debug.pm
- 'B::Deparse' => '0.6', #lib/B/Deparse.pm
- 'B::Disassembler' => undef, #lib/B/Disassembler.pm
- 'B::Lint' => undef, #lib/B/Lint.pm
- 'B::Showlex' => undef, #lib/B/Showlex.pm
- 'B::Stackobj' => undef, #lib/B/Stackobj.pm
- 'B::Stash' => undef, #lib/B/Stash.pm
- 'B::Terse' => undef, #lib/B/Terse.pm
- 'B::Xref' => undef, #lib/B/Xref.pm
- 'base' => '1.01', #lib/base.pm
- 'Benchmark' => '1', #lib/Benchmark.pm
- 'blib' => '1.00', #lib/blib.pm
- 'ByteLoader' => '0.04', #lib/ByteLoader.pm
- 'bytes' => undef, #lib/bytes.pm
- 'Carp' => undef, #lib/Carp.pm
- 'Carp::Heavy' => undef, #lib/Carp/Heavy.pm
- 'CGI' => '2.752', #lib/CGI.pm
- 'CGI::Apache' => undef, #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.20', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.18', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.02', #lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.05', #lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #lib/CGI/Push.pm
- 'CGI::Switch' => undef, #lib/CGI/Switch.pm
- 'CGI::Util' => '1.1', #lib/CGI/Util.pm
- 'charnames' => undef, #lib/charnames.pm
- 'Class::Struct' => '0.59', #lib/Class/Struct.pm
- 'Config' => undef, #lib/Config.pm
- 'constant' => '1.02', #lib/constant.pm
- 'CPAN' => '1.59_54', #lib/CPAN.pm
- 'CPAN::FirstTime' => '1.53 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.00', #lib/CPAN/Nox.pm
- 'Cwd' => '2.04', #lib/Cwd.pm
- 'Data::Dumper' => '2.121', #lib/Data/Dumper.pm
- 'DB' => '1.0', #lib/DB.pm
- 'DB_File' => '1.806', #lib/DB_File.pm
- 'Devel::DProf' => '20000000.00_00', #lib/Devel/DProf.pm
- 'Devel::Peek' => '1.00_01', #lib/Devel/Peek.pm
- 'Devel::SelfStubber' => '1.01', #lib/Devel/SelfStubber.pm
- 'diagnostics' => '1.0', #lib/diagnostics.pm
- 'DirHandle' => undef, #lib/DirHandle.pm
- 'Dumpvalue' => undef, #lib/Dumpvalue.pm
- 'DynaLoader' => '1.04', #lib/DynaLoader.pm
- 'English' => undef, #lib/English.pm
- 'Env' => undef, #lib/Env.pm
- 'Errno' => '1.111', #lib/Errno.pm
- 'Exporter' => '5.562', #lib/Exporter.pm
- 'Exporter::Heavy' => undef, #lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.05', #lib/ExtUtils/Command.pm
- 'ExtUtils::Command::MM' => '0.03', #lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Embed' => '1.2505', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.32', #lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.08', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.01', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::Liblist::Kid'=> '1.3', #lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker' => '6.17', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #lib/ExtUtils/MakeMaker/vmsish.pm
- 'ExtUtils::Manifest' => '1.42', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM' => '0.04', #lib/ExtUtils/MM.pm
- 'ExtUtils::MM_Any' => '0.07', #lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.06', #lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.06', #lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM_OS2' => '1.04', #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.42', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.09', #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.03', #lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'Fatal' => '1.02', #lib/Fatal.pm
- 'Fcntl' => '1.03', #lib/Fcntl.pm
- 'fields' => '1.01', #lib/fields.pm
- 'File::Basename' => '2.6', #lib/File/Basename.pm
- 'File::CheckTree' => undef, #lib/File/CheckTree.pm
- 'File::Compare' => '1.1002', #lib/File/Compare.pm
- 'File::Copy' => '2.03', #lib/File/Copy.pm
- 'File::DosGlob' => undef, #lib/File/DosGlob.pm
- 'File::Find' => undef, #lib/File/Find.pm
- 'File::Glob' => '0.991', #lib/File/Glob.pm
- 'File::Path' => '1.0404', #lib/File/Path.pm
- 'File::Spec' => '0.86', #lib/File/Spec.pm
- 'File::Spec::Cygwin' => '1.1', #lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.4', #lib/File/Spec/Win32.pm
- 'File::stat' => undef, #lib/File/stat.pm
- 'File::Temp' => '0.14', #lib/File/Temp.pm
- 'FileCache' => undef, #lib/FileCache.pm
- 'FileHandle' => '2.00', #lib/FileHandle.pm
- 'filetest' => undef, #lib/filetest.pm
- 'FindBin' => '1.42', #lib/FindBin.pm
- 'GDBM_File' => '1.05', #ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.25', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.02', #lib/Getopt/Std.pm
- 'I18N::Collate' => undef, #lib/I18N/Collate.pm
- 'if' => '0.03', #lib/if.pm
- 'integer' => undef, #lib/integer.pm
- 'IO' => '1.20', #lib/IO.pm
- 'IO::Dir' => '1.03', #lib/IO/Dir.pm
- 'IO::File' => '1.08', #lib/IO/File.pm
- 'IO::Handle' => '1.21', #lib/IO/Handle.pm
- 'IO::Pipe' => '1.121', #lib/IO/Pipe.pm
- 'IO::Poll' => '0.05', #lib/IO/Poll.pm
- 'IO::Seekable' => '1.08', #lib/IO/Seekable.pm
- 'IO::Select' => '1.14', #lib/IO/Select.pm
- 'IO::Socket' => '1.26', #lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.25', #lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.20', #lib/IO/Socket/UNIX.pm
- 'IPC::Msg' => '1.00', #lib/IPC/Msg.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0103', #lib/IPC/Open3.pm
- 'IPC::Semaphore' => '1.00', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.03', #lib/IPC/SysV.pm
- 'JNI' => '0.1', #jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #jpl/JPL/Compile.pm
- 'less' => undef, #lib/less.pm
- 'lib' => '0.5564', #lib/lib.pm
- 'locale' => undef, #lib/locale.pm
- 'Math::BigFloat' => '0.02', #lib/Math/BigFloat.pm
- 'Math::BigInt' => '0.01', #lib/Math/BigInt.pm
- 'Math::Complex' => '1.31', #lib/Math/Complex.pm
- 'Math::Trig' => '1', #lib/Math/Trig.pm
- 'NDBM_File' => '1.04', #ext/NDBM_File/NDBM_File.pm
- 'Net::hostent' => undef, #lib/Net/hostent.pm
- 'Net::netent' => undef, #lib/Net/netent.pm
- 'Net::Ping' => '2.02', #lib/Net/Ping.pm
- 'Net::protoent' => undef, #lib/Net/protoent.pm
- 'Net::servent' => undef, #lib/Net/servent.pm
- 'O' => undef, #lib/O.pm
- 'ODBM_File' => '1.03', #ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.04', #lib/Opcode.pm
- 'open' => undef, #lib/open.pm
- 'ops' => '1.00', #lib/ops.pm
- 'OS2::DLL' => undef, #os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.01', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '0.2', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.00', #os2/OS2/REXX/REXX.pm
- 'overload' => undef, #lib/overload.pm
- 'Pod::Checker' => '1.2', #lib/Pod/Checker.pm
- 'Pod::Find' => '0.21', #lib/Pod/Find.pm
- 'Pod::Functions' => undef, #lib/Pod/Functions.pm
- 'Pod::Html' => '1.03', #lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.13', #lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.53', #lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.15', #lib/Pod/Man.pm
- 'Pod::Parser' => '1.13', #lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '0.22', #lib/Pod/ParseUtils.pm
- 'Pod::Plainer' => '0.01', #lib/Pod/Plainer.pm
- 'Pod::Select' => '1.13', #lib/Pod/Select.pm
- 'Pod::Text' => '2.08', #lib/Pod/Text.pm
- 'Pod::Text::Color' => '0.06', #lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.01', #lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1', #lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.14', #lib/Pod/Usage.pm
- 'POSIX' => '1.03', #lib/POSIX.pm
- 're' => '0.02', #lib/re.pm
- 'Safe' => '2.10', #lib/Safe.pm
- 'SDBM_File' => '1.03', #lib/SDBM_File.pm
- 'Search::Dict' => undef, #lib/Search/Dict.pm
- 'SelectSaver' => undef, #lib/SelectSaver.pm
- 'SelfLoader' => '1.0902', #lib/SelfLoader.pm
- 'Shell' => '0.3', #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'Socket' => '1.72', #lib/Socket.pm
- 'strict' => '1.01', #lib/strict.pm
- 'subs' => undef, #lib/subs.pm
- 'Symbol' => '1.02', #lib/Symbol.pm
- 'Sys::Hostname' => '1.1', #lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.01', #lib/Sys/Syslog.pm
- 'Term::ANSIColor' => '1.03', #lib/Term/ANSIColor.pm
- 'Term::Cap' => undef, #lib/Term/Cap.pm
- 'Term::Complete' => undef, #lib/Term/Complete.pm
- 'Term::ReadLine' => undef, #lib/Term/ReadLine.pm
- 'Test' => '1.24', #lib/Test.pm
- 'Test::Builder' => '0.17', #lib/Test/Builder.pm
- 'Test::Harness' => '2.30', #lib/Test/Harness.pm
- 'Test::Harness::Assert' => '0.01', #lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.01', #lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.15', #lib/Test/Harness/Straps.pm
- 'Test::More' => '0.47', #lib/Test/More.pm
- 'Test::Simple' => '0.47', #lib/Test/Simple.pm
- 'Text::Abbrev' => undef, #lib/Text/Abbrev.pm
- 'Text::ParseWords' => '3.2', #lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.0', #lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.0131', #lib/Text/Wrap.pm
- 'Thread' => '1.0', #ext/Thread/Thread.pm
- 'Thread::Queue' => undef, #ext/Thread/Thread/Queue.pm
- 'Thread::Semaphore' => undef, #ext/Thread/Thread/Semaphore.pm
- 'Thread::Signal' => undef, #ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => undef, #ext/Thread/Thread/Specific.pm
- 'Tie::Array' => '1.01', #lib/Tie/Array.pm
- 'Tie::Handle' => '4.0', #lib/Tie/Handle.pm
- 'Tie::Hash' => undef, #lib/Tie/Hash.pm
- 'Tie::RefHash' => '1.3', #lib/Tie/RefHash.pm
- 'Tie::Scalar' => undef, #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => undef, #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.01', #lib/Time/gmtime.pm
- 'Time::Local' => undef, #lib/Time/Local.pm
- 'Time::localtime' => '1.01', #lib/Time/localtime.pm
- 'Time::tm' => undef, #lib/Time/tm.pm
- 'Unicode' => '3.0.1', # lib/unicore/version
- 'UNIVERSAL' => undef, #lib/UNIVERSAL.pm
- 'User::grent' => undef, #lib/User/grent.pm
- 'User::pwent' => undef, #lib/User/pwent.pm
- 'utf8' => undef, #lib/utf8.pm
- 'vars' => undef, #lib/vars.pm
- 'VMS::DCLsym' => '1.01', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => undef, #vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.2', #vms/ext/Stdio/Stdio.pm
- 'vmsish' => undef, #vms/ext/vmsish.pm
- 'warnings' => undef, #lib/warnings.pm
- 'warnings::register' => undef, #lib/warnings/register.pm
- 'XSLoader' => '0.01', #lib/XSLoader.pm
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'Attribute::Handlers' => '0.76',
- 'attributes' => '0.04_01',
- 'attrs' => '1.01',
- 'AutoLoader' => '5.59',
- 'AutoSplit' => '1.0307',
- 'autouse' => '1.03',
- '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' => '1.00',
- 'B::Showlex' => '1.00',
- 'B::Stackobj' => '1.00',
- 'B::Stash' => '1.00',
- 'B::Terse' => '1.00',
- 'B::Xref' => '1.00',
- 'base' => '1.02',
- 'Benchmark' => '1.04',
- 'blib' => '1.01',
- 'ByteLoader' => '0.04',
- 'bytes' => '1.00',
- 'Carp' => '1.01',
- 'Carp::Heavy' => undef,
- '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::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.3',
- 'charnames' => '1.01',
- 'Class::ISA' => '0.32',
- 'Class::Struct' => '0.61',
- 'Config' => undef,
- 'constant' => '1.04',
- 'CPAN::FirstTime' => '1.54 ',
- 'CPAN' => '1.59_56',
- 'CPAN::Nox' => '1.00_01',
- 'Cwd' => '2.06',
- 'Data::Dumper' => '2.12',
- 'DB' => '1.0',
- 'DB_File' => '1.804',
- 'Devel::DProf' => '20000000.00_01',
- 'Devel::Peek' => '1.00_03',
- 'Devel::PPPort' => '2.0002',
- 'Devel::SelfStubber' => '1.03',
- 'diagnostics' => '1.1',
- 'Digest' => '1.00',
- 'Digest::MD5' => '2.16',
- 'DirHandle' => '1.00',
- 'Dumpvalue' => '1.10',
- 'DynaLoader' => 1.04,
- 'Encode' => '0.40',
- 'Encode::CN' => '0.02',
- 'Encode::CN::HZ' => undef,
- 'Encode::Encoding' => '0.02',
- 'Encode::Internal' => '0.30',
- 'Encode::iso10646_1' => '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::Tcl' => '1.01',
- 'Encode::Tcl::Escape' => '1.01',
- 'Encode::Tcl::Extended' => '1.01',
- 'Encode::Tcl::HanZi' => '1.01',
- 'Encode::Tcl::Table' => '1.01',
- 'Encode::TW' => '0.02',
- 'Encode::Unicode' => '0.30',
- 'Encode::usc2_le' => '0.30',
- 'Encode::utf8' => '0.30',
- 'Encode::XS' => '0.40',
- 'encoding' => '1.00',
- '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::MakeMaker' => '5.48_03',
- 'ExtUtils::Manifest' => '1.35',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.1401',
- 'ExtUtils::Mksymlists' => '1.18',
- '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::Packlist' => '0.04',
- 'ExtUtils::testlib' => '1.1201',
- 'ExtUtils::XSSymSet' => '1.0',
- 'Fatal' => '1.03',
- 'Fcntl' => '1.04',
- 'fields' => '1.02',
- '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::OS2' => '1.1',
- 'File::Spec::Unix' => '1.4',
- 'File::Spec::VMS' => '1.2',
- 'File::Spec::Win32' => '1.3',
- 'File::stat' => '1.00',
- 'File::Temp' => '0.13',
- 'FileCache' => '1.00',
- 'FileHandle' => '2.01',
- 'filetest' => '1.00',
- '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::Langinfo' => '0.01',
- 'I18N::LangTags' => '0.27',
- 'I18N::LangTags::List' => '0.25',
- 'if' => '0.01',
- 'integer' => '1.00',
- 'IO' => '1.20',
- '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::Open2' => '1.01',
- 'IPC::Open3' => '1.0104',
- 'IPC::Semaphore' => '1.00_00',
- 'IPC::SysV' => '1.03_00',
- 'JNI' => '0.1',
- 'JPL::AutoLoader' => undef,
- 'JPL::Class' => undef,
- 'JPL::Compile' => undef,
- 'less' => '0.01',
- 'lib' => '0.5564',
- 'List::Util' => '1.06_00',
- 'locale' => '1.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',
- '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',
- 'MIME::Base64' => '2.12',
- 'MIME::QuotedPrint' => '2.03',
- 'NDBM_File' => '1.04',
- 'Net::Cmd' => '2.21',
- 'Net::Config' => '1.10',
- 'Net::Domain' => '2.17',
- 'Net::FTP' => '2.64',
- 'Net::FTP::A' => '1.15',
- 'Net::FTP::dataconn' => '0.10',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::hostent' => '1.00',
- 'Net::netent' => '1.00',
- 'Net::Netrc' => '2.12',
- 'Net::NNTP' => '2.21',
- 'Net::Ping' => '2.12',
- 'Net::POP3' => '2.23',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.00',
- 'Net::SMTP' => '2.21',
- 'Net::Time' => '2.09',
- 'NEXT' => '0.50',
- 'O' => '1.00',
- 'ODBM_File' => '1.03',
- 'Opcode' => '1.05',
- 'open' => '1.01',
- 'ops' => '1.00',
- 'OS2::DLL' => '1.00',
- 'OS2::ExtAttr' => '0.01',
- 'OS2::PrfDB' => '0.02',
- 'OS2::Process' => '1.0',
- 'OS2::REXX' => '1.01',
- 'overload' => '1.00',
- '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::InputObjects' => '1.13',
- 'Pod::ParseLink' => '1.05',
- 'Pod::Parser' => '1.13',
- 'Pod::ParseUtils' => '0.22',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.13',
- 'Pod::Text' => '2.18',
- 'Pod::Text::Color' => '1.03',
- 'Pod::Text::Overstrike' => '1.08',
- 'Pod::Text::Termcap' => '1.09',
- 'Pod::Usage' => '1.14',
- 'POSIX' => '1.05',
- 're' => '0.03',
- 'Safe' => '2.07',
- 'Scalar::Util' => undef,
- 'SDBM_File' => '1.03',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.00',
- 'SelfLoader' => '1.0903',
- 'Shell' => '0.4',
- 'sigtrap' => '1.02',
- 'Socket' => '1.75',
- 'sort' => '1.00',
- 'Storable' => '1.015',
- 'strict' => '1.02',
- 'subs' => '1.00',
- 'Switch' => '2.06',
- 'Symbol' => '1.04',
- 'Sys::Hostname' => '1.1',
- '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::Tabs' => '98.112801',
- 'Text::Wrap' => '2001.0929',
- 'Thread' => '2.00',
- 'Thread::Queue' => '1.00',
- 'Thread::Semaphore' => '1.00',
- 'Thread::Signal' => '1.00',
- 'Thread::Specific' => '1.00',
- 'threads' => '0.05',
- 'threads::shared' => '0.90',
- 'Tie::Array' => '1.02',
- 'Tie::File' => '0.17',
- 'Tie::Hash' => '1.00',
- 'Tie::Handle' => '4.1',
- 'Tie::Memoize' => '1.0',
- 'Tie::RefHash' => '1.3_00',
- 'Tie::Scalar' => '1.00',
- 'Tie::SubstrHash' => '1.00',
- 'Time::gmtime' => '1.02',
- 'Time::HiRes' => '1.20_00',
- 'Time::Local' => '1.04',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'Unicode::Collate' => '0.10',
- 'Unicode::Normalize' => '0.14',
- 'Unicode::UCD' => '0.2',
- 'UNIVERSAL' => '1.00',
- 'User::grent' => '1.00',
- 'User::pwent' => '1.00',
- 'utf8' => '1.00',
- 'vars' => '1.01',
- 'VMS::DCLsym' => '1.02',
- 'VMS::Filespec' => '1.1',
- 'VMS::Stdio' => '2.3',
- 'vmsish' => '1.00',
- 'warnings' => '1.00',
- 'warnings::register' => '1.00',
- 'XS::Typemap' => '0.01',
- 'XSLoader' => '0.01',
+ 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 => {
- 'AnyDBM_File' => '1.00', #./lib/AnyDBM_File.pm
- 'Attribute::Handlers' => '0.77', #./lib/Attribute/Handlers.pm
- 'attributes' => '0.05', #./lib/attributes.pm
- 'attrs' => '1.01', #./ext/attrs/attrs.pm
- 'AutoLoader' => '5.59', #./lib/AutoLoader.pm
- 'AutoSplit' => '1.0307', #./lib/AutoSplit.pm
- 'autouse' => '1.03', #./lib/autouse.pm
- 'B' => '1.01', #./ext/B/B.pm
- 'B::Asmdata' => '1.00', #./ext/B/B/Asmdata.pm
- 'B::Assembler' => '0.04', #./ext/B/B/Assembler.pm
- 'B::Bblock' => '1.00', #./ext/B/B/Bblock.pm
- 'B::Bytecode' => '1.00', #./ext/B/B/Bytecode.pm
- 'B::C' => '1.01', #./ext/B/B/C.pm
- 'B::CC' => '1.00', #./ext/B/B/CC.pm
- 'B::Concise' => '0.52', #./ext/B/B/Concise.pm
- 'B::Debug' => '1.00', #./ext/B/B/Debug.pm
- 'B::Deparse' => '0.63', #./ext/B/B/Deparse.pm
- 'B::Disassembler' => '1.01', #./ext/B/B/Disassembler.pm
- 'B::Lint' => '1.01', #./ext/B/B/Lint.pm
- 'B::Showlex' => '1.00', #./ext/B/B/Showlex.pm
- 'B::Stackobj' => '1.00', #./ext/B/B/Stackobj.pm
- 'B::Stash' => '1.00', #./ext/B/B/Stash.pm
- 'B::Terse' => '1.00', #./ext/B/B/Terse.pm
- 'B::Xref' => '1.01', #./ext/B/B/Xref.pm
- 'base' => '1.03', #./lib/base.pm
- 'Benchmark' => '1.04', #./lib/Benchmark.pm
- 'bigint' => '0.02', #./lib/bigint.pm
- 'bignum' => '0.11', #./lib/bignum.pm
- 'bigrat' => '0.04', #./lib/bigrat.pm
- 'blib' => '1.02', #./lib/blib.pm
- 'ByteLoader' => '0.04', #./ext/ByteLoader/ByteLoader.pm
- 'bytes' => '1.00', #./lib/bytes.pm
- 'Carp' => '1.01', #./lib/Carp.pm
- 'Carp::Heavy' => 'undef', #./lib/Carp/Heavy.pm
- 'CGI' => '2.81', #./lib/CGI.pm
- 'CGI::Apache' => '1.00', #./lib/CGI/Apache.pm
- 'CGI::Carp' => '1.23', #./lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.20', #./lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.04', #./lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.05_00', #./lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #./lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #./lib/CGI/Switch.pm
- 'CGI::Util' => '1.3', #./lib/CGI/Util.pm
- 'charnames' => '1.01', #./lib/charnames.pm
- 'Class::ISA' => '0.32', #./lib/Class/ISA.pm
- 'Class::Struct' => '0.61', #./lib/Class/Struct.pm
- 'constant' => '1.04', #./lib/constant.pm
- 'Config' => undef,
- 'CPAN' => '1.61', #./lib/CPAN.pm
- 'CPAN::FirstTime' => '1.56 ', #./lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.02', #./lib/CPAN/Nox.pm
- 'Cwd' => '2.06', #./lib/Cwd.pm
- 'Data::Dumper' => '2.12', #./ext/Data/Dumper/Dumper.pm
- 'DB' => '1.0', #./lib/DB.pm
- 'DB_File' => '1.804', #./ext/DB_File/DB_File.pm
- 'Devel::DProf' => '20000000.00_01', #./ext/Devel/DProf/DProf.pm
- 'Devel::Peek' => '1.00_03', #./ext/Devel/Peek/Peek.pm
- 'Devel::PPPort' => '2.0002', #./ext/Devel/PPPort/PPPort.pm
- 'Devel::SelfStubber' => '1.03', #./lib/Devel/SelfStubber.pm
- 'diagnostics' => '1.1', #./lib/diagnostics.pm
- 'Digest' => '1.00', #./lib/Digest.pm
- 'Digest::MD5' => '2.20', #./ext/Digest/MD5/MD5.pm
- 'DirHandle' => '1.00', #./lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #./lib/Dumpvalue.pm
- 'DynaLoader' => '1.04',
- 'Encode' => '1.75', #./ext/Encode/Encode.pm
- 'Encode::Alias' => '1.32', #./ext/Encode/lib/Encode/Alias.pm
- 'Encode::Byte' => '1.22', #./ext/Encode/Byte/Byte.pm
- 'Encode::CJKConstants' => '1.00', #./ext/Encode/lib/Encode/CJKConstants.pm
- 'Encode::CN' => '1.24', #./ext/Encode/CN/CN.pm
- 'Encode::CN::HZ' => '1.04', #./ext/Encode/lib/Encode/CN/HZ.pm
- 'Encode::Config' => '1.06', #./ext/Encode/lib/Encode/Config.pm
- 'Encode::EBCDIC' => '1.21', #./ext/Encode/EBCDIC/EBCDIC.pm
- 'Encode::Encoder' => '0.05', #./ext/Encode/lib/Encode/Encoder.pm
- 'Encode::Encoding' => '1.30', #./ext/Encode/lib/Encode/Encoding.pm
- 'Encode::Guess' => '1.06', #./ext/Encode/lib/Encode/Guess.pm
- 'Encode::JP::H2Z' => '1.02', #./ext/Encode/lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '1.08', #./ext/Encode/lib/Encode/JP/JIS7.pm
- 'Encode::JP' => '1.25', #./ext/Encode/JP/JP.pm
- 'Encode::KR' => '1.22', #./ext/Encode/KR/KR.pm
- 'Encode::KR::2022_KR' => '1.05', #./ext/Encode/lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '1.05', #./ext/Encode/lib/Encode/MIME/Header.pm
- 'Encode::Symbol' => '1.22', #./ext/Encode/Symbol/Symbol.pm
- 'Encode::TW' => '1.26', #./ext/Encode/TW/TW.pm
- 'Encode::Unicode' => '1.37', #./ext/Encode/Unicode/Unicode.pm
- 'encoding' => '1.35', #./ext/Encode/encoding.pm
- 'English' => '1.00', #./lib/English.pm
- 'Env' => '1.00', #./lib/Env.pm
- 'Exporter' => '5.566', #./lib/Exporter.pm
- 'Exporter::Heavy' => '5.566', #./lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.04', #./lib/ExtUtils/Command.pm
- 'ExtUtils::Command::MM' => '0.01', #./lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Constant' => '0.12', #./lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #./lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.29', #./lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.06', #./lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.00', #./lib/ExtUtils/Liblist.pm
- 'ExtUtils::Liblist::Kid'=> '1.29', #./lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker' => '6.03', #./lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.38', #./lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.15', #./lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #./lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM' => '0.04', #./lib/ExtUtils/MM.pm
- 'ExtUtils::MM_Any' => '0.04', #./lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.03', #./lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.04', #./lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.01', #./lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.03', #./lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.05', #./lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM_OS2' => '1.03', #./lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.33', #./lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.01', #./lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.65', #./lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.05', #./lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.02', #./lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #./lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #./lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #./lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #./vms/ext/XSSymSet.pm
- 'Fatal' => '1.03', #./lib/Fatal.pm
- 'Fcntl' => '1.04', #./ext/Fcntl/Fcntl.pm
- 'fields' => '1.02', #./lib/fields.pm
- 'File::Basename' => '2.71', #./lib/File/Basename.pm
- 'File::CheckTree' => '4.2', #./lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #./lib/File/Compare.pm
- 'File::Copy' => '2.05', #./lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #./lib/File/DosGlob.pm
- 'File::Find' => '1.04', #./lib/File/Find.pm
- 'File::Glob' => '1.01', #./ext/File/Glob/Glob.pm
- 'File::Path' => '1.05', #./lib/File/Path.pm
- 'File::Spec' => '0.83', #./lib/File/Spec.pm
- 'File::Spec::Cygwin' => '1.0', #./lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.00', #./lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.2', #./lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.3', #./lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.1', #./lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.4', #./lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.2', #./lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.3', #./lib/File/Spec/Win32.pm
- 'File::stat' => '1.00', #./lib/File/stat.pm
- 'File::Temp' => '0.13', #./lib/File/Temp.pm
- 'FileCache' => '1.021', #./lib/FileCache.pm
- 'FileHandle' => '2.01', #./lib/FileHandle.pm
- 'filetest' => '1.00', #./lib/filetest.pm
- 'Filter::Simple' => '0.78', #./lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.06', #./ext/Filter/Util/Call/Call.pm
- 'FindBin' => '1.43', #./lib/FindBin.pm
- 'GDBM_File' => '1.06', #./ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.32', #./lib/Getopt/Long.pm
- 'Getopt::Std' => '1.03', #./lib/Getopt/Std.pm
- 'Hash::Util' => '0.04', #./lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #./lib/I18N/Collate.pm
- 'I18N::Langinfo' => '0.01', #./ext/I18N/Langinfo/Langinfo.pm
- 'I18N::LangTags' => '0.27', #./lib/I18N/LangTags.pm
- 'I18N::LangTags::List' => '0.25', #./lib/I18N/LangTags/List.pm
- 'if' => '0.01', #./lib/if.pm
- 'integer' => '1.00', #./lib/integer.pm
- 'IO' => '1.20', #./ext/IO/IO.pm
- 'IO::Dir' => '1.03_00', #./ext/IO/lib/IO/Dir.pm
- 'IO::File' => '1.09', #./ext/IO/lib/IO/File.pm
- 'IO::Handle' => '1.21_00', #./ext/IO/lib/IO/Handle.pm
- 'IO::Pipe' => '1.122', #./ext/IO/lib/IO/Pipe.pm
- 'IO::Poll' => '0.06', #./ext/IO/lib/IO/Poll.pm
- 'IO::Seekable' => '1.08_00', #./ext/IO/lib/IO/Seekable.pm
- 'IO::Select' => '1.15', #./ext/IO/lib/IO/Select.pm
- 'IO::Socket' => '1.27', #./ext/IO/lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.26', #./ext/IO/lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.20_00', #./ext/IO/lib/IO/Socket/UNIX.pm
- 'IPC::Open2' => '1.01', #./lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0104', #./lib/IPC/Open3.pm
- 'IPC::Msg' => '1.00_00', #./ext/IPC/SysV/Msg.pm
- 'IPC::Semaphore' => '1.00_00', #./ext/IPC/SysV/Semaphore.pm
- 'IPC::SysV' => '1.03_00', #./ext/IPC/SysV/SysV.pm
- 'JNI' => '0.1', #./jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #./jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #./jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #./jpl/JPL/Compile.pm
- 'less' => '0.01', #./lib/less.pm
- 'lib' => '0.5564',
- 'List::Util' => '1.07_00', #./ext/List/Util/lib/List/Util.pm
- 'locale' => '1.00', #./lib/locale.pm
- 'Locale::Constants' => '2.01', #./lib/Locale/Constants.pm
- 'Locale::Country' => '2.04', #./lib/Locale/Country.pm
- 'Locale::Currency' => '2.01', #./lib/Locale/Currency.pm
- 'Locale::Language' => '2.01', #./lib/Locale/Language.pm
- 'Locale::Maketext' => '1.03', #./lib/Locale/Maketext.pm
- 'Locale::Script' => '2.01', #./lib/Locale/Script.pm
- 'Math::BigFloat' => '1.35', #./lib/Math/BigFloat.pm
- 'Math::BigFloat::Trace' => '0.01', #./lib/Math/BigFloat/Trace.pm
- 'Math::BigInt' => '1.60', #./lib/Math/BigInt.pm
- 'Math::BigInt::Calc' => '0.30', #./lib/Math/BigInt/Calc.pm
- 'Math::BigInt::Trace' => '0.01', #./lib/Math/BigInt/Trace.pm
- 'Math::BigRat' => '0.07', #./lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #./lib/Math/Complex.pm
- 'Math::Trig' => '1.01', #./lib/Math/Trig.pm
- 'Memoize' => '1.01', #./lib/Memoize.pm
- 'Memoize::AnyDBM_File' => '0.65', #./lib/Memoize/AnyDBM_File.pm
- 'Memoize::Expire' => '1.00', #./lib/Memoize/Expire.pm
- 'Memoize::ExpireFile' => '1.01', #./lib/Memoize/ExpireFile.pm
- 'Memoize::ExpireTest' => '0.65', #./lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #./lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #./lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #./lib/Memoize/Storable.pm
- 'MIME::Base64' => '2.12', #./ext/MIME/Base64/Base64.pm
- 'MIME::QuotedPrint' => '2.03', #./ext/MIME/Base64/QuotedPrint.pm
- 'NDBM_File' => '1.04', #./ext/NDBM_File/NDBM_File.pm
- 'Net::Cmd' => '2.21', #./lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #./lib/Net/Config.pm
- 'Net::Domain' => '2.17', #./lib/Net/Domain.pm
- 'Net::FTP' => '2.65', #./lib/Net/FTP.pm
- 'Net::FTP::A' => '1.15', #./lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #./lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #./lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #./lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #./lib/Net/FTP/L.pm
- 'Net::hostent' => '1.00', #./lib/Net/hostent.pm
- 'Net::netent' => '1.00', #./lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #./lib/Net/Netrc.pm
- 'Net::NNTP' => '2.21', #./lib/Net/NNTP.pm
- 'Net::Ping' => '2.19', #./lib/Net/Ping.pm
- 'Net::POP3' => '2.23', #./lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #./lib/Net/protoent.pm
- 'Net::servent' => '1.00', #./lib/Net/servent.pm
- 'Net::SMTP' => '2.24', #./lib/Net/SMTP.pm
- 'Net::Time' => '2.09', #./lib/Net/Time.pm
- 'NEXT' => '0.50', #./lib/NEXT.pm
- 'O' => '1.00', #./ext/B/O.pm
- 'ODBM_File' => '1.03', #./ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.05', #./ext/Opcode/Opcode.pm
- 'open' => '1.01', #./lib/open.pm
- 'ops' => '1.00', #./ext/Opcode/ops.pm
- 'OS2::DLL' => '1.00', #./os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.01', #./os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.02', #./os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.0', #./os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.01', #./os2/OS2/REXX/REXX.pm
- 'overload' => '1.00', #./lib/overload.pm
- 'PerlIO' => '1.01', #./lib/PerlIO.pm
- 'PerlIO::encoding' => '0.06', #./ext/PerlIO/encoding/encoding.pm
- 'PerlIO::scalar' => '0.01', #./ext/PerlIO/scalar/scalar.pm
- 'PerlIO::via' => '0.01', #./ext/PerlIO/via/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.04', #./lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.3', #./lib/Pod/Checker.pm
- 'Pod::Find' => '0.22', #./lib/Pod/Find.pm
- 'Pod::Functions' => '1.01', #./lib/Pod/Functions.pm
- 'Pod::Html' => '1.04', #./lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.13', #./lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.54', #./lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.33', #./lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.05', #./lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.13', #./lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '0.22', #./lib/Pod/ParseUtils.pm
- 'Pod::Plainer' => '0.01', #./lib/Pod/Plainer.pm
- 'Pod::Select' => '1.13', #./lib/Pod/Select.pm
- 'Pod::Text' => '2.19', #./lib/Pod/Text.pm
- 'Pod::Text::Color' => '1.03', #./lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.08', #./lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.09', #./lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.14', #./lib/Pod/Usage.pm
- 'POSIX' => '1.05', #./ext/POSIX/POSIX.pm
- 're' => '0.03', #./ext/re/re.pm
- 'Safe' => '2.07', #./ext/Opcode/Safe.pm
- 'Scalar::Util' => 'undef', #./ext/List/Util/lib/Scalar/Util.pm
- 'SDBM_File' => '1.03', #./ext/SDBM_File/SDBM_File.pm
- 'Search::Dict' => '1.02', #./lib/Search/Dict.pm
- 'SelectSaver' => '1.00', #./lib/SelectSaver.pm
- 'SelfLoader' => '1.0903', #./lib/SelfLoader.pm
- 'Shell' => '0.4', #./lib/Shell.pm
- 'sigtrap' => '1.02', #./lib/sigtrap.pm
- 'Socket' => '1.75', #./ext/Socket/Socket.pm
- 'sort' => '1.01', #./lib/sort.pm
- 'Storable' => '2.04', #./ext/Storable/Storable.pm
- 'strict' => '1.02', #./lib/strict.pm
- 'subs' => '1.00', #./lib/subs.pm
- 'Switch' => '2.09', #./lib/Switch.pm
- 'Symbol' => '1.04', #./lib/Symbol.pm
- 'Sys::Hostname' => '1.1', #./ext/Sys/Hostname/Hostname.pm
- 'Sys::Syslog' => '0.03', #./ext/Sys/Syslog/Syslog.pm
- 'Term::ANSIColor' => '1.04', #./lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.07', #./lib/Term/Cap.pm
- 'Term::Complete' => '1.4', #./lib/Term/Complete.pm
- 'Term::ReadLine' => '1.00', #./lib/Term/ReadLine.pm
- 'Test' => '1.20', #./lib/Test.pm
- 'Test::Builder' => '0.15', #./lib/Test/Builder.pm
- 'Test::Harness' => '2.26', #./lib/Test/Harness.pm
- 'Test::Harness::Assert' => '0.01', #./lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.01', #./lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.14', #./lib/Test/Harness/Straps.pm
- 'Test::More' => '0.45', #./lib/Test/More.pm
- 'Test::Simple' => '0.45', #./lib/Test/Simple.pm
- 'Text::Abbrev' => '1.00', #./lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.89', #./lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.21', #./lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #./lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #./lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.0929', #./lib/Text/Wrap.pm
- 'Thread' => '2.00', #./lib/Thread.pm
- 'Thread::Queue' => '2.00', #./lib/Thread/Queue.pm
- 'Thread::Semaphore' => '2.00', #./lib/Thread/Semaphore.pm
- 'Thread::Signal' => '1.00', #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #./ext/Thread/Thread/Specific.pm
- 'threads' => '0.99', #./ext/threads/threads.pm
- 'threads::shared' => '0.90', #./ext/threads/shared/shared.pm
- 'Tie::Array' => '1.02', #./lib/Tie/Array.pm
- 'Tie::File' => '0.93', #./lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #./lib/Tie/Handle.pm
- 'Tie::Hash' => '1.00', #./lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #./lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.30', #./lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #./lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #./lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #./lib/Time/gmtime.pm
- 'Time::HiRes' => '1.20_00', #./ext/Time/HiRes/HiRes.pm
- 'Time::Local' => '1.04', #./lib/Time/Local.pm
- 'Time::localtime' => '1.02', #./lib/Time/localtime.pm
- 'Time::tm' => '1.00', #./lib/Time/tm.pm
- 'Unicode' => '3.2.0', # lib/unicore/version
- 'Unicode::Collate' => '0.12', #./lib/Unicode/Collate.pm
- 'Unicode::Normalize' => '0.17', #./ext/Unicode/Normalize/Normalize.pm
- 'Unicode::UCD' => '0.2', #./lib/Unicode/UCD.pm
- 'UNIVERSAL' => '1.00', #./lib/UNIVERSAL.pm
- 'User::grent' => '1.00', #./lib/User/grent.pm
- 'User::pwent' => '1.00', #./lib/User/pwent.pm
- 'utf8' => '1.00', #./lib/utf8.pm
- 'vars' => '1.01', #./lib/vars.pm
- 'VMS::DCLsym' => '1.02', #./vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.1', #./vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.3', #./vms/ext/Stdio/Stdio.pm
- 'vmsish' => '1.00', #./lib/vmsish.pm
- 'warnings' => '1.00', #./lib/warnings.pm
- 'warnings::register' => '1.00', #./lib/warnings/register.pm
- 'XS::APItest' => '0.01', #./ext/XS/APItest/APItest.pm
- 'XS::Typemap' => '0.01', #./ext/XS/Typemap/Typemap.pm
- 'XSLoader' => '0.01',
+ 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 => {
- 'AnyDBM_File' => '1.00', #./lib/AnyDBM_File.pm
- 'Attribute::Handlers' => '0.78', #./lib/Attribute/Handlers.pm
- 'attributes' => '0.06', #./lib/attributes.pm
- 'attrs' => '1.01', #./lib/attrs.pm
- 'AutoLoader' => '5.60', #./lib/AutoLoader.pm
- 'AutoSplit' => '1.04', #./lib/AutoSplit.pm
- 'autouse' => '1.03', #./lib/autouse.pm
- 'B' => '1.02', #./lib/B.pm
- 'B::Asmdata' => '1.01', #./lib/B/Asmdata.pm
- 'B::Assembler' => '0.06', #./lib/B/Assembler.pm
- 'B::Bblock' => '1.02', #./lib/B/Bblock.pm
- 'B::Bytecode' => '1.01', #./lib/B/Bytecode.pm
- 'B::C' => '1.02', #./lib/B/C.pm
- 'B::CC' => '1.00', #./lib/B/CC.pm
- 'B::Concise' => '0.56', #./lib/B/Concise.pm
- 'B::Debug' => '1.01', #./lib/B/Debug.pm
- 'B::Deparse' => '0.64', #./lib/B/Deparse.pm
- 'B::Disassembler' => '1.03', #./lib/B/Disassembler.pm
- 'B::Lint' => '1.02', #./lib/B/Lint.pm
- 'B::Showlex' => '1.00', #./lib/B/Showlex.pm
- 'B::Stackobj' => '1.00', #./lib/B/Stackobj.pm
- 'B::Stash' => '1.00', #./lib/B/Stash.pm
- 'B::Terse' => '1.02', #./lib/B/Terse.pm
- 'B::Xref' => '1.01', #./lib/B/Xref.pm
- 'base' => '2.03', #./lib/base.pm
- 'Benchmark' => '1.051', #./lib/Benchmark.pm
- 'bigint' => '0.04', #./lib/bigint.pm
- 'bignum' => '0.14', #./lib/bignum.pm
- 'bigrat' => '0.06', #./lib/bigrat.pm
- 'blib' => '1.02', #./lib/blib.pm
- 'ByteLoader' => '0.05', #./lib/ByteLoader.pm
- 'bytes' => '1.01', #./lib/bytes.pm
- 'Carp' => '1.01', #./lib/Carp.pm
- 'Carp::Heavy' => '1.01', #./lib/Carp/Heavy.pm
- 'CGI' => '3.00', #./lib/CGI.pm
- 'CGI::Apache' => '1.00', #./lib/CGI/Apache.pm
- 'CGI::Carp' => '1.26', #./lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.24', #./lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.041', #./lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.07_00', #./lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #./lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #./lib/CGI/Switch.pm
- 'CGI::Util' => '1.31', #./lib/CGI/Util.pm
- 'charnames' => '1.02', #./lib/charnames.pm
- 'Class::ISA' => '0.32', #./lib/Class/ISA.pm
- 'Class::Struct' => '0.63', #./lib/Class/Struct.pm
- 'Config' => undef, #./lib/Config.pm
- 'constant' => '1.04', #./lib/constant.pm
- 'CPAN' => '1.76_01', #./lib/CPAN.pm
- 'CPAN::FirstTime' => '1.60 ', #./lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.03', #./lib/CPAN/Nox.pm
- 'Cwd' => '2.08', #./lib/Cwd.pm
- 'Data::Dumper' => '2.121', #./lib/Data/Dumper.pm
- 'DB' => '1.0', #./lib/DB.pm
- 'DB_File' => '1.806', #./lib/DB_File.pm
- 'Devel::DProf' => '20030813.00', #./lib/Devel/DProf.pm
- 'Devel::Peek' => '1.01', #./lib/Devel/Peek.pm
- 'Devel::PPPort' => '2.007', #./lib/Devel/PPPort.pm
- 'Devel::SelfStubber' => '1.03', #./lib/Devel/SelfStubber.pm
- 'diagnostics' => '1.11', #./lib/diagnostics.pm
- 'Digest' => '1.02', #./lib/Digest.pm
- 'Digest::MD5' => '2.27', #./lib/Digest/MD5.pm
- 'DirHandle' => '1.00', #./lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #./lib/Dumpvalue.pm
- 'DynaLoader' => '1.04', #./lib/DynaLoader.pm
- 'Encode' => '1.9801', #./lib/Encode.pm
- 'Encode::Alias' => '1.38', #./lib/Encode/Alias.pm
- 'Encode::Byte' => '1.23', #./lib/Encode/Byte.pm
- 'Encode::CJKConstants' => '1.02', #./lib/Encode/CJKConstants.pm
- 'Encode::CN' => '1.24', #./lib/Encode/CN.pm
- 'Encode::CN::HZ' => '1.05', #./lib/Encode/CN/HZ.pm
- 'Encode::Config' => '1.07', #./lib/Encode/Config.pm
- 'Encode::EBCDIC' => '1.21', #./lib/Encode/EBCDIC.pm
- 'Encode::Encoder' => '0.07', #./lib/Encode/Encoder.pm
- 'Encode::Encoding' => '1.33', #./lib/Encode/Encoding.pm
- 'Encode::Guess' => '1.09', #./lib/Encode/Guess.pm
- 'Encode::JP' => '1.25', #./lib/Encode/JP.pm
- 'Encode::JP::H2Z' => '1.02', #./lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '1.12', #./lib/Encode/JP/JIS7.pm
- 'Encode::KR' => '1.23', #./lib/Encode/KR.pm
- 'Encode::KR::2022_KR' => '1.06', #./lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '1.09', #./lib/Encode/MIME/Header.pm
- 'Encode::Symbol' => '1.22', #./lib/Encode/Symbol.pm
- 'Encode::TW' => '1.26', #./lib/Encode/TW.pm
- 'Encode::Unicode' => '1.40', #./lib/Encode/Unicode.pm
- 'Encode::Unicode::UTF7' => '0.02', #./lib/Encode/Unicode/UTF7.pm
- 'encoding' => '1.47', #./lib/encoding.pm
- 'English' => '1.01', #./lib/English.pm
- 'Env' => '1.00', #./lib/Env.pm
- 'Errno' => '1.09_00', #./lib/Errno.pm
- 'Exporter' => '5.567', #./lib/Exporter.pm
- 'Exporter::Heavy' => '5.567', #./lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.05', #./lib/ExtUtils/Command.pm
- 'ExtUtils::Command::MM' => '0.03', #./lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Constant' => '0.14', #./lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #./lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.32', #./lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.08', #./lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.01', #./lib/ExtUtils/Liblist.pm
- 'ExtUtils::Liblist::Kid'=> '1.3', #./lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker' => '6.17', #./lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #./lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #./lib/ExtUtils/MakeMaker/vmsish.pm
- 'ExtUtils::Manifest' => '1.42', #./lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef, #./lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #./lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #./lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM' => '0.04', #./lib/ExtUtils/MM.pm
- 'ExtUtils::MM_Any' => '0.07', #./lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #./lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.06', #./lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #./lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #./lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.06', #./lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM_OS2' => '1.04', #./lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.42', #./lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #./lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #./lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.09', #./lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.03', #./lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #./lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #./lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #./lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #./vms/ext/XSSymSet.pm
- 'Fatal' => '1.03', #./lib/Fatal.pm
- 'Fcntl' => '1.05', #./lib/Fcntl.pm
- 'fields' => '2.03', #./lib/fields.pm
- 'File::Basename' => '2.72', #./lib/File/Basename.pm
- 'File::CheckTree' => '4.2', #./lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #./lib/File/Compare.pm
- 'File::Copy' => '2.06', #./lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #./lib/File/DosGlob.pm
- 'File::Find' => '1.05', #./lib/File/Find.pm
- 'File::Glob' => '1.02', #./lib/File/Glob.pm
- 'File::Path' => '1.06', #./lib/File/Path.pm
- 'File::Spec' => '0.86', #./lib/File/Spec.pm
- 'File::Spec::Cygwin' => '1.1', #./lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #./lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #./lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #./lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #./lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #./lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #./lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.4', #./lib/File/Spec/Win32.pm
- 'File::stat' => '1.00', #./lib/File/stat.pm
- 'File::Temp' => '0.14', #./lib/File/Temp.pm
- 'FileCache' => '1.03', #./lib/FileCache.pm
- 'FileHandle' => '2.01', #./lib/FileHandle.pm
- 'filetest' => '1.01', #./lib/filetest.pm
- 'Filter::Simple' => '0.78', #./lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.0601', #./lib/Filter/Util/Call.pm
- 'FindBin' => '1.43', #./lib/FindBin.pm
- 'GDBM_File' => '1.07', #./ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.34', #./lib/Getopt/Long.pm
- 'Getopt::Std' => '1.04', #./lib/Getopt/Std.pm
- 'Hash::Util' => '0.05', #./lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #./lib/I18N/Collate.pm
- 'I18N::Langinfo' => '0.02', #./lib/I18N/Langinfo.pm
- 'I18N::LangTags' => '0.28', #./lib/I18N/LangTags.pm
- 'I18N::LangTags::List' => '0.26', #./lib/I18N/LangTags/List.pm
- 'if' => '0.03', #./lib/if.pm
- 'integer' => '1.00', #./lib/integer.pm
- 'IO' => '1.21', #./lib/IO.pm
- 'IO::Dir' => '1.04', #./lib/IO/Dir.pm
- 'IO::File' => '1.10', #./lib/IO/File.pm
- 'IO::Handle' => '1.23', #./lib/IO/Handle.pm
- 'IO::Pipe' => '1.122', #./lib/IO/Pipe.pm
- 'IO::Poll' => '0.06', #./lib/IO/Poll.pm
- 'IO::Seekable' => '1.09', #./lib/IO/Seekable.pm
- 'IO::Select' => '1.16', #./lib/IO/Select.pm
- 'IO::Socket' => '1.28', #./lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.27', #./lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.21', #./lib/IO/Socket/UNIX.pm
- 'IPC::Msg' => '1.02', #./lib/IPC/Msg.pm
- 'IPC::Open2' => '1.01', #./lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0105', #./lib/IPC/Open3.pm
- 'IPC::Semaphore' => '1.02', #./lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.04', #./lib/IPC/SysV.pm
- 'JNI' => '0.2', #./jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #./jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #./jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #./jpl/JPL/Compile.pm
- 'less' => '0.01', #./lib/less.pm
- 'lib' => '0.5565', #./lib/lib.pm
- 'List::Util' => '1.13', #./lib/List/Util.pm
- 'locale' => '1.00', #./lib/locale.pm
- 'Locale::Constants' => '2.01', #./lib/Locale/Constants.pm
- 'Locale::Country' => '2.61', #./lib/Locale/Country.pm
- 'Locale::Currency' => '2.21', #./lib/Locale/Currency.pm
- 'Locale::Language' => '2.21', #./lib/Locale/Language.pm
- 'Locale::Maketext' => '1.06', #./lib/Locale/Maketext.pm
- 'Locale::Maketext::Guts'=> undef, #./lib/Locale/Maketext/Guts.pm
- 'Locale::Maketext::GutsLoader'=> undef, #./lib/Locale/Maketext/GutsLoader.pm
- 'Locale::Script' => '2.21', #./lib/Locale/Script.pm
- 'Math::BigFloat' => '1.40', #./lib/Math/BigFloat.pm
- 'Math::BigFloat::Trace' => '0.01', #./lib/Math/BigFloat/Trace.pm
- 'Math::BigInt' => '1.66', #./lib/Math/BigInt.pm
- 'Math::BigInt::Calc' => '0.36', #./lib/Math/BigInt/Calc.pm
- 'Math::BigInt::Scalar' => '0.11', #./lib/Math/BigInt/Scalar.pm
- 'Math::BigInt::Trace' => '0.01', #./lib/Math/BigInt/Trace.pm
- 'Math::BigRat' => '0.10', #./lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #./lib/Math/Complex.pm
- 'Math::Trig' => '1.02', #./lib/Math/Trig.pm
- 'Memoize' => '1.01', #./lib/Memoize.pm
- 'Memoize::AnyDBM_File' => '0.65', #./lib/Memoize/AnyDBM_File.pm
- 'Memoize::Expire' => '1.00', #./lib/Memoize/Expire.pm
- 'Memoize::ExpireFile' => '1.01', #./lib/Memoize/ExpireFile.pm
- 'Memoize::ExpireTest' => '0.65', #./lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #./lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #./lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #./lib/Memoize/Storable.pm
- 'MIME::Base64' => '2.20', #./lib/MIME/Base64.pm
- 'MIME::QuotedPrint' => '2.20', #./lib/MIME/QuotedPrint.pm
- 'NDBM_File' => '1.05', #./ext/NDBM_File/NDBM_File.pm
- 'Net::Cmd' => '2.24', #./lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #./lib/Net/Config.pm
- 'Net::Domain' => '2.18', #./lib/Net/Domain.pm
- 'Net::FTP' => '2.71', #./lib/Net/FTP.pm
- 'Net::FTP::A' => '1.16', #./lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #./lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #./lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #./lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #./lib/Net/FTP/L.pm
- 'Net::hostent' => '1.01', #./lib/Net/hostent.pm
- 'Net::netent' => '1.00', #./lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #./lib/Net/Netrc.pm
- 'Net::NNTP' => '2.22', #./lib/Net/NNTP.pm
- 'Net::Ping' => '2.31', #./lib/Net/Ping.pm
- 'Net::POP3' => '2.24', #./lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #./lib/Net/protoent.pm
- 'Net::servent' => '1.01', #./lib/Net/servent.pm
- 'Net::SMTP' => '2.26', #./lib/Net/SMTP.pm
- 'Net::Time' => '2.09', #./lib/Net/Time.pm
- 'NEXT' => '0.60', #./lib/NEXT.pm
- 'O' => '1.00', #./lib/O.pm
- 'ODBM_File' => '1.04', #./ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.05', #./lib/Opcode.pm
- 'open' => '1.02', #./lib/open.pm
- 'ops' => '1.00', #./lib/ops.pm
- 'OS2::ExtAttr' => '0.02', #./os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #./os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.01', #./os2/OS2/Process/Process.pm
- 'OS2::DLL' => '1.01', #./os2/OS2/REXX/DLL/DLL.pm
- 'OS2::REXX' => '1.02', #./os2/OS2/REXX/REXX.pm
- 'overload' => '1.01', #./lib/overload.pm
- 'PerlIO' => '1.02', #./lib/PerlIO.pm
- 'PerlIO::encoding' => '0.07', #./lib/PerlIO/encoding.pm
- 'PerlIO::scalar' => '0.02', #./lib/PerlIO/scalar.pm
- 'PerlIO::via' => '0.02', #./lib/PerlIO/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.05', #./lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.41', #./lib/Pod/Checker.pm
- 'Pod::Find' => '0.24', #./lib/Pod/Find.pm
- 'Pod::Functions' => '1.02', #./lib/Pod/Functions.pm
- 'Pod::Html' => '1.0501', #./lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.14', #./lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.55', #./lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.37', #./lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.06', #./lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.13', #./lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '0.3', #./lib/Pod/ParseUtils.pm
- 'Pod::Perldoc' => '3.10', #./lib/Pod/Perldoc.pm
- 'Pod::Perldoc::BaseTo' => undef, #./lib/Pod/Perldoc/BaseTo.pm
- 'Pod::Perldoc::GetOptsOO'=> undef, #./lib/Pod/Perldoc/GetOptsOO.pm
- 'Pod::Perldoc::ToChecker'=> undef, #./lib/Pod/Perldoc/ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #./lib/Pod/Perldoc/ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #./lib/Pod/Perldoc/ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #./lib/Pod/Perldoc/ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #./lib/Pod/Perldoc/ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #./lib/Pod/Perldoc/ToText.pm
- 'Pod::Perldoc::ToTk' => 'undef', #./lib/Pod/Perldoc/ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #./lib/Pod/Perldoc/ToXml.pm
- 'Pod::Plainer' => '0.01', #./lib/Pod/Plainer.pm
- 'Pod::PlainText' => '2.01', #./lib/Pod/PlainText.pm
- 'Pod::Select' => '1.13', #./lib/Pod/Select.pm
- 'Pod::Text' => '2.21', #./lib/Pod/Text.pm
- 'Pod::Text::Color' => '1.04', #./lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.1', #./lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.11', #./lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.16', #./lib/Pod/Usage.pm
- 'POSIX' => '1.06', #./lib/POSIX.pm
- 're' => '0.04', #./lib/re.pm
- 'Safe' => '2.10', #./lib/Safe.pm
- 'Scalar::Util' => '1.13', #./lib/Scalar/Util.pm
- 'SDBM_File' => '1.04', #./lib/SDBM_File.pm
- 'Search::Dict' => '1.02', #./lib/Search/Dict.pm
- 'SelectSaver' => '1.00', #./lib/SelectSaver.pm
- 'SelfLoader' => '1.0904', #./lib/SelfLoader.pm
- 'Shell' => '0.5', #./lib/Shell.pm
- 'sigtrap' => '1.02', #./lib/sigtrap.pm
- 'Socket' => '1.76', #./lib/Socket.pm
- 'sort' => '1.02', #./lib/sort.pm
- 'Storable' => '2.08', #./lib/Storable.pm
- 'strict' => '1.03', #./lib/strict.pm
- 'subs' => '1.00', #./lib/subs.pm
- 'Switch' => '2.10', #./lib/Switch.pm
- 'Symbol' => '1.05', #./lib/Symbol.pm
- 'Sys::Hostname' => '1.11', #./lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.04', #./lib/Sys/Syslog.pm
- 'Term::ANSIColor' => '1.07', #./lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.08', #./lib/Term/Cap.pm
- 'Term::Complete' => '1.401', #./lib/Term/Complete.pm
- 'Term::ReadLine' => '1.01', #./lib/Term/ReadLine.pm
- 'Test' => '1.24', #./lib/Test.pm
- 'Test::Builder' => '0.17', #./lib/Test/Builder.pm
- 'Test::Harness' => '2.30', #./lib/Test/Harness.pm
- 'Test::Harness::Assert' => '0.01', #./lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.01', #./lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.15', #./lib/Test/Harness/Straps.pm
- 'Test::More' => '0.47', #./lib/Test/More.pm
- 'Test::Simple' => '0.47', #./lib/Test/Simple.pm
- 'Text::Abbrev' => '1.01', #./lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.95', #./lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.21', #./lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #./lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #./lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.09291', #./lib/Text/Wrap.pm
- 'Thread' => '2.00', #./lib/Thread.pm
- 'Thread::Queue' => '2.00', #./lib/Thread/Queue.pm
- 'Thread::Semaphore' => '2.01', #./lib/Thread/Semaphore.pm
- 'Thread::Signal' => '1.00', #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #./ext/Thread/Thread/Specific.pm
- 'threads' => '1.00', #./lib/threads.pm
- 'threads::shared' => '0.91', #./lib/threads/shared.pm
- 'Tie::Array' => '1.03', #./lib/Tie/Array.pm
- 'Tie::File' => '0.97', #./lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #./lib/Tie/Handle.pm
- 'Tie::Hash' => '1.00', #./lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #./lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.31', #./lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #./lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #./lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #./lib/Time/gmtime.pm
- 'Time::HiRes' => '1.51', #./lib/Time/HiRes.pm
- 'Time::Local' => '1.07', #./lib/Time/Local.pm
- 'Time::localtime' => '1.02', #./lib/Time/localtime.pm
- 'Time::tm' => '1.00', #./lib/Time/tm.pm
- 'Unicode' => '4.0.0', # lib/unicore/version
- 'Unicode::Collate' => '0.28', #./lib/Unicode/Collate.pm
- 'Unicode::Normalize' => '0.23', #./lib/Unicode/Normalize.pm
- 'Unicode::UCD' => '0.21', #./lib/Unicode/UCD.pm
- 'UNIVERSAL' => '1.01', #./lib/UNIVERSAL.pm
- 'User::grent' => '1.00', #./lib/User/grent.pm
- 'User::pwent' => '1.00', #./lib/User/pwent.pm
- 'utf8' => '1.02', #./lib/utf8.pm
- 'vars' => '1.01', #./lib/vars.pm
- 'VMS::DCLsym' => '1.02', #./vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.11', #./vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.3', #./vms/ext/Stdio/Stdio.pm
- 'vmsish' => '1.01', #./lib/vmsish.pm
- 'warnings' => '1.03', #./lib/warnings.pm
- 'warnings::register' => '1.00', #./lib/warnings/register.pm
- 'XS::APItest' => '0.02', #./lib/XS/APItest.pm
- 'XS::Typemap' => '0.01', #./lib/XS/Typemap.pm
- 'XSLoader' => '0.02', #./lib/XSLoader.pm
+ 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 => {
- 'AnyDBM_File' => '1.00', #AnyDBM_File.pm
- 'Attribute::Handlers' => 0.78, #Attribute\Handlers.pm
- 'attributes' => 0.06, #attributes.pm
- 'attrs' => 1.01, #attrs.pm
- 'AutoLoader' => '5.60', #AutoLoader.pm
- 'AutoSplit' => 1.04, #AutoSplit.pm
- 'autouse' => 1.03, #autouse.pm
- 'B' => 1.02, #B.pm
- 'B::Asmdata' => 1.01, #B\Asmdata.pm
- 'B::Assembler' => 0.06, #B\Assembler.pm
- 'B::Bblock' => 1.02, #B\Bblock.pm
- 'B::Bytecode' => 1.01, #B\Bytecode.pm
- 'B::C' => 1.02, #B\C.pm
- 'B::CC' => '1.00', #B\CC.pm
- 'B::Concise' => 0.56, #B\Concise.pm
- 'B::Debug' => 1.01, #B\Debug.pm
- 'B::Deparse' => 0.64, #B\Deparse.pm
- 'B::Disassembler' => 1.03, #B\Disassembler.pm
- 'B::Lint' => 1.02, #B\Lint.pm
- 'B::Showlex' => '1.00', #B\Showlex.pm
- 'B::Stackobj' => '1.00', #B\Stackobj.pm
- 'B::Stash' => '1.00', #B\Stash.pm
- 'B::Terse' => 1.02, #B\Terse.pm
- 'B::Xref' => 1.01, #B\Xref.pm
- 'base' => 2.03, #base.pm
- 'Benchmark' => 1.051, #Benchmark.pm
- 'bigint' => 0.04, #bigint.pm
- 'bignum' => 0.14, #bignum.pm
- 'bigrat' => 0.06, #bigrat.pm
- 'blib' => 1.02, #blib.pm
- 'ByteLoader' => 0.05, #ByteLoader.pm
- 'bytes' => 1.01, #bytes.pm
- 'Carp' => 1.01, #Carp.pm
- 'Carp::Heavy' => 1.01, #Carp\Heavy.pm
- 'CGI' => '3.00', #CGI.pm
- 'CGI::Apache' => '1.00', #CGI\Apache.pm
- 'CGI::Carp' => 1.26, #CGI\Carp.pm
- 'CGI::Cookie' => 1.24, #CGI\Cookie.pm
- 'CGI::Fast' => 1.041, #CGI\Fast.pm
- 'CGI::Pretty' => '1.07_00', #CGI\Pretty.pm
- 'CGI::Push' => 1.04, #CGI\Push.pm
- 'CGI::Switch' => '1.00', #CGI\Switch.pm
- 'CGI::Util' => 1.31, #CGI\Util.pm
- 'charnames' => 1.02, #charnames.pm
- 'Class::ISA' => 0.32, #Class\ISA.pm
- 'Class::Struct' => 0.63, #Class\Struct.pm
- 'Config' => undef, #Config.pm
- 'constant' => 1.04, #constant.pm
- 'CPAN' => '1.76_01', #CPAN.pm
- 'CPAN::FirstTime' => '1.60 ', #CPAN\FirstTime.pm
- 'CPAN::Nox' => 1.03, #CPAN\Nox.pm
- 'Cwd' => 2.08, #Cwd.pm
- 'Data::Dumper' => 2.121, #Data\Dumper.pm
- 'DB' => '1.0', #DB.pm
- 'Devel::DProf' => '20030813.00', #Devel\DProf.pm
- 'Devel::Peek' => 1.01, #Devel\Peek.pm
- 'Devel::PPPort' => 2.009, #Devel\PPPort.pm
- 'Devel::SelfStubber' => 1.03, #Devel\SelfStubber.pm
- 'diagnostics' => 1.11, #diagnostics.pm
- 'Digest' => 1.02, #Digest.pm
- 'Digest::MD5' => '2.30', #Digest\MD5.pm
- 'DirHandle' => '1.00', #DirHandle.pm
- 'Dumpvalue' => 1.11, #Dumpvalue.pm
- 'DynaLoader' => 1.04, #DynaLoader.pm
- 'Encode' => 1.9801, #Encode.pm
- 'Encode::Alias' => 1.38, #Encode\Alias.pm
- 'Encode::Byte' => 1.23, #Encode\Byte.pm
- 'Encode::CJKConstants' => 1.02, #Encode\CJKConstants.pm
- 'Encode::CN' => 1.24, #Encode\CN.pm
- 'Encode::CN::HZ' => 1.05, #Encode\CN\HZ.pm
- 'Encode::Config' => 1.07, #Encode\Config.pm
- 'Encode::EBCDIC' => 1.21, #Encode\EBCDIC.pm
- 'Encode::Encoder' => 0.07, #Encode\Encoder.pm
- 'Encode::Encoding' => 1.33, #Encode\Encoding.pm
- 'Encode::Guess' => 1.09, #Encode\Guess.pm
- 'Encode::JP' => 1.25, #Encode\JP.pm
- 'Encode::JP::H2Z' => 1.02, #Encode\JP\H2Z.pm
- 'Encode::JP::JIS7' => 1.12, #Encode\JP\JIS7.pm
- 'Encode::KR' => 1.23, #Encode\KR.pm
- 'Encode::KR::2022_KR' => 1.06, #Encode\KR\2022_KR.pm
- 'Encode::MIME::Header' => 1.09, #Encode\MIME\Header.pm
- 'Encode::Symbol' => 1.22, #Encode\Symbol.pm
- 'Encode::TW' => 1.26, #Encode\TW.pm
- 'Encode::Unicode' => '1.40', #Encode\Unicode.pm
- 'Encode::Unicode::UTF7' => 0.02, #Encode\Unicode\UTF7.pm
- 'encoding' => 1.47, #encoding.pm
- 'English' => 1.01, #English.pm
- 'Env' => '1.00', #Env.pm
- 'Errno' => '1.09_00', #Errno.pm
- 'Exporter' => 5.567, #Exporter.pm
- 'Exporter::Heavy' => 5.567, #Exporter\Heavy.pm
- 'ExtUtils::Command' => 1.05, #ExtUtils\Command.pm
- 'ExtUtils::Command::MM' => 0.03, #ExtUtils\Command\MM.pm
- 'ExtUtils::Constant' => 0.14, #ExtUtils\Constant.pm
- 'ExtUtils::Embed' => 1.250601, #ExtUtils\Embed.pm
- 'ExtUtils::Install' => 1.32, #ExtUtils\Install.pm
- 'ExtUtils::Installed' => 0.08, #ExtUtils\Installed.pm
- 'ExtUtils::Liblist' => 1.01, #ExtUtils\Liblist.pm
- 'ExtUtils::Liblist::Kid' => 1.3, #ExtUtils\Liblist\Kid.pm
- 'ExtUtils::MakeMaker' => 6.17, #ExtUtils\MakeMaker.pm
- 'ExtUtils::MakeMaker::bytes' => 0.01, #ExtUtils\MakeMaker\bytes.pm
- 'ExtUtils::MakeMaker::vmsish' => 0.01, #ExtUtils\MakeMaker\vmsish.pm
- 'ExtUtils::Manifest' => 1.42, #ExtUtils\Manifest.pm
- 'ExtUtils::Miniperl' => undef, #ExtUtils\Miniperl.pm
- 'ExtUtils::Mkbootstrap' => 1.15, #ExtUtils\Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => 1.19, #ExtUtils\Mksymlists.pm
- 'ExtUtils::MM' => 0.04, #ExtUtils\MM.pm
- 'ExtUtils::MM_Any' => 0.07, #ExtUtils\MM_Any.pm
- 'ExtUtils::MM_BeOS' => 1.04, #ExtUtils\MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => 1.06, #ExtUtils\MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => 0.02, #ExtUtils\MM_DOS.pm
- 'ExtUtils::MM_MacOS' => 1.07, #ExtUtils\MM_MacOS.pm
- 'ExtUtils::MM_NW5' => 2.06, #ExtUtils\MM_NW5.pm
- 'ExtUtils::MM_OS2' => 1.04, #ExtUtils\MM_OS2.pm
- 'ExtUtils::MM_Unix' => 1.42, #ExtUtils\MM_Unix.pm
- 'ExtUtils::MM_UWIN' => 0.02, #ExtUtils\MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #ExtUtils\MM_VMS.pm
- 'ExtUtils::MM_Win32' => 1.09, #ExtUtils\MM_Win32.pm
- 'ExtUtils::MM_Win95' => 0.03, #ExtUtils\MM_Win95.pm
- 'ExtUtils::MY' => 0.01, #ExtUtils\MY.pm
- 'ExtUtils::Packlist' => 0.04, #ExtUtils\Packlist.pm
- 'ExtUtils::testlib' => 1.15, #ExtUtils\testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms\ext\XSSymSet.pm
- 'Fatal' => 1.03, #Fatal.pm
- 'Fcntl' => 1.05, #Fcntl.pm
- 'fields' => 2.03, #fields.pm
- 'File::Basename' => 2.72, #File\Basename.pm
- 'File::CheckTree' => 4.2, #File\CheckTree.pm
- 'File::Compare' => 1.1003, #File\Compare.pm
- 'File::Copy' => 2.06, #File\Copy.pm
- 'File::DosGlob' => '1.00', #File\DosGlob.pm
- 'File::Find' => 1.05, #File\Find.pm
- 'File::Glob' => 1.02, #File\Glob.pm
- 'File::Path' => 1.06, #File\Path.pm
- 'File::Spec' => 0.86, #File\Spec.pm
- 'File::Spec::Cygwin' => 1.1, #File\Spec\Cygwin.pm
- 'File::Spec::Epoc' => 1.1, #File\Spec\Epoc.pm
- 'File::Spec::Functions' => 1.3, #File\Spec\Functions.pm
- 'File::Spec::Mac' => 1.4, #File\Spec\Mac.pm
- 'File::Spec::OS2' => 1.2, #File\Spec\OS2.pm
- 'File::Spec::Unix' => 1.5, #File\Spec\Unix.pm
- 'File::Spec::VMS' => 1.4, #File\Spec\VMS.pm
- 'File::Spec::Win32' => 1.4, #File\Spec\Win32.pm
- 'File::stat' => '1.00', #File\stat.pm
- 'File::Temp' => 0.14, #File\Temp.pm
- 'FileCache' => 1.03, #FileCache.pm
- 'FileHandle' => 2.01, #FileHandle.pm
- 'filetest' => 1.01, #filetest.pm
- 'Filter::Simple' => 0.78, #Filter\Simple.pm
- 'Filter::Util::Call' => 1.0601, #Filter\Util\Call.pm
- 'FindBin' => 1.43, #FindBin.pm
- 'GDBM_File' => '1.07', #ext\GDBM_File\GDBM_File.pm
- 'Getopt::Long' => 2.34, #Getopt\Long.pm
- 'Getopt::Std' => 1.04, #Getopt\Std.pm
- 'Hash::Util' => 0.05, #Hash\Util.pm
- 'I18N::Collate' => '1.00', #I18N\Collate.pm
- 'I18N::Langinfo' => '0.02', #I18N\Langinfo.pm
- 'I18N::LangTags' => 0.29, #I18N\LangTags.pm
- 'I18N::LangTags::List' => 0.29, #I18N\LangTags\List.pm
- 'if' => 0.03, #if.pm
- 'integer' => '1.00', #integer.pm
- 'IO' => 1.21, #IO.pm
- 'IO::Dir' => 1.04, #IO\Dir.pm
- 'IO::File' => '1.10', #IO\File.pm
- 'IO::Handle' => 1.23, #IO\Handle.pm
- 'IO::Pipe' => 1.122, #IO\Pipe.pm
- 'IO::Poll' => 0.06, #IO\Poll.pm
- 'IO::Seekable' => 1.09, #IO\Seekable.pm
- 'IO::Select' => 1.16, #IO\Select.pm
- 'IO::Socket' => 1.28, #IO\Socket.pm
- 'IO::Socket::INET' => 1.27, #IO\Socket\INET.pm
- 'IO::Socket::UNIX' => 1.21, #IO\Socket\UNIX.pm
- 'IPC::Msg' => 1.02, #IPC\Msg.pm
- 'IPC::Open2' => 1.01, #IPC\Open2.pm
- 'IPC::Open3' => 1.0105, #IPC\Open3.pm
- 'IPC::Semaphore' => 1.02, #IPC\Semaphore.pm
- 'IPC::SysV' => 1.04, #IPC\SysV.pm
- 'JNI' => '0.2', #jpl\JNI\JNI.pm
- 'JPL::AutoLoader' => undef, #jpl\JPL\AutoLoader.pm
- 'JPL::Class' => undef, #jpl\JPL\Class.pm
- 'JPL::Compile' => undef, #jpl\JPL\Compile.pm
- 'less' => 0.01, #less.pm
- 'lib' => 0.5565, #lib.pm
- 'List::Util' => 1.13, #List\Util.pm
- 'locale' => '1.00', #locale.pm
- 'Locale::Constants' => 2.01, #Locale\Constants.pm
- 'Locale::Country' => 2.61, #Locale\Country.pm
- 'Locale::Currency' => 2.21, #Locale\Currency.pm
- 'Locale::Language' => 2.21, #Locale\Language.pm
- 'Locale::Maketext' => 1.06, #Locale\Maketext.pm
- 'Locale::Maketext::Guts' => undef, #Locale\Maketext\Guts.pm
- 'Locale::Maketext::GutsLoader' => undef, #Locale\Maketext\GutsLoader.pm
- 'Locale::Script' => 2.21, #Locale\Script.pm
- 'Math::BigFloat' => '1.40', #Math\BigFloat.pm
- 'Math::BigFloat::Trace' => 0.01, #Math\BigFloat\Trace.pm
- 'Math::BigInt' => 1.66, #Math\BigInt.pm
- 'Math::BigInt::Calc' => 0.36, #Math\BigInt\Calc.pm
- 'Math::BigInt::Scalar' => 0.11, #Math\BigInt\Scalar.pm
- 'Math::BigInt::Trace' => 0.01, #Math\BigInt\Trace.pm
- 'Math::BigRat' => '0.10', #Math\BigRat.pm
- 'Math::Complex' => 1.34, #Math\Complex.pm
- 'Math::Trig' => 1.02, #Math\Trig.pm
- 'Memoize' => 1.01, #Memoize.pm
- 'Memoize::AnyDBM_File' => 0.65, #Memoize\AnyDBM_File.pm
- 'Memoize::Expire' => '1.00', #Memoize\Expire.pm
- 'Memoize::ExpireFile' => 1.01, #Memoize\ExpireFile.pm
- 'Memoize::ExpireTest' => 0.65, #Memoize\ExpireTest.pm
- 'Memoize::NDBM_File' => 0.65, #Memoize\NDBM_File.pm
- 'Memoize::SDBM_File' => 0.65, #Memoize\SDBM_File.pm
- 'Memoize::Storable' => 0.65, #Memoize\Storable.pm
- 'MIME::Base64' => 2.21, #MIME\Base64.pm
- 'MIME::QuotedPrint' => 2.21, #MIME\QuotedPrint.pm
- 'NDBM_File' => '1.05', #ext\NDBM_File\NDBM_File.pm
- 'Net::Cmd' => 2.24, #Net\Cmd.pm
- 'Net::Config' => '1.10', #Net\Config.pm
- 'Net::Domain' => 2.19, #Net\Domain.pm
- 'Net::FTP' => 2.72, #Net\FTP.pm
- 'Net::FTP::A' => 1.16, #Net\FTP\A.pm
- 'Net::FTP::dataconn' => 0.11, #Net\FTP\dataconn.pm
- 'Net::FTP::E' => 0.01, #Net\FTP\E.pm
- 'Net::FTP::I' => 1.12, #Net\FTP\I.pm
- 'Net::FTP::L' => 0.01, #Net\FTP\L.pm
- 'Net::hostent' => 1.01, #Net\hostent.pm
- 'Net::netent' => '1.00', #Net\netent.pm
- 'Net::Netrc' => 2.12, #Net\Netrc.pm
- 'Net::NNTP' => 2.22, #Net\NNTP.pm
- 'Net::Ping' => 2.31, #Net\Ping.pm
- 'Net::POP3' => 2.24, #Net\POP3.pm
- 'Net::protoent' => '1.00', #Net\protoent.pm
- 'Net::servent' => 1.01, #Net\servent.pm
- 'Net::SMTP' => 2.26, #Net\SMTP.pm
- 'Net::Time' => 2.09, #Net\Time.pm
- 'NEXT' => '0.60', #NEXT.pm
- 'O' => '1.00', #O.pm
- 'ODBM_File' => '1.04', #ext\ODBM_File\ODBM_File.pm
- 'Opcode' => 1.05, #Opcode.pm
- 'open' => 1.02, #open.pm
- 'ops' => '1.00', #ops.pm
- 'OS2::DLL' => '1.01', #os2\OS2\REXX\DLL\DLL.pm
- 'OS2::ExtAttr' => '0.02', #os2\OS2\ExtAttr\ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #os2\OS2\PrfDB\PrfDB.pm
- 'OS2::Process' => '1.01', #os2\OS2\Process\Process.pm
- 'OS2::REXX' => '1.02', #os2\OS2\REXX\REXX.pm
- 'overload' => 1.01, #overload.pm
- 'PerlIO' => 1.02, #PerlIO.pm
- 'PerlIO::encoding' => 0.07, #PerlIO\encoding.pm
- 'PerlIO::scalar' => 0.02, #PerlIO\scalar.pm
- 'PerlIO::via' => 0.02, #PerlIO\via.pm
- 'PerlIO::via::QuotedPrint' => 0.05, #PerlIO\via\QuotedPrint.pm
- 'Pod::Checker' => 1.41, #Pod\Checker.pm
- 'Pod::Find' => 0.24, #Pod\Find.pm
- 'Pod::Functions' => 1.02, #Pod\Functions.pm
- 'Pod::Html' => 1.0501, #Pod\Html.pm
- 'Pod::InputObjects' => 1.14, #Pod\InputObjects.pm
- 'Pod::LaTeX' => 0.55, #Pod\LaTeX.pm
- 'Pod::Man' => 1.37, #Pod\Man.pm
- 'Pod::ParseLink' => 1.06, #Pod\ParseLink.pm
- 'Pod::Parser' => 1.13, #Pod\Parser.pm
- 'Pod::ParseUtils' => 0.3, #Pod\ParseUtils.pm
- 'Pod::Perldoc' => 3.11, #Pod\Perldoc.pm
- 'Pod::Perldoc::BaseTo' => undef, #Pod\Perldoc\BaseTo.pm
- 'Pod::Perldoc::GetOptsOO' => undef, #Pod\Perldoc\GetOptsOO.pm
- 'Pod::Perldoc::ToChecker' => undef, #Pod\Perldoc\ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #Pod\Perldoc\ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #Pod\Perldoc\ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #Pod\Perldoc\ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #Pod\Perldoc\ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #Pod\Perldoc\ToText.pm
- 'Pod::Perldoc::ToTk' => undef, #Pod\Perldoc\ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #Pod\Perldoc\ToXml.pm
- 'Pod::Plainer' => 0.01, #Pod\Plainer.pm
- 'Pod::PlainText' => 2.01, #Pod\PlainText.pm
- 'Pod::Select' => 1.13, #Pod\Select.pm
- 'Pod::Text' => 2.21, #Pod\Text.pm
- 'Pod::Text::Color' => 1.04, #Pod\Text\Color.pm
- 'Pod::Text::Overstrike' => 1.1, #Pod\Text\Overstrike.pm
- 'Pod::Text::Termcap' => 1.11, #Pod\Text\Termcap.pm
- 'Pod::Usage' => 1.16, #Pod\Usage.pm
- 'POSIX' => 1.06, #POSIX.pm
- 're' => 0.04, #re.pm
- 'Safe' => '2.10', #Safe.pm
- 'Scalar::Util' => 1.13, #Scalar\Util.pm
- 'SDBM_File' => 1.04, #SDBM_File.pm
- 'Search::Dict' => 1.02, #Search\Dict.pm
- 'SelectSaver' => '1.00', #SelectSaver.pm
- 'SelfLoader' => 1.0904, #SelfLoader.pm
- 'Shell' => 0.5, #Shell.pm
- 'sigtrap' => 1.02, #sigtrap.pm
- 'Socket' => 1.76, #Socket.pm
- 'sort' => 1.02, #sort.pm
- 'Storable' => 2.08, #Storable.pm
- 'strict' => 1.03, #strict.pm
- 'subs' => '1.00', #subs.pm
- 'Switch' => '2.10', #Switch.pm
- 'Symbol' => 1.05, #Symbol.pm
- 'Sys::Hostname' => 1.11, #Sys\Hostname.pm
- 'Sys::Syslog' => '0.04', #ext\Sys\Syslog\Syslog.pm
- 'Term::ANSIColor' => 1.07, #Term\ANSIColor.pm
- 'Term::Cap' => 1.08, #Term\Cap.pm
- 'Term::Complete' => 1.401, #Term\Complete.pm
- 'Term::ReadLine' => 1.01, #Term\ReadLine.pm
- 'Test' => 1.24, #Test.pm
- 'Test::Builder' => 0.17, #Test\Builder.pm
- 'Test::Harness' => '2.30', #Test\Harness.pm
- 'Test::Harness::Assert' => 0.01, #Test\Harness\Assert.pm
- 'Test::Harness::Iterator' => 0.01, #Test\Harness\Iterator.pm
- 'Test::Harness::Straps' => 0.15, #Test\Harness\Straps.pm
- 'Test::More' => 0.47, #Test\More.pm
- 'Test::Simple' => 0.47, #Test\Simple.pm
- 'Text::Abbrev' => 1.01, #Text\Abbrev.pm
- 'Text::Balanced' => 1.95, #Text\Balanced.pm
- 'Text::ParseWords' => 3.21, #Text\ParseWords.pm
- 'Text::Soundex' => 1.01, #Text\Soundex.pm
- 'Text::Tabs' => 98.112801, #Text\Tabs.pm
- 'Text::Wrap' => 2001.09291, #Text\Wrap.pm
- 'Thread' => '2.00', #Thread.pm
- 'Thread::Queue' => '2.00', #Thread\Queue.pm
- 'Thread::Semaphore' => 2.01, #Thread\Semaphore.pm
- 'Thread::Signal' => '1.00', #Thread\Signal.pm
- 'Thread::Specific' => '1.00', #Thread\Specific.pm
- 'threads' => '1.00', #threads.pm
- 'threads::shared' => 0.91, #threads\shared.pm
- 'Tie::Array' => 1.03, #Tie\Array.pm
- 'Tie::File' => 0.97, #Tie\File.pm
- 'Tie::Handle' => 4.1, #Tie\Handle.pm
- 'Tie::Hash' => '1.00', #Tie\Hash.pm
- 'Tie::Memoize' => '1.0', #Tie\Memoize.pm
- 'Tie::RefHash' => 1.31, #Tie\RefHash.pm
- 'Tie::Scalar' => '1.00', #Tie\Scalar.pm
- 'Tie::SubstrHash' => '1.00', #Tie\SubstrHash.pm
- 'Time::gmtime' => 1.02, #Time\gmtime.pm
- 'Time::HiRes' => 1.52, #Time\HiRes.pm
- 'Time::Local' => 1.07, #Time\Local.pm
- 'Time::localtime' => 1.02, #Time\localtime.pm
- 'Time::tm' => '1.00', #Time\tm.pm
- 'Unicode' => '4.0.0', # lib/unicore/version
- 'Unicode::Collate' => '0.30', #Unicode\Collate.pm
- 'Unicode::Normalize' => 0.25, #Unicode\Normalize.pm
- 'Unicode::UCD' => 0.21, #Unicode\UCD.pm
- 'UNIVERSAL' => 1.01, #UNIVERSAL.pm
- 'User::grent' => '1.00', #User\grent.pm
- 'User::pwent' => '1.00', #User\pwent.pm
- 'utf8' => 1.02, #utf8.pm
- 'vars' => 1.01, #vars.pm
- 'VMS::DCLsym' => '1.02', #vms\ext\DCLsym\DCLsym.pm
- 'VMS::Filespec' => '1.11', #vms\ext\Filespec.pm
- 'VMS::Stdio' => '2.3', #vms\ext\Stdio\Stdio.pm
- 'vmsish' => 1.01, #vmsish.pm
- 'warnings' => 1.03, #warnings.pm
- 'warnings::register' => '1.00', #warnings\register.pm
- 'XS::APItest' => 0.02, #XS\APItest.pm
- 'XS::Typemap' => 0.01, #XS\Typemap.pm
- 'XSLoader' => 0.02, #XSLoader.pm
+ 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 => {
- 'AnyDBM_File' => '1.00', #lib/AnyDBM_File.pm
- 'Attribute::Handlers' => '0.78', #lib/Attribute/Handlers.pm
- 'attributes' => '0.06', #lib/attributes.pm
- 'attrs' => '1.01', #lib/attrs.pm
- 'AutoLoader' => '5.60', #lib/AutoLoader.pm
- 'AutoSplit' => '1.04', #lib/AutoSplit.pm
- 'autouse' => '1.03', #lib/autouse.pm
- 'B' => '1.02', #lib/B.pm
- 'base' => '2.04', #lib/base.pm
- 'B::Asmdata' => '1.01', #lib/B/Asmdata.pm
- 'B::Assembler' => '0.06', #lib/B/Assembler.pm
- 'B::Bblock' => '1.02', #lib/B/Bblock.pm
- 'B::Bytecode' => '1.01', #lib/B/Bytecode.pm
- 'B::C' => '1.02', #lib/B/C.pm
- 'B::CC' => '1.00', #lib/B/CC.pm
- 'B::Concise' => '0.56', #lib/B/Concise.pm
- 'B::Debug' => '1.01', #lib/B/Debug.pm
- 'B::Deparse' => '0.64', #lib/B/Deparse.pm
- 'B::Disassembler' => '1.03', #lib/B/Disassembler.pm
- 'Benchmark' => '1.052', #lib/Benchmark.pm
- 'bigint' => '0.04', #lib/bigint.pm
- 'bignum' => '0.14', #lib/bignum.pm
- 'bigrat' => '0.06', #lib/bigrat.pm
- 'blib' => '1.02', #lib/blib.pm
- 'B::Lint' => '1.02', #lib/B/Lint.pm
- 'B::Showlex' => '1.00', #lib/B/Showlex.pm
- 'B::Stackobj' => '1.00', #lib/B/Stackobj.pm
- 'B::Stash' => '1.00', #lib/B/Stash.pm
- 'B::Terse' => '1.02', #lib/B/Terse.pm
- 'B::Xref' => '1.01', #lib/B/Xref.pm
- 'ByteLoader' => '0.05', #lib/ByteLoader.pm
- 'bytes' => '1.01', #lib/bytes.pm
- 'Carp' => '1.01', #lib/Carp.pm
- 'Carp::Heavy' => '1.01', #lib/Carp/Heavy.pm
- 'CGI' => '3.01', #lib/CGI.pm
- 'CGI::Apache' => '1.00', #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.27', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.24', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.05', #lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.08', #lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #lib/CGI/Switch.pm
- 'CGI::Util' => '1.4', #lib/CGI/Util.pm
- 'charnames' => '1.02', #lib/charnames.pm
- 'Class::ISA' => '0.32', #lib/Class/ISA.pm
- 'Class::Struct' => '0.63', #lib/Class/Struct.pm
- 'Config' => undef, #lib/Config.pm
- 'constant' => '1.04', #lib/constant.pm
- 'CPAN' => '1.76_01', #lib/CPAN.pm
- 'CPAN::FirstTime' => '1.60 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.03', #lib/CPAN/Nox.pm
- 'Cwd' => '2.12', #lib/Cwd.pm
- 'Data::Dumper' => '2.121', #lib/Data/Dumper.pm
- 'DB' => '1.0', #lib/DB.pm
- 'DB_File' => '1.808', #lib/DB_File.pm
- 'Devel::DProf' => '20030813.00', #lib/Devel/DProf.pm
- 'Devel::Peek' => '1.01', #lib/Devel/Peek.pm
- 'Devel::PPPort' => '2.011', #lib/Devel/PPPort.pm
- 'Devel::SelfStubber' => '1.03', #lib/Devel/SelfStubber.pm
- 'diagnostics' => '1.12', #lib/diagnostics.pm
- 'Digest' => '1.05', #lib/Digest.pm
- 'Digest::base' => '1.00', #lib/Digest/base.pm
- 'Digest::MD5' => '2.33', #lib/Digest/MD5.pm
- 'DirHandle' => '1.00', #lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #lib/Dumpvalue.pm
- 'DynaLoader' => '1.04', #lib/DynaLoader.pm
- 'Encode' => '1.99', #lib/Encode.pm
- 'Encode::Alias' => '1.38', #lib/Encode/Alias.pm
- 'Encode::Byte' => '1.23', #lib/Encode/Byte.pm
- 'Encode::CJKConstants' => '1.02', #lib/Encode/CJKConstants.pm
- 'Encode::CN' => '1.24', #lib/Encode/CN.pm
- 'Encode::CN::HZ' => '1.05', #lib/Encode/CN/HZ.pm
- 'Encode::Config' => '1.07', #lib/Encode/Config.pm
- 'Encode::EBCDIC' => '1.21', #lib/Encode/EBCDIC.pm
- 'Encode::Encoder' => '0.07', #lib/Encode/Encoder.pm
- 'Encode::Encoding' => '1.33', #lib/Encode/Encoding.pm
- 'Encode::Guess' => '1.09', #lib/Encode/Guess.pm
- 'Encode::JP' => '1.25', #lib/Encode/JP.pm
- 'Encode::JP::H2Z' => '1.02', #lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '1.12', #lib/Encode/JP/JIS7.pm
- 'Encode::KR' => '1.23', #lib/Encode/KR.pm
- 'Encode::KR::2022_KR' => '1.06', #lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '1.09', #lib/Encode/MIME/Header.pm
- 'Encode::Symbol' => '1.22', #lib/Encode/Symbol.pm
- 'Encode::TW' => '1.26', #lib/Encode/TW.pm
- 'Encode::Unicode' => '1.40', #lib/Encode/Unicode.pm
- 'Encode::Unicode::UTF7' => '0.02', #lib/Encode/Unicode/UTF7.pm
- 'encoding' => '1.48', #lib/encoding.pm
- 'English' => '1.01', #lib/English.pm
- 'Env' => '1.00', #lib/Env.pm
- 'Errno' => '1.09_00', #lib/Errno.pm
- 'Exporter' => '5.57', #lib/Exporter.pm
- 'Exporter::Heavy' => '5.567', #lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.05', #lib/ExtUtils/Command.pm
- 'ExtUtils::Command::MM' => '0.03', #lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Constant' => '0.14', #lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.32', #lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.08', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.01', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::Liblist::Kid'=> '1.3', #lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker' => '6.17', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #lib/ExtUtils/MakeMaker/vmsish.pm
- 'ExtUtils::Manifest' => '1.42', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM' => '0.04', #lib/ExtUtils/MM.pm
- 'ExtUtils::MM_Any' => '0.07', #lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.06', #lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.06', #lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM_OS2' => '1.04', #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.42', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.09', #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.03', #lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'Fatal' => '1.03', #lib/Fatal.pm
- 'Fcntl' => '1.05', #lib/Fcntl.pm
- 'fields' => '2.03', #lib/fields.pm
- 'File::Basename' => '2.72', #lib/File/Basename.pm
- 'FileCache' => '1.03', #lib/FileCache.pm
- 'File::CheckTree' => '4.3', #lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #lib/File/Compare.pm
- 'File::Copy' => '2.07', #lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #lib/File/DosGlob.pm
- 'File::Find' => '1.06', #lib/File/Find.pm
- 'File::Glob' => '1.02', #lib/File/Glob.pm
- 'FileHandle' => '2.01', #lib/FileHandle.pm
- 'File::Path' => '1.06', #lib/File/Path.pm
- 'File::Spec' => '0.87', #lib/File/Spec.pm
- 'File::Spec::Cygwin' => '1.1', #lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.4', #lib/File/Spec/Win32.pm
- 'File::stat' => '1.00', #lib/File/stat.pm
- 'File::Temp' => '0.14', #lib/File/Temp.pm
- 'filetest' => '1.01', #lib/filetest.pm
- 'Filter::Simple' => '0.78', #lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.0601', #lib/Filter/Util/Call.pm
- 'FindBin' => '1.44', #lib/FindBin.pm
- 'GDBM_File' => '1.07', #lib/GDBM_File.pm
- 'Getopt::Long' => '2.34', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.05', #lib/Getopt/Std.pm
- 'Hash::Util' => '0.05', #lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #lib/I18N/Collate.pm
- 'I18N::Langinfo' => '0.02', #lib/I18N/Langinfo.pm
- 'I18N::LangTags' => '0.29', #lib/I18N/LangTags.pm
- 'I18N::LangTags::List' => '0.29', #lib/I18N/LangTags/List.pm
- 'if' => '0.03', #lib/if.pm
- 'integer' => '1.00', #lib/integer.pm
- 'IO' => '1.21', #lib/IO.pm
- 'IO::Dir' => '1.04', #lib/IO/Dir.pm
- 'IO::File' => '1.10', #lib/IO/File.pm
- 'IO::Handle' => '1.23', #lib/IO/Handle.pm
- 'IO::Pipe' => '1.122', #lib/IO/Pipe.pm
- 'IO::Poll' => '0.06', #lib/IO/Poll.pm
- 'IO::Seekable' => '1.09', #lib/IO/Seekable.pm
- 'IO::Select' => '1.16', #lib/IO/Select.pm
- 'IO::Socket' => '1.28', #lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.27', #lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.21', #lib/IO/Socket/UNIX.pm
- 'IPC::Msg' => '1.02', #lib/IPC/Msg.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0105', #lib/IPC/Open3.pm
- 'IPC::Semaphore' => '1.02', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.04', #lib/IPC/SysV.pm
- 'JNI' => '0.2', #jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #jpl/JPL/Compile.pm
- 'less' => '0.01', #lib/less.pm
- 'lib' => '0.5565', #lib/lib.pm
- 'List::Util' => '1.13', #lib/List/Util.pm
- 'locale' => '1.00', #lib/locale.pm
- 'Locale::Constants' => '2.01', #lib/Locale/Constants.pm
- 'Locale::Country' => '2.61', #lib/Locale/Country.pm
- 'Locale::Currency' => '2.21', #lib/Locale/Currency.pm
- 'Locale::Language' => '2.21', #lib/Locale/Language.pm
- 'Locale::Maketext' => '1.06', #lib/Locale/Maketext.pm
- 'Locale::Maketext::GutsLoader'=> undef, #lib/Locale/Maketext/GutsLoader.pm
- 'Locale::Maketext::Guts'=> undef, #lib/Locale/Maketext/Guts.pm
- 'Locale::Script' => '2.21', #lib/Locale/Script.pm
- 'Math::BigFloat' => '1.42', #lib/Math/BigFloat.pm
- 'Math::BigFloat::Trace' => '0.01', #lib/Math/BigFloat/Trace.pm
- 'Math::BigInt' => '1.68', #lib/Math/BigInt.pm
- 'Math::BigInt::Calc' => '0.38', #lib/Math/BigInt/Calc.pm
- 'Math::BigInt::CalcEmu' => '0.02', #lib/Math/BigInt/CalcEmu.pm
- 'Math::BigInt::Trace' => '0.01', #lib/Math/BigInt/Trace.pm
- 'Math::BigRat' => '0.10', #lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #lib/Math/Complex.pm
- 'Math::Trig' => '1.02', #lib/Math/Trig.pm
- 'Memoize' => '1.01', #lib/Memoize.pm
- 'Memoize::AnyDBM_File' => '0.65', #lib/Memoize/AnyDBM_File.pm
- 'Memoize::Expire' => '1.00', #lib/Memoize/Expire.pm
- 'Memoize::ExpireFile' => '1.01', #lib/Memoize/ExpireFile.pm
- 'Memoize::ExpireTest' => '0.65', #lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #lib/Memoize/Storable.pm
- 'MIME::Base64' => '2.21', #lib/MIME/Base64.pm
- 'MIME::QuotedPrint' => '2.21', #lib/MIME/QuotedPrint.pm
- 'NDBM_File' => '1.05', #lib/NDBM_File.pm
- 'Net::Cmd' => '2.24', #lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #lib/Net/Config.pm
- 'Net::Domain' => '2.19', #lib/Net/Domain.pm
- 'Net::FTP' => '2.72', #lib/Net/FTP.pm
- 'Net::FTP::A' => '1.16', #lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #lib/Net/FTP/L.pm
- 'Net::hostent' => '1.01', #lib/Net/hostent.pm
- 'Net::netent' => '1.00', #lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #lib/Net/Netrc.pm
- 'Net::NNTP' => '2.22', #lib/Net/NNTP.pm
- 'Net::Ping' => '2.31', #lib/Net/Ping.pm
- 'Net::POP3' => '2.24', #lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #lib/Net/protoent.pm
- 'Net::servent' => '1.01', #lib/Net/servent.pm
- 'Net::SMTP' => '2.26', #lib/Net/SMTP.pm
- 'Net::Time' => '2.09', #lib/Net/Time.pm
- 'NEXT' => '0.60', #lib/NEXT.pm
- 'O' => '1.00', #lib/O.pm
- 'ODBM_File' => '1.04', #ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.05', #lib/Opcode.pm
- 'open' => '1.02', #lib/open.pm
- 'ops' => '1.00', #lib/ops.pm
- 'OS2::DLL' => '1.02', #os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.02', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.01', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.02', #os2/OS2/REXX/REXX.pm
- 'overload' => '1.01', #lib/overload.pm
- 'PerlIO' => '1.03', #lib/PerlIO.pm
- 'PerlIO::encoding' => '0.07', #lib/PerlIO/encoding.pm
- 'PerlIO::scalar' => '0.02', #lib/PerlIO/scalar.pm
- 'PerlIO::via' => '0.02', #lib/PerlIO/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.06', #lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.41', #lib/Pod/Checker.pm
- 'Pod::Find' => '0.24', #lib/Pod/Find.pm
- 'Pod::Functions' => '1.02', #lib/Pod/Functions.pm
- 'Pod::Html' => '1.0502', #lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.14', #lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.55', #lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.37', #lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.06', #lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.14', #lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '0.3', #lib/Pod/ParseUtils.pm
- 'Pod::Perldoc' => '3.12', #lib/Pod/Perldoc.pm
- 'Pod::Perldoc::BaseTo' => undef, #lib/Pod/Perldoc/BaseTo.pm
- 'Pod::Perldoc::GetOptsOO'=> undef, #lib/Pod/Perldoc/GetOptsOO.pm
- 'Pod::Perldoc::ToChecker'=> undef, #lib/Pod/Perldoc/ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #lib/Pod/Perldoc/ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #lib/Pod/Perldoc/ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #lib/Pod/Perldoc/ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #lib/Pod/Perldoc/ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #lib/Pod/Perldoc/ToText.pm
- 'Pod::Perldoc::ToTk' => 'undef', #lib/Pod/Perldoc/ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #lib/Pod/Perldoc/ToXml.pm
- 'Pod::Plainer' => '0.01', #lib/Pod/Plainer.pm
- 'Pod::PlainText' => '2.02', #lib/Pod/PlainText.pm
- 'Pod::Select' => '1.13', #lib/Pod/Select.pm
- 'Pod::Text' => '2.21', #lib/Pod/Text.pm
- 'Pod::Text::Color' => '1.04', #lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.1', #lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.11', #lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.16', #lib/Pod/Usage.pm
- 'POSIX' => '1.07', #lib/POSIX.pm
- 're' => '0.04', #lib/re.pm
- 'Safe' => '2.10', #lib/Safe.pm
- 'Scalar::Util' => '1.13', #lib/Scalar/Util.pm
- 'SDBM_File' => '1.04', #lib/SDBM_File.pm
- 'Search::Dict' => '1.02', #lib/Search/Dict.pm
- 'SelectSaver' => '1.00', #lib/SelectSaver.pm
- 'SelfLoader' => '1.0904', #lib/SelfLoader.pm
- 'Shell' => '0.5', #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'Socket' => '1.76', #lib/Socket.pm
- 'sort' => '1.02', #lib/sort.pm
- 'Storable' => '2.09', #lib/Storable.pm
- 'strict' => '1.03', #lib/strict.pm
- 'subs' => '1.00', #lib/subs.pm
- 'Switch' => '2.10', #lib/Switch.pm
- 'Symbol' => '1.05', #lib/Symbol.pm
- 'Sys::Hostname' => '1.11', #lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.04', #lib/Sys/Syslog.pm
- 'Term::ANSIColor' => '1.07', #lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.08', #lib/Term/Cap.pm
- 'Term::Complete' => '1.401', #lib/Term/Complete.pm
- 'Term::ReadLine' => '1.01', #lib/Term/ReadLine.pm
- 'Test' => '1.24', #lib/Test.pm
- 'Test::Builder' => '0.17', #lib/Test/Builder.pm
- 'Test::Harness' => '2.40', #lib/Test/Harness.pm
- 'Test::Harness::Assert' => '0.02', #lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.02', #lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.19', #lib/Test/Harness/Straps.pm
- 'Test::More' => '0.47', #lib/Test/More.pm
- 'Test::Simple' => '0.47', #lib/Test/Simple.pm
- 'Text::Abbrev' => '1.01', #lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.95', #lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.21', #lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.09291', #lib/Text/Wrap.pm
- 'Thread' => '2.00', #lib/Thread.pm
- 'Thread::Queue' => '2.00', #lib/Thread/Queue.pm
- 'threads' => '1.01', #lib/threads.pm
- 'Thread::Semaphore' => '2.01', #lib/Thread/Semaphore.pm
- 'Thread::Signal' => '1.00', #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #./ext/Thread/Thread/Specific.pm
- 'threads::shared' => '0.92', #lib/threads/shared.pm
- 'Tie::Array' => '1.03', #lib/Tie/Array.pm
- 'Tie::File' => '0.97', #lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #lib/Tie/Handle.pm
- 'Tie::Hash' => '1.01', #lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.31', #lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #lib/Time/gmtime.pm
- 'Time::HiRes' => '1.52', #lib/Time/HiRes.pm
- 'Time::Local' => '1.07', #lib/Time/Local.pm
- 'Time::localtime' => '1.02', #lib/Time/localtime.pm
- 'Time::tm' => '1.00', #lib/Time/tm.pm
- 'Unicode' => '4.0.0', # lib/unicore/version
- 'Unicode::Collate' => '0.33', #lib/Unicode/Collate.pm
- 'Unicode::Normalize' => '0.28', #lib/Unicode/Normalize.pm
- 'Unicode::UCD' => '0.21', #lib/Unicode/UCD.pm
- 'UNIVERSAL' => '1.01', #lib/UNIVERSAL.pm
- 'User::grent' => '1.00', #lib/User/grent.pm
- 'User::pwent' => '1.00', #lib/User/pwent.pm
- 'utf8' => '1.02', #lib/utf8.pm
- 'vars' => '1.01', #lib/vars.pm
- 'VMS::DCLsym' => '1.02', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.11', #vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.3', #vms/ext/Stdio/Stdio.pm
- 'vmsish' => '1.01', #lib/vmsish.pm
- 'warnings' => '1.03', #lib/warnings.pm
- 'warnings::register' => '1.00', #lib/warnings/register.pm
- 'XS::APItest' => '0.03', #lib/XS/APItest.pm
- 'XSLoader' => '0.02', #lib/XSLoader.pm
- 'XS::Typemap' => '0.01', #lib/XS/Typemap.pm
+ 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.009 => {
- 'AnyDBM_File' => '1.00', #lib/AnyDBM_File.pm
- 'assertions' => '0.01', #lib/assertions.pm
- 'assertions::activate' => '0.01', #lib/assertions/activate.pm
- 'Attribute::Handlers' => '0.78', #lib/Attribute/Handlers.pm
- 'attributes' => '0.06', #lib/attributes.pm
- 'attrs' => '1.01', #lib/attrs.pm
- 'AutoLoader' => '5.60', #lib/AutoLoader.pm
- 'AutoSplit' => '1.04', #lib/AutoSplit.pm
- 'autouse' => '1.03', #lib/autouse.pm
- 'B' => '1.03', #lib/B.pm
- 'B::Asmdata' => '1.01', #lib/B/Asmdata.pm
- 'B::Assembler' => '0.06', #lib/B/Assembler.pm
- 'B::Bblock' => '1.02', #lib/B/Bblock.pm
- 'B::Bytecode' => '1.01', #lib/B/Bytecode.pm
- 'B::C' => '1.03', #lib/B/C.pm
- 'B::CC' => '1.00', #lib/B/CC.pm
- 'B::Concise' => '0.57', #lib/B/Concise.pm
- 'B::Debug' => '1.01', #lib/B/Debug.pm
- 'B::Deparse' => '0.65', #lib/B/Deparse.pm
- 'B::Disassembler' => '1.03', #lib/B/Disassembler.pm
- 'B::Lint' => '1.02', #lib/B/Lint.pm
- 'B::Showlex' => '1.00', #lib/B/Showlex.pm
- 'B::Stackobj' => '1.00', #lib/B/Stackobj.pm
- 'B::Stash' => '1.00', #lib/B/Stash.pm
- 'B::Terse' => '1.02', #lib/B/Terse.pm
- 'B::Xref' => '1.01', #lib/B/Xref.pm
- 'base' => '2.03', #lib/base.pm
- 'Benchmark' => '1.051', #lib/Benchmark.pm
- 'bigint' => '0.04', #lib/bigint.pm
- 'bignum' => '0.14', #lib/bignum.pm
- 'bigrat' => '0.06', #lib/bigrat.pm
- 'blib' => '1.02', #lib/blib.pm
- 'ByteLoader' => '0.05', #lib/ByteLoader.pm
- 'bytes' => '1.01', #lib/bytes.pm
- 'Carp' => '1.01', #lib/Carp.pm
- 'Carp::Heavy' => '1.01', #lib/Carp/Heavy.pm
- 'CGI' => '3.00', #lib/CGI.pm
- 'CGI::Apache' => '1.00', #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.26', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.24', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.041', #lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.07_00', #lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #lib/CGI/Switch.pm
- 'CGI::Util' => '1.31', #lib/CGI/Util.pm
- 'charnames' => '1.02', #lib/charnames.pm
- 'Class::ISA' => '0.32', #lib/Class/ISA.pm
- 'Class::Struct' => '0.63', #lib/Class/Struct.pm
- 'Config' => undef, #lib/Config.pm
- 'constant' => '1.04', #lib/constant.pm
- 'CPAN' => '1.76_01', #lib/CPAN.pm
- 'CPAN::FirstTime' => '1.60 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.03', #lib/CPAN/Nox.pm
- 'Cwd' => '2.08', #lib/Cwd.pm
- 'Data::Dumper' => '2.121', #lib/Data/Dumper.pm
- 'DB' => '1.0', #lib/DB.pm
- 'DB_File' => '1.806', #lib/DB_File.pm
- 'Devel::DProf' => '20030813.00', #lib/Devel/DProf.pm
- 'Devel::Peek' => '1.01', #lib/Devel/Peek.pm
- 'Devel::PPPort' => '2.008', #lib/Devel/PPPort.pm
- 'Devel::SelfStubber' => '1.03', #lib/Devel/SelfStubber.pm
- 'diagnostics' => '1.11', #lib/diagnostics.pm
- 'Digest' => '1.02', #lib/Digest.pm
- 'Digest::MD5' => '2.30', #lib/Digest/MD5.pm
- 'DirHandle' => '1.00', #lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #lib/Dumpvalue.pm
- 'DynaLoader' => '1.04', #lib/DynaLoader.pm
- 'Encode' => '1.9801', #lib/Encode.pm
- 'Encode::Alias' => '1.38', #lib/Encode/Alias.pm
- 'Encode::Byte' => '1.23', #lib/Encode/Byte.pm
- 'Encode::CJKConstants' => '1.02', #lib/Encode/CJKConstants.pm
- 'Encode::CN' => '1.24', #lib/Encode/CN.pm
- 'Encode::CN::HZ' => '1.05', #lib/Encode/CN/HZ.pm
- 'Encode::Config' => '1.07', #lib/Encode/Config.pm
- 'Encode::EBCDIC' => '1.21', #lib/Encode/EBCDIC.pm
- 'Encode::Encoder' => '0.07', #lib/Encode/Encoder.pm
- 'Encode::Encoding' => '1.33', #lib/Encode/Encoding.pm
- 'Encode::Guess' => '1.09', #lib/Encode/Guess.pm
- 'Encode::JP' => '1.25', #lib/Encode/JP.pm
- 'Encode::JP::H2Z' => '1.02', #lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '1.12', #lib/Encode/JP/JIS7.pm
- 'Encode::KR' => '1.23', #lib/Encode/KR.pm
- 'Encode::KR::2022_KR' => '1.06', #lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '1.09', #lib/Encode/MIME/Header.pm
- 'Encode::Symbol' => '1.22', #lib/Encode/Symbol.pm
- 'Encode::TW' => '1.26', #lib/Encode/TW.pm
- 'Encode::Unicode' => '1.40', #lib/Encode/Unicode.pm
- 'Encode::Unicode::UTF7' => '0.02', #lib/Encode/Unicode/UTF7.pm
- 'encoding' => '1.47', #lib/encoding.pm
- 'English' => '1.02', #lib/English.pm
- 'Env' => '1.00', #lib/Env.pm
- 'Errno' => '1.09_00', #lib/Errno.pm
- 'Exporter' => '5.567', #lib/Exporter.pm
- 'Exporter::Heavy' => '5.567', #lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.05', #lib/ExtUtils/Command.pm
- 'ExtUtils::Command::MM' => '0.03', #lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Constant' => '0.14', #lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.32', #lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.08', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.01', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::Liblist::Kid'=> '1.3', #lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker' => '6.17', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #lib/ExtUtils/MakeMaker/vmsish.pm
- 'ExtUtils::Manifest' => '1.42', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM' => '0.04', #lib/ExtUtils/MM.pm
- 'ExtUtils::MM_Any' => '0.07', #lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.06', #lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.06', #lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM_OS2' => '1.04', #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.42', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.09', #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.03', #lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'Fatal' => '1.04', #lib/Fatal.pm
- 'Fcntl' => '1.05', #lib/Fcntl.pm
- 'fields' => '2.03', #lib/fields.pm
- 'File::Basename' => '2.72', #lib/File/Basename.pm
- 'File::CheckTree' => '4.2', #lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #lib/File/Compare.pm
- 'File::Copy' => '2.06', #lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #lib/File/DosGlob.pm
- 'File::Find' => '1.05', #lib/File/Find.pm
- 'File::Glob' => '1.02', #lib/File/Glob.pm
- 'File::Path' => '1.06', #lib/File/Path.pm
- 'File::Spec' => '0.86', #lib/File/Spec.pm
- 'File::Spec::Cygwin' => '1.1', #lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.4', #lib/File/Spec/Win32.pm
- 'File::stat' => '1.00', #lib/File/stat.pm
- 'File::Temp' => '0.14', #lib/File/Temp.pm
- 'FileCache' => '1.03', #lib/FileCache.pm
- 'FileHandle' => '2.01', #lib/FileHandle.pm
- 'filetest' => '1.01', #lib/filetest.pm
- 'Filter::Simple' => '0.78', #lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.0601', #lib/Filter/Util/Call.pm
- 'FindBin' => '1.43', #lib/FindBin.pm
- 'GDBM_File' => '1.07', #ext/GDBM_File/GDBM_File.pm
- 'Getopt::Long' => '2.34', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.04', #lib/Getopt/Std.pm
- 'Hash::Util' => '0.05', #lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #lib/I18N/Collate.pm
- 'I18N::Langinfo' => '0.02', #lib/I18N/Langinfo.pm
- 'I18N::LangTags' => '0.29', #lib/I18N/LangTags.pm
- 'I18N::LangTags::List' => '0.29', #lib/I18N/LangTags/List.pm
- 'if' => '0.03', #lib/if.pm
- 'integer' => '1.00', #lib/integer.pm
- 'IO' => '1.21', #lib/IO.pm
- 'IO::Dir' => '1.04', #lib/IO/Dir.pm
- 'IO::File' => '1.10', #lib/IO/File.pm
- 'IO::Handle' => '1.23', #lib/IO/Handle.pm
- 'IO::Pipe' => '1.122', #lib/IO/Pipe.pm
- 'IO::Poll' => '0.06', #lib/IO/Poll.pm
- 'IO::Seekable' => '1.09', #lib/IO/Seekable.pm
- 'IO::Select' => '1.16', #lib/IO/Select.pm
- 'IO::Socket' => '1.28', #lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.27', #lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.21', #lib/IO/Socket/UNIX.pm
- 'IPC::Msg' => '1.02', #lib/IPC/Msg.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0105', #lib/IPC/Open3.pm
- 'IPC::Semaphore' => '1.02', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.04', #lib/IPC/SysV.pm
- 'JNI' => '0.2', #jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #jpl/JPL/Compile.pm
- 'less' => '0.01', #lib/less.pm
- 'lib' => '0.5565', #lib/lib.pm
- 'List::Util' => '1.13', #lib/List/Util.pm
- 'locale' => '1.00', #lib/locale.pm
- 'Locale::Constants' => '2.01', #lib/Locale/Constants.pm
- 'Locale::Country' => '2.61', #lib/Locale/Country.pm
- 'Locale::Currency' => '2.21', #lib/Locale/Currency.pm
- 'Locale::Language' => '2.21', #lib/Locale/Language.pm
- 'Locale::Maketext' => '1.06', #lib/Locale/Maketext.pm
- 'Locale::Maketext::Guts'=> undef, #lib/Locale/Maketext/Guts.pm
- 'Locale::Maketext::GutsLoader'=> undef, #lib/Locale/Maketext/GutsLoader.pm
- 'Locale::Script' => '2.21', #lib/Locale/Script.pm
- 'Math::BigFloat' => '1.40', #lib/Math/BigFloat.pm
- 'Math::BigFloat::Trace' => '0.01', #lib/Math/BigFloat/Trace.pm
- 'Math::BigInt' => '1.66', #lib/Math/BigInt.pm
- 'Math::BigInt::Calc' => '0.36', #lib/Math/BigInt/Calc.pm
- 'Math::BigInt::Scalar' => '0.11', #lib/Math/BigInt/Scalar.pm
- 'Math::BigInt::Trace' => '0.01', #lib/Math/BigInt/Trace.pm
- 'Math::BigRat' => '0.10', #lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #lib/Math/Complex.pm
- 'Math::Trig' => '1.02', #lib/Math/Trig.pm
- 'Memoize' => '1.01', #lib/Memoize.pm
- 'Memoize::AnyDBM_File' => '0.65', #lib/Memoize/AnyDBM_File.pm
- 'Memoize::Expire' => '1.00', #lib/Memoize/Expire.pm
- 'Memoize::ExpireFile' => '1.01', #lib/Memoize/ExpireFile.pm
- 'Memoize::ExpireTest' => '0.65', #lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #lib/Memoize/Storable.pm
- 'MIME::Base64' => '2.21', #lib/MIME/Base64.pm
- 'MIME::QuotedPrint' => '2.21', #lib/MIME/QuotedPrint.pm
- 'NDBM_File' => '1.05', #ext/NDBM_File/NDBM_File.pm
- 'Net::Cmd' => '2.24', #lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #lib/Net/Config.pm
- 'Net::Domain' => '2.19', #lib/Net/Domain.pm
- 'Net::FTP' => '2.72', #lib/Net/FTP.pm
- 'Net::FTP::A' => '1.16', #lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #lib/Net/FTP/L.pm
- 'Net::hostent' => '1.01', #lib/Net/hostent.pm
- 'Net::netent' => '1.00', #lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #lib/Net/Netrc.pm
- 'Net::NNTP' => '2.22', #lib/Net/NNTP.pm
- 'Net::Ping' => '2.31', #lib/Net/Ping.pm
- 'Net::POP3' => '2.24', #lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #lib/Net/protoent.pm
- 'Net::servent' => '1.01', #lib/Net/servent.pm
- 'Net::SMTP' => '2.26', #lib/Net/SMTP.pm
- 'Net::Time' => '2.09', #lib/Net/Time.pm
- 'NEXT' => '0.60', #lib/NEXT.pm
- 'O' => '1.00', #lib/O.pm
- 'ODBM_File' => '1.04', #ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.06', #lib/Opcode.pm
- 'open' => '1.02', #lib/open.pm
- 'ops' => '1.00', #lib/ops.pm
- 'OS2::DLL' => '1.02', #os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.02', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.01', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.02', #os2/OS2/REXX/REXX.pm
- 'overload' => '1.02', #lib/overload.pm
- 'PerlIO' => '1.02', #lib/PerlIO.pm
- 'PerlIO::encoding' => '0.07', #lib/PerlIO/encoding.pm
- 'PerlIO::scalar' => '0.02', #lib/PerlIO/scalar.pm
- 'PerlIO::via' => '0.02', #lib/PerlIO/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.05', #lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.41', #lib/Pod/Checker.pm
- 'Pod::Find' => '0.24', #lib/Pod/Find.pm
- 'Pod::Functions' => '1.02', #lib/Pod/Functions.pm
- 'Pod::Html' => '1.0501', #lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.14', #lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.55', #lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.37', #lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.06', #lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.13', #lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '0.3', #lib/Pod/ParseUtils.pm
- 'Pod::Perldoc' => '3.11', #lib/Pod/Perldoc.pm
- 'Pod::Perldoc::BaseTo' => undef, #lib/Pod/Perldoc/BaseTo.pm
- 'Pod::Perldoc::GetOptsOO'=> undef, #lib/Pod/Perldoc/GetOptsOO.pm
- 'Pod::Perldoc::ToChecker'=> undef, #lib/Pod/Perldoc/ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #lib/Pod/Perldoc/ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #lib/Pod/Perldoc/ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #lib/Pod/Perldoc/ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #lib/Pod/Perldoc/ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #lib/Pod/Perldoc/ToText.pm
- 'Pod::Perldoc::ToTk' => 'undef', #lib/Pod/Perldoc/ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #lib/Pod/Perldoc/ToXml.pm
- 'Pod::Plainer' => '0.01', #lib/Pod/Plainer.pm
- 'Pod::PlainText' => '2.01', #lib/Pod/PlainText.pm
- 'Pod::Select' => '1.13', #lib/Pod/Select.pm
- 'Pod::Text' => '2.21', #lib/Pod/Text.pm
- 'Pod::Text::Color' => '1.04', #lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.1', #lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.11', #lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.16', #lib/Pod/Usage.pm
- 'POSIX' => '1.06', #lib/POSIX.pm
- 're' => '0.04', #lib/re.pm
- 'Safe' => '2.10', #lib/Safe.pm
- 'Scalar::Util' => '1.13', #lib/Scalar/Util.pm
- 'SDBM_File' => '1.04', #lib/SDBM_File.pm
- 'Search::Dict' => '1.02', #lib/Search/Dict.pm
- 'SelectSaver' => '1.00', #lib/SelectSaver.pm
- 'SelfLoader' => '1.0904', #lib/SelfLoader.pm
- 'Shell' => '0.5', #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'Socket' => '1.76', #lib/Socket.pm
- 'sort' => '1.02', #lib/sort.pm
- 'Storable' => '2.08', #lib/Storable.pm
- 'strict' => '1.03', #lib/strict.pm
- 'subs' => '1.00', #lib/subs.pm
- 'Switch' => '2.10', #lib/Switch.pm
- 'Symbol' => '1.05', #lib/Symbol.pm
- 'Sys::Hostname' => '1.11', #lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.04', #lib/Sys/Syslog.pm
- 'Term::ANSIColor' => '1.07', #lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.08', #lib/Term/Cap.pm
- 'Term::Complete' => '1.401', #lib/Term/Complete.pm
- 'Term::ReadLine' => '1.01', #lib/Term/ReadLine.pm
- 'Test' => '1.24', #lib/Test.pm
- 'Test::Builder' => '0.17', #lib/Test/Builder.pm
- 'Test::Harness' => '2.30', #lib/Test/Harness.pm
- 'Test::Harness::Assert' => '0.01', #lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.01', #lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.15', #lib/Test/Harness/Straps.pm
- 'Test::More' => '0.47', #lib/Test/More.pm
- 'Test::Simple' => '0.47', #lib/Test/Simple.pm
- 'Text::Abbrev' => '1.01', #lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.95', #lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.21', #lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.09291', #lib/Text/Wrap.pm
- 'Thread' => '2.00', #lib/Thread.pm
- 'Thread::Queue' => '2.00', #lib/Thread/Queue.pm
- 'Thread::Semaphore' => '2.01', #lib/Thread/Semaphore.pm
- 'Thread::Signal' => '1.00', #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #./ext/Thread/Thread/Specific.pm
- 'threads' => '1.00', #lib/threads.pm
- 'threads::shared' => '0.91', #lib/threads/shared.pm
- 'Tie::Array' => '1.03', #lib/Tie/Array.pm
- 'Tie::File' => '0.97', #lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #lib/Tie/Handle.pm
- 'Tie::Hash' => '1.00', #lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.31', #lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #lib/Time/gmtime.pm
- 'Time::HiRes' => '1.51', #lib/Time/HiRes.pm
- 'Time::Local' => '1.07', #lib/Time/Local.pm
- 'Time::localtime' => '1.02', #lib/Time/localtime.pm
- 'Time::tm' => '1.00', #lib/Time/tm.pm
- 'Unicode' => '4.0.0', #lib/unicore/version
- 'Unicode::Collate' => '0.28', #lib/Unicode/Collate.pm
- 'Unicode::Normalize' => '0.23', #lib/Unicode/Normalize.pm
- 'Unicode::UCD' => '0.21', #lib/Unicode/UCD.pm
- 'UNIVERSAL' => '1.01', #lib/UNIVERSAL.pm
- 'User::grent' => '1.00', #lib/User/grent.pm
- 'User::pwent' => '1.00', #lib/User/pwent.pm
- 'utf8' => '1.02', #lib/utf8.pm
- 'vars' => '1.01', #lib/vars.pm
- 'version' => '0.29', #lib/version.pm
- 'VMS::DCLsym' => '1.02', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.11', #vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.3', #vms/ext/Stdio/Stdio.pm
- 'vmsish' => '1.01', #lib/vmsish.pm
- 'warnings' => '1.03', #lib/warnings.pm
- 'warnings::register' => '1.00', #lib/warnings/register.pm
- 'XS::APItest' => '0.02', #lib/XS/APItest.pm
- 'XS::Typemap' => '0.01', #lib/XS/Typemap.pm
- 'XSLoader' => '0.03', #lib/XSLoader.pm
- },
-
- 5.009001 => {
- 'AnyDBM_File' => '1.00', #lib/AnyDBM_File.pm
- 'assertions' => '0.01', #lib/assertions.pm
- 'assertions::activate' => '0.01', #lib/assertions/activate.pm
- 'Attribute::Handlers' => '0.78_01', #lib/Attribute/Handlers.pm
- 'attributes' => '0.06', #lib/attributes.pm
- 'attrs' => '1.01', #lib/attrs.pm
- 'AutoLoader' => '5.60', #lib/AutoLoader.pm
- 'AutoSplit' => '1.04', #lib/AutoSplit.pm
- 'autouse' => '1.03', #lib/autouse.pm
- 'B' => '1.05', #lib/B.pm
- 'base' => '2.04', #lib/base.pm
- 'B::Asmdata' => '1.01', #lib/B/Asmdata.pm
- 'B::Assembler' => '0.06', #lib/B/Assembler.pm
- 'B::Bblock' => '1.02', #lib/B/Bblock.pm
- 'B::Bytecode' => '1.01', #lib/B/Bytecode.pm
- 'B::C' => '1.04', #lib/B/C.pm
- 'B::CC' => '1.00', #lib/B/CC.pm
- 'B::Concise' => '0.59', #lib/B/Concise.pm
- 'B::Debug' => '1.02', #lib/B/Debug.pm
- 'B::Deparse' => '0.65', #lib/B/Deparse.pm
- 'B::Disassembler' => '1.03', #lib/B/Disassembler.pm
- 'Benchmark' => '1.06', #lib/Benchmark.pm
- 'bigint' => '0.05', #lib/bigint.pm
- 'bignum' => '0.15', #lib/bignum.pm
- 'bigrat' => '0.06', #lib/bigrat.pm
- 'blib' => '1.02', #lib/blib.pm
- 'B::Lint' => '1.02', #lib/B/Lint.pm
- 'B::Showlex' => '1.00', #lib/B/Showlex.pm
- 'B::Stackobj' => '1.00', #lib/B/Stackobj.pm
- 'B::Stash' => '1.00', #lib/B/Stash.pm
- 'B::Terse' => '1.02', #lib/B/Terse.pm
- 'B::Xref' => '1.01', #lib/B/Xref.pm
- 'ByteLoader' => '0.05', #lib/ByteLoader.pm
- 'bytes' => '1.01', #lib/bytes.pm
- 'Carp' => '1.02', #lib/Carp.pm
- 'Carp::Heavy' => '1.01', #lib/Carp/Heavy.pm
- 'CGI' => '3.04', #lib/CGI.pm
- 'CGI::Apache' => '1.00', #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.27', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.24', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.05', #lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.08', #lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #lib/CGI/Switch.pm
- 'CGI::Util' => '1.4', #lib/CGI/Util.pm
- 'charnames' => '1.03', #lib/charnames.pm
- 'Class::ISA' => '0.32', #lib/Class/ISA.pm
- 'Class::Struct' => '0.63', #lib/Class/Struct.pm
- 'Config' => undef, #lib/Config.pm
- 'constant' => '1.04', #lib/constant.pm
- 'CPAN' => '1.76_01', #lib/CPAN.pm
- 'CPAN::FirstTime' => '1.60 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.03', #lib/CPAN/Nox.pm
- 'Cwd' => '2.17', #lib/Cwd.pm
- 'Data::Dumper' => '2.121', #lib/Data/Dumper.pm
- 'DB' => '1.0', #lib/DB.pm
- 'DB_File' => '1.808_01', #lib/DB_File.pm
- 'DBM_Filter' => '0.01', #lib/DBM_Filter.pm
- 'DBM_Filter::compress' => '0.01', #lib/DBM_Filter/compress.pm
- 'DBM_Filter::encode' => '0.01', #lib/DBM_Filter/encode.pm
- 'DBM_Filter::int32' => '0.01', #lib/DBM_Filter/int32.pm
- 'DBM_Filter::null' => '0.01', #lib/DBM_Filter/null.pm
- 'DBM_Filter::utf8' => '0.01', #lib/DBM_Filter/utf8.pm
- 'Devel::DProf' => '20030813.00', #lib/Devel/DProf.pm
- 'Devel::Peek' => '1.01', #lib/Devel/Peek.pm
- 'Devel::PPPort' => '2.011_01', #lib/Devel/PPPort.pm
- 'Devel::SelfStubber' => '1.03', #lib/Devel/SelfStubber.pm
- 'diagnostics' => '1.12', #lib/diagnostics.pm
- 'Digest' => '1.05', #lib/Digest.pm
- 'Digest::base' => '1.00', #lib/Digest/base.pm
- 'Digest::MD5' => '2.33', #lib/Digest/MD5.pm
- 'DirHandle' => '1.00', #lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #lib/Dumpvalue.pm
- 'DynaLoader' => '1.04', #lib/DynaLoader.pm
- 'Encode' => '1.99_01', #lib/Encode.pm
- 'Encode::Alias' => '1.38', #lib/Encode/Alias.pm
- 'Encode::Byte' => '1.23', #lib/Encode/Byte.pm
- 'Encode::CJKConstants' => '1.02', #lib/Encode/CJKConstants.pm
- 'Encode::CN' => '1.24', #lib/Encode/CN.pm
- 'Encode::CN::HZ' => '1.0501', #lib/Encode/CN/HZ.pm
- 'Encode::Config' => '1.07', #lib/Encode/Config.pm
- 'Encode::EBCDIC' => '1.21', #lib/Encode/EBCDIC.pm
- 'Encode::Encoder' => '0.07', #lib/Encode/Encoder.pm
- 'Encode::Encoding' => '1.33', #lib/Encode/Encoding.pm
- 'Encode::Guess' => '1.09', #lib/Encode/Guess.pm
- 'Encode::JP' => '1.25', #lib/Encode/JP.pm
- 'Encode::JP::H2Z' => '1.02', #lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '1.12', #lib/Encode/JP/JIS7.pm
- 'Encode::KR' => '1.23', #lib/Encode/KR.pm
- 'Encode::KR::2022_KR' => '1.06', #lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '1.09', #lib/Encode/MIME/Header.pm
- 'Encode::Symbol' => '1.22', #lib/Encode/Symbol.pm
- 'Encode::TW' => '1.26', #lib/Encode/TW.pm
- 'Encode::Unicode' => '1.40', #lib/Encode/Unicode.pm
- 'Encode::Unicode::UTF7' => '0.02', #lib/Encode/Unicode/UTF7.pm
- 'encoding' => '1.48', #lib/encoding.pm
- 'English' => '1.02', #lib/English.pm
- 'Env' => '1.00', #lib/Env.pm
- 'Errno' => '1.09_00', #lib/Errno.pm
- 'Exporter' => '5.58', #lib/Exporter.pm
- 'Exporter::Heavy' => '5.567', #lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.07', #lib/ExtUtils/Command.pm
- 'ExtUtils::Command::MM' => '0.03', #lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Constant' => '0.14', #lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.32', #lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.08', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.01', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::Liblist::Kid'=> '1.3', #lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker' => '6.21_02', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #lib/ExtUtils/MakeMaker/vmsish.pm
- 'ExtUtils::Manifest' => '1.43', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM' => '0.04', #lib/ExtUtils/MM.pm
- 'ExtUtils::MM_Any' => '0.0901', #lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.07', #lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.07_01', #lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM_OS2' => '1.04', #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.45_01', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.71_01', #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.10_01', #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.03', #lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'Fatal' => '1.04', #lib/Fatal.pm
- 'Fcntl' => '1.05', #lib/Fcntl.pm
- 'fields' => '2.03', #lib/fields.pm
- 'File::Basename' => '2.72', #lib/File/Basename.pm
- 'FileCache' => '1.03', #lib/FileCache.pm
- 'File::CheckTree' => '4.3', #lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #lib/File/Compare.pm
- 'File::Copy' => '2.07', #lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #lib/File/DosGlob.pm
- 'File::Find' => '1.07', #lib/File/Find.pm
- 'File::Glob' => '1.02', #lib/File/Glob.pm
- 'FileHandle' => '2.01', #lib/FileHandle.pm
- 'File::Path' => '1.06', #lib/File/Path.pm
- 'File::Spec' => '0.87', #lib/File/Spec.pm
- 'File::Spec::Cygwin' => '1.1', #lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.4', #lib/File/Spec/Win32.pm
- 'File::stat' => '1.00', #lib/File/stat.pm
- 'File::Temp' => '0.14', #lib/File/Temp.pm
- 'filetest' => '1.01', #lib/filetest.pm
- 'Filter::Simple' => '0.78', #lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.0601', #lib/Filter/Util/Call.pm
- 'FindBin' => '1.44', #lib/FindBin.pm
- 'GDBM_File' => '1.07', #lib/GDBM_File.pm
- 'Getopt::Long' => '2.3401', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.05', #lib/Getopt/Std.pm
- 'Hash::Util' => '0.05', #lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #lib/I18N/Collate.pm
- 'I18N::Langinfo' => '0.02', #lib/I18N/Langinfo.pm
- 'I18N::LangTags' => '0.29', #lib/I18N/LangTags.pm
- 'I18N::LangTags::List' => '0.29', #lib/I18N/LangTags/List.pm
- 'if' => '0.0401', #lib/if.pm
- 'integer' => '1.00', #lib/integer.pm
- 'IO' => '1.21', #lib/IO.pm
- 'IO::Dir' => '1.04', #lib/IO/Dir.pm
- 'IO::File' => '1.10', #lib/IO/File.pm
- 'IO::Handle' => '1.23', #lib/IO/Handle.pm
- 'IO::Pipe' => '1.122', #lib/IO/Pipe.pm
- 'IO::Poll' => '0.06', #lib/IO/Poll.pm
- 'IO::Seekable' => '1.09', #lib/IO/Seekable.pm
- 'IO::Select' => '1.16', #lib/IO/Select.pm
- 'IO::Socket' => '1.28', #lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.27', #lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.21', #lib/IO/Socket/UNIX.pm
- 'IPC::Msg' => '1.02', #lib/IPC/Msg.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0105', #lib/IPC/Open3.pm
- 'IPC::Semaphore' => '1.02', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.04', #lib/IPC/SysV.pm
- 'JNI' => '0.2', #jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #jpl/JPL/Compile.pm
- 'less' => '0.01', #lib/less.pm
- 'lib' => '0.5565', #lib/lib.pm
- 'List::Util' => '1.13', #lib/List/Util.pm
- 'locale' => '1.00', #lib/locale.pm
- 'Locale::Constants' => '2.01', #lib/Locale/Constants.pm
- 'Locale::Country' => '2.61', #lib/Locale/Country.pm
- 'Locale::Currency' => '2.21', #lib/Locale/Currency.pm
- 'Locale::Language' => '2.21', #lib/Locale/Language.pm
- 'Locale::Maketext' => '1.08', #lib/Locale/Maketext.pm
- 'Locale::Maketext::GutsLoader'=> undef, #lib/Locale/Maketext/GutsLoader.pm
- 'Locale::Maketext::Guts'=> undef, #lib/Locale/Maketext/Guts.pm
- 'Locale::Script' => '2.21', #lib/Locale/Script.pm
- 'Math::BigFloat' => '1.44', #lib/Math/BigFloat.pm
- 'Math::BigFloat::Trace' => '0.01', #lib/Math/BigFloat/Trace.pm
- 'Math::BigInt' => '1.70', #lib/Math/BigInt.pm
- 'Math::BigInt::Calc' => '0.40', #lib/Math/BigInt/Calc.pm
- 'Math::BigInt::CalcEmu' => '0.04', #lib/Math/BigInt/CalcEmu.pm
- 'Math::BigInt::Trace' => '0.01', #lib/Math/BigInt/Trace.pm
- 'Math::BigRat' => '0.12', #lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #lib/Math/Complex.pm
- 'Math::Trig' => '1.02', #lib/Math/Trig.pm
- 'Memoize' => '1.01_01', #lib/Memoize.pm
- 'Memoize::AnyDBM_File' => '0.65', #lib/Memoize/AnyDBM_File.pm
- 'Memoize::Expire' => '1.00', #lib/Memoize/Expire.pm
- 'Memoize::ExpireFile' => '1.01', #lib/Memoize/ExpireFile.pm
- 'Memoize::ExpireTest' => '0.65', #lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #lib/Memoize/Storable.pm
- 'MIME::Base64' => '3.00_01', #lib/MIME/Base64.pm
- 'MIME::QuotedPrint' => '3.00', #lib/MIME/QuotedPrint.pm
- 'NDBM_File' => '1.05', #lib/NDBM_File.pm
- 'Net::Cmd' => '2.24', #lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #lib/Net/Config.pm
- 'Net::Domain' => '2.19', #lib/Net/Domain.pm
- 'Net::FTP' => '2.72', #lib/Net/FTP.pm
- 'Net::FTP::A' => '1.16', #lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #lib/Net/FTP/L.pm
- 'Net::hostent' => '1.01', #lib/Net/hostent.pm
- 'Net::netent' => '1.00', #lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #lib/Net/Netrc.pm
- 'Net::NNTP' => '2.22', #lib/Net/NNTP.pm
- 'Net::Ping' => '2.31', #lib/Net/Ping.pm
- 'Net::POP3' => '2.24', #lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #lib/Net/protoent.pm
- 'Net::servent' => '1.01', #lib/Net/servent.pm
- 'Net::SMTP' => '2.26', #lib/Net/SMTP.pm
- 'Net::Time' => '2.09', #lib/Net/Time.pm
- 'NEXT' => '0.60', #lib/NEXT.pm
- 'O' => '1.00', #lib/O.pm
- 'ODBM_File' => '1.04', #ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.06', #lib/Opcode.pm
- 'open' => '1.02', #lib/open.pm
- 'ops' => '1.00', #lib/ops.pm
- 'OS2::DLL' => '1.02', #os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.02', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.01', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.02', #os2/OS2/REXX/REXX.pm
- 'overload' => '1.02', #lib/overload.pm
- 'PerlIO' => '1.03', #lib/PerlIO.pm
- 'PerlIO::encoding' => '0.07', #lib/PerlIO/encoding.pm
- 'PerlIO::scalar' => '0.02', #lib/PerlIO/scalar.pm
- 'PerlIO::via' => '0.02', #lib/PerlIO/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.06', #lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.41', #lib/Pod/Checker.pm
- 'Pod::Find' => '0.24', #lib/Pod/Find.pm
- 'Pod::Functions' => '1.02', #lib/Pod/Functions.pm
- 'Pod::Html' => '1.0502', #lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.14', #lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.55', #lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.37', #lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.06', #lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.14', #lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '0.3', #lib/Pod/ParseUtils.pm
- 'Pod::Perldoc' => '3.12', #lib/Pod/Perldoc.pm
- 'Pod::Perldoc::BaseTo' => undef, #lib/Pod/Perldoc/BaseTo.pm
- 'Pod::Perldoc::GetOptsOO'=> undef, #lib/Pod/Perldoc/GetOptsOO.pm
- 'Pod::Perldoc::ToChecker'=> undef, #lib/Pod/Perldoc/ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #lib/Pod/Perldoc/ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #lib/Pod/Perldoc/ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #lib/Pod/Perldoc/ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #lib/Pod/Perldoc/ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #lib/Pod/Perldoc/ToText.pm
- 'Pod::Perldoc::ToTk' => 'undef', #lib/Pod/Perldoc/ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #lib/Pod/Perldoc/ToXml.pm
- 'Pod::Plainer' => '0.01', #lib/Pod/Plainer.pm
- 'Pod::PlainText' => '2.02', #lib/Pod/PlainText.pm
- 'Pod::Select' => '1.13', #lib/Pod/Select.pm
- 'Pod::Text' => '2.21', #lib/Pod/Text.pm
- 'Pod::Text::Color' => '1.04', #lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.1', #lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.11', #lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.16', #lib/Pod/Usage.pm
- 'POSIX' => '1.07', #lib/POSIX.pm
- 're' => '0.04', #lib/re.pm
- 'Safe' => '2.10', #lib/Safe.pm
- 'Scalar::Util' => '1.13', #lib/Scalar/Util.pm
- 'SDBM_File' => '1.04', #lib/SDBM_File.pm
- 'Search::Dict' => '1.02', #lib/Search/Dict.pm
- 'SelectSaver' => '1.00', #lib/SelectSaver.pm
- 'SelfLoader' => '1.0904', #lib/SelfLoader.pm
- 'Shell' => '0.5.2', #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'Socket' => '1.77', #lib/Socket.pm
- 'sort' => '1.02', #lib/sort.pm
- 'Storable' => '2.11', #lib/Storable.pm
- 'strict' => '1.03', #lib/strict.pm
- 'subs' => '1.00', #lib/subs.pm
- 'Switch' => '2.10', #lib/Switch.pm
- 'Symbol' => '1.05', #lib/Symbol.pm
- 'Sys::Hostname' => '1.11', #lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.05', #lib/Sys/Syslog.pm
- 'Term::ANSIColor' => '1.08', #lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.08', #lib/Term/Cap.pm
- 'Term::Complete' => '1.401', #lib/Term/Complete.pm
- 'Term::ReadLine' => '1.01', #lib/Term/ReadLine.pm
- 'Test' => '1.24', #lib/Test.pm
- 'Test::Builder' => '0.17', #lib/Test/Builder.pm
- 'Test::Harness' => '2.40', #lib/Test/Harness.pm
- 'Test::Harness::Assert' => '0.02', #lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.02', #lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.19', #lib/Test/Harness/Straps.pm
- 'Test::More' => '0.47', #lib/Test/More.pm
- 'Test::Simple' => '0.47', #lib/Test/Simple.pm
- 'Text::Abbrev' => '1.01', #lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.95', #lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.21', #lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.09291', #lib/Text/Wrap.pm
- 'Thread' => '2.00', #lib/Thread.pm
- 'Thread::Queue' => '2.00', #lib/Thread/Queue.pm
- 'threads' => '1.02', #lib/threads.pm
- 'Thread::Semaphore' => '2.01', #lib/Thread/Semaphore.pm
- 'Thread::Signal' => '1.00', #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #./ext/Thread/Thread/Specific.pm
- 'threads::shared' => '0.92', #lib/threads/shared.pm
- 'Tie::Array' => '1.03', #lib/Tie/Array.pm
- 'Tie::File' => '0.97', #lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #lib/Tie/Handle.pm
- 'Tie::Hash' => '1.01', #lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.31', #lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #lib/Time/gmtime.pm
- 'Time::HiRes' => '1.56', #lib/Time/HiRes.pm
- 'Time::Local' => '1.07_94', #lib/Time/Local.pm
- 'Time::localtime' => '1.02', #lib/Time/localtime.pm
- 'Time::tm' => '1.00', #lib/Time/tm.pm
- 'Unicode' => '4.0.0', #lib/unicore/version
- 'Unicode::Collate' => '0.33', #lib/Unicode/Collate.pm
- 'Unicode::Normalize' => '0.28', #lib/Unicode/Normalize.pm
- 'Unicode::UCD' => '0.21', #lib/Unicode/UCD.pm
- 'UNIVERSAL' => '1.02', #lib/UNIVERSAL.pm
- 'User::grent' => '1.00', #lib/User/grent.pm
- 'User::pwent' => '1.00', #lib/User/pwent.pm
- 'utf8' => '1.02', #lib/utf8.pm
- 'vars' => '1.01', #lib/vars.pm
- 'version' => '0.36', #lib/version.pm
- 'VMS::DCLsym' => '1.02', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.11', #vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.3', #vms/ext/Stdio/Stdio.pm
- 'vmsish' => '1.01', #lib/vmsish.pm
- 'warnings' => '1.03', #lib/warnings.pm
- 'warnings::register' => '1.00', #lib/warnings/register.pm
- 'XS::APItest' => '0.03', #lib/XS/APItest.pm
- 'XSLoader' => '0.03', #lib/XSLoader.pm
- 'XS::Typemap' => '0.01', #lib/XS/Typemap.pm
- },
-
5.008004 => {
- 'AnyDBM_File' => '1.00', #lib/AnyDBM_File.pm
- 'attributes' => '0.06', #lib/attributes.pm
- 'AutoLoader' => '5.60', #lib/AutoLoader.pm
- 'AutoSplit' => '1.04', #lib/AutoSplit.pm
- 'autouse' => '1.03', #lib/autouse.pm
- 'base' => '2.05', #lib/base.pm
- 'Benchmark' => '1.06', #lib/Benchmark.pm
- 'bigint' => '0.05', #lib/bigint.pm
- 'bignum' => '0.15', #lib/bignum.pm
- 'bigrat' => '0.06', #lib/bigrat.pm
- 'blib' => '1.02', #lib/blib.pm
- 'bytes' => '1.01', #lib/bytes.pm
- 'Carp' => '1.02', #lib/Carp.pm
- 'CGI' => '3.04', #lib/CGI.pm
- 'charnames' => '1.03', #lib/charnames.pm
- 'constant' => '1.04', #lib/constant.pm
- 'CPAN' => '1.76_01', #lib/CPAN.pm
- 'Cwd' => '2.17', #lib/Cwd.pm
- 'DBM_Filter' => '0.01', #lib/DBM_Filter.pm
- 'DB' => '1.0', #lib/DB.pm
- 'diagnostics' => '1.12', #lib/diagnostics.pm
- 'Digest' => '1.06', #lib/Digest.pm
- 'DirHandle' => '1.00', #lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #lib/Dumpvalue.pm
- 'English' => '1.01', #lib/English.pm
- 'Env' => '1.00', #lib/Env.pm
- 'Exporter' => '5.58', #lib/Exporter.pm
- 'Fatal' => '1.03', #lib/Fatal.pm
- 'fields' => '2.03', #lib/fields.pm
- 'FileCache' => '1.03', #lib/FileCache.pm
- 'FileHandle' => '2.01', #lib/FileHandle.pm
- 'filetest' => '1.01', #lib/filetest.pm
- 'FindBin' => '1.44', #lib/FindBin.pm
- 'if' => '0.03', #lib/if.pm
- 'integer' => '1.00', #lib/integer.pm
- 'less' => '0.01', #lib/less.pm
- 'locale' => '1.00', #lib/locale.pm
- 'Memoize' => '1.01', #lib/Memoize.pm
- 'NEXT' => '0.60', #lib/NEXT.pm
- 'open' => '1.03', #lib/open.pm
- 'overload' => '1.01', #lib/overload.pm
- 'PerlIO' => '1.03', #lib/PerlIO.pm
- 'SelectSaver' => '1.00', #lib/SelectSaver.pm
- 'SelfLoader' => '1.0904', #lib/SelfLoader.pm
- 'Shell' => '0.5.2', #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'sort' => '1.02', #lib/sort.pm
- 'strict' => '1.03', #lib/strict.pm
- 'subs' => '1.00', #lib/subs.pm
- 'Switch' => '2.10', #lib/Switch.pm
- 'Symbol' => '1.05', #lib/Symbol.pm
- 'Test' => '1.24', #lib/Test.pm
- 'Thread' => '2.00', #lib/Thread.pm
- 'Unicode' => '4.0.1', # lib/unicore/version
- 'UNIVERSAL' => '1.01', #lib/UNIVERSAL.pm
- 'utf8' => '1.03', #lib/utf8.pm
- 'vars' => '1.01', #lib/vars.pm
- 'vmsish' => '1.01', #lib/vmsish.pm
- 'warnings' => '1.03', #lib/warnings.pm
- 'Config' => undef, #lib/Config.pm
- 'lib' => '0.5565', #lib/lib.pm
- 're' => '0.04', #lib/re.pm
- 'XSLoader' => '0.02', #lib/XSLoader.pm
- 'DynaLoader' => '1.05', #lib/DynaLoader.pm
- 'attrs' => '1.01', #lib/attrs.pm
- 'B' => '1.02', #lib/B.pm
- 'O' => '1.00', #lib/O.pm
- 'ByteLoader' => '0.05', #lib/ByteLoader.pm
- 'DB_File' => '1.808', #lib/DB_File.pm
- 'Encode' => '1.99_01', #lib/Encode.pm
- 'encoding' => '1.48', #lib/encoding.pm
- 'Fcntl' => '1.05', #lib/Fcntl.pm
- 'GDBM_File' => '1.07', #lib/GDBM_File.pm
- 'IO' => '1.21', #lib/IO.pm
- 'NDBM_File' => '1.05', #lib/NDBM_File.pm
- 'Safe' => '2.10', #lib/Safe.pm
- 'Opcode' => '1.05', #lib/Opcode.pm
- 'ops' => '1.00', #lib/ops.pm
- 'POSIX' => '1.08', #lib/POSIX.pm
- 'SDBM_File' => '1.04', #lib/SDBM_File.pm
- 'Socket' => '1.77', #lib/Socket.pm
- 'Storable' => '2.12', #lib/Storable.pm
- 'threads' => '1.03', #lib/threads.pm
- 'Errno' => '1.09_00', #lib/Errno.pm
- 'Attribute::Handlers' => '0.78_01', #lib/Attribute/Handlers.pm
- 'Carp::Heavy' => '1.01', #lib/Carp/Heavy.pm
- 'CGI::Apache' => '1.00', #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.27', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.24', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.05', #lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.08', #lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #lib/CGI/Switch.pm
- 'CGI::Util' => '1.4', #lib/CGI/Util.pm
- 'Class::ISA' => '0.32', #lib/Class/ISA.pm
- 'Class::Struct' => '0.63', #lib/Class/Struct.pm
- 'CPAN::FirstTime' => '1.60 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.03', #lib/CPAN/Nox.pm
- 'DBM_Filter::compress' => '0.01', #lib/DBM_Filter/compress.pm
- 'DBM_Filter::encode' => '0.01', #lib/DBM_Filter/encode.pm
- 'DBM_Filter::int32' => '0.01', #lib/DBM_Filter/int32.pm
- 'DBM_Filter::null' => '0.01', #lib/DBM_Filter/null.pm
- 'DBM_Filter::utf8' => '0.01', #lib/DBM_Filter/utf8.pm
- 'Devel::SelfStubber' => '1.03', #lib/Devel/SelfStubber.pm
- 'Devel::DProf' => '20030813.00', #lib/Devel/DProf.pm
- 'Devel::Peek' => '1.01', #lib/Devel/Peek.pm
- 'Devel::PPPort' => '2.011', #lib/Devel/PPPort.pm
- 'Digest::base' => '1.00', #lib/Digest/base.pm
- 'Digest::MD5' => '2.33', #lib/Digest/MD5.pm
- 'Exporter::Heavy' => '5.57', #lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.05', #lib/ExtUtils/Command.pm
- 'ExtUtils::Constant' => '0.14', #lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Installed' => '0.08', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Install' => '1.32', #lib/ExtUtils/Install.pm
- 'ExtUtils::Liblist' => '1.01', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => '6.17', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.42', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM_Any' => '0.07', #lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.06', #lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.07_02', #lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM' => '0.04', #lib/ExtUtils/MM.pm
- 'ExtUtils::MM_OS2' => '1.04', #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.42', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.09', #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.0301', #lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #lib/ExtUtils/testlib.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Command::MM' => '0.03', #lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Liblist::Kid'=> '1.3001', #lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #lib/ExtUtils/MakeMaker/vmsish.pm
- 'File::Basename' => '2.72', #lib/File/Basename.pm
- 'File::CheckTree' => '4.3', #lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #lib/File/Compare.pm
- 'File::Copy' => '2.07', #lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #lib/File/DosGlob.pm
- 'File::Find' => '1.07', #lib/File/Find.pm
- 'File::Path' => '1.06', #lib/File/Path.pm
- 'File::Spec' => '0.87', #lib/File/Spec.pm
- 'File::stat' => '1.00', #lib/File/stat.pm
- 'File::Temp' => '0.14', #lib/File/Temp.pm
- 'File::Glob' => '1.02', #lib/File/Glob.pm
- 'File::Spec::Cygwin' => '1.1', #lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.4', #lib/File/Spec/Win32.pm
- 'Filter::Simple' => '0.78', #lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.0601', #lib/Filter/Util/Call.pm
- 'Getopt::Long' => '2.34', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.05', #lib/Getopt/Std.pm
- 'Hash::Util' => '0.05', #lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #lib/I18N/Collate.pm
- 'I18N::LangTags' => '0.29', #lib/I18N/LangTags.pm
- 'I18N::Langinfo' => '0.02', #lib/I18N/Langinfo.pm
- 'I18N::LangTags::List' => '0.29', #lib/I18N/LangTags/List.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0106', #lib/IPC/Open3.pm
- 'IPC::Msg' => '1.02', #lib/IPC/Msg.pm
- 'IPC::Semaphore' => '1.02', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.04', #lib/IPC/SysV.pm
- 'Locale::Constants' => '2.01', #lib/Locale/Constants.pm
- 'Locale::Country' => '2.61', #lib/Locale/Country.pm
- 'Locale::Currency' => '2.21', #lib/Locale/Currency.pm
- 'Locale::Language' => '2.21', #lib/Locale/Language.pm
- 'Locale::Maketext' => '1.08', #lib/Locale/Maketext.pm
- 'Locale::Script' => '2.21', #lib/Locale/Script.pm
- 'Locale::Maketext::GutsLoader'=> undef, #lib/Locale/Maketext/GutsLoader.pm
- 'Locale::Maketext::Guts'=> undef, #lib/Locale/Maketext/Guts.pm
- 'Math::BigFloat' => '1.44', #lib/Math/BigFloat.pm
- 'Math::BigInt' => '1.70', #lib/Math/BigInt.pm
- 'Math::BigRat' => '0.12', #lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #lib/Math/Complex.pm
- 'Math::Trig' => '1.02', #lib/Math/Trig.pm
- 'Math::BigFloat::Trace' => '0.01', #lib/Math/BigFloat/Trace.pm
- 'Math::BigInt::CalcEmu' => '0.04', #lib/Math/BigInt/CalcEmu.pm
- 'Math::BigInt::Calc' => '0.40', #lib/Math/BigInt/Calc.pm
- 'Math::BigInt::Trace' => '0.01', #lib/Math/BigInt/Trace.pm
- 'Memoize::AnyDBM_File' => '0.65', #lib/Memoize/AnyDBM_File.pm
- 'Memoize::ExpireFile' => '1.01', #lib/Memoize/ExpireFile.pm
- 'Memoize::Expire' => '1.00', #lib/Memoize/Expire.pm
- 'Memoize::ExpireTest' => '0.65', #lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #lib/Memoize/Storable.pm
- 'Net::Cmd' => '2.24', #lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #lib/Net/Config.pm
- 'Net::Domain' => '2.19', #lib/Net/Domain.pm
- 'Net::FTP' => '2.72', #lib/Net/FTP.pm
- 'Net::hostent' => '1.01', #lib/Net/hostent.pm
- 'Net::netent' => '1.00', #lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #lib/Net/Netrc.pm
- 'Net::NNTP' => '2.22', #lib/Net/NNTP.pm
- 'Net::Ping' => '2.31', #lib/Net/Ping.pm
- 'Net::POP3' => '2.24', #lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #lib/Net/protoent.pm
- 'Net::servent' => '1.01', #lib/Net/servent.pm
- 'Net::SMTP' => '2.26', #lib/Net/SMTP.pm
- 'Net::Time' => '2.09', #lib/Net/Time.pm
- 'Net::FTP::A' => '1.16', #lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #lib/Net/FTP/L.pm
- 'PerlIO::encoding' => '0.07', #lib/PerlIO/encoding.pm
- 'PerlIO::scalar' => '0.02', #lib/PerlIO/scalar.pm
- 'PerlIO::via' => '0.02', #lib/PerlIO/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.06', #lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.41', #lib/Pod/Checker.pm
- 'Pod::Find' => '0.24', #lib/Pod/Find.pm
- 'Pod::Functions' => '1.02', #lib/Pod/Functions.pm
- 'Pod::Html' => '1.0502', #lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.14', #lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.55', #lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.37', #lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.06', #lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.14', #lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '0.3', #lib/Pod/ParseUtils.pm
- 'Pod::Perldoc' => '3.12', #lib/Pod/Perldoc.pm
- 'Pod::Plainer' => '0.01', #lib/Pod/Plainer.pm
- 'Pod::PlainText' => '2.02', #lib/Pod/PlainText.pm
- 'Pod::Select' => '1.13', #lib/Pod/Select.pm
- 'Pod::Text' => '2.21', #lib/Pod/Text.pm
- 'Pod::Usage' => '1.16', #lib/Pod/Usage.pm
- 'Pod::Perldoc::BaseTo' => undef, #lib/Pod/Perldoc/BaseTo.pm
- 'Pod::Perldoc::GetOptsOO'=> undef, #lib/Pod/Perldoc/GetOptsOO.pm
- 'Pod::Perldoc::ToChecker'=> undef, #lib/Pod/Perldoc/ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #lib/Pod/Perldoc/ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #lib/Pod/Perldoc/ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #lib/Pod/Perldoc/ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #lib/Pod/Perldoc/ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #lib/Pod/Perldoc/ToText.pm
- 'Pod::Perldoc::ToTk' => 'undef', #lib/Pod/Perldoc/ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #lib/Pod/Perldoc/ToXml.pm
- 'Pod::Text::Color' => '1.04', #lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.1', #lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.11', #lib/Pod/Text/Termcap.pm
- 'Search::Dict' => '1.02', #lib/Search/Dict.pm
- 'Term::ANSIColor' => '1.08', #lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.08', #lib/Term/Cap.pm
- 'Term::Complete' => '1.401', #lib/Term/Complete.pm
- 'Term::ReadLine' => '1.01', #lib/Term/ReadLine.pm
- 'Test::Builder' => '0.17', #lib/Test/Builder.pm
- 'Test::Harness' => '2.40', #lib/Test/Harness.pm
- 'Test::More' => '0.47', #lib/Test/More.pm
- 'Test::Simple' => '0.47', #lib/Test/Simple.pm
- 'Test::Harness::Assert' => '0.02', #lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.02', #lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.19', #lib/Test/Harness/Straps.pm
- 'Text::Abbrev' => '1.01', #lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.95', #lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.21', #lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.09291', #lib/Text/Wrap.pm
- 'Thread::Queue' => '2.00', #lib/Thread/Queue.pm
- 'Thread::Semaphore' => '2.01', #lib/Thread/Semaphore.pm
- 'Tie::Array' => '1.03', #lib/Tie/Array.pm
- 'Tie::File' => '0.97', #lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #lib/Tie/Handle.pm
- 'Tie::Hash' => '1.01', #lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.31', #lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #lib/Time/gmtime.pm
- 'Time::Local' => '1.07', #lib/Time/Local.pm
- 'Time::localtime' => '1.02', #lib/Time/localtime.pm
- 'Time::tm' => '1.00', #lib/Time/tm.pm
- 'Time::HiRes' => '1.59', #lib/Time/HiRes.pm
- 'Unicode::Collate' => '0.33', #lib/Unicode/Collate.pm
- 'Unicode::UCD' => '0.22', #lib/Unicode/UCD.pm
- 'Unicode::Normalize' => '0.28', #lib/Unicode/Normalize.pm
- 'User::grent' => '1.00', #lib/User/grent.pm
- 'User::pwent' => '1.00', #lib/User/pwent.pm
- 'warnings::register' => '1.00', #lib/warnings/register.pm
- 'B::Stash' => '1.00', #lib/B/Stash.pm
- 'B::Asmdata' => '1.01', #lib/B/Asmdata.pm
- 'B::C' => '1.02', #lib/B/C.pm
- 'B::Deparse' => '0.66', #lib/B/Deparse.pm
- 'B::Debug' => '1.01', #lib/B/Debug.pm
- 'B::Bblock' => '1.02', #lib/B/Bblock.pm
- 'B::Assembler' => '0.07', #lib/B/Assembler.pm
- 'B::Terse' => '1.02', #lib/B/Terse.pm
- 'B::CC' => '1.00', #lib/B/CC.pm
- 'B::Concise' => '0.60', #lib/B/Concise.pm
- 'B::Lint' => '1.02', #lib/B/Lint.pm
- 'B::Showlex' => '1.00', #lib/B/Showlex.pm
- 'B::Bytecode' => '1.01', #lib/B/Bytecode.pm
- 'B::Disassembler' => '1.03', #lib/B/Disassembler.pm
- 'B::Xref' => '1.01', #lib/B/Xref.pm
- 'B::Stackobj' => '1.00', #lib/B/Stackobj.pm
- 'Data::Dumper' => '2.121', #lib/Data/Dumper.pm
- 'Encode::Alias' => '1.38', #lib/Encode/Alias.pm
- 'Encode::Encoding' => '1.33', #lib/Encode/Encoding.pm
- 'Encode::Guess' => '1.09', #lib/Encode/Guess.pm
- 'Encode::Config' => '1.07', #lib/Encode/Config.pm
- 'Encode::Encoder' => '0.07', #lib/Encode/Encoder.pm
- 'Encode::CJKConstants' => '1.02', #lib/Encode/CJKConstants.pm
- 'Encode::Byte' => '1.23', #lib/Encode/Byte.pm
- 'Encode::CN' => '1.24', #lib/Encode/CN.pm
- 'Encode::EBCDIC' => '1.21', #lib/Encode/EBCDIC.pm
- 'Encode::JP' => '1.25', #lib/Encode/JP.pm
- 'Encode::KR' => '1.23', #lib/Encode/KR.pm
- 'Encode::Symbol' => '1.22', #lib/Encode/Symbol.pm
- 'Encode::TW' => '1.26', #lib/Encode/TW.pm
- 'Encode::Unicode' => '1.40', #lib/Encode/Unicode.pm
- 'Encode::JP::H2Z' => '1.02', #lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '1.12', #lib/Encode/JP/JIS7.pm
- 'Encode::Unicode::UTF7' => '0.02', #lib/Encode/Unicode/UTF7.pm
- 'Encode::KR::2022_KR' => '1.06', #lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '1.09', #lib/Encode/MIME/Header.pm
- 'Encode::CN::HZ' => '1.0501', #lib/Encode/CN/HZ.pm
- 'IO::Pipe' => '1.123', #lib/IO/Pipe.pm
- 'IO::File' => '1.10', #lib/IO/File.pm
- 'IO::Select' => '1.16', #lib/IO/Select.pm
- 'IO::Socket' => '1.28', #lib/IO/Socket.pm
- 'IO::Poll' => '0.06', #lib/IO/Poll.pm
- 'IO::Dir' => '1.04', #lib/IO/Dir.pm
- 'IO::Handle' => '1.24', #lib/IO/Handle.pm
- 'IO::Seekable' => '1.09', #lib/IO/Seekable.pm
- 'IO::Socket::INET' => '1.27', #lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.21', #lib/IO/Socket/UNIX.pm
- 'List::Util' => '1.13', #lib/List/Util.pm
- 'Scalar::Util' => '1.13', #lib/Scalar/Util.pm
- 'MIME::QuotedPrint' => '3.01', #lib/MIME/QuotedPrint.pm
- 'MIME::Base64' => '3.01', #lib/MIME/Base64.pm
- 'Sys::Hostname' => '1.11', #lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.05', #lib/Sys/Syslog.pm
- 'XS::APItest' => '0.03', #lib/XS/APItest.pm
- 'XS::Typemap' => '0.01', #lib/XS/Typemap.pm
- 'threads::shared' => '0.92', #lib/threads/shared.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'JNI' => '0.2', #jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #jpl/JPL/Compile.pm
- 'ODBM_File' => '1.05', #ext/ODBM_File/ODBM_File.pm
- 'OS2::DLL' => '1.02', #os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.02', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.01', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.02', #os2/OS2/REXX/REXX.pm
- 'Thread::Signal' => '1.00', #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #./ext/Thread/Thread/Specific.pm
- 'VMS::DCLsym' => '1.02', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.11', #vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.3', #vms/ext/Stdio/Stdio.pm
+ 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',
+ 'base' => '2.05',
+ 'bigint' => '0.05',
+ 'bignum' => '0.15',
+ 'charnames' => '1.03',
+ 'open' => '1.03',
+ 'threads' => '1.03',
+ 'utf8' => '1.03',
+ },
+ removed => {
+ }
},
-
5.008005 => {
- 'AnyDBM_File' => '1.00', #lib/AnyDBM_File.pm
- 'attributes' => '0.06', #lib/attributes.pm
- 'AutoLoader' => '5.60', #lib/AutoLoader.pm
- 'AutoSplit' => '1.04', #lib/AutoSplit.pm
- 'autouse' => '1.04', #lib/autouse.pm
- 'base' => '2.06', #lib/base.pm
- 'Benchmark' => '1.06', #lib/Benchmark.pm
- 'bigint' => '0.05', #lib/bigint.pm
- 'bignum' => '0.15', #lib/bignum.pm
- 'bigrat' => '0.06', #lib/bigrat.pm
- 'blib' => '1.02', #lib/blib.pm
- 'bytes' => '1.01', #lib/bytes.pm
- 'Carp' => '1.03', #lib/Carp.pm
- 'CGI' => '3.05', #lib/CGI.pm
- 'charnames' => '1.04', #lib/charnames.pm
- 'constant' => '1.04', #lib/constant.pm
- 'CPAN' => '1.76_01', #lib/CPAN.pm
- 'Cwd' => '2.19', #lib/Cwd.pm
- 'DBM_Filter' => '0.01', #lib/DBM_Filter.pm
- 'DB' => '1.0', #lib/DB.pm
- 'diagnostics' => '1.13', #lib/diagnostics.pm
- 'Digest' => '1.08', #lib/Digest.pm
- 'DirHandle' => '1.00', #lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #lib/Dumpvalue.pm
- 'English' => '1.01', #lib/English.pm
- 'Env' => '1.00', #lib/Env.pm
- 'Exporter' => '5.58', #lib/Exporter.pm
- 'Fatal' => '1.03', #lib/Fatal.pm
- 'fields' => '2.03', #lib/fields.pm
- 'FileCache' => '1.04_01', #lib/FileCache.pm
- 'FileHandle' => '2.01', #lib/FileHandle.pm
- 'filetest' => '1.01', #lib/filetest.pm
- 'FindBin' => '1.44', #lib/FindBin.pm
- 'if' => '0.03', #lib/if.pm
- 'integer' => '1.00', #lib/integer.pm
- 'less' => '0.01', #lib/less.pm
- 'locale' => '1.00', #lib/locale.pm
- 'Memoize' => '1.01', #lib/Memoize.pm
- 'NEXT' => '0.60', #lib/NEXT.pm
- 'open' => '1.03', #lib/open.pm
- 'overload' => '1.01', #lib/overload.pm
- 'PerlIO' => '1.03', #lib/PerlIO.pm
- 'SelectSaver' => '1.00', #lib/SelectSaver.pm
- 'SelfLoader' => '1.0904', #lib/SelfLoader.pm
- 'Shell' => '0.6', #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'sort' => '1.02', #lib/sort.pm
- 'strict' => '1.03', #lib/strict.pm
- 'subs' => '1.00', #lib/subs.pm
- 'Switch' => '2.10', #lib/Switch.pm
- 'Symbol' => '1.05', #lib/Symbol.pm
- 'Test' => '1.25', #lib/Test.pm
- 'Thread' => '2.00', #lib/Thread.pm
- 'UNIVERSAL' => '1.01', #lib/UNIVERSAL.pm
- 'utf8' => '1.04', #lib/utf8.pm
- 'vars' => '1.01', #lib/vars.pm
- 'vmsish' => '1.01', #lib/vmsish.pm
- 'warnings' => '1.03', #lib/warnings.pm
- 'Config' => undef, #lib/Config.pm
- 'lib' => '0.5565', #lib/lib.pm
- 're' => '0.04', #lib/re.pm
- 'XSLoader' => '0.02', #lib/XSLoader.pm
- 'DynaLoader' => '1.05', #lib/DynaLoader.pm
- 'attrs' => '1.01', #lib/attrs.pm
- 'B' => '1.02', #lib/B.pm
- 'O' => '1.00', #lib/O.pm
- 'ByteLoader' => '0.05', #lib/ByteLoader.pm
- 'DB_File' => '1.809', #lib/DB_File.pm
- 'Encode' => '2.01', #lib/Encode.pm
- 'encoding' => '2.00', #lib/encoding.pm
- 'Fcntl' => '1.05', #lib/Fcntl.pm
- 'GDBM_File' => '1.07', #lib/GDBM_File.pm
- 'IO' => '1.21', #lib/IO.pm
- 'NDBM_File' => '1.05', #lib/NDBM_File.pm
- 'Safe' => '2.11', #lib/Safe.pm
- 'Opcode' => '1.05', #lib/Opcode.pm
- 'ops' => '1.00', #lib/ops.pm
- 'POSIX' => '1.08', #lib/POSIX.pm
- 'SDBM_File' => '1.04', #lib/SDBM_File.pm
- 'Socket' => '1.77', #lib/Socket.pm
- 'Storable' => '2.13', #lib/Storable.pm
- 'threads' => '1.05', #lib/threads.pm
- 'Errno' => '1.09_00', #lib/Errno.pm
- 'Attribute::Handlers' => '0.78_01', #lib/Attribute/Handlers.pm
- 'Carp::Heavy' => '1.01', #lib/Carp/Heavy.pm
- 'CGI::Apache' => '1.00', #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.28', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.24', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.05', #lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.08', #lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #lib/CGI/Switch.pm
- 'CGI::Util' => '1.5', #lib/CGI/Util.pm
- 'Class::ISA' => '0.32', #lib/Class/ISA.pm
- 'Class::Struct' => '0.63', #lib/Class/Struct.pm
- 'CPAN::FirstTime' => '1.60 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.03', #lib/CPAN/Nox.pm
- 'DBM_Filter::compress' => '0.01', #lib/DBM_Filter/compress.pm
- 'DBM_Filter::encode' => '0.01', #lib/DBM_Filter/encode.pm
- 'DBM_Filter::int32' => '0.01', #lib/DBM_Filter/int32.pm
- 'DBM_Filter::null' => '0.01', #lib/DBM_Filter/null.pm
- 'DBM_Filter::utf8' => '0.01', #lib/DBM_Filter/utf8.pm
- 'Devel::SelfStubber' => '1.03', #lib/Devel/SelfStubber.pm
- 'Devel::DProf' => '20030813.00', #lib/Devel/DProf.pm
- 'Devel::Peek' => '1.01', #lib/Devel/Peek.pm
- 'Devel::PPPort' => '2.011', #lib/Devel/PPPort.pm
- 'Digest::base' => '1.00', #lib/Digest/base.pm
- 'Digest::MD5' => '2.33', #lib/Digest/MD5.pm
- 'Exporter::Heavy' => '5.57', #lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.05', #lib/ExtUtils/Command.pm
- 'ExtUtils::Constant' => '0.14', #lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Installed' => '0.08', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Install' => '1.32', #lib/ExtUtils/Install.pm
- 'ExtUtils::Liblist' => '1.01', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::MakeMaker' => '6.17', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::Manifest' => '1.42', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM_Any' => '0.07', #lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.06', #lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.07_02', #lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM' => '0.04', #lib/ExtUtils/MM.pm
- 'ExtUtils::MM_OS2' => '1.04', #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.42', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.09', #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.0301', #lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #lib/ExtUtils/testlib.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Command::MM' => '0.03', #lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Liblist::Kid'=> '1.3001', #lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #lib/ExtUtils/MakeMaker/vmsish.pm
- 'File::Basename' => '2.73', #lib/File/Basename.pm
- 'File::CheckTree' => '4.3', #lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #lib/File/Compare.pm
- 'File::Copy' => '2.08', #lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #lib/File/DosGlob.pm
- 'File::Find' => '1.07', #lib/File/Find.pm
- 'File::Path' => '1.06', #lib/File/Path.pm
- 'File::Spec' => '0.87', #lib/File/Spec.pm
- 'File::stat' => '1.00', #lib/File/stat.pm
- 'File::Temp' => '0.14', #lib/File/Temp.pm
- 'File::Glob' => '1.03', #lib/File/Glob.pm
- 'File::Spec::Cygwin' => '1.1', #lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.4', #lib/File/Spec/Win32.pm
- 'Filter::Simple' => '0.78', #lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.0601', #lib/Filter/Util/Call.pm
- 'Getopt::Long' => '2.34', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.05', #lib/Getopt/Std.pm
- 'Hash::Util' => '0.05', #lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #lib/I18N/Collate.pm
- 'I18N::LangTags' => '0.33', #lib/I18N/LangTags.pm
- 'I18N::Langinfo' => '0.02', #lib/I18N/Langinfo.pm
- 'I18N::LangTags::Detect'=> '1.03', #lib/I18N/LangTags/Detect.pm
- 'I18N::LangTags::List' => '0.29', #lib/I18N/LangTags/List.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0106', #lib/IPC/Open3.pm
- 'IPC::Msg' => '1.02', #lib/IPC/Msg.pm
- 'IPC::Semaphore' => '1.02', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.04', #lib/IPC/SysV.pm
- 'Locale::Constants' => '2.07', #lib/Locale/Constants.pm
- 'Locale::Country' => '2.07', #lib/Locale/Country.pm
- 'Locale::Currency' => '2.07', #lib/Locale/Currency.pm
- 'Locale::Language' => '2.07', #lib/Locale/Language.pm
- 'Locale::Maketext' => '1.09', #lib/Locale/Maketext.pm
- 'Locale::Script' => '2.07', #lib/Locale/Script.pm
- 'Locale::Maketext::GutsLoader'=> undef, #lib/Locale/Maketext/GutsLoader.pm
- 'Locale::Maketext::Guts'=> undef, #lib/Locale/Maketext/Guts.pm
- 'Math::BigFloat' => '1.44', #lib/Math/BigFloat.pm
- 'Math::BigInt' => '1.70', #lib/Math/BigInt.pm
- 'Math::BigRat' => '0.12', #lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #lib/Math/Complex.pm
- 'Math::Trig' => '1.02', #lib/Math/Trig.pm
- 'Math::BigFloat::Trace' => '0.01', #lib/Math/BigFloat/Trace.pm
- 'Math::BigInt::CalcEmu' => '0.04', #lib/Math/BigInt/CalcEmu.pm
- 'Math::BigInt::Calc' => '0.40', #lib/Math/BigInt/Calc.pm
- 'Math::BigInt::Trace' => '0.01', #lib/Math/BigInt/Trace.pm
- 'Memoize::AnyDBM_File' => '0.65', #lib/Memoize/AnyDBM_File.pm
- 'Memoize::ExpireFile' => '1.01', #lib/Memoize/ExpireFile.pm
- 'Memoize::Expire' => '1.00', #lib/Memoize/Expire.pm
- 'Memoize::ExpireTest' => '0.65', #lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #lib/Memoize/Storable.pm
- 'Net::Cmd' => '2.26', #lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #lib/Net/Config.pm
- 'Net::Domain' => '2.19', #lib/Net/Domain.pm
- 'Net::FTP' => '2.75', #lib/Net/FTP.pm
- 'Net::hostent' => '1.01', #lib/Net/hostent.pm
- 'Net::netent' => '1.00', #lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #lib/Net/Netrc.pm
- 'Net::NNTP' => '2.23', #lib/Net/NNTP.pm
- 'Net::Ping' => '2.31', #lib/Net/Ping.pm
- 'Net::POP3' => '2.28', #lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #lib/Net/protoent.pm
- 'Net::servent' => '1.01', #lib/Net/servent.pm
- 'Net::SMTP' => '2.29', #lib/Net/SMTP.pm
- 'Net::Time' => '2.10', #lib/Net/Time.pm
- 'Net::FTP::A' => '1.16', #lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #lib/Net/FTP/L.pm
- 'PerlIO::encoding' => '0.07', #lib/PerlIO/encoding.pm
- 'PerlIO::scalar' => '0.02', #lib/PerlIO/scalar.pm
- 'PerlIO::via' => '0.02', #lib/PerlIO/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.06', #lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.42', #lib/Pod/Checker.pm
- 'Pod::Find' => '0.2401', #lib/Pod/Find.pm
- 'Pod::Functions' => '1.02', #lib/Pod/Functions.pm
- 'Pod::Html' => '1.0502', #lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.14', #lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.56', #lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.37', #lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.06', #lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.14', #lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '1.2', #lib/Pod/ParseUtils.pm
- 'Pod::Perldoc' => '3.13', #lib/Pod/Perldoc.pm
- 'Pod::Plainer' => '0.01', #lib/Pod/Plainer.pm
- 'Pod::PlainText' => '2.02', #lib/Pod/PlainText.pm
- 'Pod::Select' => '1.13', #lib/Pod/Select.pm
- 'Pod::Text' => '2.21', #lib/Pod/Text.pm
- 'Pod::Usage' => '1.16', #lib/Pod/Usage.pm
- 'Pod::Perldoc::BaseTo' => undef, #lib/Pod/Perldoc/BaseTo.pm
- 'Pod::Perldoc::GetOptsOO'=> undef, #lib/Pod/Perldoc/GetOptsOO.pm
- 'Pod::Perldoc::ToChecker'=> undef, #lib/Pod/Perldoc/ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #lib/Pod/Perldoc/ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #lib/Pod/Perldoc/ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #lib/Pod/Perldoc/ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #lib/Pod/Perldoc/ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #lib/Pod/Perldoc/ToText.pm
- 'Pod::Perldoc::ToTk' => 'undef', #lib/Pod/Perldoc/ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #lib/Pod/Perldoc/ToXml.pm
- 'Pod::Text::Color' => '1.04', #lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.1', #lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.11', #lib/Pod/Text/Termcap.pm
- 'Search::Dict' => '1.02', #lib/Search/Dict.pm
- 'Term::ANSIColor' => '1.08', #lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.09', #lib/Term/Cap.pm
- 'Term::Complete' => '1.401', #lib/Term/Complete.pm
- 'Term::ReadLine' => '1.01', #lib/Term/ReadLine.pm
- 'Test::Builder' => '0.17', #lib/Test/Builder.pm
- 'Test::Harness' => '2.42', #lib/Test/Harness.pm
- 'Test::More' => '0.47', #lib/Test/More.pm
- 'Test::Simple' => '0.47', #lib/Test/Simple.pm
- 'Test::Harness::Assert' => '0.02', #lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.02', #lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.19', #lib/Test/Harness/Straps.pm
- 'Text::Abbrev' => '1.01', #lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.95', #lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.22', #lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.09292', #lib/Text/Wrap.pm
- 'Thread::Queue' => '2.00', #lib/Thread/Queue.pm
- 'Thread::Semaphore' => '2.01', #lib/Thread/Semaphore.pm
- 'Tie::Array' => '1.03', #lib/Tie/Array.pm
- 'Tie::File' => '0.97', #lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #lib/Tie/Handle.pm
- 'Tie::Hash' => '1.01', #lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.31', #lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #lib/Time/gmtime.pm
- 'Time::Local' => '1.10', #lib/Time/Local.pm
- 'Time::localtime' => '1.02', #lib/Time/localtime.pm
- 'Time::tm' => '1.00', #lib/Time/tm.pm
- 'Time::HiRes' => '1.59', #lib/Time/HiRes.pm
- 'Unicode' => '4.0.1', # lib/unicore/version
- 'Unicode::Collate' => '0.40', #lib/Unicode/Collate.pm
- 'Unicode::UCD' => '0.22', #lib/Unicode/UCD.pm
- 'Unicode::Normalize' => '0.30', #lib/Unicode/Normalize.pm
- 'User::grent' => '1.00', #lib/User/grent.pm
- 'User::pwent' => '1.00', #lib/User/pwent.pm
- 'warnings::register' => '1.00', #lib/warnings/register.pm
- 'B::Stash' => '1.00', #lib/B/Stash.pm
- 'B::Asmdata' => '1.01', #lib/B/Asmdata.pm
- 'B::C' => '1.02', #lib/B/C.pm
- 'B::Deparse' => '0.67', #lib/B/Deparse.pm
- 'B::Debug' => '1.01', #lib/B/Debug.pm
- 'B::Bblock' => '1.02', #lib/B/Bblock.pm
- 'B::Assembler' => '0.07', #lib/B/Assembler.pm
- 'B::Terse' => '1.02', #lib/B/Terse.pm
- 'B::CC' => '1.00', #lib/B/CC.pm
- 'B::Concise' => '0.61', #lib/B/Concise.pm
- 'B::Lint' => '1.02', #lib/B/Lint.pm
- 'B::Showlex' => '1.00', #lib/B/Showlex.pm
- 'B::Bytecode' => '1.01', #lib/B/Bytecode.pm
- 'B::Disassembler' => '1.03', #lib/B/Disassembler.pm
- 'B::Xref' => '1.01', #lib/B/Xref.pm
- 'B::Stackobj' => '1.00', #lib/B/Stackobj.pm
- 'Data::Dumper' => '2.121', #lib/Data/Dumper.pm
- 'Encode::Alias' => '2.00', #lib/Encode/Alias.pm
- 'Encode::Encoding' => '2.00', #lib/Encode/Encoding.pm
- 'Encode::Guess' => '2.00', #lib/Encode/Guess.pm
- 'Encode::Config' => '2.00', #lib/Encode/Config.pm
- 'Encode::Encoder' => '2.00', #lib/Encode/Encoder.pm
- 'Encode::CJKConstants' => '2.00', #lib/Encode/CJKConstants.pm
- 'Encode::Byte' => '2.00', #lib/Encode/Byte.pm
- 'Encode::CN' => '2.00', #lib/Encode/CN.pm
- 'Encode::EBCDIC' => '2.00', #lib/Encode/EBCDIC.pm
- 'Encode::JP' => '2.00', #lib/Encode/JP.pm
- 'Encode::KR' => '2.00', #lib/Encode/KR.pm
- 'Encode::Symbol' => '2.00', #lib/Encode/Symbol.pm
- 'Encode::TW' => '2.00', #lib/Encode/TW.pm
- 'Encode::Unicode' => '2.00', #lib/Encode/Unicode.pm
- 'Encode::JP::H2Z' => '2.00', #lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '2.00', #lib/Encode/JP/JIS7.pm
- 'Encode::Unicode::UTF7' => '2.01', #lib/Encode/Unicode/UTF7.pm
- 'Encode::KR::2022_KR' => '2.00', #lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '2.00', #lib/Encode/MIME/Header.pm
- 'Encode::CN::HZ' => '2.01', #lib/Encode/CN/HZ.pm
- 'IO::Pipe' => '1.123', #lib/IO/Pipe.pm
- 'IO::File' => '1.10', #lib/IO/File.pm
- 'IO::Select' => '1.16', #lib/IO/Select.pm
- 'IO::Socket' => '1.28', #lib/IO/Socket.pm
- 'IO::Poll' => '0.06', #lib/IO/Poll.pm
- 'IO::Dir' => '1.04', #lib/IO/Dir.pm
- 'IO::Handle' => '1.24', #lib/IO/Handle.pm
- 'IO::Seekable' => '1.09', #lib/IO/Seekable.pm
- 'IO::Socket::INET' => '1.27', #lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.21', #lib/IO/Socket/UNIX.pm
- 'List::Util' => '1.14', #lib/List/Util.pm
- 'Scalar::Util' => '1.14', #lib/Scalar/Util.pm
- 'MIME::QuotedPrint' => '3.01', #lib/MIME/QuotedPrint.pm
- 'MIME::Base64' => '3.01', #lib/MIME/Base64.pm
- 'Sys::Hostname' => '1.11', #lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.05', #lib/Sys/Syslog.pm
- 'XS::APItest' => '0.04', #lib/XS/APItest.pm
- 'XS::Typemap' => '0.01', #lib/XS/Typemap.pm
- 'threads::shared' => '0.92', #lib/threads/shared.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'JNI' => '0.2', #jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #jpl/JPL/Compile.pm
- 'ODBM_File' => '1.05', #ext/ODBM_File/ODBM_File.pm
- 'OS2::DLL' => '1.02', #os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.02', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.01', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.02', #os2/OS2/REXX/REXX.pm
- 'Thread::Signal' => '1.00', #./ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #./ext/Thread/Thread/Specific.pm
- 'VMS::DCLsym' => '1.02', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.11', #vms/ext/Filespec.pm
- 'VMS::Stdio' => '2.3', #vms/ext/Stdio/Stdio.pm
+ 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 => {
- 'AnyDBM_File' => '1.00', #lib/AnyDBM_File.pm
- 'Attribute::Handlers' => '0.78_01', #lib/Attribute/Handlers.pm
- 'attributes' => '0.06', #lib/attributes.pm
- 'attrs' => '1.01', #lib/attrs.pm
- 'AutoLoader' => '5.60', #lib/AutoLoader.pm
- 'AutoSplit' => '1.04', #lib/AutoSplit.pm
- 'autouse' => '1.04', #lib/autouse.pm
- 'B' => '1.07', #lib/B.pm
- 'base' => '2.06', #lib/base.pm
- 'B::Asmdata' => '1.01', #lib/B/Asmdata.pm
- 'B::Assembler' => '0.07', #lib/B/Assembler.pm
- 'B::Bblock' => '1.02', #lib/B/Bblock.pm
- 'B::Bytecode' => '1.01', #lib/B/Bytecode.pm
- 'B::C' => '1.04', #lib/B/C.pm
- 'B::CC' => '1.00', #lib/B/CC.pm
- 'B::Concise' => '0.64', #lib/B/Concise.pm
- 'B::Debug' => '1.02', #lib/B/Debug.pm
- 'B::Deparse' => '0.69', #lib/B/Deparse.pm
- 'B::Disassembler' => '1.03', #lib/B/Disassembler.pm
- 'Benchmark' => '1.06', #lib/Benchmark.pm
- 'bigint' => '0.05', #lib/bigint.pm
- 'bignum' => '0.15', #lib/bignum.pm
- 'bigrat' => '0.06', #lib/bigrat.pm
- 'blib' => '1.02', #lib/blib.pm
- 'B::Lint' => '1.03', #lib/B/Lint.pm
- 'B::Showlex' => '1.02', #lib/B/Showlex.pm
- 'B::Stackobj' => '1.00', #lib/B/Stackobj.pm
- 'B::Stash' => '1.00', #lib/B/Stash.pm
- 'B::Terse' => '1.02', #lib/B/Terse.pm
- 'B::Xref' => '1.01', #lib/B/Xref.pm
- 'ByteLoader' => '0.05', #lib/ByteLoader.pm
- 'bytes' => '1.01', #lib/bytes.pm
- 'Carp' => '1.03', #lib/Carp.pm
- 'Carp::Heavy' => '1.03', #lib/Carp/Heavy.pm
- 'CGI' => '3.05', #lib/CGI.pm
- 'CGI::Apache' => '1.00', #lib/CGI/Apache.pm
- 'CGI::Carp' => '1.28', #lib/CGI/Carp.pm
- 'CGI::Cookie' => '1.24', #lib/CGI/Cookie.pm
- 'CGI::Fast' => '1.05', #lib/CGI/Fast.pm
- 'CGI::Pretty' => '1.08', #lib/CGI/Pretty.pm
- 'CGI::Push' => '1.04', #lib/CGI/Push.pm
- 'CGI::Switch' => '1.00', #lib/CGI/Switch.pm
- 'CGI::Util' => '1.5', #lib/CGI/Util.pm
- 'charnames' => '1.04', #lib/charnames.pm
- 'Class::ISA' => '0.32', #lib/Class/ISA.pm
- 'Class::Struct' => '0.63', #lib/Class/Struct.pm
- 'Config' => undef, #lib/Config.pm
- 'constant' => '1.04', #lib/constant.pm
- 'CPAN' => '1.76_01', #lib/CPAN.pm
- 'CPAN::FirstTime' => '1.60 ', #lib/CPAN/FirstTime.pm
- 'CPAN::Nox' => '1.03', #lib/CPAN/Nox.pm
- 'Cwd' => '3.01', #lib/Cwd.pm
- 'Data::Dumper' => '2.121_02', #lib/Data/Dumper.pm
- 'DB' => '1.0', #lib/DB.pm
- 'DB_File' => '1.810', #lib/DB_File.pm
- 'DBM_Filter' => '0.01', #lib/DBM_Filter.pm
- 'DBM_Filter::compress' => '0.01', #lib/DBM_Filter/compress.pm
- 'DBM_Filter::encode' => '0.01', #lib/DBM_Filter/encode.pm
- 'DBM_Filter::int32' => '0.01', #lib/DBM_Filter/int32.pm
- 'DBM_Filter::null' => '0.01', #lib/DBM_Filter/null.pm
- 'DBM_Filter::utf8' => '0.01', #lib/DBM_Filter/utf8.pm
- 'Devel::DProf' => '20030813.00', #lib/Devel/DProf.pm
- 'Devel::Peek' => '1.02', #lib/Devel/Peek.pm
- 'Devel::PPPort' => '3.03', #lib/Devel/PPPort.pm
- 'Devel::SelfStubber' => '1.03', #lib/Devel/SelfStubber.pm
- 'diagnostics' => '1.14', #lib/diagnostics.pm
- 'Digest' => '1.08', #lib/Digest.pm
- 'Digest::base' => '1.00', #lib/Digest/base.pm
- 'Digest::MD5' => '2.33', #lib/Digest/MD5.pm
- 'DirHandle' => '1.00', #lib/DirHandle.pm
- 'Dumpvalue' => '1.11', #lib/Dumpvalue.pm
- 'DynaLoader' => '1.05', #lib/DynaLoader.pm
- 'Encode' => '2.08', #lib/Encode.pm
- 'Encode::Alias' => '2.02', #lib/Encode/Alias.pm
- 'Encode::Byte' => '2.00', #lib/Encode/Byte.pm
- 'Encode::CJKConstants' => '2.00', #lib/Encode/CJKConstants.pm
- 'Encode::CN' => '2.00', #lib/Encode/CN.pm
- 'Encode::CN::HZ' => '2.01', #lib/Encode/CN/HZ.pm
- 'Encode::Config' => '2.00', #lib/Encode/Config.pm
- 'Encode::EBCDIC' => '2.00', #lib/Encode/EBCDIC.pm
- 'Encode::Encoder' => '2.00', #lib/Encode/Encoder.pm
- 'Encode::Encoding' => '2.02', #lib/Encode/Encoding.pm
- 'Encode::Guess' => '2.00', #lib/Encode/Guess.pm
- 'Encode::JP' => '2.01', #lib/Encode/JP.pm
- 'Encode::JP::H2Z' => '2.00', #lib/Encode/JP/H2Z.pm
- 'Encode::JP::JIS7' => '2.00', #lib/Encode/JP/JIS7.pm
- 'Encode::KR' => '2.00', #lib/Encode/KR.pm
- 'Encode::KR::2022_KR' => '2.00', #lib/Encode/KR/2022_KR.pm
- 'Encode::MIME::Header' => '2.00', #lib/Encode/MIME/Header.pm
- 'Encode::Symbol' => '2.00', #lib/Encode/Symbol.pm
- 'Encode::TW' => '2.00', #lib/Encode/TW.pm
- 'Encode::Unicode' => '2.02', #lib/Encode/Unicode.pm
- 'Encode::Unicode::UTF7' => '2.01', #lib/Encode/Unicode/UTF7.pm
- 'encoding' => '2.01', #lib/encoding.pm
- 'English' => '1.01', #lib/English.pm
- 'Env' => '1.00', #lib/Env.pm
- 'Errno' => '1.09_00', #lib/Errno.pm
- 'Exporter' => '5.58', #lib/Exporter.pm
- 'Exporter::Heavy' => '5.58', #lib/Exporter/Heavy.pm
- 'ExtUtils::Command' => '1.05', #lib/ExtUtils/Command.pm
- 'ExtUtils::Command::MM' => '0.03', #lib/ExtUtils/Command/MM.pm
- 'ExtUtils::Constant' => '0.1401', #lib/ExtUtils/Constant.pm
- 'ExtUtils::Embed' => '1.250601', #lib/ExtUtils/Embed.pm
- 'ExtUtils::Install' => '1.32', #lib/ExtUtils/Install.pm
- 'ExtUtils::Installed' => '0.08', #lib/ExtUtils/Installed.pm
- 'ExtUtils::Liblist' => '1.01', #lib/ExtUtils/Liblist.pm
- 'ExtUtils::Liblist::Kid'=> '1.3001', #lib/ExtUtils/Liblist/Kid.pm
- 'ExtUtils::MakeMaker' => '6.17', #lib/ExtUtils/MakeMaker.pm
- 'ExtUtils::MakeMaker::bytes'=> '0.01', #lib/ExtUtils/MakeMaker/bytes.pm
- 'ExtUtils::MakeMaker::vmsish'=> '0.01', #lib/ExtUtils/MakeMaker/vmsish.pm
- 'ExtUtils::Manifest' => '1.42', #lib/ExtUtils/Manifest.pm
- 'ExtUtils::Miniperl' => undef, #lib/ExtUtils/Miniperl.pm
- 'ExtUtils::Mkbootstrap' => '1.15', #lib/ExtUtils/Mkbootstrap.pm
- 'ExtUtils::Mksymlists' => '1.19', #lib/ExtUtils/Mksymlists.pm
- 'ExtUtils::MM' => '0.04', #lib/ExtUtils/MM.pm
- 'ExtUtils::MM_Any' => '0.07', #lib/ExtUtils/MM_Any.pm
- 'ExtUtils::MM_BeOS' => '1.04', #lib/ExtUtils/MM_BeOS.pm
- 'ExtUtils::MM_Cygwin' => '1.06', #lib/ExtUtils/MM_Cygwin.pm
- 'ExtUtils::MM_DOS' => '0.02', #lib/ExtUtils/MM_DOS.pm
- 'ExtUtils::MM_MacOS' => '1.07', #lib/ExtUtils/MM_MacOS.pm
- 'ExtUtils::MM_NW5' => '2.07_02', #lib/ExtUtils/MM_NW5.pm
- 'ExtUtils::MM_OS2' => '1.04', #lib/ExtUtils/MM_OS2.pm
- 'ExtUtils::MM_Unix' => '1.42', #lib/ExtUtils/MM_Unix.pm
- 'ExtUtils::MM_UWIN' => '0.02', #lib/ExtUtils/MM_UWIN.pm
- 'ExtUtils::MM_VMS' => '5.70', #lib/ExtUtils/MM_VMS.pm
- 'ExtUtils::MM_Win32' => '1.09', #lib/ExtUtils/MM_Win32.pm
- 'ExtUtils::MM_Win95' => '0.0301', #lib/ExtUtils/MM_Win95.pm
- 'ExtUtils::MY' => '0.01', #lib/ExtUtils/MY.pm
- 'ExtUtils::Packlist' => '0.04', #lib/ExtUtils/Packlist.pm
- 'ExtUtils::testlib' => '1.15', #lib/ExtUtils/testlib.pm
- 'ExtUtils::XSSymSet' => '1.0', #vms/ext/XSSymSet.pm
- 'Fatal' => '1.03', #lib/Fatal.pm
- 'Fcntl' => '1.05', #lib/Fcntl.pm
- 'fields' => '2.03', #lib/fields.pm
- 'File::Basename' => '2.73', #lib/File/Basename.pm
- 'FileCache' => '1.04_01', #lib/FileCache.pm
- 'File::CheckTree' => '4.3', #lib/File/CheckTree.pm
- 'File::Compare' => '1.1003', #lib/File/Compare.pm
- 'File::Copy' => '2.08', #lib/File/Copy.pm
- 'File::DosGlob' => '1.00', #lib/File/DosGlob.pm
- 'File::Find' => '1.07', #lib/File/Find.pm
- 'File::Glob' => '1.03', #lib/File/Glob.pm
- 'FileHandle' => '2.01', #lib/FileHandle.pm
- 'File::Path' => '1.06', #lib/File/Path.pm
- 'File::Spec' => '3.01', #lib/File/Spec.pm
- 'File::Spec::Cygwin' => '1.1', #lib/File/Spec/Cygwin.pm
- 'File::Spec::Epoc' => '1.1', #lib/File/Spec/Epoc.pm
- 'File::Spec::Functions' => '1.3', #lib/File/Spec/Functions.pm
- 'File::Spec::Mac' => '1.4', #lib/File/Spec/Mac.pm
- 'File::Spec::OS2' => '1.2', #lib/File/Spec/OS2.pm
- 'File::Spec::Unix' => '1.5', #lib/File/Spec/Unix.pm
- 'File::Spec::VMS' => '1.4', #lib/File/Spec/VMS.pm
- 'File::Spec::Win32' => '1.5', #lib/File/Spec/Win32.pm
- 'File::stat' => '1.00', #lib/File/stat.pm
- 'File::Temp' => '0.14', #lib/File/Temp.pm
- 'filetest' => '1.01', #lib/filetest.pm
- 'Filter::Simple' => '0.78', #lib/Filter/Simple.pm
- 'Filter::Util::Call' => '1.0601', #lib/Filter/Util/Call.pm
- 'FindBin' => '1.44', #lib/FindBin.pm
- 'GDBM_File' => '1.07', #lib/GDBM_File.pm
- 'Getopt::Long' => '2.34', #lib/Getopt/Long.pm
- 'Getopt::Std' => '1.05', #lib/Getopt/Std.pm
- 'Hash::Util' => '0.05', #lib/Hash/Util.pm
- 'I18N::Collate' => '1.00', #lib/I18N/Collate.pm
- 'I18N::Langinfo' => '0.02', #lib/I18N/Langinfo.pm
- 'I18N::LangTags' => '0.35', #lib/I18N/LangTags.pm
- 'I18N::LangTags::Detect'=> '1.03', #lib/I18N/LangTags/Detect.pm
- 'I18N::LangTags::List' => '0.35', #lib/I18N/LangTags/List.pm
- 'if' => '0.03', #lib/if.pm
- 'integer' => '1.00', #lib/integer.pm
- 'IO' => '1.21', #lib/IO.pm
- 'IO::Dir' => '1.04', #lib/IO/Dir.pm
- 'IO::File' => '1.10', #lib/IO/File.pm
- 'IO::Handle' => '1.24', #lib/IO/Handle.pm
- 'IO::Pipe' => '1.123', #lib/IO/Pipe.pm
- 'IO::Poll' => '0.06', #lib/IO/Poll.pm
- 'IO::Seekable' => '1.09', #lib/IO/Seekable.pm
- 'IO::Select' => '1.16', #lib/IO/Select.pm
- 'IO::Socket' => '1.28', #lib/IO/Socket.pm
- 'IO::Socket::INET' => '1.27', #lib/IO/Socket/INET.pm
- 'IO::Socket::UNIX' => '1.21', #lib/IO/Socket/UNIX.pm
- 'IPC::Msg' => '1.02', #lib/IPC/Msg.pm
- 'IPC::Open2' => '1.01', #lib/IPC/Open2.pm
- 'IPC::Open3' => '1.0106', #lib/IPC/Open3.pm
- 'IPC::Semaphore' => '1.02', #lib/IPC/Semaphore.pm
- 'IPC::SysV' => '1.04', #lib/IPC/SysV.pm
- 'JNI' => '0.2', #jpl/JNI/JNI.pm
- 'JPL::AutoLoader' => undef, #jpl/JPL/AutoLoader.pm
- 'JPL::Class' => undef, #jpl/JPL/Class.pm
- 'JPL::Compile' => undef, #jpl/JPL/Compile.pm
- 'less' => '0.01', #lib/less.pm
- 'lib' => '0.5565', #lib/lib.pm
- 'List::Util' => '1.14', #lib/List/Util.pm
- 'locale' => '1.00', #lib/locale.pm
- 'Locale::Constants' => '2.07', #lib/Locale/Constants.pm
- 'Locale::Country' => '2.07', #lib/Locale/Country.pm
- 'Locale::Currency' => '2.07', #lib/Locale/Currency.pm
- 'Locale::Language' => '2.07', #lib/Locale/Language.pm
- 'Locale::Maketext' => '1.09', #lib/Locale/Maketext.pm
- 'Locale::Maketext::GutsLoader'=> undef, #lib/Locale/Maketext/GutsLoader.pm
- 'Locale::Maketext::Guts'=> undef, #lib/Locale/Maketext/Guts.pm
- 'Locale::Script' => '2.07', #lib/Locale/Script.pm
- 'Math::BigFloat' => '1.47', #lib/Math/BigFloat.pm
- 'Math::BigFloat::Trace' => '0.01', #lib/Math/BigFloat/Trace.pm
- 'Math::BigInt' => '1.73', #lib/Math/BigInt.pm
- 'Math::BigInt::Calc' => '0.43', #lib/Math/BigInt/Calc.pm
- 'Math::BigInt::CalcEmu' => '0.04', #lib/Math/BigInt/CalcEmu.pm
- 'Math::BigInt::Trace' => '0.01', #lib/Math/BigInt/Trace.pm
- 'Math::BigRat' => '0.13', #lib/Math/BigRat.pm
- 'Math::Complex' => '1.34', #lib/Math/Complex.pm
- 'Math::Trig' => '1.02', #lib/Math/Trig.pm
- 'Memoize' => '1.01', #lib/Memoize.pm
- 'Memoize::AnyDBM_File' => '0.65', #lib/Memoize/AnyDBM_File.pm
- 'Memoize::Expire' => '1.00', #lib/Memoize/Expire.pm
- 'Memoize::ExpireFile' => '1.01', #lib/Memoize/ExpireFile.pm
- 'Memoize::ExpireTest' => '0.65', #lib/Memoize/ExpireTest.pm
- 'Memoize::NDBM_File' => '0.65', #lib/Memoize/NDBM_File.pm
- 'Memoize::SDBM_File' => '0.65', #lib/Memoize/SDBM_File.pm
- 'Memoize::Storable' => '0.65', #lib/Memoize/Storable.pm
- 'MIME::Base64' => '3.05', #lib/MIME/Base64.pm
- 'MIME::QuotedPrint' => '3.03', #lib/MIME/QuotedPrint.pm
- 'NDBM_File' => '1.05', #lib/NDBM_File.pm
- 'Net::Cmd' => '2.26', #lib/Net/Cmd.pm
- 'Net::Config' => '1.10', #lib/Net/Config.pm
- 'Net::Domain' => '2.19', #lib/Net/Domain.pm
- 'Net::FTP' => '2.75', #lib/Net/FTP.pm
- 'Net::FTP::A' => '1.16', #lib/Net/FTP/A.pm
- 'Net::FTP::dataconn' => '0.11', #lib/Net/FTP/dataconn.pm
- 'Net::FTP::E' => '0.01', #lib/Net/FTP/E.pm
- 'Net::FTP::I' => '1.12', #lib/Net/FTP/I.pm
- 'Net::FTP::L' => '0.01', #lib/Net/FTP/L.pm
- 'Net::hostent' => '1.01', #lib/Net/hostent.pm
- 'Net::netent' => '1.00', #lib/Net/netent.pm
- 'Net::Netrc' => '2.12', #lib/Net/Netrc.pm
- 'Net::NNTP' => '2.23', #lib/Net/NNTP.pm
- 'Net::Ping' => '2.31', #lib/Net/Ping.pm
- 'Net::POP3' => '2.28', #lib/Net/POP3.pm
- 'Net::protoent' => '1.00', #lib/Net/protoent.pm
- 'Net::servent' => '1.01', #lib/Net/servent.pm
- 'Net::SMTP' => '2.29', #lib/Net/SMTP.pm
- 'Net::Time' => '2.10', #lib/Net/Time.pm
- 'NEXT' => '0.60', #lib/NEXT.pm
- 'O' => '1.00', #lib/O.pm
- 'ODBM_File' => '1.05', #ext/ODBM_File/ODBM_File.pm
- 'Opcode' => '1.05', #lib/Opcode.pm
- 'open' => '1.04', #lib/open.pm
- 'ops' => '1.00', #lib/ops.pm
- 'OS2::DLL' => '1.02', #os2/OS2/REXX/DLL/DLL.pm
- 'OS2::ExtAttr' => '0.02', #os2/OS2/ExtAttr/ExtAttr.pm
- 'OS2::PrfDB' => '0.03', #os2/OS2/PrfDB/PrfDB.pm
- 'OS2::Process' => '1.01', #os2/OS2/Process/Process.pm
- 'OS2::REXX' => '1.02', #os2/OS2/REXX/REXX.pm
- 'overload' => '1.02', #lib/overload.pm
- 'PerlIO' => '1.03', #lib/PerlIO.pm
- 'PerlIO::encoding' => '0.07', #lib/PerlIO/encoding.pm
- 'PerlIO::scalar' => '0.02', #lib/PerlIO/scalar.pm
- 'PerlIO::via' => '0.02', #lib/PerlIO/via.pm
- 'PerlIO::via::QuotedPrint'=> '0.06', #lib/PerlIO/via/QuotedPrint.pm
- 'Pod::Checker' => '1.42', #lib/Pod/Checker.pm
- 'Pod::Find' => '0.2401', #lib/Pod/Find.pm
- 'Pod::Functions' => '1.02', #lib/Pod/Functions.pm
- 'Pod::Html' => '1.0502', #lib/Pod/Html.pm
- 'Pod::InputObjects' => '1.14', #lib/Pod/InputObjects.pm
- 'Pod::LaTeX' => '0.56', #lib/Pod/LaTeX.pm
- 'Pod::Man' => '1.37', #lib/Pod/Man.pm
- 'Pod::ParseLink' => '1.06', #lib/Pod/ParseLink.pm
- 'Pod::Parser' => '1.14', #lib/Pod/Parser.pm
- 'Pod::ParseUtils' => '1.2', #lib/Pod/ParseUtils.pm
- 'Pod::Perldoc' => '3.13', #lib/Pod/Perldoc.pm
- 'Pod::Perldoc::BaseTo' => undef, #lib/Pod/Perldoc/BaseTo.pm
- 'Pod::Perldoc::GetOptsOO'=> undef, #lib/Pod/Perldoc/GetOptsOO.pm
- 'Pod::Perldoc::ToChecker'=> undef, #lib/Pod/Perldoc/ToChecker.pm
- 'Pod::Perldoc::ToMan' => undef, #lib/Pod/Perldoc/ToMan.pm
- 'Pod::Perldoc::ToNroff' => undef, #lib/Pod/Perldoc/ToNroff.pm
- 'Pod::Perldoc::ToPod' => undef, #lib/Pod/Perldoc/ToPod.pm
- 'Pod::Perldoc::ToRtf' => undef, #lib/Pod/Perldoc/ToRtf.pm
- 'Pod::Perldoc::ToText' => undef, #lib/Pod/Perldoc/ToText.pm
- 'Pod::Perldoc::ToTk' => 'undef', #lib/Pod/Perldoc/ToTk.pm
- 'Pod::Perldoc::ToXml' => undef, #lib/Pod/Perldoc/ToXml.pm
- 'Pod::Plainer' => '0.01', #lib/Pod/Plainer.pm
- 'Pod::PlainText' => '2.02', #lib/Pod/PlainText.pm
- 'Pod::Select' => '1.13', #lib/Pod/Select.pm
- 'Pod::Text' => '2.21', #lib/Pod/Text.pm
- 'Pod::Text::Color' => '1.04', #lib/Pod/Text/Color.pm
- 'Pod::Text::Overstrike' => '1.1', #lib/Pod/Text/Overstrike.pm
- 'Pod::Text::Termcap' => '1.11', #lib/Pod/Text/Termcap.pm
- 'Pod::Usage' => '1.16', #lib/Pod/Usage.pm
- 'POSIX' => '1.08', #lib/POSIX.pm
- 're' => '0.04', #lib/re.pm
- 'Safe' => '2.11', #lib/Safe.pm
- 'Scalar::Util' => '1.14', #lib/Scalar/Util.pm
- 'SDBM_File' => '1.04', #lib/SDBM_File.pm
- 'Search::Dict' => '1.02', #lib/Search/Dict.pm
- 'SelectSaver' => '1.00', #lib/SelectSaver.pm
- 'SelfLoader' => '1.0904', #lib/SelfLoader.pm
- 'Shell' => '0.6', #lib/Shell.pm
- 'sigtrap' => '1.02', #lib/sigtrap.pm
- 'Socket' => '1.77', #lib/Socket.pm
- 'sort' => '1.02', #lib/sort.pm
- 'Storable' => '2.13', #lib/Storable.pm
- 'strict' => '1.03', #lib/strict.pm
- 'subs' => '1.00', #lib/subs.pm
- 'Switch' => '2.10', #lib/Switch.pm
- 'Symbol' => '1.05', #lib/Symbol.pm
- 'Sys::Hostname' => '1.11', #lib/Sys/Hostname.pm
- 'Sys::Syslog' => '0.05', #lib/Sys/Syslog.pm
- 'Term::ANSIColor' => '1.08', #lib/Term/ANSIColor.pm
- 'Term::Cap' => '1.09', #lib/Term/Cap.pm
- 'Term::Complete' => '1.401', #lib/Term/Complete.pm
- 'Term::ReadLine' => '1.01', #lib/Term/ReadLine.pm
- 'Test' => '1.25', #lib/Test.pm
- 'Test::Builder' => '0.17', #lib/Test/Builder.pm
- 'Test::Harness' => '2.42', #lib/Test/Harness.pm
- 'Test::Harness::Assert' => '0.02', #lib/Test/Harness/Assert.pm
- 'Test::Harness::Iterator'=> '0.02', #lib/Test/Harness/Iterator.pm
- 'Test::Harness::Straps' => '0.19', #lib/Test/Harness/Straps.pm
- 'Test::More' => '0.47', #lib/Test/More.pm
- 'Test::Simple' => '0.47', #lib/Test/Simple.pm
- 'Text::Abbrev' => '1.01', #lib/Text/Abbrev.pm
- 'Text::Balanced' => '1.95', #lib/Text/Balanced.pm
- 'Text::ParseWords' => '3.23', #lib/Text/ParseWords.pm
- 'Text::Soundex' => '1.01', #lib/Text/Soundex.pm
- 'Text::Tabs' => '98.112801', #lib/Text/Tabs.pm
- 'Text::Wrap' => '2001.09292', #lib/Text/Wrap.pm
- 'Thread' => '2.00', #lib/Thread.pm
- 'Thread::Queue' => '2.00', #lib/Thread/Queue.pm
- 'threads' => '1.05', #lib/threads.pm
- 'Thread::Semaphore' => '2.01', #lib/Thread/Semaphore.pm
- 'Thread::Signal' => '1.00', #ext/Thread/Thread/Signal.pm
- 'Thread::Specific' => '1.00', #ext/Thread/Thread/Specific.pm
- 'threads::shared' => '0.92', #lib/threads/shared.pm
- 'Tie::Array' => '1.03', #lib/Tie/Array.pm
- 'Tie::File' => '0.97', #lib/Tie/File.pm
- 'Tie::Handle' => '4.1', #lib/Tie/Handle.pm
- 'Tie::Hash' => '1.01', #lib/Tie/Hash.pm
- 'Tie::Memoize' => '1.0', #lib/Tie/Memoize.pm
- 'Tie::RefHash' => '1.31', #lib/Tie/RefHash.pm
- 'Tie::Scalar' => '1.00', #lib/Tie/Scalar.pm
- 'Tie::SubstrHash' => '1.00', #lib/Tie/SubstrHash.pm
- 'Time::gmtime' => '1.02', #lib/Time/gmtime.pm
- 'Time::HiRes' => '1.65', #lib/Time/HiRes.pm
- 'Time::Local' => '1.10', #lib/Time/Local.pm
- 'Time::localtime' => '1.02', #lib/Time/localtime.pm
- 'Time::tm' => '1.00', #lib/Time/tm.pm
- 'Unicode::Collate' => '0.40', #lib/Unicode/Collate.pm
- 'Unicode::Normalize' => '0.30', #lib/Unicode/Normalize.pm
- 'Unicode::UCD' => '0.22', #lib/Unicode/UCD.pm
- 'UNIVERSAL' => '1.01', #lib/UNIVERSAL.pm
- 'Unicode' => '4.0.1', # lib/unicore/version
- 'User::grent' => '1.00', #lib/User/grent.pm
- 'User::pwent' => '1.00', #lib/User/pwent.pm
- 'utf8' => '1.04', #lib/utf8.pm
- 'vars' => '1.01', #lib/vars.pm
- 'VMS::DCLsym' => '1.02', #vms/ext/DCLsym/DCLsym.pm
- 'VMS::Filespec' => '1.11', #vms/ext/Filespec.pm
- 'vmsish' => '1.01', #lib/vmsish.pm
- 'VMS::Stdio' => '2.3', #vms/ext/Stdio/Stdio.pm
- 'warnings' => '1.03', #lib/warnings.pm
- 'warnings::register' => '1.00', #lib/warnings/register.pm
- 'XS::APItest' => '0.05', #lib/XS/APItest.pm
- 'XSLoader' => '0.02', #lib/XSLoader.pm
- 'XS::Typemap' => '0.01', #lib/XS/Typemap.pm
+ 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,
+ 'OS2::DLL' => 1,
+ 'OS2::ExtAttr' => 1,
+ 'OS2::PrfDB' => 1,
+ 'OS2::Process' => 1,
+ 'OS2::REXX' => 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',
+ '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',
+ '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 => {
- 'AnyDBM_File' => '1.00',
- 'Attribute::Handlers' => '0.78_01',
- 'AutoLoader' => '5.60',
- 'AutoSplit' => '1.04',
- 'B' => '1.07',
- 'B::Asmdata' => '1.01',
- 'B::Assembler' => '0.07',
- 'B::Bblock' => '1.02',
- 'B::Bytecode' => '1.01',
- 'B::C' => '1.04',
- 'B::CC' => '1.00',
- 'B::Concise' => '0.64',
- 'B::Debug' => '1.02',
- 'B::Deparse' => '0.69',
- 'B::Disassembler' => '1.03',
- 'B::Lint' => '1.03',
- 'B::Showlex' => '1.02',
- 'B::Stackobj' => '1.00',
- 'B::Stash' => '1.00',
- 'B::Terse' => '1.02',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.07',
- 'ByteLoader' => '0.05',
- 'CGI' => '3.07',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.29',
- 'CGI::Cookie' => '1.25',
- 'CGI::Fast' => '1.05',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.5',
- 'CPAN' => '1.76_01',
- 'CPAN::FirstTime' => '1.60 ',
- 'CPAN::Nox' => '1.03',
- 'Carp' => '1.04',
- 'Carp::Heavy' => '1.04',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.05',
- 'DB' => '1.0',
- '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',
- 'DB_File' => '1.811',
- 'DCLsym' => '1.02',
- 'Data::Dumper' => '2.121_04',
- 'Devel::DProf' => '20030813.00',
- 'Devel::PPPort' => '3.06',
- 'Devel::Peek' => '1.02',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.10',
- 'Digest::MD5' => '2.33',
- 'Digest::base' => '1.00',
- 'Digest::file' => '0.01',
- 'DirHandle' => '1.00',
- 'Dumpvalue' => '1.11',
- 'DynaLoader' => '1.07',
- 'Encode' => '2.09',
- 'Encode::Alias' => '2.02',
- '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.02',
- 'Encode::Guess' => '2.00',
- 'Encode::JP' => '2.01',
- '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.02',
- 'Encode::Unicode::UTF7' => '2.01',
- 'English' => '1.03',
- 'Env' => '1.00',
- 'Errno' => '1.09_01',
- 'Exporter' => '5.59',
- 'Exporter::Heavy' => '5.59',
- 'ExtUtils::Command' => '1.07',
- 'ExtUtils::Command::MM' => '0.03_01',
- 'ExtUtils::Constant' => '0.16',
- 'ExtUtils::Constant::Base'=> '0.01',
- 'ExtUtils::Constant::Utils'=> '0.01',
- 'ExtUtils::Constant::XS'=> '0.01',
- 'ExtUtils::Embed' => '1.26',
- '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.10',
- 'ExtUtils::MM_BeOS' => '1.04',
- 'ExtUtils::MM_Cygwin' => '1.07',
- 'ExtUtils::MM_DOS' => '0.02',
- 'ExtUtils::MM_MacOS' => '1.08',
- 'ExtUtils::MM_NW5' => '2.07',
- 'ExtUtils::MM_OS2' => '1.04',
- 'ExtUtils::MM_UWIN' => '0.02',
- 'ExtUtils::MM_Unix' => '1.46_01',
- 'ExtUtils::MM_VMS' => '5.71',
- 'ExtUtils::MM_Win32' => '1.10',
- 'ExtUtils::MM_Win95' => '0.03',
- 'ExtUtils::MY' => '0.01',
- 'ExtUtils::MakeMaker' => '6.25',
- 'ExtUtils::MakeMaker::bytes'=> '0.01',
- 'ExtUtils::MakeMaker::vmsish'=> '0.01',
- 'ExtUtils::Manifest' => '1.44',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.15',
- 'ExtUtils::Mksymlists' => '1.19',
- 'ExtUtils::Packlist' => '0.04',
- 'ExtUtils::testlib' => '1.15',
- 'Fatal' => '1.04',
- 'Fcntl' => '1.05',
- 'File::Basename' => '2.73',
- 'File::CheckTree' => '4.3',
- 'File::Compare' => '1.1003',
- 'File::Copy' => '2.08',
- 'File::DosGlob' => '1.00',
- 'File::Find' => '1.09',
- 'File::Glob' => '1.04',
- 'File::Path' => '1.06',
- 'File::Spec' => '3.05',
- '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.5',
- 'File::Temp' => '0.16',
- 'File::stat' => '1.00',
- 'FileCache' => '1.04_01',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.11',
- 'Filter::Simple' => '0.78',
- 'Filter::Util::Call' => '1.0601',
- 'FindBin' => '1.44',
- 'GDBM_File' => '1.07',
- 'Getopt::Long' => '2.3401',
- 'Getopt::Std' => '1.05',
- 'Hash::Util' => '0.05',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- 'IO' => '1.21',
- 'IO::Dir' => '1.04',
- 'IO::File' => '1.10',
- 'IO::Handle' => '1.24',
- 'IO::Pipe' => '1.123',
- 'IO::Poll' => '0.06',
- '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::Open2' => '1.01',
- 'IPC::Open3' => '1.0106',
- 'IPC::Semaphore' => '1.02',
- 'IPC::SysV' => '1.04',
- '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::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Script' => '2.07',
- 'MIME::Base64' => '3.05',
- 'MIME::QuotedPrint' => '3.03',
- 'Math::BigFloat' => '1.49',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.75',
- 'Math::BigInt::Calc' => '0.45',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.14',
- 'Math::Complex' => '1.34',
- 'Math::Trig' => '1.02',
- 'Memoize' => '1.01_01',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::CoreList' => '1.99',
- 'NDBM_File' => '1.05',
- 'NEXT' => '0.60_01',
- 'Net::Cmd' => '2.26',
- 'Net::Config' => '1.10',
- 'Net::Domain' => '2.19',
- 'Net::FTP' => '2.75',
- 'Net::FTP::A' => '1.16',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.23',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.28',
- 'Net::Ping' => '2.31',
- 'Net::SMTP' => '2.29',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.00',
- 'ODBM_File' => '1.05',
- 'Opcode' => '1.06',
- 'POSIX' => '1.08',
- 'PerlIO' => '1.03',
- 'PerlIO::encoding' => '0.07',
- 'PerlIO::scalar' => '0.02',
- 'PerlIO::via' => '0.02',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.42',
- 'Pod::Find' => '1.3',
- 'Pod::Functions' => '1.02',
- 'Pod::Html' => '1.0502',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '1.37',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.3',
- 'Pod::Parser' => '1.3',
- 'Pod::Perldoc' => '3.14',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.3',
- 'Pod::Text' => '2.21',
- 'Pod::Text::Color' => '1.04',
- 'Pod::Text::Overstrike' => '1.1',
- 'Pod::Text::Termcap' => '1.11',
- 'Pod::Usage' => '1.3',
- 'SDBM_File' => '1.04',
- 'Safe' => '2.11',
- 'Scalar::Util' => '1.14_1',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.0904',
- 'Shell' => '0.6',
- 'Socket' => '1.77',
- 'Stdio' => '2.3',
- 'Storable' => '2.14',
- 'Switch' => '2.10',
- 'Symbol' => '1.05',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.06',
- 'Term::ANSIColor' => '1.09',
- 'Term::Cap' => '1.09',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.01',
- 'Test' => '1.25',
- 'Test::Builder' => '0.22',
- 'Test::Harness' => '2.46',
- 'Test::Harness::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Straps' => '0.20_01',
- 'Test::More' => '0.54',
- 'Test::Simple' => '0.54',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '1.95_01',
- 'Text::ParseWords' => '3.24',
- 'Text::Soundex' => '1.01',
- 'Text::Tabs' => '98.112801',
- 'Text::Wrap' => '2001.09292',
- 'Thread' => '2.00',
- 'Thread::Queue' => '2.00',
- 'Thread::Semaphore' => '2.01',
- 'Thread::Signal' => '1.00',
- 'Thread::Specific' => '1.00',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97',
- 'Tie::Handle' => '4.1',
- 'Tie::Hash' => '1.01',
- 'Tie::Memoize' => '1.0',
- 'Tie::RefHash' => '1.32',
- 'Tie::Scalar' => '1.00',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.66',
- 'Time::Local' => '1.11',
- 'Time::gmtime' => '1.02',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.02',
- 'Unicode' => '4.0.1',
- 'Unicode::Collate' => '0.40',
- 'Unicode::Normalize' => '0.30',
- 'Unicode::UCD' => '0.22',
- 'User::grent' => '1.00',
- 'User::pwent' => '1.00',
- 'Win32' => '0.23',
- 'XS::APItest' => '0.05',
- 'XS::Typemap' => '0.01',
- 'XSLoader' => '0.03',
- 'XSSymSet' => '1.0',
- 'assertions' => '0.01',
- 'assertions::activate' => '0.01',
- 'attributes' => '0.06',
- 'attrs' => '1.01',
- 'autouse' => '1.04',
- 'base' => '2.06',
- 'bigint' => '0.06',
- 'bignum' => '0.16',
- 'bigrat' => '0.07',
- 'blib' => '1.02',
- 'bytes' => '1.01',
- 'charnames' => '1.04',
- 'constant' => '1.05',
- 'diagnostics' => '1.14',
- 'encoding' => '2.01',
- 'encoding::warnings' => '0.05',
- 'fields' => '2.03',
- 'filetest' => '1.01',
- 'if' => '0.0401',
- 'integer' => '1.00',
- 'less' => '0.01',
- 'lib' => '0.5565',
- 'locale' => '1.00',
- 'open' => '1.04',
- 'ops' => '1.00',
- 'overload' => '1.03',
- 're' => '0.05',
- 'sigtrap' => '1.02',
- 'sort' => '1.02',
- 'strict' => '1.03',
- 'subs' => '1.00',
- 'threads' => '1.05',
- 'threads::shared' => '0.92',
- 'utf8' => '1.04',
- 'vars' => '1.01',
- 'version' => '0.42',
- 'vmsish' => '1.01',
- 'warnings' => '1.04',
- 'warnings::register' => '1.00',
+ 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.008007 => {
- 'AnyDBM_File' => '1.00',
- 'Attribute::Handlers' => '0.78_01',
- 'AutoLoader' => '5.60',
- 'AutoSplit' => '1.04',
- 'B' => '1.09',
- 'B::Asmdata' => '1.01',
- 'B::Assembler' => '0.07',
- 'B::Bblock' => '1.02',
- 'B::Bytecode' => '1.01',
- 'B::C' => '1.04',
- 'B::CC' => '1.00',
- 'B::Concise' => '0.65',
- 'B::Debug' => '1.02',
- 'B::Deparse' => '0.7',
- 'B::Disassembler' => '1.04',
- 'B::Lint' => '1.03',
- 'B::Showlex' => '1.02',
- 'B::Stackobj' => '1.00',
- 'B::Stash' => '1.00',
- 'B::Terse' => '1.03',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.07',
- 'ByteLoader' => '0.05',
- 'CGI' => '3.10',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.29',
- 'CGI::Cookie' => '1.25',
- 'CGI::Fast' => '1.05',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.5',
- 'CPAN' => '1.76_01',
- 'CPAN::FirstTime' => '1.60 ',
- 'CPAN::Nox' => '1.03',
- 'Carp' => '1.04',
- 'Carp::Heavy' => '1.04',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Config' => undef,
- 'Cwd' => '3.05',
- 'DB' => '1.0',
- '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',
- 'DB_File' => '1.811',
- 'DCLsym' => '1.02',
- 'Data::Dumper' => '2.121_04',
- 'Devel::DProf' => '20050310.00',
- 'Devel::PPPort' => '3.06',
- 'Devel::Peek' => '1.02',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.10',
- 'Digest::MD5' => '2.33',
- 'Digest::base' => '1.00',
- 'Digest::file' => '0.01',
- 'DirHandle' => '1.00',
- 'Dumpvalue' => '1.11',
- 'DynaLoader' => '1.05',
- 'Encode' => '2.10',
- 'Encode::Alias' => '2.03',
- '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.02',
- 'Encode::Guess' => '2.00',
- 'Encode::JP' => '2.01',
- '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.02',
- 'Encode::Unicode::UTF7' => '2.01',
- 'English' => '1.01',
- 'Env' => '1.00',
- 'Errno' => '1.09_01',
- 'Exporter' => '5.58',
- 'Exporter::Heavy' => '5.58',
- 'ExtUtils::Command' => '1.05',
- 'ExtUtils::Command::MM' => '0.03',
- 'ExtUtils::Constant' => '0.16',
- 'ExtUtils::Constant::Base'=> '0.01',
- 'ExtUtils::Constant::Utils'=> '0.01',
- 'ExtUtils::Constant::XS'=> '0.01',
- 'ExtUtils::Embed' => '1.250601',
- 'ExtUtils::Install' => '1.32',
- 'ExtUtils::Installed' => '0.08',
- 'ExtUtils::Liblist' => '1.01',
- 'ExtUtils::Liblist::Kid'=> '1.3001',
- '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.07_02',
- '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.0301',
- 'ExtUtils::MY' => '0.01',
- 'ExtUtils::MakeMaker' => '6.17',
- 'ExtUtils::MakeMaker::bytes'=> '0.01',
- 'ExtUtils::MakeMaker::vmsish'=> '0.01',
- 'ExtUtils::Manifest' => '1.42',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.15',
- 'ExtUtils::Mksymlists' => '1.19',
- 'ExtUtils::Packlist' => '0.04',
- 'ExtUtils::testlib' => '1.15',
- 'Fatal' => '1.03',
- 'Fcntl' => '1.05',
- 'File::Basename' => '2.73',
- 'File::CheckTree' => '4.3',
- 'File::Compare' => '1.1003',
- 'File::Copy' => '2.08',
- 'File::DosGlob' => '1.00',
- 'File::Find' => '1.09',
- 'File::Glob' => '1.04',
- 'File::Path' => '1.07',
- 'File::Spec' => '3.05',
- '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.5',
- 'File::Temp' => '0.16',
- 'File::stat' => '1.00',
- 'FileCache' => '1.05',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.11',
- 'Filter::Simple' => '0.78',
- 'Filter::Util::Call' => '1.0601',
- 'FindBin' => '1.44',
- 'GDBM_File' => '1.07',
- 'Getopt::Long' => '2.34',
- 'Getopt::Std' => '1.05',
- 'Hash::Util' => '0.05',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- 'IO' => '1.21',
- 'IO::Dir' => '1.04',
- 'IO::File' => '1.11',
- 'IO::Handle' => '1.24',
- 'IO::Pipe' => '1.123',
- 'IO::Poll' => '0.06',
- 'IO::Seekable' => '1.09',
- 'IO::Select' => '1.16',
- 'IO::Socket' => '1.28',
- 'IO::Socket::INET' => '1.28',
- 'IO::Socket::UNIX' => '1.21',
- 'IPC::Msg' => '1.02',
- 'IPC::Open2' => '1.01',
- 'IPC::Open3' => '1.0106',
- 'IPC::Semaphore' => '1.02',
- 'IPC::SysV' => '1.04',
- '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::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Script' => '2.07',
- 'MIME::Base64' => '3.05',
- 'MIME::QuotedPrint' => '3.03',
- 'Math::BigFloat' => '1.51',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.77',
- 'Math::BigInt::Calc' => '0.47',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.15',
- 'Math::Complex' => '1.34',
- 'Math::Trig' => '1.02',
- 'Memoize' => '1.01',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'NDBM_File' => '1.05',
- 'NEXT' => '0.60',
- 'Net::Cmd' => '2.26',
- 'Net::Config' => '1.10',
- 'Net::Domain' => '2.19',
- 'Net::FTP' => '2.75',
- 'Net::FTP::A' => '1.16',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.23',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.28',
- 'Net::Ping' => '2.31',
- 'Net::SMTP' => '2.29',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.00',
- 'ODBM_File' => '1.05',
- 'Opcode' => '1.05',
- 'POSIX' => '1.08',
- 'PerlIO' => '1.03',
- 'PerlIO::encoding' => '0.07',
- 'PerlIO::scalar' => '0.02',
- 'PerlIO::via' => '0.02',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.42',
- 'Pod::Find' => '1.3',
- 'Pod::Functions' => '1.02',
- 'Pod::Html' => '1.0503',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '1.37',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.3',
- 'Pod::Parser' => '1.3',
- 'Pod::Perldoc' => '3.14',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.3',
- 'Pod::Text' => '2.21',
- 'Pod::Text::Color' => '1.04',
- 'Pod::Text::Overstrike' => '1.1',
- 'Pod::Text::Termcap' => '1.11',
- 'Pod::Usage' => '1.3',
- 'SDBM_File' => '1.04',
- 'Safe' => '2.11',
- 'Scalar::Util' => '1.14',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.0904',
- 'Shell' => '0.6',
- 'Socket' => '1.77',
- 'Stdio' => '2.3',
- 'Storable' => '2.13',
- 'Switch' => '2.10',
- 'Symbol' => '1.06',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.06',
- 'Term::ANSIColor' => '1.09',
- 'Term::Cap' => '1.09',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.01',
- 'Test' => '1.25',
- 'Test::Builder' => '0.22',
- 'Test::Harness' => '2.48',
- 'Test::Harness::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Point' => '0.01',
- 'Test::Harness::Straps' => '0.23',
- 'Test::More' => '0.54',
- 'Test::Simple' => '0.54',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '1.95',
- 'Text::ParseWords' => '3.24',
- 'Text::Soundex' => '1.01',
- 'Text::Tabs' => '98.112801',
- 'Text::Wrap' => '2001.09293',
- 'Thread' => '2.00',
- 'Thread::Queue' => '2.00',
- 'Thread::Semaphore' => '2.01',
- 'Thread::Signal' => '1.00',
- 'Thread::Specific' => '1.00',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97',
- 'Tie::Handle' => '4.1',
- 'Tie::Hash' => '1.01',
- 'Tie::Memoize' => '1.0',
- 'Tie::RefHash' => '1.32',
- 'Tie::Scalar' => '1.00',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.66',
- 'Time::Local' => '1.11',
- 'Time::gmtime' => '1.02',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.01',
- 'Unicode' => '4.1.0', # lib/unicore/version
- 'Unicode::Collate' => '0.40',
- 'Unicode::Normalize' => '0.32',
- 'Unicode::UCD' => '0.23',
- 'User::grent' => '1.00',
- 'User::pwent' => '1.00',
- 'Win32' => '0.24',
- 'XS::APItest' => '0.06',
- 'XS::Typemap' => '0.01',
- 'XSLoader' => '0.02',
- 'XSSymSet' => '1.0',
- 'attributes' => '0.06',
- 'attrs' => '1.01',
- 'autouse' => '1.04',
- 'base' => '2.07',
- 'bigint' => '0.07',
- 'bignum' => '0.17',
- 'bigrat' => '0.08',
- 'blib' => '1.02',
- 'bytes' => '1.02',
- 'charnames' => '1.04',
- 'constant' => '1.05',
- 'diagnostics' => '1.14',
- 'encoding' => '2.01',
- 'fields' => '2.03',
- 'filetest' => '1.01',
- 'if' => '0.03',
- 'integer' => '1.00',
- 'less' => '0.01',
- 'lib' => '0.5565',
- 'locale' => '1.00',
- 'open' => '1.04',
- 'ops' => '1.00',
- 'overload' => '1.03',
- 're' => '0.04',
- 'sigtrap' => '1.02',
- 'sort' => '1.02',
- 'strict' => '1.03',
- 'subs' => '1.00',
- 'threads' => '1.05',
- 'threads::shared' => '0.93',
- 'utf8' => '1.05',
- 'vars' => '1.01',
- 'vmsish' => '1.01',
- 'warnings' => '1.03',
- 'warnings::register' => '1.00',
- },
-
5.009003 => {
- 'AnyDBM_File' => '1.00',
- 'Archive::Tar' => '1.26_01',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.78_02',
- 'AutoLoader' => '5.60',
- 'AutoSplit' => '1.04_01',
- 'B' => '1.10',
- 'B::Asmdata' => '1.01',
- 'B::Assembler' => '0.07',
- '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::Disassembler' => '1.05',
- 'B::Lint' => '1.04',
- 'B::Showlex' => '1.02',
- 'B::Stackobj' => '1.00',
- 'B::Stash' => '1.00',
- 'B::Terse' => '1.03',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.07',
- 'ByteLoader' => '0.06',
- 'CGI' => '3.15_01',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.29',
- 'CGI::Cookie' => '1.26',
- 'CGI::Fast' => '1.05',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.5',
- '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',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- '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' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.15',
- 'DB' => '1.01',
- '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',
- 'DB_File' => '1.814',
- 'DCLsym' => '1.02',
- 'Data::Dumper' => '2.121_08',
- 'Devel::DProf' => '20050603.00',
- 'Devel::PPPort' => '3.08',
- 'Devel::Peek' => '1.03',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.14',
- 'Digest::MD5' => '2.36',
- 'Digest::SHA' => '5.32',
- 'Digest::base' => '1.00',
- 'Digest::file' => '1.00',
- 'DirHandle' => '1.01',
- 'Dumpvalue' => '1.12',
- 'DynaLoader' => '1.07',
- 'Encode' => '2.14',
- 'Encode::Alias' => '2.04',
- 'Encode::Byte' => '2.00',
- 'Encode::CJKConstants' => '2.00',
- 'Encode::CN' => '2.00',
- 'Encode::CN::HZ' => '2.02',
- 'Encode::Config' => '2.01',
- 'Encode::EBCDIC' => '2.00',
- 'Encode::Encoder' => '2.00',
- 'Encode::Encoding' => '2.02',
- 'Encode::Guess' => '2.00',
- 'Encode::JP' => '2.01',
- 'Encode::JP::H2Z' => '2.00',
- 'Encode::JP::JIS7' => '2.00',
- 'Encode::KR' => '2.00',
- 'Encode::KR::2022_KR' => '2.00',
- 'Encode::MIME::Header' => '2.02',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.01',
- 'Encode::Symbol' => '2.00',
- 'Encode::TW' => '2.00',
- 'Encode::Unicode' => '2.02',
- 'Encode::Unicode::UTF7' => '2.01',
- 'English' => '1.04',
- 'Env' => '1.00',
- 'Errno' => '1.09_01',
- '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' => '1.09',
- 'ExtUtils::Command::MM' => '0.05_01',
- 'ExtUtils::Constant' => '0.2',
- 'ExtUtils::Constant::Base'=> '0.02',
- 'ExtUtils::Constant::ProxySubs'=> '0.01',
- 'ExtUtils::Constant::Utils'=> '0.01',
- 'ExtUtils::Constant::XS'=> '0.02',
- 'ExtUtils::Embed' => '1.26',
- 'ExtUtils::Install' => '1.33',
- 'ExtUtils::Installed' => '0.08',
- 'ExtUtils::Liblist' => '1.01',
- 'ExtUtils::Liblist::Kid'=> '1.3',
- 'ExtUtils::MM' => '0.05',
- 'ExtUtils::MM_AIX' => '0.03',
- 'ExtUtils::MM_Any' => '0.13_01',
- 'ExtUtils::MM_BeOS' => '1.05',
- 'ExtUtils::MM_Cygwin' => '1.08',
- 'ExtUtils::MM_DOS' => '0.02',
- 'ExtUtils::MM_MacOS' => '1.08',
- 'ExtUtils::MM_NW5' => '2.08',
- 'ExtUtils::MM_OS2' => '1.05',
- 'ExtUtils::MM_QNX' => '0.02',
- 'ExtUtils::MM_UWIN' => '0.02',
- 'ExtUtils::MM_Unix' => '1.50_01',
- 'ExtUtils::MM_VMS' => '5.73',
- 'ExtUtils::MM_VOS' => '0.02',
- 'ExtUtils::MM_Win32' => '1.12',
- 'ExtUtils::MM_Win95' => '0.04',
- 'ExtUtils::MY' => '0.01',
- 'ExtUtils::MakeMaker' => '6.30_01',
- 'ExtUtils::MakeMaker::Config'=> '0.02',
- 'ExtUtils::MakeMaker::bytes'=> '0.01',
- 'ExtUtils::MakeMaker::vmsish'=> '0.01',
- 'ExtUtils::Manifest' => '1.46',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.15',
- 'ExtUtils::Mksymlists' => '1.19',
- 'ExtUtils::Packlist' => '0.04',
- 'ExtUtils::ParseXS' => '2.15_02',
- 'ExtUtils::testlib' => '1.15',
- 'Fatal' => '1.04',
- 'Fcntl' => '1.05',
- 'File::Basename' => '2.74',
- 'File::CheckTree' => '4.3',
- 'File::Compare' => '1.1005',
- 'File::Copy' => '2.09',
- 'File::DosGlob' => '1.00',
- 'File::Find' => '1.10',
- 'File::Glob' => '1.05',
- 'File::Path' => '1.08',
- 'File::Spec' => '3.15',
- '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.6',
- 'File::Temp' => '0.16_01',
- 'File::stat' => '1.00',
- 'FileCache' => '1.06',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.11',
- 'Filter::Simple' => '0.82',
- 'Filter::Util::Call' => '1.0601',
- 'FindBin' => '1.47',
- 'GDBM_File' => '1.08',
- 'Getopt::Long' => '2.35',
- 'Getopt::Std' => '1.05',
- 'Hash::Util' => '0.05',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- 'IO' => '1.22',
- 'IO::Dir' => '1.05',
- 'IO::File' => '1.13_01',
- 'IO::Handle' => '1.26',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.29_01',
- 'IO::Socket::INET' => '1.29_02',
- 'IO::Socket::UNIX' => '1.22_01',
- 'IO::Zlib' => '1.04_02',
- 'IPC::Msg' => '1.02',
- 'IPC::Open2' => '1.02',
- 'IPC::Open3' => '1.02',
- 'IPC::Semaphore' => '1.02',
- 'IPC::SysV' => '1.04',
- 'List::Util' => '1.18',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.10_01',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Script' => '2.07',
- 'MIME::Base64' => '3.07',
- 'MIME::QuotedPrint' => '3.07',
- 'Math::BigFloat' => '1.51',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.77',
- 'Math::BigInt::Calc' => '0.47',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.10',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.15',
- 'Math::Complex' => '1.35',
- 'Math::Trig' => '1.03',
- 'Memoize' => '1.01_01',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::CoreList' => '2.02',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.06',
- 'NEXT' => '0.60_01',
- 'Net::Cmd' => '2.26_01',
- 'Net::Config' => '1.10',
- 'Net::Domain' => '2.19_01',
- 'Net::FTP' => '2.75',
- 'Net::FTP::A' => '1.16',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.23',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.28',
- 'Net::Ping' => '2.31_04',
- 'Net::SMTP' => '2.29',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.00',
- 'ODBM_File' => '1.06',
- 'Opcode' => '1.08',
- 'POSIX' => '1.10',
- 'PerlIO' => '1.04',
- 'PerlIO::encoding' => '0.09',
- 'PerlIO::scalar' => '0.04',
- 'PerlIO::via' => '0.03',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.43',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.34',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.0504',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.04',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.33',
- 'Pod::Parser' => '1.32',
- 'Pod::Perldoc' => '3.14_01',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.3',
- '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',
- 'SDBM_File' => '1.05',
- 'Safe' => '2.12',
- 'Scalar::Util' => '1.18',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.0905',
- 'Shell' => '0.6',
- 'Socket' => '1.78',
- 'Stdio' => '2.3',
- 'Storable' => '2.15_02',
- 'Switch' => '2.10_01',
- 'Symbol' => '1.06',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.13',
- 'Term::ANSIColor' => '1.10',
- 'Term::Cap' => '1.09',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.02',
- 'Test' => '1.25',
- 'Test::Builder' => '0.32',
- 'Test::Builder::Module' => '0.03',
- 'Test::Builder::Tester' => '1.02',
- 'Test::Builder::Tester::Color'=> undef,
- 'Test::Harness' => '2.56',
- 'Test::Harness::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Point' => '0.01',
- 'Test::Harness::Straps' => '0.26',
- 'Test::More' => '0.62',
- 'Test::Simple' => '0.62',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '1.95_01',
- 'Text::ParseWords' => '3.24',
- 'Text::Soundex' => '1.01',
- 'Text::Tabs' => '2005.0824',
- 'Text::Wrap' => '2005.082401',
- 'Thread' => '2.00',
- 'Thread::Queue' => '2.00',
- 'Thread::Semaphore' => '2.01',
- 'Thread::Signal' => '1.00',
- 'Thread::Specific' => '1.00',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_01',
- 'Tie::Handle' => '4.1',
- 'Tie::Hash' => '1.02',
- 'Tie::Memoize' => '1.0',
- 'Tie::RefHash' => '1.32',
- 'Tie::Scalar' => '1.00',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.86',
- 'Time::Local' => '1.11',
- 'Time::gmtime' => '1.02',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.03',
- 'Unicode' => '4.1.0',
- 'Unicode::Collate' => '0.52',
- 'Unicode::Normalize' => '0.32',
- 'Unicode::UCD' => '0.24',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'Win32' => '0.2601',
- 'XS::APItest' => '0.09',
- 'XS::Typemap' => '0.02',
- 'XSLoader' => '0.06',
- 'XSSymSet' => '1.0',
- 'assertions' => '0.02',
- 'assertions::activate' => '0.02',
- 'assertions::compat' => undef,
- 'attributes' => '0.06',
- 'attrs' => '1.02',
- 'autouse' => '1.05',
- 'base' => '2.07',
- 'bigint' => '0.07',
- 'bignum' => '0.17',
- 'bigrat' => '0.08',
- 'blib' => '1.03',
- 'bytes' => '1.02',
- 'charnames' => '1.05',
- 'constant' => '1.07',
- 'diagnostics' => '1.15',
- 'encoding' => '2.02',
- 'encoding::warnings' => '0.05',
- 'feature' => '1.00',
- 'fields' => '2.03',
- 'filetest' => '1.01',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.01',
- 'lib' => '0.5565',
- 'locale' => '1.00',
- 'open' => '1.05',
- 'ops' => '1.01',
- 'overload' => '1.04',
- 're' => '0.06',
- 'sigtrap' => '1.02',
- 'sort' => '2.00',
- 'strict' => '1.03',
- 'subs' => '1.00',
- 'threads' => '1.07',
- 'threads::shared' => '0.94',
- 'utf8' => '1.06',
- 'vars' => '1.01',
- 'version' => '0.53',
- 'vmsish' => '1.02',
- 'warnings' => '1.05',
- 'warnings::register' => '1.01',
+ 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.008008 => {
- 'AnyDBM_File' => '1.00',
- 'Attribute::Handlers' => '0.78_02',
- 'AutoLoader' => '5.60',
- 'AutoSplit' => '1.04',
- 'B' => '1.09_01',
- 'B::Asmdata' => '1.01',
- 'B::Assembler' => '0.07',
- '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::Lint' => '1.03',
- 'B::Showlex' => '1.02',
- 'B::Stackobj' => '1.00',
- 'B::Stash' => '1.00',
- 'B::Terse' => '1.03_01',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.07',
- 'ByteLoader' => '0.06',
- 'CGI' => '3.15',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.29',
- 'CGI::Cookie' => '1.26',
- 'CGI::Fast' => '1.05',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.5',
- 'CPAN' => '1.76_02',
- 'CPAN::FirstTime' => '1.60 ',
- 'CPAN::Nox' => '1.03',
- 'Carp' => '1.04',
- 'Carp::Heavy' => '1.04',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Config' => undef,
- 'Cwd' => '3.12',
- 'DB' => '1.01',
- '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',
- 'DB_File' => '1.814',
- 'DCLsym' => '1.02',
- 'Data::Dumper' => '2.121_08',
- 'Devel::DProf' => '20050603.00',
- 'Devel::PPPort' => '3.06_01',
- 'Devel::Peek' => '1.03',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.14',
- 'Digest::MD5' => '2.36',
- 'Digest::base' => '1.00',
- 'Digest::file' => '1.00',
- 'DirHandle' => '1.00',
- 'Dumpvalue' => '1.12',
- 'DynaLoader' => '1.05',
- 'Encode' => '2.12',
- 'Encode::Alias' => '2.04',
- 'Encode::Byte' => '2.00',
- 'Encode::CJKConstants' => '2.00',
- 'Encode::CN' => '2.00',
- 'Encode::CN::HZ' => '2.01',
- 'Encode::Config' => '2.01',
- 'Encode::EBCDIC' => '2.00',
- 'Encode::Encoder' => '2.00',
- 'Encode::Encoding' => '2.02',
- 'Encode::Guess' => '2.00',
- 'Encode::JP' => '2.01',
- 'Encode::JP::H2Z' => '2.00',
- 'Encode::JP::JIS7' => '2.00',
- 'Encode::KR' => '2.00',
- 'Encode::KR::2022_KR' => '2.00',
- 'Encode::MIME::Header' => '2.01',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.01',
- 'Encode::Symbol' => '2.00',
- 'Encode::TW' => '2.00',
- 'Encode::Unicode' => '2.02',
- 'Encode::Unicode::UTF7' => '2.01',
- 'English' => '1.02',
- 'Env' => '1.00',
- 'Errno' => '1.09_01',
- 'Exporter' => '5.58',
- 'Exporter::Heavy' => '5.58',
- 'ExtUtils::Command' => '1.09',
- 'ExtUtils::Command::MM' => '0.05',
- 'ExtUtils::Constant' => '0.17',
- 'ExtUtils::Constant::Base'=> '0.01',
- 'ExtUtils::Constant::Utils'=> '0.01',
- 'ExtUtils::Constant::XS'=> '0.01',
- 'ExtUtils::Embed' => '1.26',
- 'ExtUtils::Install' => '1.33',
- 'ExtUtils::Installed' => '0.08',
- 'ExtUtils::Liblist' => '1.01',
- '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_DOS' => '0.02',
- 'ExtUtils::MM_MacOS' => '1.08',
- 'ExtUtils::MM_NW5' => '2.08',
- 'ExtUtils::MM_OS2' => '1.05',
- 'ExtUtils::MM_QNX' => '0.02',
- 'ExtUtils::MM_UWIN' => '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::MY' => '0.01',
- 'ExtUtils::MakeMaker' => '6.30',
- 'ExtUtils::MakeMaker::Config'=> '0.02',
- 'ExtUtils::MakeMaker::bytes'=> '0.01',
- 'ExtUtils::MakeMaker::vmsish'=> '0.01',
- 'ExtUtils::Manifest' => '1.46',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.15',
- 'ExtUtils::Mksymlists' => '1.19',
- 'ExtUtils::Packlist' => '0.04',
- 'ExtUtils::testlib' => '1.15',
- 'Fatal' => '1.03',
- 'Fcntl' => '1.05',
- 'File::Basename' => '2.74',
- 'File::CheckTree' => '4.3',
- 'File::Compare' => '1.1003',
- 'File::Copy' => '2.09',
- 'File::DosGlob' => '1.00',
- 'File::Find' => '1.10',
- 'File::Glob' => '1.05',
- 'File::Path' => '1.08',
- 'File::Spec' => '3.12',
- '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.6',
- 'File::Temp' => '0.16',
- 'File::stat' => '1.00',
- 'FileCache' => '1.06',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.11',
- 'Filter::Simple' => '0.82',
- 'Filter::Util::Call' => '1.0601',
- 'FindBin' => '1.47',
- 'GDBM_File' => '1.08',
- 'Getopt::Long' => '2.35',
- 'Getopt::Std' => '1.05',
- 'Hash::Util' => '0.05',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- '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::Msg' => '1.02',
- 'IPC::Open2' => '1.02',
- 'IPC::Open3' => '1.02',
- 'IPC::Semaphore' => '1.02',
- 'IPC::SysV' => '1.04',
- 'List::Util' => '1.18',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.09',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Script' => '2.07',
- 'MIME::Base64' => '3.07',
- 'MIME::QuotedPrint' => '3.07',
- 'Math::BigFloat' => '1.51',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.77',
- 'Math::BigInt::Calc' => '0.47',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.15',
- 'Math::Complex' => '1.35',
- 'Math::Trig' => '1.03',
- 'Memoize' => '1.01',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'NDBM_File' => '1.06',
- 'NEXT' => '0.60',
- 'Net::Cmd' => '2.26',
- 'Net::Config' => '1.10',
- 'Net::Domain' => '2.19',
- 'Net::FTP' => '2.75',
- 'Net::FTP::A' => '1.16',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.23',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.28',
- 'Net::Ping' => '2.31',
- 'Net::SMTP' => '2.29',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.00',
- 'ODBM_File' => '1.06',
- 'Opcode' => '1.06',
- 'POSIX' => '1.09',
- 'PerlIO' => '1.04',
- 'PerlIO::encoding' => '0.09',
- 'PerlIO::scalar' => '0.04',
- 'PerlIO::via' => '0.03',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.43',
- 'Pod::Find' => '1.34',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.0504',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '1.37',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.33',
- 'Pod::Parser' => '1.32',
- 'Pod::Perldoc' => '3.14',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.3',
- 'Pod::Text' => '2.21',
- 'Pod::Text::Color' => '1.04',
- 'Pod::Text::Overstrike' => '1.1',
- 'Pod::Text::Termcap' => '1.11',
- 'Pod::Usage' => '1.33',
- 'SDBM_File' => '1.05',
- 'Safe' => '2.12',
- 'Scalar::Util' => '1.18',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.0904',
- 'Shell' => '0.6',
- 'Socket' => '1.78',
- 'Stdio' => '2.3',
- 'Storable' => '2.15',
- 'Switch' => '2.10_01',
- 'Symbol' => '1.06',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.13',
- 'Term::ANSIColor' => '1.10',
- 'Term::Cap' => '1.09',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.02',
- 'Test' => '1.25',
- '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::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Point' => '0.01',
- 'Test::Harness::Straps' => '0.26',
- 'Test::More' => '0.62',
- 'Test::Simple' => '0.62',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '1.95',
- 'Text::ParseWords' => '3.24',
- 'Text::Soundex' => '1.01',
- 'Text::Tabs' => '2005.0824',
- 'Text::Wrap' => '2005.082401',
- 'Thread' => '2.00',
- 'Thread::Queue' => '2.00',
- 'Thread::Semaphore' => '2.01',
- 'Thread::Signal' => '1.00',
- 'Thread::Specific' => '1.00',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97',
- 'Tie::Handle' => '4.1',
- 'Tie::Hash' => '1.02',
- 'Tie::Memoize' => '1.0',
- 'Tie::RefHash' => '1.32',
- 'Tie::Scalar' => '1.00',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.86',
- 'Time::Local' => '1.11',
- 'Time::gmtime' => '1.02',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.01',
- 'Unicode' => '4.1.0',
- 'Unicode::Collate' => '0.52',
- 'Unicode::Normalize' => '0.32',
- 'Unicode::UCD' => '0.24',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'Win32' => '0.2601',
- 'XS::APItest' => '0.08',
- 'XS::Typemap' => '0.02',
- 'XSLoader' => '0.06',
- 'XSSymSet' => '1.0',
- 'attributes' => '0.06',
- 'attrs' => '1.02',
- 'autouse' => '1.05',
- 'base' => '2.07',
- 'bigint' => '0.07',
- 'bignum' => '0.17',
- 'bigrat' => '0.08',
- 'blib' => '1.03',
- 'bytes' => '1.02',
- 'charnames' => '1.05',
- 'constant' => '1.05',
- 'diagnostics' => '1.15',
- 'encoding' => '2.02',
- 'fields' => '2.03',
- 'filetest' => '1.01',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.01',
- 'lib' => '0.5565',
- 'locale' => '1.00',
- 'open' => '1.05',
- 'ops' => '1.01',
- 'overload' => '1.04',
- 're' => '0.05',
- 'sigtrap' => '1.02',
- 'sort' => '1.02',
- 'strict' => '1.03',
- 'subs' => '1.00',
- 'threads' => '1.07',
- 'threads::shared' => '0.94',
- 'utf8' => '1.06',
- 'vars' => '1.01',
- 'vmsish' => '1.02',
- 'warnings' => '1.05',
- 'warnings::register' => '1.01',
- },
-
5.009004 => {
- 'AnyDBM_File' => '1.00',
- 'Archive::Tar' => '1.30_01',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.78_02',
- 'AutoLoader' => '5.61',
- 'AutoSplit' => '1.04_01',
- 'B' => '1.11',
- 'B::Asmdata' => '1.01',
- 'B::Assembler' => '0.07',
- 'B::Bblock' => '1.02',
- 'B::Bytecode' => '1.02',
- 'B::C' => '1.05',
- 'B::CC' => '1.00',
- 'B::Concise' => '0.69',
- 'B::Debug' => '1.02',
- 'B::Deparse' => '0.76',
- 'B::Disassembler' => '1.05',
- 'B::Lint' => '1.08',
- 'B::Showlex' => '1.02',
- 'B::Stackobj' => '1.00',
- 'B::Stash' => '1.00',
- 'B::Terse' => '1.03',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.08',
- 'ByteLoader' => '0.06',
- 'CGI' => '3.20',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.29',
- 'CGI::Cookie' => '1.27',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.5',
- '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',
- 'Carp' => '1.05',
- 'Carp::Heavy' => '1.05',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Zlib' => '2.000_13',
- 'Compress::Zlib' => '2.000_13',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.19',
- 'DB' => '1.01',
- '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',
- 'DB_File' => '1.814',
- 'DCLsym' => '1.02',
- 'Data::Dumper' => '2.121_08',
- 'Devel::DProf' => '20050603.00',
- 'Devel::PPPort' => '3.10',
- 'Devel::Peek' => '1.03',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.15',
- 'Digest::MD5' => '2.36',
- 'Digest::SHA' => '5.43',
- 'Digest::base' => '1.00',
- 'Digest::file' => '1.00',
- 'DirHandle' => '1.01',
- 'Dumpvalue' => '1.12',
- 'DynaLoader' => '1.07',
- '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',
- 'English' => '1.04',
- 'Env' => '1.00',
- 'Errno' => '1.09_01',
- 'Exporter' => '5.59',
- 'Exporter::Heavy' => '5.59',
- 'ExtUtils::CBuilder' => '0.18',
- 'ExtUtils::CBuilder::Base'=> '0.12',
- 'ExtUtils::CBuilder::Platform::Unix'=> '0.12',
- 'ExtUtils::CBuilder::Platform::VMS'=> '0.12',
- 'ExtUtils::CBuilder::Platform::Windows'=> '0.12_01',
- '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' => '1.09',
- 'ExtUtils::Command::MM' => '0.05_01',
- 'ExtUtils::Constant' => '0.2',
- 'ExtUtils::Constant::Base'=> '0.03',
- 'ExtUtils::Constant::ProxySubs'=> '0.03',
- 'ExtUtils::Constant::Utils'=> '0.01',
- 'ExtUtils::Constant::XS'=> '0.02',
- 'ExtUtils::Embed' => '1.26',
- 'ExtUtils::Install' => '1.41',
- 'ExtUtils::Installed' => '1.41',
- 'ExtUtils::Liblist' => '1.01',
- 'ExtUtils::Liblist::Kid'=> '1.3',
- 'ExtUtils::MM' => '0.05',
- 'ExtUtils::MM_AIX' => '0.03',
- 'ExtUtils::MM_Any' => '0.13_02',
- 'ExtUtils::MM_BeOS' => '1.05',
- 'ExtUtils::MM_Cygwin' => '1.08',
- 'ExtUtils::MM_DOS' => '0.02',
- 'ExtUtils::MM_MacOS' => '1.08',
- 'ExtUtils::MM_NW5' => '2.08_01',
- 'ExtUtils::MM_OS2' => '1.05',
- 'ExtUtils::MM_QNX' => '0.02',
- 'ExtUtils::MM_UWIN' => '0.02',
- 'ExtUtils::MM_Unix' => '1.5003',
- 'ExtUtils::MM_VMS' => '5.73_03',
- 'ExtUtils::MM_VOS' => '0.02',
- 'ExtUtils::MM_Win32' => '1.12_02',
- 'ExtUtils::MM_Win95' => '0.04_01',
- 'ExtUtils::MY' => '0.01',
- 'ExtUtils::MakeMaker' => '6.30_02',
- 'ExtUtils::MakeMaker::Config'=> '0.02',
- 'ExtUtils::MakeMaker::bytes'=> '0.01',
- 'ExtUtils::MakeMaker::vmsish'=> '0.01',
- 'ExtUtils::Manifest' => '1.46_01',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.15_01',
- 'ExtUtils::Mksymlists' => '1.19_01',
- 'ExtUtils::Packlist' => '1.41',
- 'ExtUtils::ParseXS' => '2.15_02',
- 'ExtUtils::testlib' => '1.15',
- 'Fatal' => '1.04',
- 'Fcntl' => '1.05',
- 'File::Basename' => '2.75',
- 'File::CheckTree' => '4.3',
- 'File::Compare' => '1.1005',
- 'File::Copy' => '2.09',
- 'File::DosGlob' => '1.00',
- 'File::Find' => '1.11',
- 'File::Glob' => '1.05',
- 'File::GlobMapper' => '0.000_02',
- 'File::Path' => '1.08',
- 'File::Spec' => '3.19',
- '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.6',
- 'File::Temp' => '0.16_01',
- 'File::stat' => '1.00',
- 'FileCache' => '1.07',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.11',
- 'Filter::Simple' => '0.82',
- 'Filter::Util::Call' => '1.0601',
- 'FindBin' => '1.47',
- 'GDBM_File' => '1.08',
- 'Getopt::Long' => '2.3501',
- 'Getopt::Std' => '1.05',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '0.01',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- '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::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- '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',
- 'IO::Zlib' => '1.04_02',
- 'IPC::Msg' => '1.02',
- 'IPC::Open2' => '1.02',
- 'IPC::Open3' => '1.02',
- 'IPC::Semaphore' => '1.02',
- 'IPC::SysV' => '1.04',
- 'List::Util' => '1.18',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.10_01',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Script' => '2.07',
- 'MIME::Base64' => '3.07_01',
- 'MIME::QuotedPrint' => '3.07',
- 'Math::BigFloat' => '1.51',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.77',
- 'Math::BigInt::Calc' => '0.47',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.10',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.15',
- 'Math::Complex' => '1.36',
- 'Math::Trig' => '1.04',
- 'Memoize' => '1.01_01',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- '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',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.06',
- 'NEXT' => '0.60_01',
- 'Net::Cmd' => '2.26_01',
- 'Net::Config' => '1.10',
- 'Net::Domain' => '2.19_01',
- 'Net::FTP' => '2.75',
- 'Net::FTP::A' => '1.16',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.23',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.28',
- 'Net::Ping' => '2.31_04',
- 'Net::SMTP' => '2.29',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.00',
- 'ODBM_File' => '1.06',
- 'Opcode' => '1.08',
- 'POSIX' => '1.10',
- 'Package::Constants' => '0.01',
- 'PerlIO' => '1.04',
- 'PerlIO::encoding' => '0.09',
- 'PerlIO::scalar' => '0.04',
- 'PerlIO::via' => '0.03',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.43',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.34',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.07',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.09',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.33',
- 'Pod::Parser' => '1.32',
- 'Pod::Perldoc' => '3.14_01',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.3',
- '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.07',
- 'Pod::Text::Color' => '2.03',
- 'Pod::Text::Overstrike' => '2',
- 'Pod::Text::Termcap' => '2.03',
- 'Pod::Usage' => '1.33_01',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.12',
- 'Scalar::Util' => '1.18',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.0905',
- 'Shell' => '0.7',
- 'Socket' => '1.78',
- 'Stdio' => '2.3',
- 'Storable' => '2.15_02',
- 'Switch' => '2.10_01',
- 'Symbol' => '1.06',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.17',
- 'Term::ANSIColor' => '1.11',
- 'Term::Cap' => '1.09',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.02',
- 'Test' => '1.25',
- 'Test::Builder' => '0.33',
- 'Test::Builder::Module' => '0.03',
- 'Test::Builder::Tester' => '1.04',
- 'Test::Builder::Tester::Color'=> undef,
- 'Test::Harness' => '2.62',
- 'Test::Harness::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Point' => '0.01',
- 'Test::Harness::Straps' => '0.26',
- 'Test::Harness::Util' => '0.01',
- 'Test::More' => '0.64',
- 'Test::Simple' => '0.64',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '1.98_01',
- 'Text::ParseWords' => '3.25',
- 'Text::Soundex' => '1.01',
- 'Text::Tabs' => '2007.071101',
- 'Text::Wrap' => '2006.0711',
- 'Thread' => '2.00',
- 'Thread::Queue' => '2.00',
- 'Thread::Semaphore' => '2.01',
- 'Thread::Signal' => '1.00',
- 'Thread::Specific' => '1.00',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_01',
- 'Tie::Handle' => '4.1',
- 'Tie::Hash' => '1.02',
- 'Tie::Memoize' => '1.0',
- 'Tie::RefHash' => '1.34_01',
- 'Tie::Scalar' => '1.00',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.87',
- 'Time::Local' => '1.13',
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.04',
- 'Unicode' => '4.1.0',
- 'Unicode::Collate' => '0.52',
- 'Unicode::Normalize' => '1.01',
- 'Unicode::UCD' => '0.24',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'Win32' => '0.2601',
- 'Win32API::File' => '0.1001',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'XS::APItest' => '0.09',
- 'XS::Typemap' => '0.02',
- 'XSLoader' => '0.06',
- 'XSSymSet' => '1.0',
- 'assertions' => '0.03',
- 'assertions::activate' => '0.02',
- 'assertions::compat' => '0.02',
- 'attributes' => '0.06',
- 'attrs' => '1.02',
- 'autouse' => '1.06',
- 'base' => '2.07',
- 'bigint' => '0.07',
- 'bignum' => '0.17',
- 'bigrat' => '0.08',
- 'blib' => '1.03',
- 'bytes' => '1.02',
- 'charnames' => '1.05',
- 'constant' => '1.07',
- 'diagnostics' => '1.16',
- 'encoding' => '2.04',
- 'encoding::warnings' => '0.10',
- 'feature' => '1.01',
- 'fields' => '2.03',
- 'filetest' => '1.01',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.01',
- 'lib' => '0.5565',
- 'locale' => '1.00',
- 'open' => '1.05',
- 'ops' => '1.01',
- 'overload' => '1.04',
- 're' => '0.0601',
- 'sigtrap' => '1.02',
- 'sort' => '2.00',
- 'strict' => '1.03',
- 'subs' => '1.00',
- 'threads' => '1.38',
- 'threads::shared' => '0.94_01',
- 'utf8' => '1.06',
- 'vars' => '1.01',
- 'version' => '0.67',
- 'vmsish' => '1.02',
- 'warnings' => '1.05',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'Archive::Extract' => '0.22_01',
- 'Archive::Tar' => '1.32',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- '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::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.1',
- 'CGI' => '3.29',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.29',
- 'CGI::Cookie' => '1.28',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- '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',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Zlib' => '2.005',
- 'Compress::Zlib' => '2.005',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.25',
- 'DB' => '1.01',
- 'DBM_Filter' => '0.02',
- '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',
- 'DB_File' => '1.815',
- 'DCLsym' => '1.03',
- 'Data::Dumper' => '2.121_13',
- 'Devel::DProf' => '20050603.00',
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.11_01',
- 'Devel::Peek' => '1.03',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.15',
- 'Digest::MD5' => '2.36_01',
- 'Digest::SHA' => '5.44',
- 'Digest::base' => '1.00',
- 'Digest::file' => '1.00',
- 'DirHandle' => '1.01',
- 'Dumpvalue' => '1.12',
- 'DynaLoader' => '1.08',
- 'Encode' => '2.23',
- 'Encode::Alias' => '2.07',
- 'Encode::Byte' => '2.03',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.02',
- 'Encode::CN::HZ' => '2.04',
- 'Encode::Config' => '2.04',
- 'Encode::EBCDIC' => '2.02',
- 'Encode::Encoder' => '2.01',
- 'Encode::Encoding' => '2.05',
- 'Encode::GSM0338' => '2.00',
- 'Encode::Guess' => '2.02',
- 'Encode::JP' => '2.03',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.03',
- '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.04',
- 'Env' => '1.00',
- 'Errno' => '1.10',
- 'Exporter' => '5.60',
- 'Exporter::Heavy' => '5.60',
- 'ExtUtils::CBuilder' => '0.19',
- 'ExtUtils::CBuilder::Base'=> '0.12',
- 'ExtUtils::CBuilder::Platform::Unix'=> '0.12',
- 'ExtUtils::CBuilder::Platform::VMS'=> '0.12',
- 'ExtUtils::CBuilder::Platform::Windows'=> '0.13',
- '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' => '1.13',
- 'ExtUtils::Command::MM' => '0.07',
- 'ExtUtils::Constant' => '0.2',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.03',
- 'ExtUtils::Constant::Utils'=> '0.01',
- 'ExtUtils::Constant::XS'=> '0.02',
- 'ExtUtils::Embed' => '1.26',
- 'ExtUtils::Install' => '1.41_01',
- 'ExtUtils::Installed' => '1.41',
- '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::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '1.17',
- 'ExtUtils::Mksymlists' => '1.21',
- 'ExtUtils::Packlist' => '1.41',
- 'ExtUtils::ParseXS' => '2.18',
- 'ExtUtils::testlib' => '1.17',
- 'Fatal' => '1.05',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.76',
- 'File::CheckTree' => '4.3',
- 'File::Compare' => '1.1005',
- 'File::Copy' => '2.10',
- 'File::DosGlob' => '1.00',
- 'File::Fetch' => '0.10',
- 'File::Find' => '1.11',
- 'File::Glob' => '1.06',
- 'File::GlobMapper' => '0.000_02',
- 'File::Path' => '2.01',
- 'File::Spec' => '3.25',
- 'File::Spec::Cygwin' => '1.1_01',
- '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_01',
- 'File::Spec::Win32' => '1.6',
- 'File::Temp' => '0.18',
- 'File::stat' => '1.00',
- 'FileCache' => '1.07',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.11',
- 'Filter::Simple' => '0.82',
- 'Filter::Util::Call' => '1.0602',
- 'FindBin' => '1.49',
- 'GDBM_File' => '1.08',
- 'Getopt::Long' => '2.36',
- 'Getopt::Std' => '1.05',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.01',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- 'IO' => '1.23_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::Dir' => '1.06',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.27',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.30_01',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IPC::Msg' => '1.02',
- 'IPC::Open2' => '1.02',
- 'IPC::Open3' => '1.02',
- 'IPC::Semaphore' => '1.02',
- 'IPC::SysV' => '1.04',
- 'List::Util' => '1.19',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.10_01',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Maketext::Simple'=> '0.18',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.01',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.0201',
- 'MIME::Base64' => '3.07_01',
- 'MIME::QuotedPrint' => '3.07',
- 'Math::BigFloat' => '1.58',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.87',
- 'Math::BigInt::Calc' => '0.51',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.15_01',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.19',
- 'Math::Complex' => '1.37',
- 'Math::Trig' => '1.04',
- 'Memoize' => '1.01_02',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.2808',
- 'Module::Build::Base' => undef,
- 'Module::Build::Compat' => '0.03',
- 'Module::Build::Config' => undef,
- '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.7203',
- 'Module::Build::YAML' => '0.50',
- 'Module::CoreList' => '2.12',
- 'Module::Load' => '0.10',
- 'Module::Load::Conditional'=> '0.16',
- 'Module::Loaded' => '0.01',
- 'Module::Pluggable' => '3.6',
- 'Module::Pluggable::Object'=> '3.6',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.07',
- 'NEXT' => '0.60_01',
- 'Net::Cmd' => '2.28',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.31_04',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.00',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.32',
- 'Opcode' => '1.09',
- 'POSIX' => '1.13',
- 'Package::Constants' => '0.01',
- 'Params::Check' => '0.26',
- 'PerlIO' => '1.04',
- 'PerlIO::encoding' => '0.10',
- 'PerlIO::scalar' => '0.05',
- 'PerlIO::via' => '0.04',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.43',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.34',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.08',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.12',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.35',
- 'Pod::Parser' => '1.35',
- 'Pod::Perldoc' => '3.14_01',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.35',
- 'Pod::Simple' => '3.05',
- '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.08',
- 'Pod::Text::Color' => '2.03',
- 'Pod::Text::Overstrike' => '2',
- 'Pod::Text::Termcap' => '2.03',
- 'Pod::Usage' => '1.35',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.12',
- 'Scalar::Util' => '1.19',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.11',
- 'Shell' => '0.72_01',
- 'Socket' => '1.79',
- 'Stdio' => '2.3',
- 'Storable' => '2.16',
- 'Switch' => '2.13',
- 'Symbol' => '1.06',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.18_01',
- 'Term::ANSIColor' => '1.12',
- 'Term::Cap' => '1.09',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.02',
- 'Term::UI' => '0.14_01',
- 'Term::UI::History' => undef,
- 'Test' => '1.25',
- 'Test::Builder' => '0.70',
- 'Test::Builder::Module' => '0.68',
- 'Test::Builder::Tester' => '1.07',
- 'Test::Builder::Tester::Color'=> undef,
- 'Test::Harness' => '2.64',
- 'Test::Harness::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Point' => '0.01',
- 'Test::Harness::Results'=> '0.01',
- 'Test::Harness::Straps' => '0.26',
- 'Test::Harness::Util' => '0.01',
- 'Test::More' => '0.70',
- 'Test::Simple' => '0.70',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.0.0',
- 'Text::ParseWords' => '3.25',
- 'Text::Soundex' => '3.02',
- 'Text::Tabs' => '2007.1117',
- 'Text::Wrap' => '2006.1117',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.00',
- 'Thread::Semaphore' => '2.01',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.1',
- 'Tie::Hash' => '1.02',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.37',
- 'Tie::Scalar' => '1.00',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9707',
- 'Time::Local' => '1.17',
- 'Time::Piece' => '1.11_02',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.04',
- 'Unicode' => '5.0.0',
- 'Unicode::Collate' => '0.52',
- 'Unicode::Normalize' => '1.02',
- 'Unicode::UCD' => '0.25',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'Win32' => '0.30',
- 'Win32API::File' => '0.1001_01',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.12',
- 'XS::Typemap' => '0.02',
- 'XSLoader' => '0.08',
- 'XSSymSet' => '1.1',
- 'attributes' => '0.08',
- 'attrs' => '1.02',
- 'autouse' => '1.06',
- 'base' => '2.12',
- 'bigint' => '0.22',
- 'bignum' => '0.22',
- 'bigrat' => '0.22',
- 'blib' => '1.03',
- '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',
- 'filetest' => '1.01',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.02',
- 'lib' => '0.5565',
- 'locale' => '1.00',
- 'mro' => '1.00',
- 'open' => '1.05',
- 'ops' => '1.01',
- 'overload' => '1.06',
- 're' => '0.08',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.63',
- 'threads::shared' => '1.12',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.7203',
- 'vmsish' => '1.02',
- 'warnings' => '1.06',
- 'warnings::register' => '1.01',
+ 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',
+ '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.010000 => {
- 'AnyDBM_File' => '1.00',
- 'Archive::Extract' => '0.24',
- 'Archive::Tar' => '1.38',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.79',
- 'AutoLoader' => '5.63',
- 'AutoSplit' => '1.05',
- 'B' => '1.17',
- 'B::Concise' => '0.74',
- 'B::Debug' => '1.05',
- 'B::Deparse' => '0.83',
- 'B::Lint' => '1.09',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.1',
- 'CGI' => '3.29',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.29',
- 'CGI::Cookie' => '1.28',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.5_01',
- 'CPAN' => '1.9205',
- 'CPAN::API::HOWTO' => undef,
- 'CPAN::Debug' => '5.402212',
- 'CPAN::DeferedCode' => '5.50',
- 'CPAN::FirstTime' => '5.402229',
- 'CPAN::HandleConfig' => '5.402212',
- 'CPAN::Kwalify' => '5.401418',
- 'CPAN::Nox' => '5.402411',
- 'CPAN::Queue' => '5.402212',
- 'CPAN::Tarzip' => '5.402213',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.84',
- '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_02',
- 'CPANPLUS::Dist::Build::Constants'=> '0.01',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.84',
- '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.84',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'CPANPLUS::inc' => undef,
- 'Carp' => '1.08',
- 'Carp::Heavy' => '1.08',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Zlib' => '2.008',
- 'Compress::Zlib' => '2.008',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.2501',
- 'DB' => '1.01',
- 'DBM_Filter' => '0.02',
- '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',
- 'DB_File' => '1.816_1',
- 'DCLsym' => '1.03',
- 'Data::Dumper' => '2.121_14',
- 'Devel::DProf' => '20050603.00',
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.13',
- 'Devel::Peek' => '1.03',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.15',
- 'Digest::MD5' => '2.36_01',
- 'Digest::SHA' => '5.45',
- 'Digest::base' => '1.00',
- 'Digest::file' => '1.00',
- 'DirHandle' => '1.01',
- 'Dumpvalue' => '1.12',
- 'DynaLoader' => '1.08',
- 'Encode' => '2.23',
- 'Encode::Alias' => '2.07',
- 'Encode::Byte' => '2.03',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.02',
- 'Encode::CN::HZ' => '2.04',
- 'Encode::Config' => '2.04',
- 'Encode::EBCDIC' => '2.02',
- 'Encode::Encoder' => '2.01',
- 'Encode::Encoding' => '2.05',
- 'Encode::GSM0338' => '2.00',
- 'Encode::Guess' => '2.02',
- 'Encode::JP' => '2.03',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.03',
- '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.04',
- 'Env' => '1.00',
- 'Errno' => '1.10',
- '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' => '1.13',
- 'ExtUtils::Command::MM' => '6.42',
- 'ExtUtils::Constant' => '0.2',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.05',
- 'ExtUtils::Constant::Utils'=> '0.01',
- 'ExtUtils::Constant::XS'=> '0.02',
- '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::Manifest' => '1.51_01',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.42',
- 'ExtUtils::Mksymlists' => '6.42',
- 'ExtUtils::Packlist' => '1.43',
- 'ExtUtils::ParseXS' => '2.18_02',
- 'ExtUtils::testlib' => '6.42',
- 'Fatal' => '1.05',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.76',
- 'File::CheckTree' => '4.3',
- 'File::Compare' => '1.1005',
- 'File::Copy' => '2.11',
- 'File::DosGlob' => '1.00',
- 'File::Fetch' => '0.14',
- 'File::Find' => '1.12',
- 'File::Glob' => '1.06',
- 'File::GlobMapper' => '0.000_02',
- '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',
- 'File::Temp' => '0.18',
- 'File::stat' => '1.00',
- 'FileCache' => '1.07',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.82',
- 'Filter::Util::Call' => '1.07',
- 'FindBin' => '1.49',
- 'GDBM_File' => '1.08',
- 'Getopt::Long' => '2.37',
- 'Getopt::Std' => '1.05',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.03',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- 'IO' => '1.23_01',
- '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::Dir' => '1.06',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.27',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.30_01',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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::Msg' => '1.02',
- 'IPC::Open2' => '1.02',
- 'IPC::Open3' => '1.02',
- 'IPC::Semaphore' => '1.02',
- 'IPC::SysV' => '1.05',
- 'List::Util' => '1.19',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.12',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Maketext::Simple'=> '0.18',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.01',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.04',
- 'MIME::Base64' => '3.07_01',
- 'MIME::QuotedPrint' => '3.07',
- 'Math::BigFloat' => '1.59',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.88',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.16',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.21',
- 'Math::Complex' => '1.37',
- 'Math::Trig' => '1.04',
- 'Memoize' => '1.01_02',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- '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::ConfigData'=> undef,
- 'Module::Build::Cookbook'=> undef,
- '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::Build::Version'=> '0.7203',
- 'Module::Build::YAML' => '0.50',
- 'Module::CoreList' => '2.12',
- 'Module::Load' => '0.12',
- 'Module::Load::Conditional'=> '0.22',
- 'Module::Loaded' => '0.01',
- 'Module::Pluggable' => '3.6',
- 'Module::Pluggable::Object'=> '3.6',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.07',
- 'NEXT' => '0.60_01',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.33',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.00',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.32',
- 'Opcode' => '1.11',
- 'POSIX' => '1.13',
- 'Package::Constants' => '0.01',
- 'Params::Check' => '0.26',
- 'PerlIO' => '1.04',
- 'PerlIO::encoding' => '0.10',
- 'PerlIO::scalar' => '0.05',
- 'PerlIO::via' => '0.04',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.43_01',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.34',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.08',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.16',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.35',
- 'Pod::Parser' => '1.35',
- 'Pod::Perldoc' => '3.14_02',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.35',
- 'Pod::Simple' => '3.05',
- '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.08',
- 'Pod::Text::Color' => '2.03',
- 'Pod::Text::Overstrike' => '2',
- 'Pod::Text::Termcap' => '2.03',
- 'Pod::Usage' => '1.35',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.12',
- 'Scalar::Util' => '1.19',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.11',
- 'Shell' => '0.72_01',
- 'Socket' => '1.80',
- 'Stdio' => '2.3',
- 'Storable' => '2.18',
- 'Switch' => '2.13',
- 'Symbol' => '1.06',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.22',
- 'Sys::Syslog::win32::Win32'=> undef,
- 'Term::ANSIColor' => '1.12',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.03',
- 'Term::UI' => '0.18',
- 'Term::UI::History' => undef,
- 'Test' => '1.25',
- 'Test::Builder' => '0.72',
- 'Test::Builder::Module' => '0.72',
- 'Test::Builder::Tester' => '1.09',
- 'Test::Builder::Tester::Color'=> undef,
- 'Test::Harness' => '2.64',
- 'Test::Harness::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Point' => '0.01',
- 'Test::Harness::Results'=> '0.01',
- 'Test::Harness::Straps' => '0.26_01',
- 'Test::Harness::Util' => '0.01',
- 'Test::More' => '0.72',
- 'Test::Simple' => '0.72',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.0.0',
- 'Text::ParseWords' => '3.26',
- 'Text::Soundex' => '3.03',
- 'Text::Tabs' => '2007.1117',
- 'Text::Wrap' => '2006.1117',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.00',
- 'Thread::Semaphore' => '2.01',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.1',
- 'Tie::Hash' => '1.02',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.37',
- 'Tie::Scalar' => '1.00',
- 'Tie::StdHandle' => undef,
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9711',
- 'Time::Local' => '1.18',
- 'Time::Piece' => '1.12',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.04',
- 'Unicode' => '5.0.0',
- 'Unicode::Collate' => '0.52',
- 'Unicode::Normalize' => '1.02',
- 'Unicode::UCD' => '0.25',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'Win32' => '0.34',
- 'Win32API::File' => '0.1001_01',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.12',
- 'XS::Typemap' => '0.02',
- 'XSLoader' => '0.08',
- 'XSSymSet' => '1.1',
- 'attributes' => '0.08',
- 'attrs' => '1.02',
- 'autouse' => '1.06',
- 'base' => '2.13',
- 'bigint' => '0.22',
- 'bignum' => '0.22',
- 'bigrat' => '0.22',
- 'blib' => '1.03',
- 'bytes' => '1.03',
- 'charnames' => '1.06',
- 'constant' => '1.13',
- 'diagnostics' => '1.17',
- 'encoding' => '2.06',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.11',
- 'fields' => '2.13',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.02',
- 'lib' => '0.5565',
- 'locale' => '1.00',
- 'mro' => '1.00',
- 'open' => '1.06',
- 'ops' => '1.01',
- 'overload' => '1.06',
- 're' => '0.08',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.67',
- 'threads::shared' => '1.14',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.74',
- 'vmsish' => '1.02',
- 'warnings' => '1.06',
- 'warnings::register' => '1.01',
+ 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.008009 => {
- 'AnyDBM_File' => '1.00',
- 'Attribute::Handlers' => '0.78_03',
- 'AutoLoader' => '5.67',
- 'AutoSplit' => '1.06',
- 'B' => '1.19',
- 'B::Asmdata' => '1.02',
- 'B::Assembler' => '0.08',
- 'B::Bblock' => '1.02_01',
- 'B::Bytecode' => '1.01_01',
- 'B::C' => '1.05',
- 'B::CC' => '1.00_01',
- 'B::Concise' => '0.76',
- 'B::Debug' => '1.05',
- 'B::Deparse' => '0.87',
- 'B::Disassembler' => '1.05',
- 'B::Lint' => '1.11',
- 'B::Lint::Debug' => undef,
- 'B::Showlex' => '1.02',
- 'B::Stackobj' => '1.00',
- 'B::Stash' => '1.00',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.01',
- 'Benchmark' => '1.1',
- 'ByteLoader' => '0.06',
- 'CGI' => '3.42',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.30_01',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- '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',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Config' => undef,
- 'Cwd' => '3.29',
- 'DB' => '1.01',
- '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',
- 'DCLsym' => '1.03',
- 'Data::Dumper' => '2.121_17',
- 'Devel::DProf' => '20080331.00',
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.14',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.15',
- 'Digest::MD5' => '2.37',
- 'Digest::base' => '1.00',
- 'Digest::file' => '1.00',
- 'DirHandle' => '1.02',
- 'Dumpvalue' => '1.12',
- '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',
- 'Env' => '1.00',
- '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::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.48',
- 'ExtUtils::Mksymlists' => '6.48',
- 'ExtUtils::Packlist' => '1.43',
- 'ExtUtils::ParseXS' => '2.19',
- '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',
- 'FileHandle' => '2.01',
- 'VMS::Filespec' => '1.11',
- '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',
- 'I18N::Collate' => '1.00',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- 'IO' => '1.23',
- 'IO::Dir' => '1.06',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.27',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- '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',
- 'IPC::lib::IPC::Msg' => '2.00',
- 'IPC::lib::IPC::Semaphore'=> '2.00',
- 'IPC::lib::IPC::SharedMem'=> '2.00',
- 'List::Util' => '1.19',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.13',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Script' => '2.07',
- 'MIME::Base64' => '3.07',
- 'MIME::QuotedPrint' => '3.07',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.22',
- 'Math::Complex' => '1.54',
- 'Math::Trig' => '1.18',
- 'Memoize' => '1.01',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::CoreList' => '2.17',
- 'Module::Pluggable' => '3.8',
- 'Module::Pluggable::Object'=> '3.6',
- 'Module::Pluggable::lib::Devel::InnerPackage'=> '0.3',
- '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::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.35',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Opcode' => '1.0601',
- 'POSIX' => '1.15',
- 'PerlIO' => '1.05',
- 'PerlIO::encoding' => '0.11',
- 'PerlIO::scalar' => '0.06',
- 'PerlIO::via' => '0.05',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.43',
- 'Pod::Find' => '1.34',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.3',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '1.37',
- 'Pod::ParseLink' => '1.06',
- 'Pod::ParseUtils' => '1.35',
- 'Pod::Parser' => '1.35',
- 'Pod::Perldoc' => '3.14',
- '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.02',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.35',
- 'Pod::Text' => '2.21',
- 'Pod::Text::Color' => '1.04',
- 'Pod::Text::Overstrike' => '1.1',
- 'Pod::Text::Termcap' => '1.11',
- 'Pod::Usage' => '1.35',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.16',
- 'Scalar::Util' => '1.19',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.01',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72',
- 'Socket' => '1.81',
- 'Stdio' => '2.4',
- 'Storable' => '2.19',
- 'Switch' => '2.13',
- 'Symbol' => '1.06',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- 'Term::ANSIColor' => '1.12',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.03',
- 'Test' => '1.25',
- 'Test::Builder' => '0.80',
- 'Test::Builder::Module' => '0.80',
- 'Test::Builder::Tester' => '1.13',
- 'Test::Builder::Tester::Color'=> undef,
- 'Test::Harness' => '2.64',
- 'Test::Harness::Assert' => '0.02',
- 'Test::Harness::Iterator'=> '0.02',
- 'Test::Harness::Point' => '0.01',
- '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::Abbrev' => '1.01',
- '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',
- 'Thread::Signal' => '1.00',
- 'Thread::Specific' => '1.00',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9715',
- 'Time::Local' => '1.1901',
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.01',
- 'Unicode' => '5.1.0',
- 'Unicode::Collate' => '0.52',
- 'Unicode::Normalize' => '1.02',
- 'Unicode::UCD' => '0.25',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- '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',
- 'XSSymSet' => '1.1',
- 'attributes' => '0.09',
- 'attrs' => '1.02',
- 'autouse' => '1.06',
- 'base' => '2.13',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.02',
- 'charnames' => '1.06',
- 'constant' => '1.17',
- 'diagnostics' => '1.16',
- 'encoding' => '2.6_01',
- 'fields' => '2.12',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.01',
- 'lib' => '0.61',
- 'locale' => '1.00',
- 'open' => '1.06',
- 'ops' => '1.02',
- 'overload' => '1.06',
- 're' => '0.0601',
- 'sigtrap' => '1.04',
- 'sort' => '1.02',
- 'strict' => '1.03',
- 'subs' => '1.00',
- 'threads' => '1.71',
- 'threads::shared' => '1.27',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'vmsish' => '1.02',
- 'warnings' => '1.05_01',
- 'warnings::register' => '1.01',
- },
-
5.010001 => {
- 'AnyDBM_File' => '1.00',
- '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',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- '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::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.43',
- 'CGI::Apache' => '1.00',
- 'CGI::Carp' => '1.30_01',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '1.08',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.00',
- 'CGI::Util' => '1.5_01',
- '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',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.88',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.36',
- 'CPANPLUS::Dist::Build::Constants'=> '0.36',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.88',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.88',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.11',
- 'Carp::Heavy' => '1.11',
- 'Class::ISA' => '0.33',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.020',
- 'Compress::Raw::Zlib' => '2.020',
- 'Compress::Zlib' => '2.020',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.30',
- 'DB' => '1.02',
- '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.820',
- 'DCLsym' => '1.03',
- 'Data::Dumper' => '2.124',
- 'Devel::DProf' => '20080331.00',
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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::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.03',
- '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.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.02',
- 'Encode::Unicode' => '2.06',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.00',
- '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::Base'=> '0.04',
- '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::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.55_02',
- 'ExtUtils::Mksymlists' => '6.55_02',
- 'ExtUtils::Packlist' => '1.43',
- 'ExtUtils::ParseXS' => '2.2002',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.5502',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- '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::Glob' => '1.06',
- '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',
- 'VMS::Filespec' => '1.12',
- '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' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- '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::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.13',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.18',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.04',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.22',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.340201',
- 'Module::Build::Base' => '0.340201',
- 'Module::Build::Compat' => '0.340201',
- 'Module::Build::Config' => '0.340201',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::YAML' => '0.50',
- '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',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.34',
- 'Opcode' => '1.11',
- 'POSIX' => '1.17',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.39',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.11',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.07',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.22',
- 'Pod::ParseLink' => '1.09',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.14_04',
- '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.04',
- 'Pod::Plainer' => '0.01',
- 'Pod::Select' => '1.36',
- 'Pod::Simple' => '3.07',
- '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::XHTML' => '3.04',
- 'Pod::Simple::XMLOutStream'=> '2.02',
- 'Pod::Text' => '3.13',
- 'Pod::Text::Color' => '2.05',
- 'Pod::Text::Overstrike' => '2.03',
- 'Pod::Text::Termcap' => '2.05',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.18',
- 'Scalar::Util' => '1.21',
- 'Scalar::Util::PP' => '1.21',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.82',
- 'Stdio' => '2.4',
- 'Storable' => '2.20',
- 'Switch' => '2.14',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.04',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- '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::Abbrev' => '1.01',
- 'Text::Balanced' => '2.0.0',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901',
- 'Time::Piece' => '1.15',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.05',
- 'Unicode' => '5.1.0',
- 'Unicode::Collate' => '0.52',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- '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',
- 'autouse' => '1.06',
- 'base' => '2.14',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.03',
- 'charnames' => '1.07',
- 'constant' => '1.17',
- 'diagnostics' => '1.17',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.13',
- 'fields' => '2.14',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.02',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.01',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.07',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.221',
- 're' => '0.09',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.72',
- 'threads::shared' => '1.29',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.77',
- 'vmsish' => '1.02',
- 'warnings' => '1.06',
- 'warnings::register' => '1.01',
+ 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',
+ '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.011000 => {
- 'AnyDBM_File' => '1.00',
- '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.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.22',
- 'B::Concise' => '0.76',
- 'B::Debug' => '1.11',
- 'B::Deparse' => '0.91',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.45',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '3.44',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.45',
- 'CPAN' => '1.94_51',
- '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.94',
- '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.5002',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.53',
- 'CPAN::HandleConfig' => '5.5',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- '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',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.88',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.40',
- 'CPANPLUS::Dist::Build::Constants'=> '0.40',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.88',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.88',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.12',
- 'Carp::Heavy' => '1.12',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.021',
- 'Compress::Raw::Zlib' => '2.021',
- 'Compress::Zlib' => '2.021',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.3002',
- 'DB' => '1.02',
- '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.820',
- 'Data::Dumper' => '2.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.37',
- 'Encode::Alias' => '2.12',
- '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.03',
- '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.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.02',
- 'Encode::Unicode' => '2.06',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.00',
- 'Errno' => '1.11',
- 'Exporter' => '5.64',
- 'Exporter::Heavy' => '5.64',
- '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::Base'=> '0.04',
- '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::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.55_02',
- 'ExtUtils::Mksymlists' => '6.55_02',
- 'ExtUtils::Packlist' => '1.43',
- 'ExtUtils::ParseXS' => '2.200403',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.5502',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.16',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.20',
- 'File::Find' => '1.14',
- 'File::Glob' => '1.06',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- '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' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- '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::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.13',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.35',
- 'Module::Build::Base' => '0.35',
- 'Module::Build::Compat' => '0.35',
- 'Module::Build::Config' => '0.35',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '0.50',
- 'Module::CoreList' => '2.19',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.30',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.34',
- 'Opcode' => '1.13',
- 'POSIX' => '1.17',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.39',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.11',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.08',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.22',
- 'Pod::ParseLink' => '1.09',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_01',
- '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.04',
- 'Pod::Plainer' => '1.01',
- 'Pod::Select' => '1.36',
- 'Pod::Simple' => '3.07',
- '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::XHTML' => '3.04',
- 'Pod::Simple::XMLOutStream'=> '2.02',
- 'Pod::Text' => '3.13',
- 'Pod::Text::Color' => '2.05',
- 'Pod::Text::Overstrike' => '2.03',
- 'Pod::Text::Termcap' => '2.05',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.19',
- 'Scalar::Util' => '1.21',
- 'Scalar::Util::PP' => '1.21',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.84',
- 'Storable' => '2.20',
- 'Switch' => '2.14_01',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- '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::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.05',
- 'Unicode' => '5.1.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.15',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.14',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.03',
- 'charnames' => '1.07',
- 'constant' => '1.19',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.17',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.13',
- 'fields' => '2.14',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.02',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.01',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.08',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.10',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.74',
- 'threads::shared' => '1.31',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.77',
- 'vmsish' => '1.02',
- 'warnings' => '1.07',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- '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.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.77',
- 'B::Debug' => '1.11',
- 'B::Deparse' => '0.92',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.48',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_51',
- '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.94',
- '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.5002',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.53',
- 'CPAN::HandleConfig' => '5.5',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- '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',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.89_03',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.40',
- 'CPANPLUS::Dist::Build::Constants'=> '0.40',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.89_03',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.89_03',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.13',
- 'Carp::Heavy' => '1.13',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.021',
- 'Compress::Raw::Zlib' => '2.021',
- 'Compress::Zlib' => '2.021',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.3002',
- 'DB' => '1.02',
- '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.820',
- 'Data::Dumper' => '2.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.37',
- 'Encode::Alias' => '2.12',
- '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.03',
- '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.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.02',
- 'Encode::Unicode' => '2.06',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.00',
- 'Errno' => '1.11',
- 'Exporter' => '5.64',
- 'Exporter::Heavy' => '5.64',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.55_02',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- '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.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.55_02',
- 'ExtUtils::Mksymlists' => '6.55_02',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.5502',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.16',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.20',
- 'File::Find' => '1.14',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- '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' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.03',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.02',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- '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::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.13',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.35',
- 'Module::Build::Base' => '0.35',
- 'Module::Build::Compat' => '0.35',
- 'Module::Build::Config' => '0.35',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '0.50',
- 'Module::CoreList' => '2.21',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.30',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.18',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.11',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.22',
- 'Pod::ParseLink' => '1.09',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_01',
- '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.04',
- 'Pod::Plainer' => '1.01',
- 'Pod::Select' => '1.36',
- 'Pod::Simple' => '3.08',
- '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::XHTML' => '3.04',
- 'Pod::Simple::XMLOutStream'=> '2.02',
- 'Pod::Text' => '3.13',
- 'Pod::Text::Color' => '2.05',
- 'Pod::Text::Overstrike' => '2.03',
- 'Pod::Text::Termcap' => '2.05',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.19',
- 'Scalar::Util' => '1.21',
- 'Scalar::Util::PP' => '1.21',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.85',
- 'Storable' => '2.22',
- 'Switch' => '2.15',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.05',
- 'Unicode' => '5.1.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.16',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.14',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.03',
- 'charnames' => '1.07',
- 'constant' => '1.19',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.17',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.13',
- 'fields' => '2.14',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'integer' => '1.00',
- 'less' => '0.02',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.09',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.10',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.74',
- 'threads::shared' => '1.32',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.77',
- 'vmsish' => '1.02',
- 'warnings' => '1.07',
- 'warnings::register' => '1.01',
+ 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',
+ '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 => {
- 'AnyDBM_File' => '1.00',
- '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.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.11',
- 'B::Deparse' => '0.93',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.48',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_51',
- '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.94',
- '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.5002',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.53',
- 'CPAN::HandleConfig' => '5.5',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- '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',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.89_09',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.44',
- 'CPANPLUS::Dist::Build::Constants'=> '0.44',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.89_09',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.89_09',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.14',
- 'Carp::Heavy' => '1.14',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.021',
- 'Compress::Raw::Zlib' => '2.021',
- 'Compress::Zlib' => '2.022',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.3002',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.38',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.55_02',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- '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.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.55_02',
- 'ExtUtils::Mksymlists' => '6.55_02',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.5502',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.16',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.22',
- 'File::Find' => '1.14',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- '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' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- '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::ConfigData'=> undef,
- '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::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.23',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.34',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.18',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.11',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.22',
- 'Pod::ParseLink' => '1.09',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_01',
- '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.04',
- 'Pod::Plainer' => '1.01',
- 'Pod::Select' => '1.36',
- 'Pod::Simple' => '3.10',
- '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::XHTML' => '3.10',
- 'Pod::Simple::XMLOutStream'=> '2.02',
- 'Pod::Text' => '3.13',
- 'Pod::Text::Color' => '2.05',
- 'Pod::Text::Overstrike' => '2.03',
- 'Pod::Text::Termcap' => '2.05',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.19',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Simple' => '0.01',
- 'Socket' => '1.85',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.05',
- 'Unicode' => '5.1.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.03',
- 'charnames' => '1.07',
- 'constant' => '1.19',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.18',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.13',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.35_09',
- 'integer' => '1.00',
- 'legacy' => '1.00',
- 'less' => '0.02',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.10',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.74',
- 'threads::shared' => '1.32',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.77',
- 'vmsish' => '1.02',
- 'warnings' => '1.07',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.570001',
- '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.36',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.11',
- 'B::Deparse' => '0.93',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.48',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_5301',
- '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.94',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.530001',
- 'CPAN::HandleConfig' => '5.5',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.770001',
- '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',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.44',
- 'CPANPLUS::Dist::Build::Constants'=> '0.44',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.14',
- 'Carp::Heavy' => '1.14',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.021',
- 'Compress::Raw::Zlib' => '2.021',
- 'Compress::Zlib' => '2.022',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::V' => undef,
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.16',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.22',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- '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' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.36',
- 'Module::Build::Base' => '0.36',
- 'Module::Build::Compat' => '0.36',
- 'Module::Build::Config' => '0.36',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.24',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.34',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.11',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.22',
- 'Pod::ParseLink' => '1.09',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_01',
- '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.04',
- 'Pod::Plainer' => '1.01',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.13',
- 'Pod::Text::Color' => '2.05',
- 'Pod::Text::Overstrike' => '2.03',
- 'Pod::Text::Termcap' => '2.05',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.20',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.85',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.05',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.03',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.14',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.36',
- 'integer' => '1.00',
- 'less' => '0.02',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.10',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.75',
- 'threads::shared' => '1.32',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.77',
- 'vmsish' => '1.02',
- 'warnings' => '1.08',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.11',
- 'B::Deparse' => '0.94',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.48',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_54',
- '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.94',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.53',
- 'CPAN::HandleConfig' => '5.5',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- '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',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.44',
- 'CPANPLUS::Dist::Build::Constants'=> '0.44',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.15',
- 'Carp::Heavy' => '1.15',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.17',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.25',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.34',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.22',
- 'Pod::ParseLink' => '1.09',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_01',
- '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.04',
- 'Pod::Plainer' => '1.01',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.13',
- 'Pod::Text::Color' => '2.05',
- 'Pod::Text::Overstrike' => '2.03',
- 'Pod::Text::Termcap' => '2.05',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.21',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.85',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.03',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.15',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.75',
- 'threads::shared' => '1.32',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.81',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.94',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.48',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_56',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9456',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.15',
- 'Carp::Heavy' => '1.15',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::V' => undef,
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.17',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.26',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.34',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Plainer' => '1.02',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.22',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.86',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.01',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.03',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.15',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.75',
- 'threads::shared' => '1.32',
- 'utf8' => '1.07',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
+ 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.012000 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.96',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.48',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.07',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_56',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9456_01',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.15',
- 'Carp::Heavy' => '1.15',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.17',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.29',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.34',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.03',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Plainer' => '1.02',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.25',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.87',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.04',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.16',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.75',
- 'threads::shared' => '1.32',
- 'utf8' => '1.08',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
+ 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.013000 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.96',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_56',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9456_01',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.15',
- 'Carp::Heavy' => '1.15',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.126',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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.5601',
- '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.5601',
- 'ExtUtils::MakeMaker::Config'=> '6.56',
- 'ExtUtils::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.18',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.06',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.09',
- 'MIME::QuotedPrint' => '3.09',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.31',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.34',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Plainer' => '1.02',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.25',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.87',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.18',
- 'XS::APItest::KeywordRPN'=> '0.004',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.04',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.17',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.77_01',
- 'threads::shared' => '1.33',
- 'utf8' => '1.08',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
- },
-
5.012001 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.97',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_56',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9456_01',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.16',
- 'Carp::Heavy' => '1.16',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.18',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.32',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.34',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.07',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Plainer' => '1.02',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.27',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.87',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.04',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.16',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.75',
- 'threads::shared' => '1.32',
- 'utf8' => '1.08',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.97',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_56',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9456_01',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.16',
- 'Carp::Heavy' => '1.16',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.126',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.39',
- 'Digest::SHA' => '5.47',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.14',
- 'DynaLoader' => '1.10',
- 'Encode' => '2.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.12',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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.5601',
- '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.5601',
- 'ExtUtils::MakeMaker::Config'=> '6.56',
- 'ExtUtils::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2205',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.18',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.16',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.58',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.06',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- '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::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.12',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.09',
- 'MIME::QuotedPrint' => '3.09',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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.360301',
- 'Module::Build::Platform::darwin'=> '0.3603',
- 'Module::Build::Platform::os2'=> '0.3603',
- 'Module::Build::PodParser'=> '0.3603',
- 'Module::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.34',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.08',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.27',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.88',
- 'Storable' => '2.22',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.06',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.28',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.19',
- 'XS::APItest::KeywordRPN'=> '0.004',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.04',
- 'charnames' => '1.08',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.17',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.77_01',
- 'threads::shared' => '1.33',
- 'utf8' => '1.08',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.79',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.98',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_57',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.16',
- 'Carp::Heavy' => '1.16',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.126',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.39',
- 'Digest::SHA' => '5.47',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.14',
- 'DynaLoader' => '1.10',
- 'Encode' => '2.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.12',
- 'Exporter' => '5.64_02',
- 'Exporter::Heavy' => '5.64_02',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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.5601',
- '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.5601',
- 'ExtUtils::MakeMaker::Config'=> '6.56',
- 'ExtUtils::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2205',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.19',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.16',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.08',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.58',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.06',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.13',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.09',
- 'MIME::QuotedPrint' => '3.09',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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.360301',
- 'Module::Build::Platform::darwin'=> '0.3603',
- 'Module::Build::Platform::os2'=> '0.3603',
- 'Module::Build::PodParser'=> '0.3603',
- 'Module::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.34',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.08',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.27',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.89',
- 'Storable' => '2.22',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.06',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.11',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.07',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.28',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.19',
- 'XS::APItest::KeywordRPN'=> '0.004',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.04',
- 'charnames' => '1.08',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.17',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.03',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.77_02',
- 'threads::shared' => '1.33_01',
- 'utf8' => '1.08',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.79',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.98',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_57',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.9007',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9007',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9007',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.16',
- 'Carp::Heavy' => '1.16',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.027',
- 'Compress::Raw::Zlib' => '2.027_01',
- 'Compress::Zlib' => '2.027',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.03',
- '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.126',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.40',
- 'Digest::SHA' => '5.48',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.14',
- 'DynaLoader' => '1.10',
- 'Encode' => '2.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.12',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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.5601',
- '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.5601',
- 'ExtUtils::MakeMaker::Config'=> '6.56',
- 'ExtUtils::Manifest' => '1.58',
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2206',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.10',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.79',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.20',
- 'File::DosGlob' => '1.02',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.17',
- 'File::Glob' => '1.08',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31',
- '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.03',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'VMS::Filespec' => '1.12',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.08',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.60',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.06',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.15',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.13',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.09',
- 'MIME::QuotedPrint' => '3.09',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3607',
- 'Module::Build::Base' => '0.3607',
- 'Module::Build::Compat' => '0.3607',
- 'Module::Build::Config' => '0.3607',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.36',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.08',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.27',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.89',
- 'Storable' => '2.22',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.21',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.11',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.07',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.53',
- 'Unicode::Normalize' => '1.06',
- 'Unicode::UCD' => '0.29',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.19',
- 'XS::APItest::KeywordRPN'=> '0.004',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.10',
- 'autodie::exception' => '2.10',
- 'autodie::exception::system'=> '2.10',
- 'autodie::hints' => '2.10',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.05',
- 'bytes' => '1.04',
- 'charnames' => '1.11',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.20',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.17',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3607',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.03',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.12',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.77_03',
- 'threads::shared' => '1.33_02',
- 'utf8' => '1.08',
- 'vars' => '1.02',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.10',
- 'warnings::register' => '1.01',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.22',
- 'App::Prove::State' => '3.22',
- 'App::Prove::State::Result'=> '3.22',
- 'App::Prove::State::Result::Test'=> '3.22',
- 'Archive::Extract' => '0.42',
- 'Archive::Tar' => '1.68',
- 'Archive::Tar::Constant'=> '1.68',
- 'Archive::Tar::File' => '1.68',
- 'Attribute::Handlers' => '0.88',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.79',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.98',
- 'B::Lint' => '1.12',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_57',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.9007',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9007',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9007',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.18',
- 'Carp::Heavy' => '1.18',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.030',
- 'Compress::Raw::Zlib' => '2.030',
- 'Compress::Zlib' => '2.030',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.03',
- '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.126',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.40',
- 'Digest::SHA' => '5.48',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.14',
- 'DynaLoader' => '1.10',
- 'Encode' => '2.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.12',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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.5601',
- '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.5601',
- 'ExtUtils::MakeMaker::Config'=> '6.56',
- 'ExtUtils::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2207',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.10',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.79',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.20',
- 'File::DosGlob' => '1.02',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.17',
- 'File::Glob' => '1.08',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31_01',
- '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.03',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.08',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.04',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.60',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.06',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.15',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.13',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.09',
- 'MIME::QuotedPrint' => '3.09',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3607',
- 'Module::Build::Base' => '0.3607',
- 'Module::Build::Compat' => '0.3607',
- 'Module::Build::Config' => '0.3607',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.37',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.08',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.27',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.89',
- 'Storable' => '2.22',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.11',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.07',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.56',
- 'Unicode::Collate::Locale'=> '0.56',
- 'Unicode::Normalize' => '1.06',
- 'Unicode::UCD' => '0.29',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.20',
- 'XS::APItest::KeywordRPN'=> '0.004',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.10',
- 'autodie::exception' => '2.10',
- 'autodie::exception::system'=> '2.10',
- 'autodie::hints' => '2.10',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.05',
- 'bytes' => '1.04',
- 'charnames' => '1.15',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.20',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.18',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3607',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.03',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.12',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.77_03',
- 'threads::shared' => '1.33_02',
- 'utf8' => '1.08',
- 'vars' => '1.02',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.10',
- 'warnings::register' => '1.01',
+ 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.012002 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.97',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_56',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9456_01',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.17',
- 'Carp::Heavy' => '1.17',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.18',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31_01',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.38',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.08',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Plainer' => '1.02',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.27',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.87',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.04',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.16',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.75',
- 'threads::shared' => '1.32',
- 'utf8' => '1.08',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
- },
5.013005 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.22',
- 'App::Prove::State' => '3.22',
- 'App::Prove::State::Result'=> '3.22',
- 'App::Prove::State::Result::Test'=> '3.22',
- 'Archive::Extract' => '0.42',
- 'Archive::Tar' => '1.68',
- 'Archive::Tar::Constant'=> '1.68',
- 'Archive::Tar::File' => '1.68',
- 'Attribute::Handlers' => '0.88',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.79',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '0.98',
- 'B::Lint' => '1.12',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_57',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.9007',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.48',
- 'CPANPLUS::Dist::Build::Constants'=> '0.48',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9007',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9007',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.18',
- 'Carp::Heavy' => '1.18',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.030',
- 'Compress::Raw::Zlib' => '2.030',
- 'Compress::Zlib' => '2.030',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.03',
- '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.128',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::V' => undef,
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.40',
- 'Digest::SHA' => '5.48',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.14',
- 'DynaLoader' => '1.10',
- 'Encode' => '2.40',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.12',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.13',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2207',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.10',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.79',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.20',
- 'File::DosGlob' => '1.02',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.17',
- 'File::Glob' => '1.08',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31_01',
- '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.03',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.85',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.09',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.04',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.60',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.06',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.15',
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.13',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.09',
- 'MIME::QuotedPrint' => '3.09',
- 'Math::BigFloat' => '1.62',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.95',
- 'Math::BigInt::Calc' => '0.54',
- 'Math::BigInt::CalcEmu' => '0.06',
- 'Math::BigInt::FastCalc'=> '0.22',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3607',
- 'Module::Build::Base' => '0.3607',
- 'Module::Build::Compat' => '0.3607',
- 'Module::Build::Config' => '0.3607',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.39',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.20',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.09',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.28',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.89',
- 'Storable' => '2.22',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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::Harness' => '3.22',
- 'Test::More' => '0.97_01',
- 'Test::Simple' => '0.97_01',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.11',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.07',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.59',
- 'Unicode::Collate::Locale'=> '0.59',
- 'Unicode::Normalize' => '1.06',
- 'Unicode::UCD' => '0.29',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.21',
- 'XS::APItest::KeywordRPN'=> '0.005',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.11',
- 'XSLoader::XSLoader' => '0.11',
- 'attributes' => '0.12',
- 'autodie' => '2.10',
- 'autodie::exception' => '2.10',
- 'autodie::exception::system'=> '2.10',
- 'autodie::hints' => '2.10',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.25',
- 'bignum' => '0.25',
- 'bigrat' => '0.25',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.15',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.20',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.18',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3607',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.03',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.12',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.77_03',
- 'threads::shared' => '1.33_03',
- 'utf8' => '1.08',
- 'vars' => '1.02',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.11',
- 'warnings::register' => '1.02',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.22',
- 'App::Prove::State' => '3.22',
- 'App::Prove::State::Result'=> '3.22',
- 'App::Prove::State::Result::Test'=> '3.22',
- 'Archive::Extract' => '0.44',
- 'Archive::Tar' => '1.68',
- 'Archive::Tar::Constant'=> '1.68',
- 'Archive::Tar::File' => '1.68',
- 'Attribute::Handlers' => '0.88',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.24',
- 'B::Concise' => '0.79',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '0.99',
- 'B::Lint' => '1.12',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_61',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5005',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9007',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.48',
- 'CPANPLUS::Dist::Build::Constants'=> '0.48',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9007',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9007',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.19',
- 'Carp::Heavy' => '1.19',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.031',
- 'Compress::Raw::Zlib' => '2.030',
- 'Compress::Zlib' => '2.030',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.34',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.03',
- '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.129',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::V' => undef,
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.05',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.48',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.14',
- 'DynaLoader' => '1.10',
- 'Encode' => '2.40',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.12',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.13',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.07',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.29',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2207',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.10',
- 'Fcntl' => '1.09',
- 'File::Basename' => '2.79',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.20',
- 'File::DosGlob' => '1.03',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.18',
- 'File::Glob' => '1.09',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- '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',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.03',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.85',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.11',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.09',
- 'Hash::Util::FieldHash' => '1.05',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.06',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.64',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.07',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.14',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.09',
- 'MIME::QuotedPrint' => '3.09',
- 'Math::BigFloat' => '1.63',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.97',
- 'Math::BigInt::Calc' => '0.55',
- 'Math::BigInt::CalcEmu' => '0.07',
- 'Math::BigInt::FastCalc'=> '0.22',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3607',
- 'Module::Build::Base' => '0.3607',
- 'Module::Build::Compat' => '0.3607',
- 'Module::Build::Config' => '0.3607',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.40',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.09',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.08',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.16',
- 'POSIX' => '1.21',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.13',
- 'PerlIO::scalar' => '0.10',
- 'PerlIO::via' => '0.10',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.07',
- 'Safe' => '2.28',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.90',
- 'Storable' => '2.22',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.13',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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::Harness' => '3.22',
- 'Test::More' => '0.97_01',
- 'Test::Simple' => '0.97_01',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.11',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.07',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.07',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.63',
- 'Unicode::Collate::Locale'=> '0.63',
- 'Unicode::Normalize' => '1.07',
- 'Unicode::UCD' => '0.29',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.23',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.13',
- 'autodie' => '2.10',
- 'autodie::exception' => '2.10',
- 'autodie::exception::system'=> '2.10',
- 'autodie::hints' => '2.10',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.25',
- 'bignum' => '0.25',
- 'bigrat' => '0.25',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.16',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.20',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.18',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.06',
- 'inc::latest' => '0.3607',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.04',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.11',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.13',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.81_01',
- 'threads::shared' => '1.34',
- 'utf8' => '1.08',
- 'vars' => '1.02',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.11',
- 'warnings::register' => '1.02',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.22',
- 'App::Prove::State' => '3.22',
- 'App::Prove::State::Result'=> '3.22',
- 'App::Prove::State::Result::Test'=> '3.22',
- 'Archive::Extract' => '0.46',
- 'Archive::Tar' => '1.72',
- 'Archive::Tar::Constant'=> '1.72',
- 'Archive::Tar::File' => '1.72',
- 'Attribute::Handlers' => '0.88',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.26',
- 'B::Concise' => '0.81',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.01',
- 'B::Lint' => '1.12',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.50',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_62',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5005',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9010',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.50',
- 'CPANPLUS::Dist::Build::Constants'=> '0.50',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9010',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9010',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.19',
- 'Carp::Heavy' => '1.19',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.031',
- 'Compress::Raw::Zlib' => '2.030',
- 'Compress::Zlib' => '2.030',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.34',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.03',
- '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.130_01',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.05',
- 'Devel::SelfStubber' => '1.03',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.48',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.14',
- 'DynaLoader' => '1.11',
- 'Encode' => '2.40',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.12',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.13',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.29',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2207',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.10',
- 'Fcntl' => '1.10',
- 'File::Basename' => '2.79',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.20',
- 'File::DosGlob' => '1.03',
- 'File::Fetch' => '0.28',
- 'File::Find' => '1.18',
- 'File::Glob' => '1.10',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- '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',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.04',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.85',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.12',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.10',
- 'Hash::Util::FieldHash' => '1.06',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.07',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.64',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.07',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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.17',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.14',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.10',
- 'MIME::QuotedPrint' => '3.10',
- 'Math::BigFloat' => '1.99_01',
- 'Math::BigFloat::Trace' => '0.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::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_01',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3607',
- 'Module::Build::Base' => '0.3607',
- 'Module::Build::Compat' => '0.3607',
- 'Module::Build::Config' => '0.3607',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.41',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.10',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.09',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.17',
- 'POSIX' => '1.22',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.13',
- 'PerlIO::scalar' => '0.10',
- 'PerlIO::via' => '0.10',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.08',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.91',
- 'Storable' => '2.24',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.14',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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::Harness' => '3.22',
- 'Test::More' => '0.97_01',
- 'Test::Simple' => '0.97_01',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.11',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.07',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.07',
- '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',
- 'Unicode::Normalize' => '1.07',
- 'Unicode::UCD' => '0.29',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.26',
- 'XS::Typemap' => '0.04',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.13',
- 'autodie' => '2.10',
- 'autodie::exception' => '2.10',
- 'autodie::exception::system'=> '2.10',
- 'autodie::hints' => '2.10',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.25',
- 'bignum' => '0.25',
- 'bigrat' => '0.25',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.17',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.20',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.18',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.06',
- 'inc::latest' => '0.3607',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.05',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.11',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.224',
- 're' => '0.14',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.81_02',
- 'threads::shared' => '1.34',
- 'utf8' => '1.08',
- 'vars' => '1.02',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.11',
- 'warnings::register' => '1.02',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.22',
- 'App::Prove::State' => '3.22',
- 'App::Prove::State::Result'=> '3.22',
- 'App::Prove::State::Result::Test'=> '3.22',
- 'Archive::Extract' => '0.46',
- 'Archive::Tar' => '1.74',
- 'Archive::Tar::Constant'=> '1.74',
- 'Archive::Tar::File' => '1.74',
- 'Attribute::Handlers' => '0.88',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.27',
- 'B::Concise' => '0.82',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.02',
- 'B::Lint' => '1.12',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.50',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_62',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5005',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9010',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.50',
- 'CPANPLUS::Dist::Build::Constants'=> '0.50',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9010',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9010',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.19',
- 'Carp::Heavy' => '1.17',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.031',
- 'Compress::Raw::Zlib' => '2.030',
- 'Compress::Zlib' => '2.030',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.35',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.03',
- '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.130_02',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.06',
- 'Devel::SelfStubber' => '1.05',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.50',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.03',
- 'Dumpvalue' => '1.15',
- 'DynaLoader' => '1.12',
- 'Encode' => '2.40',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.12',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.02',
- 'Errno' => '1.13',
- 'Exporter' => '5.64_03',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.03',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.30',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2208',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.1001',
- 'Fcntl' => '1.11',
- 'File::Basename' => '2.79',
- 'File::CheckTree' => '4.41',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.20',
- 'File::DosGlob' => '1.03',
- 'File::Fetch' => '0.28',
- 'File::Find' => '1.18',
- 'File::Glob' => '1.11',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- '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',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.04',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.85',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.13',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.10',
- 'Hash::Util::FieldHash' => '1.07',
- 'I18N::Collate' => '1.02',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.07',
- 'IO' => '1.25_03',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.66',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.08',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.17',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.15',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.13',
- 'MIME::QuotedPrint' => '3.13',
- 'Math::BigFloat' => '1.99_02',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.99_02',
- 'Math::BigInt::Calc' => '1.99_02',
- 'Math::BigInt::CalcEmu' => '1.99_02',
- 'Math::BigInt::FastCalc'=> '0.24_01',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_01',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- '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::Build' => '0.3607',
- 'Module::Build::Base' => '0.3607',
- 'Module::Build::Compat' => '0.3607',
- 'Module::Build::Config' => '0.3607',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.43',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.11',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.37',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.10',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.18',
- 'POSIX' => '1.23',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.14',
- 'PerlIO::scalar' => '0.11',
- 'PerlIO::via' => '0.11',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.09',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.92',
- 'Storable' => '2.25',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.14',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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::Harness' => '3.22',
- 'Test::More' => '0.97_01',
- 'Test::Simple' => '0.97_01',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.11',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.07',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721_01',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.07',
- 'Unicode' => '6.0.0',
- 'Unicode::Collate' => '0.6801',
- '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.68',
- 'Unicode::Normalize' => '1.08',
- 'Unicode::UCD' => '0.30',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.41',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.27',
- 'XS::Typemap' => '0.04',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.13',
- 'autodie' => '2.1001',
- 'autodie::exception' => '2.1001',
- 'autodie::exception::system'=> '2.1001',
- 'autodie::hints' => '2.1001',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.25',
- 'bignum' => '0.25',
- 'bigrat' => '0.25',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.17',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.20',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.19',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.0601',
- 'inc::latest' => '0.3607',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.06',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.12',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.224',
- 're' => '0.15',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.81_03',
- 'threads::shared' => '1.35',
- 'utf8' => '1.08',
- 'vars' => '1.02',
- 'version' => '0.86',
- 'vmsish' => '1.02',
- 'warnings' => '1.11',
- 'warnings::register' => '1.02',
+ 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.012003 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- '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.38',
- 'Archive::Tar' => '1.54',
- 'Archive::Tar::Constant'=> '0.02',
- 'Archive::Tar::File' => '0.02',
- 'Attribute::Handlers' => '0.87',
- 'AutoLoader' => '5.70',
- 'AutoSplit' => '1.06',
- 'B' => '1.23',
- 'B::Concise' => '0.78',
- 'B::Debug' => '1.12',
- 'B::Deparse' => '0.9701',
- 'B::Lint' => '1.11_01',
- 'B::Lint::Debug' => '0.01',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.11',
- 'CGI' => '3.49',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.45',
- 'CGI::Cookie' => '1.29',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.04',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.48',
- 'CPAN' => '1.94_56',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9456_01',
- '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.5004',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5',
- 'CPANPLUS' => '0.90',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.46',
- 'CPANPLUS::Dist::Build::Constants'=> '0.46',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.90',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.90',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.17',
- 'Carp::Heavy' => '1.17',
- 'Class::ISA' => '0.36',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.024',
- 'Compress::Raw::Zlib' => '2.024',
- 'Compress::Zlib' => '2.024',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.31',
- 'DB' => '1.02',
- 'DBM_Filter' => '0.03',
- '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.125',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::V' => undef,
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.04',
- 'Devel::SelfStubber' => '1.03',
- '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.39',
- 'Encode::Alias' => '2.12',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.03',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.11',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.04',
- 'English' => '1.04',
- 'Env' => '1.01',
- 'Errno' => '1.11',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.56',
- 'ExtUtils::Constant' => '0.22',
- 'ExtUtils::Constant::Base'=> '0.04',
- 'ExtUtils::Constant::ProxySubs'=> '0.06',
- 'ExtUtils::Constant::Utils'=> '0.02',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.28',
- 'ExtUtils::Install' => '1.55',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.57',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.56',
- 'ExtUtils::Mksymlists' => '6.56',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.21',
- 'ExtUtils::XSSymSet' => '1.1',
- 'ExtUtils::testlib' => '6.56',
- 'Fatal' => '2.06_01',
- 'Fcntl' => '1.06',
- 'File::Basename' => '2.78',
- 'File::CheckTree' => '4.4',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.18',
- 'File::DosGlob' => '1.01',
- 'File::Fetch' => '0.24',
- 'File::Find' => '1.15',
- 'File::Glob' => '1.07',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.31_01',
- '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.02',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.84',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.10',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'Hash::Util' => '0.07',
- 'Hash::Util::FieldHash' => '1.04',
- 'I18N::Collate' => '1.01',
- 'I18N::LangTags' => '0.35',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35',
- 'I18N::Langinfo' => '0.03',
- 'IO' => '1.25_02',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.28',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.31',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.54',
- 'IPC::Msg' => '2.01',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.05',
- 'IPC::Semaphore' => '2.01',
- 'IPC::SharedMem' => '2.01',
- 'IPC::SysV' => '2.01',
- 'List::Util' => '1.22',
- 'List::Util::PP' => '1.22',
- 'List::Util::XS' => '1.22',
- 'Locale::Constants' => '2.07',
- 'Locale::Country' => '2.07',
- 'Locale::Currency' => '2.07',
- 'Locale::Language' => '2.07',
- 'Locale::Maketext' => '1.14',
- 'Locale::Maketext::Guts'=> '1.13',
- 'Locale::Maketext::GutsLoader'=> '1.13',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '2.07',
- 'Log::Message' => '0.02',
- 'Log::Message::Config' => '0.01',
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => '0.06',
- 'MIME::Base64' => '3.08',
- 'MIME::QuotedPrint' => '3.08',
- 'Math::BigFloat' => '1.60',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.89_01',
- 'Math::BigInt::Calc' => '0.52',
- 'Math::BigInt::CalcEmu' => '0.05',
- 'Math::BigInt::FastCalc'=> '0.19',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.24',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- 'Memoize' => '1.01_03',
- 'Memoize::AnyDBM_File' => '0.65',
- 'Memoize::Expire' => '1.00',
- 'Memoize::ExpireFile' => '1.01',
- 'Memoize::ExpireTest' => '0.65',
- 'Memoize::NDBM_File' => '0.65',
- 'Memoize::SDBM_File' => '0.65',
- 'Memoize::Storable' => '0.65',
- 'Module::Build' => '0.3603',
- 'Module::Build::Base' => '0.3603',
- 'Module::Build::Compat' => '0.3603',
- 'Module::Build::Config' => '0.3603',
- 'Module::Build::ConfigData'=> undef,
- '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.360301',
- 'Module::Build::Platform::darwin'=> '0.3603',
- 'Module::Build::Platform::os2'=> '0.3603',
- 'Module::Build::PodParser'=> '0.3603',
- 'Module::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.43',
- 'Module::Load' => '0.16',
- 'Module::Load::Conditional'=> '0.38',
- 'Module::Loaded' => '0.06',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.08',
- 'NEXT' => '0.64',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.36',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.07',
- 'Object::Accessor' => '0.36',
- 'Opcode' => '1.15',
- 'POSIX' => '1.19',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.26',
- 'Parse::CPAN::Meta' => '1.40',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.12',
- 'PerlIO::scalar' => '0.08',
- 'PerlIO::via' => '0.09',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.58',
- 'Pod::Man' => '2.23',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_02',
- '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.04',
- 'Pod::Plainer' => '1.02',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.14',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.06',
- 'Safe' => '2.27',
- 'Scalar::Util' => '1.22',
- 'Scalar::Util::PP' => '1.22',
- 'Search::Dict' => '1.02',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.17',
- 'Shell' => '0.72_01',
- 'Socket' => '1.87_01',
- 'Storable' => '2.22',
- 'Switch' => '2.16',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.11',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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.02',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.05',
- 'Term::UI' => '0.20',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- 'Test::Builder' => '0.94',
- 'Test::Builder::Module' => '0.94',
- 'Test::Builder::Tester' => '1.18',
- 'Test::Builder::Tester::Color'=> '1.18',
- 'Test::Harness' => '3.17',
- 'Test::More' => '0.94',
- 'Test::Simple' => '0.94',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.11',
- 'Thread::Semaphore' => '2.09',
- 'Tie::Array' => '1.03',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.03',
- 'Tie::Hash::NamedCapture'=> '0.06',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9719',
- 'Time::Local' => '1.1901_01',
- 'Time::Piece' => '1.15_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.06',
- 'Unicode' => '5.2.0',
- 'Unicode::Collate' => '0.52_01',
- 'Unicode::Normalize' => '1.03',
- 'Unicode::UCD' => '0.27',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.03',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.39',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.17',
- 'XS::APItest::KeywordRPN'=> '0.003',
- 'XS::Typemap' => '0.03',
- 'XSLoader' => '0.10',
- 'XSLoader::XSLoader' => '0.10',
- 'attributes' => '0.12',
- 'autodie' => '2.06_01',
- 'autodie::exception' => '2.06_01',
- 'autodie::exception::system'=> '2.06_01',
- 'autodie::hints' => '2.06_01',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.23',
- 'bignum' => '0.23',
- 'bigrat' => '0.23',
- 'blib' => '1.04',
- 'bytes' => '1.04',
- 'charnames' => '1.07',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.19',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.16',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.05',
- 'inc::latest' => '0.3603',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.62',
- 'locale' => '1.00',
- 'mro' => '1.02',
- 'open' => '1.07',
- 'ops' => '1.02',
- 'overload' => '1.10',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.223',
- 're' => '0.11',
- 'sigtrap' => '1.04',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.75',
- 'threads::shared' => '1.32',
- 'utf8' => '1.08',
- 'vars' => '1.01',
- 'version' => '0.82',
- 'vmsish' => '1.02',
- 'warnings' => '1.09',
- 'warnings::register' => '1.01',
- },
5.013009 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.22',
- 'App::Prove::State' => '3.22',
- 'App::Prove::State::Result'=> '3.22',
- 'App::Prove::State::Result::Test'=> '3.22',
- 'Archive::Extract' => '0.48',
- 'Archive::Tar' => '1.76',
- 'Archive::Tar::Constant'=> '1.76',
- 'Archive::Tar::File' => '1.76',
- 'Attribute::Handlers' => '0.88',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.27',
- 'B::Concise' => '0.83',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.03',
- 'B::Lint' => '1.13',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.02',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.12',
- 'CGI' => '3.51',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.51',
- 'CGI::Cookie' => '1.30',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.05',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.51',
- 'CPAN' => '1.94_63',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9600',
- '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.5005',
- 'CPAN::FTP::netrc' => '1.00',
- 'CPAN::FirstTime' => '5.5301',
- 'CPAN::HTTP::Client' => '1.94',
- 'CPAN::HTTP::Credentials'=> '1.94',
- 'CPAN::HandleConfig' => '5.5001',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- 'CPAN::Meta::YAML' => '0.003',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5001',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9011',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.52',
- 'CPANPLUS::Dist::Build::Constants'=> '0.52',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9011',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9011',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.19',
- 'Carp::Heavy' => '1.19',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.033',
- 'Compress::Raw::Zlib' => '2.033',
- 'Compress::Zlib' => '2.033',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.36',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.04',
- '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.821',
- 'Data::Dumper' => '2.130_02',
- 'Devel::DProf' => '20080331.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.07',
- 'Devel::SelfStubber' => '1.05',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.50',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.04',
- 'Dumpvalue' => '1.16',
- 'DynaLoader' => '1.12',
- 'Encode' => '2.42',
- 'Encode::Alias' => '2.13',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.13',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.02',
- 'Errno' => '1.13',
- 'Exporter' => '5.64_03',
- 'Exporter::Heavy' => '5.64_03',
- '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::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.03',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.30',
- 'ExtUtils::Install' => '1.56',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2209',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.1001',
- 'Fcntl' => '1.11',
- 'File::Basename' => '2.80',
- 'File::CheckTree' => '4.41',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.21',
- 'File::DosGlob' => '1.04',
- 'File::Fetch' => '0.32',
- 'File::Find' => '1.19',
- 'File::Glob' => '1.11',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.33',
- 'File::Spec::Cygwin' => '3.33',
- 'File::Spec::Epoc' => '3.33',
- 'File::Spec::Functions' => '3.33',
- 'File::Spec::Mac' => '3.34',
- 'File::Spec::OS2' => '3.33',
- 'File::Spec::Unix' => '3.33',
- 'File::Spec::VMS' => '3.34',
- 'File::Spec::Win32' => '3.33',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.05',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.85',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.13',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'HTTP::Tiny' => '0.009',
- 'Hash::Util' => '0.10',
- 'Hash::Util::FieldHash' => '1.08',
- 'I18N::Collate' => '1.02',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.04',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.07',
- 'IO' => '1.25_03',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.29',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.17',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.68',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.09',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'JSON::PP' => '2.27103',
- 'JSON::PP::Boolean' => undef,
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.18',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.15',
- 'Log::Message' => '0.04',
- 'Log::Message::Config' => '0.04',
- 'Log::Message::Handlers'=> '0.04',
- 'Log::Message::Item' => '0.04',
- 'Log::Message::Simple' => '0.08',
- 'MIME::Base64' => '3.13',
- 'MIME::QuotedPrint' => '3.13',
- 'Math::BigFloat' => '1.99_03',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.99_03',
- 'Math::BigInt::Calc' => '1.99_03',
- 'Math::BigInt::CalcEmu' => '1.99_02',
- 'Math::BigInt::FastCalc'=> '0.24_02',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_02',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- '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::Build' => '0.3607',
- 'Module::Build::Base' => '0.3607',
- 'Module::Build::Compat' => '0.3607',
- 'Module::Build::Config' => '0.3607',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.77',
- 'Module::Build::YAML' => '1.40',
- 'Module::CoreList' => '2.42_01',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.40',
- 'Module::Loaded' => '0.06',
- 'Module::Metadata' => '1.000003',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.11',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.38',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.10',
- 'Object::Accessor' => '0.38',
- 'Opcode' => '1.18',
- 'POSIX' => '1.24',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.28',
- 'Parse::CPAN::Meta' => '1.40',
- 'Perl::OSType' => '1.002',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.14',
- 'PerlIO::scalar' => '0.11',
- 'PerlIO::via' => '0.11',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.09',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.59',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_03',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.09',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.93',
- 'Storable' => '2.26',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.15',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.24',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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::Harness' => '3.22',
- 'Test::More' => '0.97_01',
- 'Test::Simple' => '0.97_01',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.12',
- 'Thread::Semaphore' => '2.12',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.07',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721_01',
- 'Time::Local' => '1.2000',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.08',
- 'Unicode' => '6.0.0',
- 'Unicode::Collate' => '0.6801',
- '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.68',
- 'Unicode::Normalize' => '1.10',
- 'Unicode::UCD' => '0.30',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.04',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Win32' => '0.44',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.27',
- 'XS::Typemap' => '0.04',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.13',
- 'autodie' => '2.1001',
- 'autodie::exception' => '2.1001',
- 'autodie::exception::system'=> '2.1001',
- 'autodie::hints' => '2.1001',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.26',
- 'bignum' => '0.26',
- 'bigrat' => '0.26',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.18',
- 'constant' => '1.20',
- 'deprecate' => '0.01',
- 'diagnostics' => '1.21',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.19',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.0601',
- 'inc::latest' => '0.3607',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.06',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.12',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.224',
- 're' => '0.16',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.83',
- 'threads::shared' => '1.36',
- 'utf8' => '1.08',
- 'vars' => '1.02',
- 'version' => '0.88',
- 'vmsish' => '1.02',
- 'warnings' => '1.11',
- 'warnings::register' => '1.02',
+ 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',
+ '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.013010 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.22',
- 'App::Prove::State' => '3.22',
- 'App::Prove::State::Result'=> '3.22',
- 'App::Prove::State::Result::Test'=> '3.22',
- 'Archive::Extract' => '0.48',
- 'Archive::Tar' => '1.76',
- 'Archive::Tar::Constant'=> '1.76',
- 'Archive::Tar::File' => '1.76',
- 'Attribute::Handlers' => '0.89',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.28',
- 'B::Concise' => '0.83',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.03',
- 'B::Lint' => '1.13',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.03',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.12',
- 'CGI' => '3.52',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.51',
- 'CGI::Cookie' => '1.30',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.05',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.51',
- 'CPAN' => '1.94_65',
- 'CPAN::Author' => '5.5',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9601',
- '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.5005',
- 'CPAN::FTP::netrc' => '1.01',
- 'CPAN::FirstTime' => '5.5303',
- 'CPAN::HTTP::Client' => '1.94',
- 'CPAN::HTTP::Credentials'=> '1.94',
- 'CPAN::HandleConfig' => '5.5003',
- 'CPAN::Index' => '1.94',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.94',
- '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::Meta::YAML' => '0.003',
- 'CPAN::Mirrors' => '1.77',
- 'CPAN::Module' => '5.5',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5002',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9101',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.52',
- 'CPANPLUS::Dist::Build::Constants'=> '0.52',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9101',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9101',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.20',
- 'Carp::Heavy' => '1.20',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.033',
- 'Compress::Raw::Zlib' => '2.033',
- 'Compress::Zlib' => '2.033',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.37',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.04',
- '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.821',
- 'Data::Dumper' => '2.130_02',
- 'Devel::DProf' => '20110217.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.07',
- 'Devel::SelfStubber' => '1.05',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.50',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.04',
- 'Dumpvalue' => '1.16',
- 'DynaLoader' => '1.13',
- 'Encode' => '2.42',
- 'Encode::Alias' => '2.13',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.13',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.02',
- 'Errno' => '1.13',
- 'Exporter' => '5.64_03',
- 'Exporter::Heavy' => '5.64_03',
- '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',
- 'ExtUtils::Command' => '1.16',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.03',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.30',
- 'ExtUtils::Install' => '1.56',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2209',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.1001',
- 'Fcntl' => '1.11',
- 'File::Basename' => '2.80',
- 'File::CheckTree' => '4.41',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.22',
- 'File::DosGlob' => '1.04',
- 'File::Fetch' => '0.32',
- 'File::Find' => '1.19',
- 'File::Glob' => '1.11',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.33',
- 'File::Spec::Cygwin' => '3.33',
- 'File::Spec::Epoc' => '3.33',
- 'File::Spec::Functions' => '3.33',
- 'File::Spec::Mac' => '3.34',
- 'File::Spec::OS2' => '3.33',
- 'File::Spec::Unix' => '3.33',
- 'File::Spec::VMS' => '3.34',
- 'File::Spec::Win32' => '3.33',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.05',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.86',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.13',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'HTTP::Tiny' => '0.010',
- 'Hash::Util' => '0.10',
- 'Hash::Util::FieldHash' => '1.08',
- 'I18N::Collate' => '1.02',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.05',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.07',
- 'IO' => '1.25_03',
- '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::Dir' => '1.07',
- 'IO::File' => '1.14',
- 'IO::Handle' => '1.29',
- 'IO::Pipe' => '1.13',
- 'IO::Poll' => '0.07',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.18',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.70',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.09',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'JSON::PP' => '2.27103',
- 'JSON::PP::Boolean' => undef,
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.19',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.15',
- 'Log::Message' => '0.04',
- 'Log::Message::Config' => '0.04',
- 'Log::Message::Handlers'=> '0.04',
- 'Log::Message::Item' => '0.04',
- 'Log::Message::Simple' => '0.08',
- 'MIME::Base64' => '3.13',
- 'MIME::QuotedPrint' => '3.13',
- 'Math::BigFloat' => '1.992',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.992',
- 'Math::BigInt::Calc' => '1.992',
- 'Math::BigInt::CalcEmu' => '1.992',
- 'Math::BigInt::FastCalc'=> '0.24_02',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_02',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- '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::Build' => '0.37_05',
- 'Module::Build::Base' => '0.37_05',
- 'Module::Build::Compat' => '0.37_05',
- 'Module::Build::Config' => '0.37_05',
- 'Module::Build::ConfigData'=> undef,
- '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' => '0.18',
- 'Module::Load::Conditional'=> '0.44',
- 'Module::Loaded' => '0.06',
- 'Module::Metadata' => '1.000004',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.11',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.38',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.10',
- 'Object::Accessor' => '0.38',
- 'Opcode' => '1.18',
- 'POSIX' => '1.24',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.28',
- 'Parse::CPAN::Meta' => '1.4401',
- 'Perl::OSType' => '1.002',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.14',
- 'PerlIO::scalar' => '0.11',
- 'PerlIO::via' => '0.11',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.1',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.59',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_03',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.09',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.94',
- 'Storable' => '2.26',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.15',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.26',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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::Harness' => '3.22',
- 'Test::More' => '0.97_01',
- 'Test::Simple' => '0.97_01',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.12',
- 'Thread::Semaphore' => '2.12',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.07',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.38',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721_01',
- 'Time::Local' => '1.2000',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.08',
- 'Unicode' => '6.0.0',
- 'Unicode::Collate' => '0.72',
- '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.71',
- 'Unicode::Normalize' => '1.10',
- 'Unicode::UCD' => '0.31',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.05',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Version::Requirements' => '0.101020',
- 'Win32' => '0.44',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.27',
- 'XS::Typemap' => '0.04',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.13',
- 'autodie' => '2.1001',
- 'autodie::exception' => '2.1001',
- 'autodie::exception::system'=> '2.1001',
- 'autodie::hints' => '2.1001',
- 'autouse' => '1.06',
- 'base' => '2.15',
- 'bigint' => '0.26',
- 'bignum' => '0.26',
- 'bigrat' => '0.27',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.18',
- 'constant' => '1.20',
- 'deprecate' => '0.02',
- 'diagnostics' => '1.22',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.19',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.0601',
- 'inc::latest' => '0.37_05',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.06',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.13',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.224',
- 're' => '0.17',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.83',
- 'threads::shared' => '1.36',
- 'utf8' => '1.09',
- 'vars' => '1.02',
- 'version' => '0.88',
- 'vmsish' => '1.02',
- 'warnings' => '1.12',
- 'warnings::register' => '1.02',
+ 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',
+ '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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.23',
- 'App::Prove::State' => '3.23',
- 'App::Prove::State::Result'=> '3.23',
- 'App::Prove::State::Result::Test'=> '3.23',
- 'Archive::Extract' => '0.48',
- 'Archive::Tar' => '1.76',
- 'Archive::Tar::Constant'=> '1.76',
- 'Archive::Tar::File' => '1.76',
- 'Attribute::Handlers' => '0.89',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.29',
- 'B::Concise' => '0.83',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.03',
- 'B::Lint' => '1.13',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.03',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.12',
- 'CGI' => '3.52',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.51',
- 'CGI::Cookie' => '1.30',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.05',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.51',
- 'CPAN' => '1.9600',
- 'CPAN::Author' => '5.5001',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5001',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9602',
- 'CPAN::Distroprefs' => '6',
- 'CPAN::Distrostatus' => '5.5',
- 'CPAN::Exception::RecursiveDependency'=> '5.5',
- 'CPAN::Exception::blocked_urllist'=> '1.001',
- 'CPAN::Exception::yaml_not_installed'=> '5.5',
- 'CPAN::FTP' => '5.5005',
- 'CPAN::FTP::netrc' => '1.01',
- 'CPAN::FirstTime' => '5.5303',
- 'CPAN::HTTP::Client' => '1.9600',
- 'CPAN::HTTP::Credentials'=> '1.9600',
- 'CPAN::HandleConfig' => '5.5003',
- 'CPAN::Index' => '1.9600',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.9600',
- '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::Meta::YAML' => '0.003',
- 'CPAN::Mirrors' => '1.9600',
- 'CPAN::Module' => '5.5001',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5002',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9103',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.54',
- 'CPANPLUS::Dist::Build::Constants'=> '0.54',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9103',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9103',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.20',
- 'Carp::Heavy' => '1.20',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.033',
- 'Compress::Raw::Zlib' => '2.033',
- 'Compress::Zlib' => '2.033',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.36',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.04',
- '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.821',
- 'Data::Dumper' => '2.130_02',
- 'Devel::DProf' => '20110228.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.07',
- 'Devel::SelfStubber' => '1.05',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.61',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.04',
- 'Dumpvalue' => '1.16',
- 'DynaLoader' => '1.13',
- 'Encode' => '2.42',
- 'Encode::Alias' => '2.13',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.13',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.02',
- 'Errno' => '1.13',
- 'Exporter' => '5.64_03',
- 'Exporter::Heavy' => '5.64_03',
- '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',
- 'ExtUtils::Command' => '1.17',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.03',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.30',
- 'ExtUtils::Install' => '1.56',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2209',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.1001',
- 'Fcntl' => '1.11',
- 'File::Basename' => '2.81',
- 'File::CheckTree' => '4.41',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.21',
- 'File::DosGlob' => '1.04',
- 'File::Fetch' => '0.32',
- 'File::Find' => '1.19',
- 'File::Glob' => '1.12',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.33',
- 'File::Spec::Cygwin' => '3.33',
- 'File::Spec::Epoc' => '3.33',
- 'File::Spec::Functions' => '3.33',
- 'File::Spec::Mac' => '3.34',
- 'File::Spec::OS2' => '3.33',
- 'File::Spec::Unix' => '3.33',
- 'File::Spec::VMS' => '3.34',
- 'File::Spec::Win32' => '3.33',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.05',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.86',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.14',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'HTTP::Tiny' => '0.011',
- 'Hash::Util' => '0.11',
- 'Hash::Util::FieldHash' => '1.09',
- 'I18N::Collate' => '1.02',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.05',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.08',
- 'IO' => '1.25_04',
- '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::Dir' => '1.08',
- 'IO::File' => '1.15',
- 'IO::Handle' => '1.30',
- 'IO::Pipe' => '1.14',
- 'IO::Poll' => '0.08',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.20',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.70',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.09',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'JSON::PP' => '2.27105',
- 'JSON::PP::Boolean' => undef,
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.19',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.16',
- 'Log::Message' => '0.04',
- 'Log::Message::Config' => '0.04',
- 'Log::Message::Handlers'=> '0.04',
- 'Log::Message::Item' => '0.04',
- 'Log::Message::Simple' => '0.08',
- 'MIME::Base64' => '3.13',
- 'MIME::QuotedPrint' => '3.13',
- 'Math::BigFloat' => '1.993',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.994',
- 'Math::BigInt::Calc' => '1.993',
- 'Math::BigInt::CalcEmu' => '1.993',
- 'Math::BigInt::FastCalc'=> '0.28',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_02',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- '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::Build' => '0.3800',
- 'Module::Build::Base' => '0.3800',
- 'Module::Build::Compat' => '0.3800',
- 'Module::Build::Config' => '0.3800',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.87',
- 'Module::Build::YAML' => '1.41',
- 'Module::CoreList' => '2.46',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.44',
- 'Module::Loaded' => '0.06',
- 'Module::Metadata' => '1.000004',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.12',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.38',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.10',
- 'Object::Accessor' => '0.38',
- 'Opcode' => '1.18',
- 'POSIX' => '1.24',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.28',
- 'Parse::CPAN::Meta' => '1.4401',
- 'Perl::OSType' => '1.002',
- 'PerlIO' => '1.06',
- 'PerlIO::encoding' => '0.14',
- 'PerlIO::scalar' => '0.11',
- 'PerlIO::via' => '0.11',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.1',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.59',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_03',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.09',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.94',
- 'Storable' => '2.27',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.16',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.26',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.12',
- 'Thread::Semaphore' => '2.12',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.08',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.39',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721_01',
- 'Time::Local' => '1.2000',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.08',
- 'Unicode' => '6.0.0',
- 'Unicode::Collate' => '0.73',
- '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.73',
- 'Unicode::Normalize' => '1.10',
- 'Unicode::UCD' => '0.32',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.05',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Version::Requirements' => '0.101020',
- 'Win32' => '0.44',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.27',
- 'XS::Typemap' => '0.05',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.14',
- 'autodie' => '2.1001',
- 'autodie::exception' => '2.1001',
- 'autodie::exception::system'=> '2.1001',
- 'autodie::hints' => '2.1001',
- 'autouse' => '1.06',
- 'base' => '2.16',
- 'bigint' => '0.26',
- 'bignum' => '0.26',
- 'bigrat' => '0.27',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.18',
- 'constant' => '1.20',
- 'deprecate' => '0.02',
- 'diagnostics' => '1.22',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.19',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.0601',
- 'inc::latest' => '0.3800',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.07',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.13',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.225',
- 're' => '0.17',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.83',
- 'threads::shared' => '1.36',
- 'utf8' => '1.09',
- 'vars' => '1.02',
- 'version' => '0.88',
- 'vmsish' => '1.02',
- 'warnings' => '1.12',
- 'warnings::register' => '1.02',
+ 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.014000 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.23',
- 'App::Prove::State' => '3.23',
- 'App::Prove::State::Result'=> '3.23',
- 'App::Prove::State::Result::Test'=> '3.23',
- 'Archive::Extract' => '0.48',
- 'Archive::Tar' => '1.76',
- 'Archive::Tar::Constant'=> '1.76',
- 'Archive::Tar::File' => '1.76',
- 'Attribute::Handlers' => '0.89',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.29',
- 'B::Concise' => '0.83',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.03',
- 'B::Lint' => '1.13',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.03',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.12',
- 'CGI' => '3.52',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.51',
- 'CGI::Cookie' => '1.30',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.05',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.51',
- 'CPAN' => '1.9600',
- 'CPAN::Author' => '5.5001',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5001',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9602',
- 'CPAN::Distroprefs' => '6',
- 'CPAN::Distrostatus' => '5.5',
- 'CPAN::Exception::RecursiveDependency'=> '5.5',
- 'CPAN::Exception::blocked_urllist'=> '1.001',
- 'CPAN::Exception::yaml_not_installed'=> '5.5',
- 'CPAN::FTP' => '5.5005',
- 'CPAN::FTP::netrc' => '1.01',
- 'CPAN::FirstTime' => '5.5303',
- 'CPAN::HTTP::Client' => '1.9600',
- 'CPAN::HTTP::Credentials'=> '1.9600',
- 'CPAN::HandleConfig' => '5.5003',
- 'CPAN::Index' => '1.9600',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.9600',
- '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::Meta::YAML' => '0.003',
- 'CPAN::Mirrors' => '1.9600',
- 'CPAN::Module' => '5.5001',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5002',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9103',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.54',
- 'CPANPLUS::Dist::Build::Constants'=> '0.54',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9103',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9103',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.20',
- 'Carp::Heavy' => '1.20',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.033',
- 'Compress::Raw::Zlib' => '2.033',
- 'Compress::Zlib' => '2.033',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.36',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.04',
- '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.821',
- 'Data::Dumper' => '2.130_02',
- 'Devel::DProf' => '20110228.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.07',
- 'Devel::SelfStubber' => '1.05',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.61',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.04',
- 'Dumpvalue' => '1.16',
- 'DynaLoader' => '1.13',
- 'Encode' => '2.42',
- 'Encode::Alias' => '2.13',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.13',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.02',
- 'Errno' => '1.13',
- 'Exporter' => '5.64_03',
- 'Exporter::Heavy' => '5.64_03',
- '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::Command' => '1.17',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.03',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.30',
- 'ExtUtils::Install' => '1.56',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2210',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.1001',
- 'Fcntl' => '1.11',
- 'File::Basename' => '2.82',
- 'File::CheckTree' => '4.41',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.21',
- 'File::DosGlob' => '1.04',
- 'File::Fetch' => '0.32',
- 'File::Find' => '1.19',
- 'File::Glob' => '1.12',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.33',
- 'File::Spec::Cygwin' => '3.33',
- 'File::Spec::Epoc' => '3.33',
- 'File::Spec::Functions' => '3.33',
- 'File::Spec::Mac' => '3.34',
- 'File::Spec::OS2' => '3.33',
- 'File::Spec::Unix' => '3.33',
- 'File::Spec::VMS' => '3.34',
- 'File::Spec::Win32' => '3.33',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.05',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.86',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.14',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'HTTP::Tiny' => '0.012',
- 'Hash::Util' => '0.11',
- 'Hash::Util::FieldHash' => '1.09',
- 'I18N::Collate' => '1.02',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.05',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.08',
- 'IO' => '1.25_04',
- '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::Dir' => '1.08',
- 'IO::File' => '1.15',
- 'IO::Handle' => '1.31',
- 'IO::Pipe' => '1.14',
- 'IO::Poll' => '0.08',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.20',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.70',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.09',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'JSON::PP' => '2.27105',
- 'JSON::PP::Boolean' => undef,
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.19',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.16',
- 'Log::Message' => '0.04',
- 'Log::Message::Config' => '0.04',
- 'Log::Message::Handlers'=> '0.04',
- 'Log::Message::Item' => '0.04',
- 'Log::Message::Simple' => '0.08',
- 'MIME::Base64' => '3.13',
- 'MIME::QuotedPrint' => '3.13',
- 'Math::BigFloat' => '1.993',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.994',
- 'Math::BigInt::Calc' => '1.993',
- 'Math::BigInt::CalcEmu' => '1.993',
- 'Math::BigInt::FastCalc'=> '0.28',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_02',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- '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::Build' => '0.3800',
- 'Module::Build::Base' => '0.3800',
- 'Module::Build::Compat' => '0.3800',
- 'Module::Build::Config' => '0.3800',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.87',
- 'Module::Build::YAML' => '1.41',
- 'Module::CoreList' => '2.49',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.44',
- 'Module::Loaded' => '0.06',
- 'Module::Metadata' => '1.000004',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.12',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.38',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.10',
- 'Object::Accessor' => '0.38',
- 'Opcode' => '1.18',
- 'POSIX' => '1.24',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.28',
- 'Parse::CPAN::Meta' => '1.4401',
- 'Perl::OSType' => '1.002',
- 'PerlIO' => '1.07',
- 'PerlIO::encoding' => '0.14',
- 'PerlIO::scalar' => '0.11',
- 'PerlIO::via' => '0.11',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.11',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.59',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_03',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.09',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.94',
- 'Storable' => '2.27',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.16',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.26',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.12',
- 'Thread::Semaphore' => '2.12',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.08',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.39',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721_01',
- 'Time::Local' => '1.2000',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.08',
- 'Unicode' => '6.0.0',
- 'Unicode::Collate' => '0.73',
- '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.73',
- 'Unicode::Normalize' => '1.10',
- 'Unicode::UCD' => '0.32',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.05',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Version::Requirements' => '0.101020',
- 'Win32' => '0.44',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.28',
- 'XS::Typemap' => '0.05',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.14',
- 'autodie' => '2.1001',
- 'autodie::exception' => '2.1001',
- 'autodie::exception::system'=> '2.1001',
- 'autodie::hints' => '2.1001',
- 'autouse' => '1.06',
- 'base' => '2.16',
- 'bigint' => '0.27',
- 'bignum' => '0.27',
- 'bigrat' => '0.28',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.18',
- 'constant' => '1.21',
- 'deprecate' => '0.02',
- 'diagnostics' => '1.22',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.20',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.0601',
- 'inc::latest' => '0.3800',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.07',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.13',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.225',
- 're' => '0.18',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.83',
- 'threads::shared' => '1.37',
- 'utf8' => '1.09',
- 'vars' => '1.02',
- 'version' => '0.88',
- 'vmsish' => '1.02',
- 'warnings' => '1.12',
- 'warnings::register' => '1.02',
+ 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 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.23',
- 'App::Prove::State' => '3.23',
- 'App::Prove::State::Result'=> '3.23',
- 'App::Prove::State::Result::Test'=> '3.23',
- 'Archive::Extract' => '0.48',
- 'Archive::Tar' => '1.76',
- 'Archive::Tar::Constant'=> '1.76',
- 'Archive::Tar::File' => '1.76',
- 'Attribute::Handlers' => '0.89',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.29',
- 'B::Concise' => '0.83',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.04',
- 'B::Lint' => '1.13',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.03',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.12',
- 'CGI' => '3.52',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.51',
- 'CGI::Cookie' => '1.30',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.05',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.51',
- 'CPAN' => '1.9600',
- 'CPAN::Author' => '5.5001',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5001',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9602',
- 'CPAN::Distroprefs' => '6',
- 'CPAN::Distrostatus' => '5.5',
- 'CPAN::Exception::RecursiveDependency'=> '5.5',
- 'CPAN::Exception::blocked_urllist'=> '1.001',
- 'CPAN::Exception::yaml_not_installed'=> '5.5',
- 'CPAN::FTP' => '5.5005',
- 'CPAN::FTP::netrc' => '1.01',
- 'CPAN::FirstTime' => '5.5303',
- 'CPAN::HTTP::Client' => '1.9600',
- 'CPAN::HTTP::Credentials'=> '1.9600',
- 'CPAN::HandleConfig' => '5.5003',
- 'CPAN::Index' => '1.9600',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.9600',
- '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::Meta::YAML' => '0.003',
- 'CPAN::Mirrors' => '1.9600',
- 'CPAN::Module' => '5.5001',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5002',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9103',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.54',
- 'CPANPLUS::Dist::Build::Constants'=> '0.54',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9103',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9103',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.20',
- 'Carp::Heavy' => '1.20',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.033',
- 'Compress::Raw::Zlib' => '2.033',
- 'Compress::Zlib' => '2.033',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.36',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.04',
- '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.821',
- 'Data::Dumper' => '2.130_02',
- 'Devel::DProf' => '20110228.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.07',
- 'Devel::SelfStubber' => '1.05',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.61',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.04',
- 'Dumpvalue' => '1.16',
- 'DynaLoader' => '1.13',
- 'Encode' => '2.42',
- 'Encode::Alias' => '2.13',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.13',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.02',
- 'Errno' => '1.13',
- 'Exporter' => '5.64_03',
- 'Exporter::Heavy' => '5.64_03',
- '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::Command' => '1.17',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.03',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.30',
- 'ExtUtils::Install' => '1.56',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2210',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.1001',
- 'Fcntl' => '1.11',
- 'File::Basename' => '2.82',
- 'File::CheckTree' => '4.41',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.21',
- 'File::DosGlob' => '1.04',
- 'File::Fetch' => '0.32',
- 'File::Find' => '1.19',
- 'File::Glob' => '1.12',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.33',
- 'File::Spec::Cygwin' => '3.33',
- 'File::Spec::Epoc' => '3.33',
- 'File::Spec::Functions' => '3.33',
- 'File::Spec::Mac' => '3.34',
- 'File::Spec::OS2' => '3.33',
- 'File::Spec::Unix' => '3.33',
- 'File::Spec::VMS' => '3.34',
- 'File::Spec::Win32' => '3.33',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.05',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.86',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.14',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'HTTP::Tiny' => '0.012',
- 'Hash::Util' => '0.11',
- 'Hash::Util::FieldHash' => '1.09',
- 'I18N::Collate' => '1.02',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.05',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.08',
- 'IO' => '1.25_04',
- '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::Dir' => '1.08',
- 'IO::File' => '1.15',
- 'IO::Handle' => '1.31',
- 'IO::Pipe' => '1.14',
- 'IO::Poll' => '0.08',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.20',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.70',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.09',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'JSON::PP' => '2.27105',
- 'JSON::PP::Boolean' => undef,
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.19',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.16',
- 'Log::Message' => '0.04',
- 'Log::Message::Config' => '0.04',
- 'Log::Message::Handlers'=> '0.04',
- 'Log::Message::Item' => '0.04',
- 'Log::Message::Simple' => '0.08',
- 'MIME::Base64' => '3.13',
- 'MIME::QuotedPrint' => '3.13',
- 'Math::BigFloat' => '1.993',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.994',
- 'Math::BigInt::Calc' => '1.993',
- 'Math::BigInt::CalcEmu' => '1.993',
- 'Math::BigInt::FastCalc'=> '0.28',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_02',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- '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::Build' => '0.3800',
- 'Module::Build::Base' => '0.3800',
- 'Module::Build::Compat' => '0.3800',
- 'Module::Build::Config' => '0.3800',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.87',
- 'Module::Build::YAML' => '1.41',
- 'Module::CoreList' => '2.49_01',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.44',
- 'Module::Loaded' => '0.06',
- 'Module::Metadata' => '1.000004',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.12',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.38',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.10',
- 'Object::Accessor' => '0.38',
- 'Opcode' => '1.18',
- 'POSIX' => '1.24',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.28',
- 'Parse::CPAN::Meta' => '1.4401',
- 'Perl::OSType' => '1.002',
- 'PerlIO' => '1.07',
- 'PerlIO::encoding' => '0.14',
- 'PerlIO::scalar' => '0.11',
- 'PerlIO::via' => '0.11',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.11',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.59',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_04',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.09',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.94',
- 'Storable' => '2.27',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.16',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.26',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.12',
- 'Thread::Semaphore' => '2.12',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.08',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.39',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721_01',
- 'Time::Local' => '1.2000',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.08',
- 'Unicode' => '6.0.0',
- 'Unicode::Collate' => '0.73',
- '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.73',
- 'Unicode::Normalize' => '1.10',
- 'Unicode::UCD' => '0.32',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.05',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Version::Requirements' => '0.101020',
- 'Win32' => '0.44',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.28',
- 'XS::Typemap' => '0.05',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.14',
- 'autodie' => '2.1001',
- 'autodie::exception' => '2.1001',
- 'autodie::exception::system'=> '2.1001',
- 'autodie::hints' => '2.1001',
- 'autouse' => '1.06',
- 'base' => '2.16',
- 'bigint' => '0.27',
- 'bignum' => '0.27',
- 'bigrat' => '0.28',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.18',
- 'constant' => '1.21',
- 'deprecate' => '0.02',
- 'diagnostics' => '1.22',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.20',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.0601',
- 'inc::latest' => '0.3800',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.07',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.13',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.225',
- 're' => '0.18',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.83',
- 'threads::shared' => '1.37',
- 'utf8' => '1.09',
- 'vars' => '1.02',
- 'version' => '0.88',
- 'vmsish' => '1.02',
- 'warnings' => '1.12',
- 'warnings::register' => '1.02',
+ delta_from => 5.014,
+ changed => {
+ 'B::Deparse' => '1.04',
+ 'Module::CoreList' => '2.49_01',
+ 'Pod::Perldoc' => '3.15_04',
+ },
+ removed => {
+ }
},
5.014002 => {
- 'AnyDBM_File' => '1.00',
- 'App::Cpan' => '1.5701',
- 'App::Prove' => '3.23',
- 'App::Prove::State' => '3.23',
- 'App::Prove::State::Result'=> '3.23',
- 'App::Prove::State::Result::Test'=> '3.23',
- 'Archive::Extract' => '0.48',
- 'Archive::Tar' => '1.76',
- 'Archive::Tar::Constant'=> '1.76',
- 'Archive::Tar::File' => '1.76',
- 'Attribute::Handlers' => '0.89',
- 'AutoLoader' => '5.71',
- 'AutoSplit' => '1.06',
- 'B' => '1.29',
- 'B::Concise' => '0.83',
- 'B::Debug' => '1.16',
- 'B::Deparse' => '1.04',
- 'B::Lint' => '1.13',
- 'B::Lint::Debug' => '1.12',
- 'B::Showlex' => '1.03',
- 'B::Terse' => '1.05',
- 'B::Xref' => '1.02',
- 'Benchmark' => '1.12',
- 'CGI' => '3.52',
- 'CGI::Apache' => '1.01',
- 'CGI::Carp' => '3.51',
- 'CGI::Cookie' => '1.30',
- 'CGI::Fast' => '1.08',
- 'CGI::Pretty' => '3.46',
- 'CGI::Push' => '1.05',
- 'CGI::Switch' => '1.01',
- 'CGI::Util' => '3.51',
- 'CPAN' => '1.9600_01',
- 'CPAN::Author' => '5.5001',
- 'CPAN::Bundle' => '5.5',
- 'CPAN::CacheMgr' => '5.5001',
- 'CPAN::Complete' => '5.5',
- 'CPAN::Debug' => '5.5001',
- 'CPAN::DeferredCode' => '5.50',
- 'CPAN::Distribution' => '1.9602_01',
- 'CPAN::Distroprefs' => '6',
- 'CPAN::Distrostatus' => '5.5',
- 'CPAN::Exception::RecursiveDependency'=> '5.5',
- 'CPAN::Exception::blocked_urllist'=> '1.001',
- 'CPAN::Exception::yaml_not_installed'=> '5.5',
- 'CPAN::FTP' => '5.5005',
- 'CPAN::FTP::netrc' => '1.01',
- 'CPAN::FirstTime' => '5.5303',
- 'CPAN::HTTP::Client' => '1.9600',
- 'CPAN::HTTP::Credentials'=> '1.9600',
- 'CPAN::HandleConfig' => '5.5003',
- 'CPAN::Index' => '1.9600',
- 'CPAN::InfoObj' => '5.5',
- 'CPAN::Kwalify' => '5.50',
- 'CPAN::LWP::UserAgent' => '1.9600',
- '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::Meta::YAML' => '0.003',
- 'CPAN::Mirrors' => '1.9600',
- 'CPAN::Module' => '5.5001',
- 'CPAN::Nox' => '5.50',
- 'CPAN::Prompt' => '5.5',
- 'CPAN::Queue' => '5.5001',
- 'CPAN::Shell' => '5.5002',
- 'CPAN::Tarzip' => '5.5011',
- 'CPAN::URL' => '5.5',
- 'CPAN::Version' => '5.5001',
- 'CPANPLUS' => '0.9103',
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => '0.54',
- 'CPANPLUS::Dist::Build::Constants'=> '0.54',
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => '0.9103',
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 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.9103',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => '1.20',
- 'Carp::Heavy' => '1.20',
- 'Class::Struct' => '0.63',
- 'Compress::Raw::Bzip2' => '2.033',
- 'Compress::Raw::Zlib' => '2.033',
- 'Compress::Zlib' => '2.033',
- 'Config' => undef,
- 'Config::Extensions' => '0.01',
- 'Cwd' => '3.36',
- 'DB' => '1.03',
- 'DBM_Filter' => '0.04',
- '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.821',
- 'Data::Dumper' => '2.130_02',
- 'Devel::DProf' => '20110228.00',
- 'Devel::DProf::dprof::V'=> undef,
- 'Devel::InnerPackage' => '0.3',
- 'Devel::PPPort' => '3.19',
- 'Devel::Peek' => '1.07',
- 'Devel::SelfStubber' => '1.05',
- 'Digest' => '1.16',
- 'Digest::MD5' => '2.51',
- 'Digest::SHA' => '5.61',
- 'Digest::base' => '1.16',
- 'Digest::file' => '1.16',
- 'DirHandle' => '1.04',
- 'Dumpvalue' => '1.16',
- 'DynaLoader' => '1.13',
- 'Encode' => '2.42_01',
- 'Encode::Alias' => '2.13',
- 'Encode::Byte' => '2.04',
- 'Encode::CJKConstants' => '2.02',
- 'Encode::CN' => '2.03',
- '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.04',
- 'Encode::JP' => '2.04',
- 'Encode::JP::H2Z' => '2.02',
- 'Encode::JP::JIS7' => '2.04',
- 'Encode::KR' => '2.03',
- 'Encode::KR::2022_KR' => '2.02',
- 'Encode::MIME::Header' => '2.13',
- 'Encode::MIME::Header::ISO_2022_JP'=> '1.03',
- 'Encode::MIME::Name' => '1.01',
- 'Encode::Symbol' => '2.02',
- 'Encode::TW' => '2.03',
- 'Encode::Unicode' => '2.07',
- 'Encode::Unicode::UTF7' => '2.05',
- 'English' => '1.04',
- 'Env' => '1.02',
- 'Errno' => '1.13',
- 'Exporter' => '5.64_03',
- 'Exporter::Heavy' => '5.64_03',
- '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::Command' => '1.17',
- 'ExtUtils::Command::MM' => '6.57_05',
- 'ExtUtils::Constant' => '0.23',
- 'ExtUtils::Constant::Base'=> '0.05',
- 'ExtUtils::Constant::ProxySubs'=> '0.08',
- 'ExtUtils::Constant::Utils'=> '0.03',
- 'ExtUtils::Constant::XS'=> '0.03',
- 'ExtUtils::Embed' => '1.30',
- 'ExtUtils::Install' => '1.56',
- 'ExtUtils::Installed' => '1.999_001',
- '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::Manifest' => '1.58',
- 'ExtUtils::Miniperl' => undef,
- 'ExtUtils::Mkbootstrap' => '6.57_05',
- 'ExtUtils::Mksymlists' => '6.57_05',
- 'ExtUtils::Packlist' => '1.44',
- 'ExtUtils::ParseXS' => '2.2210',
- 'ExtUtils::XSSymSet' => '1.2',
- 'ExtUtils::testlib' => '6.5705',
- 'Fatal' => '2.1001',
- 'Fcntl' => '1.11',
- 'File::Basename' => '2.82',
- 'File::CheckTree' => '4.41',
- 'File::Compare' => '1.1006',
- 'File::Copy' => '2.21',
- 'File::DosGlob' => '1.04',
- 'File::Fetch' => '0.32',
- 'File::Find' => '1.19',
- 'File::Glob' => '1.13',
- 'File::GlobMapper' => '1.000',
- 'File::Path' => '2.08_01',
- 'File::Spec' => '3.33',
- 'File::Spec::Cygwin' => '3.33',
- 'File::Spec::Epoc' => '3.33',
- 'File::Spec::Functions' => '3.33',
- 'File::Spec::Mac' => '3.34',
- 'File::Spec::OS2' => '3.33',
- 'File::Spec::Unix' => '3.33',
- 'File::Spec::VMS' => '3.34',
- 'File::Spec::Win32' => '3.33',
- 'File::Temp' => '0.22',
- 'File::stat' => '1.05',
- 'FileCache' => '1.08',
- 'FileHandle' => '2.02',
- 'Filter::Simple' => '0.86',
- 'Filter::Util::Call' => '1.08',
- 'FindBin' => '1.50',
- 'GDBM_File' => '1.14',
- 'Getopt::Long' => '2.38',
- 'Getopt::Std' => '1.06',
- 'HTTP::Tiny' => '0.012',
- 'Hash::Util' => '0.11',
- 'Hash::Util::FieldHash' => '1.09',
- 'I18N::Collate' => '1.02',
- 'I18N::LangTags' => '0.35_01',
- 'I18N::LangTags::Detect'=> '1.05',
- 'I18N::LangTags::List' => '0.35_01',
- 'I18N::Langinfo' => '0.08',
- 'IO' => '1.25_04',
- '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::Dir' => '1.08',
- 'IO::File' => '1.15',
- 'IO::Handle' => '1.31',
- 'IO::Pipe' => '1.14',
- 'IO::Poll' => '0.08',
- 'IO::Seekable' => '1.10',
- 'IO::Select' => '1.20',
- 'IO::Socket' => '1.32',
- 'IO::Socket::INET' => '1.31',
- 'IO::Socket::UNIX' => '1.23',
- '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',
- 'IO::Zlib' => '1.10',
- 'IPC::Cmd' => '0.70',
- 'IPC::Msg' => '2.03',
- 'IPC::Open2' => '1.03',
- 'IPC::Open3' => '1.09',
- 'IPC::Semaphore' => '2.03',
- 'IPC::SharedMem' => '2.03',
- 'IPC::SysV' => '2.03',
- 'JSON::PP' => '2.27105',
- 'JSON::PP::Boolean' => undef,
- 'List::Util' => '1.23',
- 'List::Util::PP' => '1.23',
- 'List::Util::XS' => '1.23',
- '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::Maketext' => '1.19',
- 'Locale::Maketext::Guts'=> '1.17',
- 'Locale::Maketext::GutsLoader'=> '1.17',
- 'Locale::Maketext::Simple'=> '0.21',
- 'Locale::Script' => '3.16',
- 'Log::Message' => '0.04',
- 'Log::Message::Config' => '0.04',
- 'Log::Message::Handlers'=> '0.04',
- 'Log::Message::Item' => '0.04',
- 'Log::Message::Simple' => '0.08',
- 'MIME::Base64' => '3.13',
- 'MIME::QuotedPrint' => '3.13',
- 'Math::BigFloat' => '1.993',
- 'Math::BigFloat::Trace' => '0.01',
- 'Math::BigInt' => '1.994',
- 'Math::BigInt::Calc' => '1.993',
- 'Math::BigInt::CalcEmu' => '1.993',
- 'Math::BigInt::FastCalc'=> '0.28',
- 'Math::BigInt::Trace' => '0.01',
- 'Math::BigRat' => '0.26_02',
- 'Math::Complex' => '1.56',
- 'Math::Trig' => '1.2',
- '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::Build' => '0.3800',
- 'Module::Build::Base' => '0.3800',
- 'Module::Build::Compat' => '0.3800',
- 'Module::Build::Config' => '0.3800',
- 'Module::Build::ConfigData'=> undef,
- '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::Build::Version'=> '0.87',
- 'Module::Build::YAML' => '1.41',
- 'Module::CoreList' => '2.49_02',
- 'Module::Load' => '0.18',
- 'Module::Load::Conditional'=> '0.44',
- 'Module::Loaded' => '0.06',
- 'Module::Metadata' => '1.000004',
- 'Module::Pluggable' => '3.9',
- 'Module::Pluggable::Object'=> '3.9',
- 'Moped::Msg' => '0.01',
- 'NDBM_File' => '1.12',
- 'NEXT' => '0.65',
- 'Net::Cmd' => '2.29',
- 'Net::Config' => '1.11',
- 'Net::Domain' => '2.20',
- 'Net::FTP' => '2.77',
- 'Net::FTP::A' => '1.18',
- 'Net::FTP::E' => '0.01',
- 'Net::FTP::I' => '1.12',
- 'Net::FTP::L' => '0.01',
- 'Net::FTP::dataconn' => '0.11',
- 'Net::NNTP' => '2.24',
- 'Net::Netrc' => '2.12',
- 'Net::POP3' => '2.29',
- 'Net::Ping' => '2.38',
- 'Net::SMTP' => '2.31',
- 'Net::Time' => '2.10',
- 'Net::hostent' => '1.01',
- 'Net::netent' => '1.00',
- 'Net::protoent' => '1.00',
- 'Net::servent' => '1.01',
- 'O' => '1.01',
- 'ODBM_File' => '1.10',
- 'Object::Accessor' => '0.38',
- 'Opcode' => '1.18',
- 'POSIX' => '1.24',
- 'Package::Constants' => '0.02',
- 'Params::Check' => '0.28',
- 'Parse::CPAN::Meta' => '1.4401',
- 'Perl::OSType' => '1.002',
- 'PerlIO' => '1.07',
- 'PerlIO::encoding' => '0.14',
- 'PerlIO::scalar' => '0.11_01',
- 'PerlIO::via' => '0.11',
- 'PerlIO::via::QuotedPrint'=> '0.06',
- 'Pod::Checker' => '1.45',
- 'Pod::Escapes' => '1.04',
- 'Pod::Find' => '1.35',
- 'Pod::Functions' => '1.04',
- 'Pod::Html' => '1.11',
- 'Pod::InputObjects' => '1.31',
- 'Pod::LaTeX' => '0.59',
- 'Pod::Man' => '2.25',
- 'Pod::ParseLink' => '1.10',
- 'Pod::ParseUtils' => '1.36',
- 'Pod::Parser' => '1.37',
- 'Pod::Perldoc' => '3.15_04',
- '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.04',
- 'Pod::Select' => '1.36',
- '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::HTMLLegacy'=> '5.01',
- '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',
- 'Pod::Text' => '3.15',
- 'Pod::Text::Color' => '2.06',
- 'Pod::Text::Overstrike' => '2.04',
- 'Pod::Text::Termcap' => '2.06',
- 'Pod::Usage' => '1.36',
- 'SDBM_File' => '1.09',
- 'Safe' => '2.29',
- 'Scalar::Util' => '1.23',
- 'Scalar::Util::PP' => '1.23',
- 'Search::Dict' => '1.03',
- 'SelectSaver' => '1.02',
- 'SelfLoader' => '1.18',
- 'Shell' => '0.72_01',
- 'Socket' => '1.94',
- 'Storable' => '2.27',
- 'Symbol' => '1.07',
- 'Sys::Hostname' => '1.16',
- 'Sys::Syslog' => '0.27',
- 'Sys::Syslog::win32::Win32'=> undef,
- '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',
- 'Term::ANSIColor' => '3.00',
- 'Term::Cap' => '1.12',
- 'Term::Complete' => '1.402',
- 'Term::ReadLine' => '1.07',
- 'Term::UI' => '0.26',
- 'Term::UI::History' => undef,
- 'Test' => '1.25_02',
- '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',
- 'Text::Abbrev' => '1.01',
- 'Text::Balanced' => '2.02',
- 'Text::ParseWords' => '3.27',
- 'Text::Soundex' => '3.03_01',
- 'Text::Tabs' => '2009.0305',
- 'Text::Wrap' => '2009.0305',
- 'Thread' => '3.02',
- 'Thread::Queue' => '2.12',
- 'Thread::Semaphore' => '2.12',
- 'Tie::Array' => '1.04',
- 'Tie::File' => '0.97_02',
- 'Tie::Handle' => '4.2',
- 'Tie::Hash' => '1.04',
- 'Tie::Hash::NamedCapture'=> '0.08',
- 'Tie::Memoize' => '1.1',
- 'Tie::RefHash' => '1.39',
- 'Tie::Scalar' => '1.02',
- 'Tie::StdHandle' => '4.2',
- 'Tie::SubstrHash' => '1.00',
- 'Time::HiRes' => '1.9721_01',
- 'Time::Local' => '1.2000',
- 'Time::Piece' => '1.20_01',
- 'Time::Piece::Seconds' => undef,
- 'Time::Seconds' => undef,
- 'Time::gmtime' => '1.03',
- 'Time::localtime' => '1.02',
- 'Time::tm' => '1.00',
- 'UNIVERSAL' => '1.08',
- 'Unicode' => '6.0.0',
- 'Unicode::Collate' => '0.73',
- '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.73',
- 'Unicode::Normalize' => '1.10',
- 'Unicode::UCD' => '0.32',
- 'User::grent' => '1.01',
- 'User::pwent' => '1.00',
- 'VMS::DCLsym' => '1.05',
- 'VMS::Filespec' => '1.12',
- 'VMS::Stdio' => '2.4',
- 'Version::Requirements' => '0.101020',
- 'Win32' => '0.44',
- 'Win32API::File' => '0.1101',
- 'Win32API::File::ExtUtils::Myconst2perl'=> '1',
- 'Win32CORE' => '0.02',
- 'XS::APItest' => '0.28',
- 'XS::Typemap' => '0.05',
- 'XSLoader' => '0.13',
- 'XSLoader::XSLoader' => '0.13',
- 'attributes' => '0.14',
- 'autodie' => '2.1001',
- 'autodie::exception' => '2.1001',
- 'autodie::exception::system'=> '2.1001',
- 'autodie::hints' => '2.1001',
- 'autouse' => '1.06',
- 'base' => '2.16',
- 'bigint' => '0.27',
- 'bignum' => '0.27',
- 'bigrat' => '0.28',
- 'blib' => '1.06',
- 'bytes' => '1.04',
- 'charnames' => '1.18',
- 'constant' => '1.21',
- 'deprecate' => '0.02',
- 'diagnostics' => '1.22',
- 'encoding' => '2.6_01',
- 'encoding::warnings' => '0.11',
- 'feature' => '1.20',
- 'fields' => '2.15',
- 'filetest' => '1.02',
- 'if' => '0.0601',
- 'inc::latest' => '0.3800',
- 'integer' => '1.00',
- 'less' => '0.03',
- 'lib' => '0.63',
- 'locale' => '1.00',
- 'mro' => '1.07',
- 'open' => '1.08',
- 'ops' => '1.02',
- 'overload' => '1.13',
- 'overload::numbers' => undef,
- 'overloading' => '0.01',
- 'parent' => '0.225',
- 're' => '0.18',
- 'sigtrap' => '1.05',
- 'sort' => '2.01',
- 'strict' => '1.04',
- 'subs' => '1.00',
- 'threads' => '1.83',
- 'threads::shared' => '1.37',
- 'utf8' => '1.09',
- 'vars' => '1.02',
- 'version' => '0.88',
- 'vmsish' => '1.02',
- 'warnings' => '1.12',
- 'warnings::register' => '1.02',
+ 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,
+ 'XSLoader::XSLoader' => '0.13',
+ },
+ removed => {
+ }
},
-);
-
-%deprecated = (
- 5.011 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 5.014003 => {
+ delta_from => 5.014002,
+ changed => {
+ 'Digest' => '1.16_01',
+ 'IPC::Open3' => '1.09_01',
+ 'Module::CoreList' => '2.49_04',
+ },
+ removed => {
+ }
},
- 5.011001 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 5.014004 => {
+ delta_from => 5.014003,
+ changed => {
+ 'Encode' => '2.42_02',
+ 'IPC::Open3' => '1.0901',
+ 'Module::CoreList' => '2.49_06',
+ },
+ removed => {
+ }
},
- 5.011002 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 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.011003 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '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',
+ '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.011004 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '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.011005 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 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.012000 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 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.013000 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 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.012001 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 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.013001 => {
- 'Shell' => '1',
+ 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.013002 => {
- 'Shell' => '1',
+ 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::Functions::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.013003 => {
- 'Shell' => '1',
+ 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.013004 => {
- 'Shell' => '1',
+ 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.012002 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 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.013005 => {
- 'Shell' => '1',
+ 5.016002 => {
+ delta_from => 5.016001,
+ changed => {
+ 'Module::CoreList' => '2.76',
+ },
+ removed => {
+ }
},
- 5.013006 => {
- 'Shell' => '1',
+ 5.016003 => {
+ delta_from => 5.016002,
+ changed => {
+ 'Encode' => '2.44_01',
+ 'Module::CoreList' => '2.76_02',
+ 'XS::APItest' => '0.39',
+ },
+ removed => {
+ }
},
- 5.013007 => {
- 'Shell' => '1',
+ 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',
+ 'Pod::Functions::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.013008 => {
- 'Shell' => '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.012003 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '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.013009 => {
- 'Shell' => '1',
+ 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.013010 => {
- 'Shell' => '1',
+ 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.013011 => {
- 'Shell' => '1',
+ 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.014000 => {
- 'Shell' => '1',
+ 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.014001 => {
- 'Shell' => '1',
+ 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.014002 => {
- 'Shell' => '1',
+ 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',
+ '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.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',
+ '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::Functions::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.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,
+ }
+ },
);
+for my $version (sort { $a <=> $b } keys %delta) {
+ my $data = $delta{$version};
+
+ tie %{$version{$version}}, 'Module::CoreList::TieHashDelta',
+ $data->{changed}, $data->{removed},
+ $data->{delta_from} ? $version{$data->{delta_from}} : undef;
+}
+
+%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.017012 => { delta_from => 5.017011 },
+
+ 5.018 => { delta_from => 5.017012 },
+
+ 5.019 => {
+ delta_from => 5.018,
+ 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.018001 => {
+ delta_from => 5.018,
+ changed => {
+ },
+ removed => {
+ }
+ },
+);
+
+for my $version (sort { $a <=> $b } keys %deprecated) {
+ my $data = $deprecated{$version};
+
+ tie %{ $deprecated{$version} }, 'Module::CoreList::TieHashDelta',
+ $data->{changed}, $data->{removed},
+ $data->{delta_from} ? $deprecated{ $data->{delta_from} } : undef;
+}
+
%upstream = (
- 'AnyDBM_File' => 'blead',
'App::Cpan' => 'cpan',
'App::Prove' => 'cpan',
'App::Prove::State' => 'cpan',
@@ -25799,11 +8733,11 @@
'Attribute::Handlers' => 'blead',
'AutoLoader' => 'cpan',
'AutoSplit' => 'cpan',
- 'B::Concise' => undef,
+ 'B::Concise' => 'blead',
'B::Debug' => 'cpan',
'B::Deparse' => 'blead',
- 'B::Lint' => 'blead',
- 'B::Lint::Debug' => 'blead',
+ 'B::Lint' => 'cpan',
+ 'B::Lint::Debug' => 'cpan',
'CGI' => 'cpan',
'CGI::Apache' => 'cpan',
'CGI::Carp' => 'cpan',
@@ -25826,6 +8760,7 @@
'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',
@@ -25841,6 +8776,7 @@
'CPAN::Meta::Feature' => 'cpan',
'CPAN::Meta::History' => 'cpan',
'CPAN::Meta::Prereqs' => 'cpan',
+ 'CPAN::Meta::Requirements'=> 'cpan',
'CPAN::Meta::Spec' => 'cpan',
'CPAN::Meta::Validator' => 'cpan',
'CPAN::Meta::YAML' => 'cpan',
@@ -25857,6 +8793,7 @@
'CPANPLUS::Backend' => 'cpan',
'CPANPLUS::Backend::RV' => 'cpan',
'CPANPLUS::Config' => 'cpan',
+ 'CPANPLUS::Config::HomeEnv'=> 'cpan',
'CPANPLUS::Configure' => 'cpan',
'CPANPLUS::Configure::Setup'=> 'cpan',
'CPANPLUS::Dist' => 'cpan',
@@ -25893,13 +8830,14 @@
'CPANPLUS::Shell::Default::Plugins::CustomSource'=> 'cpan',
'CPANPLUS::Shell::Default::Plugins::Remote'=> 'cpan',
'CPANPLUS::Shell::Default::Plugins::Source'=> 'cpan',
+ 'Carp' => 'blead',
+ 'Carp::Heavy' => 'blead',
'Compress::Raw::Bzip2' => 'cpan',
'Compress::Raw::Zlib' => 'cpan',
'Compress::Zlib' => 'cpan',
+ 'Config::Perl::V' => 'cpan',
'Cwd' => 'blead',
- 'DB_File' => undef,
- 'Devel::DProf' => 'cpan',
- 'Devel::DProf::dprof::V'=> 'cpan',
+ 'DB_File' => 'cpan',
'Devel::InnerPackage' => 'cpan',
'Devel::PPPort' => 'cpan',
'Digest' => 'cpan',
@@ -25976,11 +8914,18 @@
'ExtUtils::MY' => 'first-come',
'ExtUtils::MakeMaker' => 'first-come',
'ExtUtils::MakeMaker::Config'=> 'first-come',
- 'ExtUtils::MakeMaker::YAML'=> 'first-come',
'ExtUtils::Mkbootstrap' => 'first-come',
'ExtUtils::Mksymlists' => 'first-come',
'ExtUtils::Packlist' => 'blead',
'ExtUtils::ParseXS' => 'blead',
+ 'ExtUtils::ParseXS::Constants'=> 'blead',
+ 'ExtUtils::ParseXS::CountLines'=> 'blead',
+ 'ExtUtils::ParseXS::Utilities'=> 'blead',
+ 'ExtUtils::Typemaps' => 'blead',
+ 'ExtUtils::Typemaps::Cmd'=> 'blead',
+ 'ExtUtils::Typemaps::InputMap'=> 'blead',
+ 'ExtUtils::Typemaps::OutputMap'=> 'blead',
+ 'ExtUtils::Typemaps::Type'=> 'blead',
'ExtUtils::testlib' => 'first-come',
'Fatal' => 'cpan',
'File::Fetch' => 'cpan',
@@ -25995,9 +8940,9 @@
'File::Spec::Unix' => 'blead',
'File::Spec::VMS' => 'blead',
'File::Spec::Win32' => 'blead',
- 'File::Temp' => undef,
+ 'File::Temp' => 'cpan',
'Filter::Simple' => 'blead',
- 'Filter::Util::Call' => undef,
+ 'Filter::Util::Call' => 'cpan',
'Getopt::Long' => 'cpan',
'HTTP::Tiny' => 'cpan',
'IO::Compress::Adapter::Bzip2'=> 'cpan',
@@ -26034,14 +8979,30 @@
'JSON::PP' => 'cpan',
'JSON::PP::Boolean' => 'cpan',
'List::Util' => 'cpan',
- 'List::Util::PP' => 'cpan',
'List::Util::XS' => 'cpan',
'Locale::Codes' => 'cpan',
+ 'Locale::Codes::Constants'=> 'cpan',
'Locale::Codes::Country'=> 'cpan',
+ 'Locale::Codes::Country_Codes'=> 'cpan',
+ 'Locale::Codes::Country_Retired'=> 'cpan',
'Locale::Codes::Currency'=> 'cpan',
+ 'Locale::Codes::Currency_Codes'=> 'cpan',
+ 'Locale::Codes::Currency_Retired'=> 'cpan',
+ 'Locale::Codes::LangExt'=> 'cpan',
+ 'Locale::Codes::LangExt_Codes'=> 'cpan',
+ 'Locale::Codes::LangExt_Retired'=> 'cpan',
+ 'Locale::Codes::LangFam'=> 'cpan',
+ 'Locale::Codes::LangFam_Codes'=> 'cpan',
+ 'Locale::Codes::LangFam_Retired'=> 'cpan',
+ 'Locale::Codes::LangVar'=> 'cpan',
+ 'Locale::Codes::LangVar_Codes'=> 'cpan',
+ 'Locale::Codes::LangVar_Retired'=> 'cpan',
'Locale::Codes::Language'=> 'cpan',
+ 'Locale::Codes::Language_Codes'=> 'cpan',
+ 'Locale::Codes::Language_Retired'=> 'cpan',
'Locale::Codes::Script' => 'cpan',
- 'Locale::Constants' => 'cpan',
+ 'Locale::Codes::Script_Codes'=> 'cpan',
+ 'Locale::Codes::Script_Retired'=> 'cpan',
'Locale::Country' => 'cpan',
'Locale::Currency' => 'cpan',
'Locale::Language' => 'cpan',
@@ -26103,6 +9064,8 @@
'Module::Build::Version'=> 'cpan',
'Module::Build::YAML' => 'cpan',
'Module::CoreList' => 'blead',
+ 'Module::CoreList::TieHashDelta'=> 'blead',
+ 'Module::CoreList::Utils'=> 'blead',
'Module::Load' => 'cpan',
'Module::Load::Conditional'=> 'cpan',
'Module::Loaded' => 'cpan',
@@ -26131,28 +9094,30 @@
'Parse::CPAN::Meta' => 'cpan',
'Perl::OSType' => 'cpan',
'PerlIO::via::QuotedPrint'=> undef,
- 'Pod::Checker' => undef,
+ 'Pod::Checker' => 'cpan',
'Pod::Escapes' => undef,
- 'Pod::Find' => undef,
- 'Pod::InputObjects' => undef,
+ 'Pod::Find' => 'cpan',
+ 'Pod::InputObjects' => 'cpan',
'Pod::LaTeX' => undef,
'Pod::Man' => 'cpan',
'Pod::ParseLink' => 'cpan',
- 'Pod::ParseUtils' => undef,
- 'Pod::Parser' => undef,
- 'Pod::Perldoc' => 'blead',
- 'Pod::Perldoc::BaseTo' => 'blead',
- 'Pod::Perldoc::GetOptsOO'=> 'blead',
- 'Pod::Perldoc::ToChecker'=> 'blead',
- 'Pod::Perldoc::ToMan' => 'blead',
- 'Pod::Perldoc::ToNroff' => 'blead',
- 'Pod::Perldoc::ToPod' => 'blead',
- 'Pod::Perldoc::ToRtf' => 'blead',
- 'Pod::Perldoc::ToText' => 'blead',
- 'Pod::Perldoc::ToTk' => 'blead',
- 'Pod::Perldoc::ToXml' => 'blead',
- 'Pod::PlainText' => undef,
- 'Pod::Select' => undef,
+ 'Pod::ParseUtils' => 'cpan',
+ 'Pod::Parser' => 'cpan',
+ 'Pod::Perldoc' => 'cpan',
+ 'Pod::Perldoc::BaseTo' => 'cpan',
+ 'Pod::Perldoc::GetOptsOO'=> 'cpan',
+ 'Pod::Perldoc::ToANSI' => 'cpan',
+ 'Pod::Perldoc::ToChecker'=> 'cpan',
+ 'Pod::Perldoc::ToMan' => 'cpan',
+ 'Pod::Perldoc::ToNroff' => 'cpan',
+ 'Pod::Perldoc::ToPod' => 'cpan',
+ 'Pod::Perldoc::ToRtf' => 'cpan',
+ 'Pod::Perldoc::ToTerm' => 'cpan',
+ 'Pod::Perldoc::ToText' => 'cpan',
+ 'Pod::Perldoc::ToTk' => 'cpan',
+ 'Pod::Perldoc::ToXml' => 'cpan',
+ 'Pod::PlainText' => 'cpan',
+ 'Pod::Select' => 'cpan',
'Pod::Simple' => 'cpan',
'Pod::Simple::BlackBox' => 'cpan',
'Pod::Simple::Checker' => 'cpan',
@@ -26185,15 +9150,14 @@
'Pod::Text::Color' => 'cpan',
'Pod::Text::Overstrike' => 'cpan',
'Pod::Text::Termcap' => 'cpan',
- 'Pod::Usage' => undef,
+ 'Pod::Usage' => 'cpan',
'Safe' => 'blead',
'Scalar::Util' => 'cpan',
- 'Scalar::Util::PP' => 'cpan',
'SelfLoader' => 'blead',
- 'Shell' => undef,
+ 'Socket' => 'cpan',
'Storable' => 'blead',
'Sys::Syslog' => 'cpan',
- 'Sys::Syslog::win32::Win32'=> 'cpan',
+ 'Sys::Syslog::Win32' => 'cpan',
'TAP::Base' => 'cpan',
'TAP::Formatter::Base' => 'cpan',
'TAP::Formatter::Color' => 'cpan',
@@ -26249,7 +9213,7 @@
'Test::Harness' => 'cpan',
'Test::More' => 'cpan',
'Test::Simple' => 'cpan',
- 'Text::Balanced' => undef,
+ 'Text::Balanced' => 'cpan',
'Text::ParseWords' => undef,
'Text::Soundex' => undef,
'Text::Tabs' => 'cpan',
@@ -26256,12 +9220,12 @@
'Text::Wrap' => 'cpan',
'Thread::Queue' => 'blead',
'Thread::Semaphore' => 'blead',
- 'Tie::File' => 'first-come',
+ 'Tie::File' => 'blead',
'Tie::RefHash' => 'cpan',
- 'Time::HiRes' => undef,
+ 'Time::HiRes' => 'cpan',
'Time::Local' => 'cpan',
'Time::Piece' => undef,
- 'Time::Piece::Seconds' => undef,
+ 'Time::Seconds' => undef,
'Unicode::Collate' => 'first-come',
'Unicode::Collate::CJK::Big5'=> 'first-come',
'Unicode::Collate::CJK::GB2312'=> 'first-come',
@@ -26269,19 +9233,17 @@
'Unicode::Collate::CJK::Korean'=> 'first-come',
'Unicode::Collate::CJK::Pinyin'=> 'first-come',
'Unicode::Collate::CJK::Stroke'=> 'first-come',
+ 'Unicode::Collate::CJK::Zhuyin'=> 'first-come',
'Unicode::Collate::Locale'=> 'first-come',
'Unicode::Normalize' => 'first-come',
'Unicode::UCD' => 'blead',
'VMS::DCLsym' => undef,
- 'VMS::Filespec' => undef,
'VMS::Stdio' => undef,
- 'Version::Requirements' => 'cpan',
'Win32' => 'cpan',
'Win32API::File' => 'cpan',
'Win32API::File::ExtUtils::Myconst2perl'=> 'cpan',
'Win32CORE' => undef,
- 'XSLoader' => 'blead',
- 'XSLoader::XSLoader' => 'blead',
+ 'XSLoader' => undef,
'autodie' => 'cpan',
'autodie::exception' => 'cpan',
'autodie::exception::system'=> 'cpan',
@@ -26298,15 +9260,15 @@
'inc::latest' => 'cpan',
'lib' => 'blead',
'parent' => undef,
+ 'perlfaq' => 'cpan',
'threads' => 'blead',
'threads::shared' => 'blead',
'version' => undef,
- 'warnings' => undef,
- 'warnings::register' => undef,
+ 'warnings' => 'blead',
+ 'warnings::register' => 'blead',
);
%bug_tracker = (
- 'AnyDBM_File' => undef,
'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',
@@ -26317,6 +9279,7 @@
'Archive::Tar::Constant'=> undef,
'Archive::Tar::File' => undef,
'Attribute::Handlers' => undef,
+ 'B::Concise' => undef,
'B::Debug' => undef,
'B::Deparse' => undef,
'B::Lint' => undef,
@@ -26343,6 +9306,7 @@
'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,
@@ -26358,6 +9322,7 @@
'CPAN::Meta::Feature' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
'CPAN::Meta::History' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
'CPAN::Meta::Prereqs' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
+ 'CPAN::Meta::Requirements'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta-Requirements',
'CPAN::Meta::Spec' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
'CPAN::Meta::Validator' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
'CPAN::Meta::YAML' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta-YAML',
@@ -26374,6 +9339,7 @@
'CPANPLUS::Backend' => undef,
'CPANPLUS::Backend::RV' => undef,
'CPANPLUS::Config' => undef,
+ 'CPANPLUS::Config::HomeEnv'=> undef,
'CPANPLUS::Configure' => undef,
'CPANPLUS::Configure::Setup'=> undef,
'CPANPLUS::Dist' => undef,
@@ -26410,13 +9376,14 @@
'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
+ 'Carp' => undef,
+ 'Carp::Heavy' => undef,
'Compress::Raw::Bzip2' => undef,
'Compress::Raw::Zlib' => undef,
'Compress::Zlib' => undef,
+ 'Config::Perl::V' => undef,
'Cwd' => undef,
'DB_File' => undef,
- 'Devel::DProf' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Devel-DProf',
- 'Devel::DProf::dprof::V'=> undef,
'Devel::InnerPackage' => undef,
'Devel::PPPort' => undef,
'Digest' => undef,
@@ -26493,11 +9460,18 @@
'ExtUtils::MY' => undef,
'ExtUtils::MakeMaker' => undef,
'ExtUtils::MakeMaker::Config'=> undef,
- 'ExtUtils::MakeMaker::YAML'=> undef,
'ExtUtils::Mkbootstrap' => undef,
'ExtUtils::Mksymlists' => undef,
'ExtUtils::Packlist' => undef,
'ExtUtils::ParseXS' => undef,
+ 'ExtUtils::ParseXS::Constants'=> undef,
+ 'ExtUtils::ParseXS::CountLines'=> undef,
+ 'ExtUtils::ParseXS::Utilities'=> undef,
+ 'ExtUtils::Typemaps' => undef,
+ 'ExtUtils::Typemaps::Cmd'=> undef,
+ 'ExtUtils::Typemaps::InputMap'=> undef,
+ 'ExtUtils::Typemaps::OutputMap'=> undef,
+ 'ExtUtils::Typemaps::Type'=> undef,
'ExtUtils::testlib' => undef,
'Fatal' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'File::Fetch' => undef,
@@ -26512,11 +9486,11 @@
'File::Spec::Unix' => undef,
'File::Spec::VMS' => undef,
'File::Spec::Win32' => undef,
- 'File::Temp' => undef,
+ 'File::Temp' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=File-Temp',
'Filter::Simple' => undef,
'Filter::Util::Call' => undef,
'Getopt::Long' => undef,
- 'HTTP::Tiny' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny',
+ 'HTTP::Tiny' => 'https://github.com/chansen/p5-http-tiny/issues',
'IO::Compress::Adapter::Bzip2'=> undef,
'IO::Compress::Adapter::Deflate'=> undef,
'IO::Compress::Adapter::Identity'=> undef,
@@ -26551,14 +9525,30 @@
'JSON::PP' => undef,
'JSON::PP::Boolean' => undef,
'List::Util' => undef,
- 'List::Util::PP' => undef,
'List::Util::XS' => undef,
'Locale::Codes' => undef,
+ 'Locale::Codes::Constants'=> undef,
'Locale::Codes::Country'=> undef,
+ 'Locale::Codes::Country_Codes'=> undef,
+ 'Locale::Codes::Country_Retired'=> undef,
'Locale::Codes::Currency'=> undef,
+ 'Locale::Codes::Currency_Codes'=> undef,
+ 'Locale::Codes::Currency_Retired'=> undef,
+ 'Locale::Codes::LangExt'=> undef,
+ 'Locale::Codes::LangExt_Codes'=> undef,
+ 'Locale::Codes::LangExt_Retired'=> undef,
+ 'Locale::Codes::LangFam'=> undef,
+ 'Locale::Codes::LangFam_Codes'=> undef,
+ 'Locale::Codes::LangFam_Retired'=> undef,
+ 'Locale::Codes::LangVar'=> undef,
+ 'Locale::Codes::LangVar_Codes'=> undef,
+ 'Locale::Codes::LangVar_Retired'=> undef,
'Locale::Codes::Language'=> undef,
+ 'Locale::Codes::Language_Codes'=> undef,
+ 'Locale::Codes::Language_Retired'=> undef,
'Locale::Codes::Script' => undef,
- 'Locale::Constants' => undef,
+ 'Locale::Codes::Script_Codes'=> undef,
+ 'Locale::Codes::Script_Retired'=> undef,
'Locale::Country' => undef,
'Locale::Currency' => undef,
'Locale::Language' => undef,
@@ -26596,6 +9586,7 @@
'Module::Build::Base' => undef,
'Module::Build::Compat' => undef,
'Module::Build::Config' => undef,
+ 'Module::Build::ConfigData'=> undef,
'Module::Build::Cookbook'=> undef,
'Module::Build::Dumper' => undef,
'Module::Build::ModuleInfo'=> undef,
@@ -26619,6 +9610,8 @@
'Module::Build::Version'=> undef,
'Module::Build::YAML' => undef,
'Module::CoreList' => undef,
+ 'Module::CoreList::TieHashDelta'=> undef,
+ 'Module::CoreList::Utils'=> undef,
'Module::Load' => undef,
'Module::Load::Conditional'=> undef,
'Module::Loaded' => undef,
@@ -26644,8 +9637,8 @@
'Object::Accessor' => undef,
'Package::Constants' => undef,
'Params::Check' => undef,
- 'Parse::CPAN::Meta' => undef,
- 'Perl::OSType' => undef,
+ 'Parse::CPAN::Meta' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Parse-CPAN-Meta',
+ 'Perl::OSType' => 'https://github.com/dagolden/perl-ostype/issues',
'PerlIO::via::QuotedPrint'=> undef,
'Pod::Checker' => undef,
'Pod::Escapes' => undef,
@@ -26659,44 +9652,46 @@
'Pod::Perldoc' => undef,
'Pod::Perldoc::BaseTo' => undef,
'Pod::Perldoc::GetOptsOO'=> undef,
+ 'Pod::Perldoc::ToANSI' => undef,
'Pod::Perldoc::ToChecker'=> undef,
'Pod::Perldoc::ToMan' => undef,
'Pod::Perldoc::ToNroff' => undef,
'Pod::Perldoc::ToPod' => undef,
'Pod::Perldoc::ToRtf' => undef,
+ 'Pod::Perldoc::ToTerm' => undef,
'Pod::Perldoc::ToText' => undef,
'Pod::Perldoc::ToTk' => undef,
'Pod::Perldoc::ToXml' => undef,
'Pod::PlainText' => undef,
'Pod::Select' => undef,
- 'Pod::Simple' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::BlackBox' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::Checker' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::Debug' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::DumpAsText'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::DumpAsXML'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::HTML' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::HTMLBatch'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::HTMLLegacy'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::LinkSection'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::Methody' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::Progress' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::PullParser'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::PullParserEndToken'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::PullParserStartToken'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::PullParserTextToken'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::PullParserToken'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::RTF' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::Search' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::SimpleTree'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::Text' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::TextContent'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::TiedOutFH'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::Transcode'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::TranscodeDumb'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::TranscodeSmart'=> 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::XHTML' => 'mailto:bug-pod-simple at rt.cpan.org',
- 'Pod::Simple::XMLOutStream'=> 'mailto:bug-pod-simple at rt.cpan.org',
+ 'Pod::Simple' => undef,
+ 'Pod::Simple::BlackBox' => undef,
+ 'Pod::Simple::Checker' => undef,
+ 'Pod::Simple::Debug' => undef,
+ 'Pod::Simple::DumpAsText'=> undef,
+ 'Pod::Simple::DumpAsXML'=> undef,
+ 'Pod::Simple::HTML' => undef,
+ 'Pod::Simple::HTMLBatch'=> undef,
+ 'Pod::Simple::HTMLLegacy'=> undef,
+ 'Pod::Simple::LinkSection'=> undef,
+ 'Pod::Simple::Methody' => undef,
+ 'Pod::Simple::Progress' => undef,
+ 'Pod::Simple::PullParser'=> undef,
+ 'Pod::Simple::PullParserEndToken'=> undef,
+ 'Pod::Simple::PullParserStartToken'=> undef,
+ 'Pod::Simple::PullParserTextToken'=> undef,
+ 'Pod::Simple::PullParserToken'=> undef,
+ 'Pod::Simple::RTF' => undef,
+ 'Pod::Simple::Search' => undef,
+ 'Pod::Simple::SimpleTree'=> undef,
+ 'Pod::Simple::Text' => undef,
+ 'Pod::Simple::TextContent'=> undef,
+ 'Pod::Simple::TiedOutFH'=> undef,
+ 'Pod::Simple::Transcode'=> undef,
+ 'Pod::Simple::TranscodeDumb'=> undef,
+ 'Pod::Simple::TranscodeSmart'=> undef,
+ 'Pod::Simple::XHTML' => undef,
+ 'Pod::Simple::XMLOutStream'=> undef,
'Pod::Text' => undef,
'Pod::Text::Color' => undef,
'Pod::Text::Overstrike' => undef,
@@ -26704,12 +9699,11 @@
'Pod::Usage' => undef,
'Safe' => undef,
'Scalar::Util' => undef,
- 'Scalar::Util::PP' => undef,
'SelfLoader' => undef,
- 'Shell' => undef,
+ 'Socket' => undef,
'Storable' => undef,
'Sys::Syslog' => undef,
- 'Sys::Syslog::win32::Win32'=> 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',
@@ -26775,9 +9769,9 @@
'Tie::File' => undef,
'Tie::RefHash' => undef,
'Time::HiRes' => undef,
- 'Time::Local' => undef,
+ 'Time::Local' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=Time-Local',
'Time::Piece' => undef,
- 'Time::Piece::Seconds' => undef,
+ 'Time::Seconds' => undef,
'Unicode::Collate' => undef,
'Unicode::Collate::CJK::Big5'=> undef,
'Unicode::Collate::CJK::GB2312'=> undef,
@@ -26785,15 +9779,15 @@
'Unicode::Collate::CJK::Korean'=> undef,
'Unicode::Collate::CJK::Pinyin'=> undef,
'Unicode::Collate::CJK::Stroke'=> undef,
+ 'Unicode::Collate::CJK::Zhuyin'=> undef,
'Unicode::Collate::Locale'=> undef,
'Unicode::Normalize' => undef,
'Unicode::UCD' => undef,
- 'Version::Requirements' => undef,
+ 'VMS::Stdio' => undef,
'Win32' => undef,
'Win32API::File' => undef,
'Win32API::File::ExtUtils::Myconst2perl'=> undef,
- 'XSLoader' => undef,
- 'XSLoader::XSLoader' => undef,
+ 'XSLoader' => 'https://rt.perl.org/rt3/Search/Results.html?Query=Queue=\'perl5\' AND Content LIKE \'module=XSLoader\' AND (Status=\'open\' OR Status=\'new\' OR Status=\'stalled\')',
'autodie' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'autodie::exception' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'autodie::exception::system'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
@@ -26810,31 +9804,38 @@
'inc::latest' => undef,
'lib' => undef,
'parent' => undef,
+ 'perlfaq' => 'https://github.com/perl-doc-cats/perlfaq/issues',
'threads' => undef,
'threads::shared' => undef,
'version' => undef,
+ 'warnings' => undef,
+ 'warnings::register' => undef,
);
# Create aliases with trailing zeros for $] use
$released{'5.000'} = $released{5};
-$released{'5.010000'} = $released{5.01};
-$released{'5.011000'} = $released{5.011};
-$released{'5.012000'} = $released{5.012};
-$released{'5.013000'} = $released{5.013};
-$released{'5.014000'} = $released{5.014};
-
$version{'5.000'} = $version{5};
-$version{'5.010000'} = $version{5.01};
-$version{'5.011000'} = $version{5.011};
-$version{'5.012000'} = $version{5.012};
-$version{'5.013000'} = $version{5.013};
-$version{'5.014000'} = $version{5.014};
-$deprecated{'5.011000'} = $deprecated{5.011};
-$deprecated{'5.012000'} = $deprecated{5.012};
-$deprecated{'5.013000'} = $deprecated{5.013};
-$deprecated{'5.014000'} = $deprecated{5.014};
+_create_aliases(\%released);
+_create_aliases(\%version);
+_create_aliases(\%deprecated);
+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};
+ }
+ }
+}
+
1;
__END__
Property changes on: trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pod (from rev 6437, vendor/perl/5.18.1/dist/Module-CoreList/lib/Module/CoreList.pod)
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pod (rev 0)
+++ trunk/contrib/perl/dist/Module-CoreList/lib/Module/CoreList.pod 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,223 @@
+=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
+
+ 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. Returns that perl version if it exists or C<undef>
+otherwise.
+
+=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::released>
+
+Keyed on perl version this contains ISO
+formatted versions of the release dates, as gleaned from L<perlhist>.
+
+=item C<%Module::CoreList::families>
+
+New, in 1.96, a hash that
+clusters known perl releases by their major versions.
+
+=item C<%Module::CoreList::deprecated>
+
+A hash of hashes keyed on perl version and on module name.
+If a module is defined it indicates that that module is
+deprecated in that perl version and is scheduled for removal
+from core at some future point.
+
+=item C<%Module::CoreList::upstream>
+
+A hash that contains information on where patches should be directed
+for each core module.
+
+UPSTREAM indicates where patches should go. C<undef> implies
+that this hasn't been discussed for the module at hand.
+C<blead> indicates that the copy of the module in the blead
+sources is to be considered canonical, C<cpan> means that the
+module on CPAN is to be patched first. C<first-come> means
+that blead can be patched freely if it is in sync with the
+latest release on CPAN.
+
+=item C<%Module::CoreList::bug_tracker>
+
+A hash that contains information on the appropriate bug tracker
+for each core module.
+
+BUGS is an email or url to post bug reports. For modules with
+UPSTREAM => 'blead', use perl5-porters at perl.org. rt.cpan.org
+appears to automatically provide a URL for CPAN modules; any value
+given here overrides the default:
+http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName
+
+=back
+
+=head1 CAVEATS
+
+Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07,
+5.004, 5.004_05, 5.005, 5.005_03, 5.005_04, 5.6.0, 5.6.1, 5.6.2, 5.7.3,
+5.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.8.5, 5.8.6, 5.8.7, 5.8.8, 5.8.9,
+5.9.0, 5.9.1, 5.9.2, 5.9.3, 5.9.4, 5.9.5, 5.10.0, 5.10.1, 5.11.0, 5.11.1,
+5.11.2, 5.11.3, 5.11.4, 5.11.5, 5.12.0, 5.12.1, 5.12.2, 5.12.3, 5.12.4,
+5.12.5, 5.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 5.13.5, 5.13.6, 5.13.7,
+5.13.8, 5.13.9, 5.13.10, 5.13.11, 5.14.0, 5.14.1, 5.14.2 5.14.3, 5.14.4,
+5.15.0, 5.15.1, 5.15.2, 5.15.3, 5.15.4, 5.15.5, 5.15.6, 5.15.7, 5.15.8,
+5.15.9, 5.16.0, 5.16.1, 5.16.2, 5.16.3, 5.17.0, 5.17.1, 5.17.2, 5.17.3,
+5.17.4, 5.17.5, 5.17.6, 5.17.7, 5.17.8, 5.17.9, 5.17.10, 5.17.11, 5.18.0,
+5.19.0, 5.19.1, 5.19.2, 5.19.3 and 5.18.1 releases of perl.
+
+=head1 HISTORY
+
+Moved to Changes file.
+
+=head1 AUTHOR
+
+Richard Clamp E<lt>richardc at unixbeard.netE<gt>
+
+Currently maintained by the perl 5 porters E<lt>perl5-porters at 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
Index: trunk/contrib/perl/dist/Module-CoreList/t/corelist.t
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/t/corelist.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/t/corelist.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Module-CoreList/t/corelist.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Module-CoreList/t/deprecated.t
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/t/deprecated.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/t/deprecated.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,6 +1,6 @@
#!perl -w
use strict;
-use Test::More tests => 7;
+use Test::More tests => 9;
require_ok('Module::CoreList');
@@ -11,7 +11,7 @@
);
ok(! Module::CoreList::is_deprecated('File::Spec'),
- "File::Spec not deprecated in 5.011000 (function)"
+ "File::Spec currently is not deprecated (function)"
);
ok(exists $Module::CoreList::deprecated{5.011000}{'Switch'},
@@ -25,3 +25,11 @@
ok(! Module::CoreList::is_deprecated('Switch', 5.010000),
"Switch not deprecated in 5.010000 (function w/ perl version)"
);
+
+is(Module::CoreList::deprecated_in('Switch'), 5.011000,
+ "Switch was deprecated in 5.011000 (deprecated_in)"
+);
+
+ok(! Module::CoreList::deprecated_in('File::Spec'),
+ "File::Spec currently is not deprecated (deprecated_in)"
+);
Property changes on: trunk/contrib/perl/dist/Module-CoreList/t/deprecated.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Module-CoreList/t/find_modules.t
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/t/find_modules.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/t/find_modules.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -19,5 +19,6 @@
[ qw(Test::Harness::Assert Test::Harness::Straps) ],
'qr/Test::H.*::.*s/ at 5.006001 and 5.007003');
-is_deeply([ Module::CoreList::find_modules(qr/Module::CoreList/) ], [ qw(Module::CoreList) ],
+is_deeply([ Module::CoreList::find_modules(qr/Module::CoreList/) ],
+ [ qw(Module::CoreList Module::CoreList::TieHashDelta Module::CoreList::Utils) ],
'Module::CoreList functional' );
Property changes on: trunk/contrib/perl/dist/Module-CoreList/t/find_modules.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Module-CoreList/t/pod.t
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/t/pod.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Module-CoreList/t/pod.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Module-CoreList/t/pod.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Module-CoreList/t/utils.t (from rev 6437, vendor/perl/5.18.1/dist/Module-CoreList/t/utils.t)
===================================================================
--- trunk/contrib/perl/dist/Module-CoreList/t/utils.t (rev 0)
+++ trunk/contrib/perl/dist/Module-CoreList/t/utils.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+use Test::More tests => 9;
+
+BEGIN { require_ok('Module::CoreList::Utils'); }
+
+ok( defined $Module::CoreList::Utils::utilities{5}{a2p}, '5 had a2p' );
+is( Module::CoreList::Utils->first_release('a2p'), 5, 'a2p first released in 5' );
+is( Module::CoreList::Utils::first_release('a2p'), 5, 'a2p first released in 5' );
+is( Module::CoreList::Utils->first_release('corelist'), 5.008009, 'corelist with v5.8.9');
+is( Module::CoreList::Utils->first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
+is( Module::CoreList::Utils::first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
+{
+ my @expected = qw(a2p c2ph cppstdin find2perl h2xs pstruct s2p);
+ {
+ my @foo = Module::CoreList::Utils->utilities(5.001);
+ is_deeply( \@foo, \@expected, '5.001 utils all present and correct' );
+ }
+ {
+ my @foo = Module::CoreList::Utils::utilities(5.001);
+ is_deeply( \@foo, \@expected, '5.001 utils all present and correct' );
+ }
+}
Modified: trunk/contrib/perl/dist/Net-Ping/Changes
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,9 +1,63 @@
CHANGES
-------
+2.41 Mar 17 09:35 2013
+ Bugfixes
+ - Windows Vista does not appear to support inet_ntop(). It seems to
+ have InetNtop() instead. So, working around by using getnameinfo()
+ and passing in the NI_NUMERICHOST to get an IP address.
+ Features
+ - Change Net::Ping to use Time::HiRes::time() instead of CORE::time()
+ by default. For most successful cases, CORE::time() returned zero.
+2.40 Mar 15 11:20 2013
+ Bugfixes
+ - several fixes to tests to stop the black smoke on Win32's
+ and Cygwin since the core updated the module to Test::More.
+ I had planned a later release, but all the black smoke is
+ forcing a release.
+ - fixes to some skips in tests that were still using the
+ Test style skip's.
+ - Documentation fix for https://rt.cpan.org/Ticket/Display.html?id=48014.
+ Thanks to Keith Taylor <keith at supanet.net.uk>
+ - Instead of using a hard-coded TOS value, import IP_TOS from
+ Socket. This fixes an outstanding bug on Solaris which uses a
+ different value for IP_TOS in it headers than Linux. I'm assuming
+ other OS's were fixed with this change as well.
+ Features
+ - added TTL handling for icmp pings to allow traceroute like
+ applications to be built with Net::Ping. Thanks to
+ <rolek at bokxing.nl> for the patch and tests!
+
+ Internals
+ - replaced SOL_IP with IPPROTO_IP. SOL_IP is not portable and was
+ hard-coded anyway.
+ - added IPPROTO_IP, IP_TOS, IP_TTL, and AF_INET to the list of Socket
+ constants imported.
+ - removed some hard-coded constants.
+ - converted all calls to inet_ntoa() to inet_ntop() in preparation
+ for further ipv6 updates.
+
+ Infrastructure
+ - Makefile.PL updated to require Test::More, Time::HiRes, and a
+ recent Socket
+ - several changes for github hosting
+ - add a .gitignore file
+ - added a .travis.yml file to allow CI testing with changes pushed
+ to github
+ - replaced the README with a README.md which displays the
+ Travis CI build status on github.
+
+
+2.39 Mar 13 09:25 2013
+ - patch from Matthew Musgrove to resolve RT #45812. Thanks!
+ - pulled in several changes from the Perl core
+
+2.36 Jun 08 12:00 2009
+ - release to include a few fixes from the Perl core
+
2.35 Feb 08 14:42 2008
- - Patch in Perl change #33242 by Nicholas Clark
- <http://public.activestate.com/cgi-bin/perlbrowse/p/33242>
+ - Patch in Perl change #33242 by Nicholas Clark
+ <http://perl5.git.perl.org/perl.git/commit/5d6b07c5a4c042580b85248d570ee299fd102a79>
2.34 Dec 19 08:51 2007
- Release primarily to prevent problems with the Perl core in
Property changes on: trunk/contrib/perl/dist/Net-Ping/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/lib/Net/Ping.pm
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/lib/Net/Ping.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/lib/Net/Ping.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -8,19 +8,17 @@
$def_timeout $def_proto $def_factor
$max_datasize $pingstring $hires $source_verify $syn_forking);
use Fcntl qw( F_GETFL F_SETFL O_NONBLOCK );
-use Socket qw( SOCK_DGRAM SOCK_STREAM SOCK_RAW PF_INET SOL_SOCKET SO_ERROR
- inet_aton inet_ntoa sockaddr_in );
+use Socket qw( SOCK_DGRAM SOCK_STREAM SOCK_RAW PF_INET SOL_SOCKET SO_ERROR IPPROTO_IP IP_TOS IP_TTL
+ inet_aton getnameinfo NI_NUMERICHOST sockaddr_in );
use POSIX qw( ENOTCONN ECONNREFUSED ECONNRESET EINPROGRESS EWOULDBLOCK EAGAIN WNOHANG );
use FileHandle;
use Carp;
+use Time::HiRes;
@ISA = qw(Exporter);
@EXPORT = qw(pingecho);
-$VERSION = "2.38";
+$VERSION = "2.41";
-sub SOL_IP { 0; };
-sub IP_TOS { 1; };
-
# Constants
$def_timeout = 5; # Default timeout to wait for a reply
@@ -87,6 +85,7 @@
$data_size, # Optional additional bytes of data
$device, # Optional device to use
$tos, # Optional ToS to set
+ $ttl, # Optional TTL to set
) = @_;
my $class = ref($this) || $this;
my $self = {};
@@ -110,6 +109,12 @@
$self->{"tos"} = $tos;
+ if ($self->{"proto"} eq 'icmp') {
+ croak('TTL must be from 0 to 255')
+ if ($ttl && ($ttl < 0 || $ttl > 255));
+ $self->{"ttl"} = $ttl;
+ }
+
$min_datasize = ($proto eq "udp") ? 1 : 0; # Determine data size
$data_size = $min_datasize unless defined($data_size) && $proto ne "tcp";
croak("Data for ping must be from $min_datasize to $max_datasize bytes")
@@ -143,7 +148,7 @@
or croak "error binding to device $self->{'device'} $!";
}
if ($self->{'tos'}) {
- setsockopt($self->{"fh"}, SOL_IP, IP_TOS(), pack("I*", $self->{'tos'}))
+ setsockopt($self->{"fh"}, IPPROTO_IP, IP_TOS, pack("I*", $self->{'tos'}))
or croak "error configuring tos to $self->{'tos'} $!";
}
}
@@ -161,9 +166,13 @@
or croak "error binding to device $self->{'device'} $!";
}
if ($self->{'tos'}) {
- setsockopt($self->{"fh"}, SOL_IP, IP_TOS(), pack("I*", $self->{'tos'}))
+ setsockopt($self->{"fh"}, IPPROTO_IP, IP_TOS, pack("I*", $self->{'tos'}))
or croak "error configuring tos to $self->{'tos'} $!";
}
+ if ($self->{'ttl'}) {
+ setsockopt($self->{"fh"}, IPPROTO_IP, IP_TTL, pack("I*", $self->{'ttl'}))
+ or croak "error configuring ttl to $self->{'ttl'} $!";
+ }
}
elsif ($self->{"proto"} eq "tcp" || $self->{"proto"} eq "stream")
{
@@ -304,13 +313,12 @@
# Description: allows the module to use milliseconds as returned by
# the Time::HiRes module
-$hires = 0;
+$hires = 1;
sub hires
{
my $self = shift;
$hires = 1 unless defined
($hires = ((defined $self) && (ref $self)) ? shift() : $self);
- require Time::HiRes if $hires;
}
sub time
@@ -392,7 +400,7 @@
croak("Unknown protocol \"$self->{proto}\" in ping()");
}
- return wantarray ? ($ret, &time() - $ping_time, inet_ntoa($ip)) : $ret;
+ return wantarray ? ($ret, &time() - $ping_time, $self->ntop($ip)) : $ret;
}
# Uses Net::Ping::External to do an external ping.
@@ -410,6 +418,8 @@
use constant ICMP_ECHOREPLY => 0; # ICMP packet types
use constant ICMP_UNREACHABLE => 3; # ICMP packet types
use constant ICMP_ECHO => 8;
+use constant ICMP_TIME_EXCEEDED => 11; # ICMP packet types
+use constant ICMP_PARAMETER_PROBLEM => 12; # ICMP packet types
use constant ICMP_STRUCT => "C2 n3 A"; # Structure of a minimal ICMP packet
use constant SUBCODE => 0; # No ICMP subcode for ECHO and ECHOREPLY
use constant ICMP_FLAGS => 0; # No special flags for send or recv
@@ -489,14 +499,17 @@
$self->{"from_ip"} = $from_ip;
$self->{"from_type"} = $from_type;
$self->{"from_subcode"} = $from_subcode;
- if (($from_pid == $self->{"pid"}) && # Does the packet check out?
- (! $source_verify || (inet_ntoa($from_ip) eq inet_ntoa($ip))) &&
- ($from_seq == $self->{"seq"})) {
+ next if ($from_pid != $self->{"pid"});
+ next if ($from_seq != $self->{"seq"});
+ if (! $source_verify || ($self->ntop($from_ip) eq $self->ntop($ip))) { # Does the packet check out?
if ($from_type == ICMP_ECHOREPLY) {
$ret = 1;
- $done = 1;
+ $done = 1;
} elsif ($from_type == ICMP_UNREACHABLE) {
$done = 1;
+ } elsif ($from_type == ICMP_TIME_EXCEEDED) {
+ $ret = 0;
+ $done = 1;
}
}
} else { # Oops, timed out
@@ -510,7 +523,7 @@
my ($self) = @_;
my $ip = $self->{"from_ip"} || "";
$ip = "\0\0\0\0" unless 4 == length $ip;
- return (inet_ntoa($ip),($self->{"from_type"} || 0), ($self->{"from_subcode"} || 0));
+ return ($self->ntop($ip),($self->{"from_type"} || 0), ($self->{"from_subcode"} || 0));
}
# Description: Do a checksum on the message. Basically sum all of
@@ -593,7 +606,7 @@
or croak("error binding to device $self->{'device'} $!");
}
if ($self->{'tos'}) {
- setsockopt($self->{"fh"}, SOL_IP, IP_TOS(), pack("I*", $self->{'tos'}))
+ setsockopt($self->{"fh"}, IPPROTO_IP, IP_TOS, pack("I*", $self->{'tos'}))
or croak "error configuring tos to $self->{'tos'} $!";
}
};
@@ -1037,7 +1050,7 @@
or croak("error binding to device $self->{'device'} $!");
}
if ($self->{'tos'}) {
- setsockopt($fh, SOL_IP, IP_TOS(), pack("I*", $self->{'tos'}))
+ setsockopt($fh, IPPROTO_IP, IP_TOS, pack("I*", $self->{'tos'}))
or croak "error configuring tos to $self->{'tos'} $!";
}
# Set O_NONBLOCK property on filehandle
@@ -1106,7 +1119,7 @@
or croak("error binding to device $self->{'device'} $!");
}
if ($self->{'tos'}) {
- setsockopt($self->{"fh"}, SOL_IP, IP_TOS(), pack("I*", $self->{'tos'}))
+ setsockopt($self->{"fh"}, IPPROTO_IP, IP_TOS, pack("I*", $self->{'tos'}))
or croak "error configuring tos to $self->{'tos'} $!";
}
@@ -1247,7 +1260,7 @@
}
# Everything passed okay, return the answer
return wantarray ?
- ($entry->[0], &time() - $entry->[3], inet_ntoa($entry->[1]))
+ ($entry->[0], &time() - $entry->[3], $self->ntop($entry->[1]))
: $entry->[0];
} else {
warn "Corrupted SYN entry: unknown fd [$fd] ready!";
@@ -1283,7 +1296,7 @@
# Host passed as arg
if (my $entry = $self->{"good"}->{$host}) {
delete $self->{"good"}->{$host};
- return ($entry->[0], &time() - $entry->[3], inet_ntoa($entry->[1]));
+ return ($entry->[0], &time() - $entry->[3], $self->ntop($entry->[1]));
}
}
@@ -1327,7 +1340,7 @@
# And wait for the next winner
next;
}
- return ($entry->[0], &time() - $entry->[3], inet_ntoa($entry->[1]));
+ return ($entry->[0], &time() - $entry->[3], $self->ntop($entry->[1]));
}
} else {
# Should never happen
@@ -1374,6 +1387,8 @@
delete $self->{"syn"};
} elsif ($self->{"proto"} eq "tcp") {
# The connection will already be closed
+ } elsif ($self->{"proto"} eq "external") {
+ # Nothing to close
} else {
$self->{"fh"}->close();
}
@@ -1388,7 +1403,24 @@
return $self->{port_num};
}
+sub ntop {
+ my($self, $ip) = @_;
+ # Vista doesn't define a inet_ntop. It has InetNtop instead.
+ # Not following ANSI... priceless. getnameinfo() is defined
+ # for Windows 2000 and later, so that may be the choice.
+
+ # Any port will work, even undef, but this will work for now.
+ # Socket warns when undef is passed in, but it still works.
+ my $port = getservbyname('echo', 'udp');
+ my $sockaddr = sockaddr_in $port, $ip;
+ my ($error, $address) = getnameinfo($sockaddr, NI_NUMERICHOST);
+ if($error) {
+ croak $error;
+ }
+ return $address;
+}
+
1;
__END__
@@ -1417,7 +1449,7 @@
$p = Net::Ping->new("tcp", 2);
# Try connecting to the www port instead of the echo port
- $p->port_number(getservbyname("http", "tcp"));
+ $p->port_number(scalar(getservbyname("http", "tcp")));
while ($stop_time > time())
{
print "$host not reachable ", scalar(localtime()), "\n"
@@ -1509,7 +1541,7 @@
=over 4
-=item Net::Ping->new([$proto [, $def_timeout [, $bytes [, $device [, $tos ]]]]]);
+=item Net::Ping->new([$proto [, $def_timeout [, $bytes [, $device [, $tos [, $ttl ]]]]]]);
Create a new ping object. All of the parameters are optional. $proto
specifies the protocol to use when doing a ping. The current choices
@@ -1533,6 +1565,8 @@
If $tos is given, this ToS is configured into the socket.
+For icmp, $ttl can be specified to set the TTL of the outgoing packet.
+
=item $p->ping($host [, $timeout]);
Ping the remote host and wait for a response. $host can be either the
Property changes on: trunk/contrib/perl/dist/Net-Ping/lib/Net/Ping.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/100_load.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/100_load.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/100_load.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/100_load.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/t/110_icmp_inst.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/110_icmp_inst.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/110_icmp_inst.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -16,7 +16,7 @@
SKIP: {
skip "icmp ping requires root privileges.", 1
if ($> and $^O ne 'VMS' and $^O ne 'cygwin')
- or ($^O eq 'MSWin32'
+ or (($^O eq 'MSWin32' or $^O eq 'cygwin')
and !IsAdminUser())
or ($^O eq 'VMS'
and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/));
@@ -25,7 +25,7 @@
}
sub IsAdminUser {
- return unless $^O eq 'MSWin32';
+ return unless $^O eq 'MSWin32' or $^O eq 'cygwin';
return unless eval { require Win32 };
return unless defined &Win32::IsAdminUser;
return Win32::IsAdminUser();
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/110_icmp_inst.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/120_udp_inst.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/120_udp_inst.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/120_udp_inst.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/120_udp_inst.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/130_tcp_inst.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/130_tcp_inst.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/130_tcp_inst.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/130_tcp_inst.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/140_stream_inst.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/140_stream_inst.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/140_stream_inst.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/140_stream_inst.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/150_syn_inst.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/150_syn_inst.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/150_syn_inst.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/150_syn_inst.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/190_alarm.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/190_alarm.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/190_alarm.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/190_alarm.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/t/200_ping_tcp.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/200_ping_tcp.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/200_ping_tcp.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -50,7 +50,7 @@
# Test a few remote servers
# Hopefully they are up when the tests are run.
-foreach (qw(www.geocities.com ftp.geocities.com
+foreach (qw(www.geocities.com www.wisc.edu
www.freeservers.com ftp.freeservers.com
yahoo.com www.yahoo.com www.about.com)) {
isnt($p->ping($_), 0, "Can ping $_");
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/200_ping_tcp.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/t/250_ping_hires.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/250_ping_hires.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/250_ping_hires.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -30,7 +30,7 @@
isa_ok($p, 'Net::Ping', 'new() worked');
-is($Net::Ping::hires, 0, 'Default is to not use Time::HiRes');
+is($Net::Ping::hires, 1, 'Default is to use Time::HiRes');
$p -> hires();
isnt($Net::Ping::hires, 0, 'Enabled hires');
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/250_ping_hires.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/300_ping_stream.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/300_ping_stream.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/300_ping_stream.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/300_ping_stream.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/t/400_ping_syn.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/400_ping_syn.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/400_ping_syn.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -46,7 +46,6 @@
"www.yahoo.com." => 1,
"www.about.com." => 1,
"www.microsoft.com." => 1,
- "127.0.0.1" => 1,
);
}
@@ -78,7 +77,7 @@
# ping() does dns resolution and
# only sends the SYN at this point
Alarm(50); # (Plenty for a DNS lookup)
- is($p->ping($host), 1, "Can reach $host $p->{bad}->{$host}");
+ is($p->ping($host), 1, "Can reach $host [" . ($p->{bad}->{$host} || "") . "]");
}
Alarm(20);
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/400_ping_syn.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/t/410_syn_host.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/410_syn_host.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/410_syn_host.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -79,7 +79,7 @@
# ping() does dns resolution and
# only sends the SYN at this point
Alarm(50); # (Plenty for a DNS lookup)
- is($p->ping($host), 1, "Can reach $host $p->{bad}->{$host}");
+ is($p->ping($host), 1, "Can reach $host [" . ($p->{bad}->{$host} || "") . "]");
}
Alarm(20);
@@ -86,7 +86,7 @@
foreach my $host (sort keys %webs) {
my $on = $p->ack($host);
if ($on) {
- is($webs{$host}, 1, "supposed to be up: http://$host/");
+ is($webs{$host}, 1, "supposed to be up: http://$host/ [" . ($p->{bad}->{$host} || "") . "]");
} else {
is($webs{$host}, 0, "supposed to be down: http://$host/ [" . ($p->{bad}->{$host} || "") . "]");
}
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/410_syn_host.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Net-Ping/t/450_service.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/450_service.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/450_service.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/450_service.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/t/500_ping_icmp.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/500_ping_icmp.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/500_ping_icmp.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -16,12 +16,12 @@
SKIP: {
skip "icmp ping requires root privileges.", 1
if ($> and $^O ne 'VMS' and $^O ne 'cygwin')
- or ($^O eq 'MSWin32'
+ or (($^O eq 'MSWin32' or $^O eq 'cygwin')
and !IsAdminUser())
or ($^O eq 'VMS'
and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/));
my $p = new Net::Ping "icmp";
- is($p->ping("127.0.0.1"), 1);
+ is($p->ping("127.0.0.1"), 1, "icmp ping 127.0.0.1");
}
sub IsAdminUser {
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/500_ping_icmp.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Net-Ping/t/510_ping_udp.t
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/510_ping_udp.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Net-Ping/t/510_ping_udp.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,28 +5,20 @@
sub isWindowsVista {
return unless $^O eq 'MSWin32' or $^O eq "cygwin";
return unless eval { require Win32 };
- return unless defined &Win32::GetOSName;
- return Win32::GetOSName() eq "WinVista";
-}
+ return unless defined &Win32::GetOSVersion();
-BEGIN {
- unless (eval "require Socket") {
- print "1..0 \# Skip: no Socket\n";
- exit;
- }
- unless (getservbyname('echo', 'udp')) {
- print "1..0 \# Skip: no udp echo port\n";
- exit;
- }
+ #is this Vista or later?
+ my ($string, $major, $minor, $build, $id) = Win32::GetOSVersion();
+ return $build >= 6;
- if(isWindowsVista()) {
- print "1..0 \# Skip: udp ping blocked by Vista's default settings\n";
- exit;
- }
}
use Test::More tests => 2;
BEGIN {use_ok('Net::Ping')};
-my $p = new Net::Ping "udp";
-is($p->ping("127.0.0.1"), 1);
+SKIP: {
+ skip "No udp echo port", 1 unless getservbyname('echo', 'udp');
+ skip "udp ping blocked by Window's default settings", 1 if isWindowsVista();
+ my $p = new Net::Ping "udp";
+ is($p->ping("127.0.0.1"), 1);
+}
Property changes on: trunk/contrib/perl/dist/Net-Ping/t/510_ping_udp.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Net-Ping/t/520_icmp_ttl.t (from rev 6437, vendor/perl/5.18.1/dist/Net-Ping/t/520_icmp_ttl.t)
===================================================================
--- trunk/contrib/perl/dist/Net-Ping/t/520_icmp_ttl.t (rev 0)
+++ trunk/contrib/perl/dist/Net-Ping/t/520_icmp_ttl.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,47 @@
+# Test to perform icmp protocol testing.
+# Root access is required.
+
+BEGIN {
+ unless (eval "require Socket") {
+ print "1..0 \# Skip: no Socket\n";
+ exit;
+ }
+}
+
+use Test::More qw(no_plan);
+BEGIN {use_ok('Net::Ping')};
+
+SKIP: {
+ skip "icmp ping requires root privileges.", 1
+ if ($> and $^O ne 'VMS' and $^O ne 'cygwin')
+ or (($^O eq 'MSWin32' or $^O eq 'cygwin')
+ and !IsAdminUser())
+ or ($^O eq 'VMS'
+ and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/));
+ my $p = new Net::Ping ("icmp",undef,undef,undef,undef,undef);
+ isa_ok($p, 'Net::Ping');
+ ok $p->ping("127.0.0.1");
+ $p->close();
+ $p = new Net::Ping ("icmp",undef,undef,undef,undef,0);
+ ok $p->ping("127.0.0.1");
+ $p->close();
+ $p = undef();
+ $p = new Net::Ping ("icmp",undef,undef,undef,undef,1);
+ isa_ok($p, 'Net::Ping');
+ $p = undef();
+ $p = eval 'new Net::Ping ("icmp",undef,undef,undef,undef,-1)';
+ ok(!defined($p));
+ $p = undef();
+ $p = eval 'new Net::Ping ("icmp",undef,undef,undef,undef,256)';
+ ok(!defined($p));
+ $p = new Net::Ping ("icmp",undef,undef,undef,undef,10);
+ ok $p->ping("127.0.0.1");
+ $p->close();
+}
+
+sub IsAdminUser {
+ return unless $^O eq 'MSWin32' or $^O eq "cygwin";
+ return unless eval { require Win32 };
+ return unless defined &Win32::IsAdminUser;
+ return Win32::IsAdminUser();
+}
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc.pm
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/lib/Pod/Perldoc.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/t/01_about_verbose.t
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/t/01_about_verbose.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/t/01_about_verbose.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/t/01_about_verbose.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/t/checkerbasic.t
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/t/checkerbasic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/t/checkerbasic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/t/checkerbasic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/t/perldocbasic.t
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/t/perldocbasic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/t/perldocbasic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/t/perldocbasic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Pod-Perldoc/t/textbasic.t
===================================================================
--- trunk/contrib/perl/dist/Pod-Perldoc/t/textbasic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Pod-Perldoc/t/textbasic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Pod-Perldoc/t/textbasic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Safe/Changes
===================================================================
--- trunk/contrib/perl/dist/Safe/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,25 @@
+2.35 Thu Feb 21 2013
+ - localize %SIG in the Safe compartment
+ - actually check that we call execution methods on a Safe object
+
+2.34
+ - Test bug #111462, Safe + %^H + disallowed ops (Father Chrysostomos)
+ cf Perl 5 change 42440e3c68e8bafb7e2a74763360939de0fad6be
+
+2.33 Tue Apr 3 2012
+ - Don’t eval code under ‘no strict’ (Father Chrysostomos)
+ cf. Perl 5 change 25dc25e774abbe993644899cf4d9f9925a9fb9a8
+
+2.32 Sat Mar 31 2012
+ - Make Safe play nice with Devel::Cover
+
+2.31 Fri Jan 20 2012
+ - Now need to use code points above 255 to get SWASHNEW to load
+
+2.30 Tue Dec 6 2011
+ - Fix bad interaction with loading Tie::Hash::NamedCapture
+ on perls >= 5.14.0 [rt.cpan.org #72872]
+
2.29 Sun Oct 31 2010
- Add &version::vxs::VCMP to Safe's default share
Property changes on: trunk/contrib/perl/dist/Safe/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Safe/MANIFEST
===================================================================
--- trunk/contrib/perl/dist/Safe/MANIFEST 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/MANIFEST 2013-12-02 21:27:05 UTC (rev 6440)
@@ -7,9 +7,12 @@
t/safe2.t
t/safe3.t
t/safeload.t
+t/safenamedcap.t
t/safeops.t
+t/saferegexp.t
t/safesort.t
t/safeuniversal.t
t/safeutf8.t
t/safewrap.t
META.yml Module meta-data (added by MakeMaker)
+META.json Module JSON meta-data (added by MakeMaker)
Property changes on: trunk/contrib/perl/dist/Safe/MANIFEST
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Safe/META.yml
===================================================================
--- trunk/contrib/perl/dist/Safe/META.yml 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/META.yml 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,20 +1,21 @@
---- #YAML:1.0
-name: Safe
-version: 2.29
-abstract: ~
-author: []
-license: unknown
-distribution_type: module
+---
+abstract: unknown
+author:
+ - unknown
+build_requires:
+ ExtUtils::MakeMaker: 0
configure_requires:
- ExtUtils::MakeMaker: 0
-build_requires:
- ExtUtils::MakeMaker: 0
-requires: {}
+ ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150'
+license: unknown
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: 1.4
+name: Safe
no_index:
- directory:
- - t
- - inc
-generated_by: ExtUtils::MakeMaker version 6.55_02
-meta-spec:
- url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ directory:
+ - t
+ - inc
+requires: {}
+version: 2.35
Property changes on: trunk/contrib/perl/dist/Safe/META.yml
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/Makefile.PL
===================================================================
--- trunk/contrib/perl/dist/Safe/Makefile.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/Makefile.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/Makefile.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/README
===================================================================
--- trunk/contrib/perl/dist/Safe/README 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/README 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/README
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Safe/Safe.pm
===================================================================
--- trunk/contrib/perl/dist/Safe/Safe.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/Safe.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,10 +1,9 @@
package Safe;
use 5.003_11;
-use strict;
use Scalar::Util qw(reftype refaddr);
-$Safe::VERSION = "2.29";
+$Safe::VERSION = "2.35";
# *** Don't declare any lexicals above this point ***
#
@@ -22,10 +21,11 @@
# Uses a closure (on $__ExPr__) to pass in the code to be executed.
# (eval on one line to keep line numbers as expected by caller)
eval sprintf
- 'package %s; %s strict; sub { @_=(); eval q[my $__ExPr__;] . $__ExPr__; }',
- $_[0], $_[1] ? 'use' : 'no';
+ 'package %s; %s sub { @_=(); eval q[local *SIG; my $__ExPr__;] . $__ExPr__; }',
+ $_[0], $_[1] ? 'use strict;' : '';
}
+use strict;
use Carp;
BEGIN { eval q{
use Carp::Heavy;
@@ -61,12 +61,13 @@
# Safe is loaded. Then we can add utf8::SWASHNEW to $default_share.
require utf8;
# we must ensure that utf8_heavy.pl, where SWASHNEW is defined, is loaded
-# but without depending on knowledge of that implementation detail.
-# This code (//i on a unicode string) ensures utf8 is fully loaded
-# and also loads the ToFold SWASH.
+# but without depending on too much knowledge of that implementation detail.
+# This code (//i on a unicode string) should ensure utf8 is fully loaded
+# and also loads the ToFold SWASH, unless things change so that these
+# particular code points don't cause it to load.
# (Swashes are cached internally by perl in PL_utf8_* variables
# independent of being inside/outside of Safe. So once loaded they can be)
-do { my $a = pack('U',0xC4); my $b = chr 0xE4; utf8::upgrade $b; $a =~ /$b/i };
+do { my $a = pack('U',0x100); my $b = chr 0x101; utf8::upgrade $b; $a =~ /$b/i };
# now we can safely include utf8::SWASHNEW in $default_share defined below.
my $default_root = 0;
@@ -102,15 +103,6 @@
&re::regname
&re::regnames
&re::regnames_count
- &Tie::Hash::NamedCapture::FETCH
- &Tie::Hash::NamedCapture::STORE
- &Tie::Hash::NamedCapture::DELETE
- &Tie::Hash::NamedCapture::CLEAR
- &Tie::Hash::NamedCapture::EXISTS
- &Tie::Hash::NamedCapture::FIRSTKEY
- &Tie::Hash::NamedCapture::NEXTKEY
- &Tie::Hash::NamedCapture::SCALAR
- &Tie::Hash::NamedCapture::flags
&UNIVERSAL::DOES
&version::()
&version::new
@@ -137,7 +129,20 @@
&version::vxs::VCMP
]), ($] >= 5.011 && qw[
&re::regexp_pattern
+]), ($] >= 5.010 && $] < 5.014 && qw[
+ &Tie::Hash::NamedCapture::FETCH
+ &Tie::Hash::NamedCapture::STORE
+ &Tie::Hash::NamedCapture::DELETE
+ &Tie::Hash::NamedCapture::CLEAR
+ &Tie::Hash::NamedCapture::EXISTS
+ &Tie::Hash::NamedCapture::FIRSTKEY
+ &Tie::Hash::NamedCapture::NEXTKEY
+ &Tie::Hash::NamedCapture::SCALAR
+ &Tie::Hash::NamedCapture::flags
])];
+if (defined $Devel::Cover::VERSION) {
+ push @$default_share, '&Devel::Cover::use_file';
+}
sub new {
my($class, $root, $mask) = @_;
@@ -350,6 +355,8 @@
sub reval {
my ($obj, $expr, $strict) = @_;
+ die "Bad Safe object" unless $obj->isa('Safe');
+
my $root = $obj->{Root};
my $evalsub = lexless_anon_sub($root, $strict, $expr);
@@ -400,6 +407,7 @@
sub wrap_code_ref {
my ($obj, $sub) = @_;
+ die "Bad safe object" unless $obj->isa('Safe');
# wrap code ref $sub with _safe_call_sv so that, when called, the
# execution will happen with the compartment fully 'in effect'.
@@ -435,6 +443,8 @@
sub rdo {
my ($obj, $file) = @_;
+ die "Bad Safe object" unless $obj->isa('Safe');
+
my $root = $obj->{Root};
my $sg = sub_generation();
Property changes on: trunk/contrib/perl/dist/Safe/Safe.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/t/safe1.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safe1.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safe1.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/t/safe1.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/t/safe2.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safe2.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safe2.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/t/safe2.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/t/safe3.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safe3.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safe3.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/t/safe3.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Safe/t/safeload.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safeload.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safeload.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -18,9 +18,20 @@
use strict;
use Test::More;
use Safe;
-plan(tests => 1);
+plan(tests => 3);
my $c = new Safe;
$c->permit(qw(require caller entereval unpack));
my $r = $c->reval(q{ use version; 1 });
ok( defined $r, "Can load version.pm in a Safe compartment" ) or diag $@;
+
+$r = $c->reval(q{ version->new(1.2) });
+is(ref $r, "Safe::Root0::version", "version objects rerooted");
+$r or diag $@;
+
+# Does this test really belong here? We are testing the "loading" of
+# a perl version number.
+# This should died because of strictures under 5.12+ and because of the
+# perl version in 5.10-.
+ok !$c->reval(q{use 5.012; $undeclared; 1}),
+ 'reval does not prevent use 5.012 from enabling strict';
Property changes on: trunk/contrib/perl/dist/Safe/t/safeload.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Safe/t/safenamedcap.t (from rev 6437, vendor/perl/5.18.1/dist/Safe/t/safenamedcap.t)
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safenamedcap.t (rev 0)
+++ trunk/contrib/perl/dist/Safe/t/safenamedcap.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,21 @@
+BEGIN {
+ if ($] < 5.010) {
+ print "1..0\n";
+ exit 0;
+ }
+ require Config;
+ import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/) {
+ print "1..0\n";
+ exit 0;
+ }
+}
+
+use strict;
+use Test::More;
+use Safe;
+plan(tests => 1);
+
+BEGIN { Safe->new }
+"foo" =~ /(?<foo>fo*)/;
+is( $+{foo}, "foo", "Named capture works" );
Modified: trunk/contrib/perl/dist/Safe/t/safeops.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safeops.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safeops.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -12,10 +12,13 @@
if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {
print "1..0\n"; exit 0;
}
+
+ # We need test.pl for runperl(). Since this test script is only run in
+ # the perl core, this should be fine:
+ require '../../t/test.pl';
}
use strict;
-use Test::More;
use Safe;
# Read the op names and descriptions directly from opcode.pl
@@ -37,7 +40,7 @@
}
close $fh;
-plan(tests => scalar @op);
+plan(tests => scalar @op + 3);
sub testop {
my ($op, $opname, $code) = @_;
@@ -53,11 +56,43 @@
if ($_->[2]) {
testop @$_;
} else {
- local $TODO = "No test yet for $_->[1]";
+ local our $TODO = "No test yet for $_->[1]";
fail();
}
}
+# Test also that the errors resulting from disallowed ops do not cause
+# ‘Unbalanced’ warnings.
+{
+ local $ENV{PERL_DESTRUCT_LEVEL}=2;
+ unlike
+ runperl(
+ switches => [ '-MSafe', '-w' ],
+ prog => 'Safe->new->reval(q(use strict))',
+ stderr => 1,
+ ),
+ qr/Unbalanced/,
+ 'No Unbalanced warnings when disallowing ops';
+ unlike
+ runperl(
+ switches => [ '-MSafe', '-w' ],
+ prog => 'Safe->new->reval(q(use strict), 1)',
+ stderr => 1,
+ ),
+ qr/Unbalanced/,
+ 'No Unbalanced warnings when disallowing ops';
+ unlike
+ runperl(
+ switches => [ '-MSafe', '-w' ],
+ prog => 'Safe->new->reval('
+ . 'q(BEGIN{$^H{foo}=bar};use strict), 0'
+ .')',
+ stderr => 1,
+ ),
+ qr/Unbalanced/,
+ 'No Unbalanced warnings when disallowing ops with %^H set';
+}
+
# things that begin with SKIP are skipped, for various reasons (notably
# optree modified by the optimizer -- Safe checks are done before the
# optimizer modifies the optree)
@@ -418,7 +453,7 @@
dorassign $x //= $y
once SKIP {use feature 'state'; state $foo = 42;}
say SKIP {use feature 'say'; say "foo";}
-smartmatch $x ~~ $y
+smartmatch no warnings 'experimental::smartmatch'; $x ~~ $y
aeach SKIP each @t
akeys SKIP keys @t
avalues SKIP values @t
Property changes on: trunk/contrib/perl/dist/Safe/t/safeops.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Safe/t/saferegexp.t (from rev 6437, vendor/perl/5.18.1/dist/Safe/t/saferegexp.t)
===================================================================
--- trunk/contrib/perl/dist/Safe/t/saferegexp.t (rev 0)
+++ trunk/contrib/perl/dist/Safe/t/saferegexp.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,34 @@
+#!perl -w
+
+BEGIN {
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/) {
+ print "1..0\n";
+ exit 0;
+ }
+}
+
+use Test::More tests => 3;
+use Safe;
+
+my $c; my $r;
+my $snippet = q{
+ my $foo = qr/foo/;
+ ref $foo;
+};
+$c = new Safe;
+$r = $c->reval($snippet);
+is( $r, "Safe::Root0::Regexp" );
+$r or diag $@;
+
+# once more with the same compartment
+# (where DESTROY has been cleaned up)
+$r = $c->reval($snippet);
+is( $r, "Safe::Root0::Regexp" );
+$r or diag $@;
+
+# try with a new compartment
+$c = new Safe;
+$r = $c->reval($snippet);
+is( $r, "Safe::Root1::Regexp" );
+$r or diag $@;
Index: trunk/contrib/perl/dist/Safe/t/safesort.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safesort.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safesort.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/t/safesort.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/t/safeuniversal.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safeuniversal.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safeuniversal.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/t/safeuniversal.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/t/safeutf8.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safeutf8.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safeutf8.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/t/safeutf8.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Safe/t/safewrap.t
===================================================================
--- trunk/contrib/perl/dist/Safe/t/safewrap.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Safe/t/safewrap.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Safe/t/safewrap.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/SelfLoader/lib/SelfLoader.pm
===================================================================
--- trunk/contrib/perl/dist/SelfLoader/lib/SelfLoader.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/SelfLoader/lib/SelfLoader.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,7 +2,7 @@
use 5.008;
use strict;
use IO::Handle;
-our $VERSION = "1.18";
+our $VERSION = "1.21";
# The following bit of eval-magic is necessary to make this work on
# perls < 5.009005.
@@ -386,32 +386,32 @@
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others
-
+
All rights reserved.
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of either:
-
+
a) the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any
later version, or
-
+
b) the "Artistic License" which comes with this Kit.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either
the GNU General Public License or the Artistic License for more details.
-
+
You should have received a copy of the Artistic License with this
Kit, in the file named "Artistic". If not, I'll be glad to provide one.
-
+
You should also have received a copy of the GNU General Public License
along with this program in the file named "Copying". If not, write to the
- Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA or visit their web page on the internet at
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301, USA or visit their web page on the internet at
http://www.gnu.org/copyleft/gpl.html.
-
+
For those of you that choose to use the GNU General Public License,
my interpretation of the GNU General Public License is that no Perl
script falls under the terms of the GPL unless you explicitly put
Property changes on: trunk/contrib/perl/dist/SelfLoader/lib/SelfLoader.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/SelfLoader/t/01SelfLoader.t
===================================================================
--- trunk/contrib/perl/dist/SelfLoader/t/01SelfLoader.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/SelfLoader/t/01SelfLoader.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/SelfLoader/t/01SelfLoader.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/SelfLoader/t/02SelfLoader-buggy.t
===================================================================
--- trunk/contrib/perl/dist/SelfLoader/t/02SelfLoader-buggy.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/SelfLoader/t/02SelfLoader-buggy.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/SelfLoader/t/02SelfLoader-buggy.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/SelfLoader/t/03taint.t
===================================================================
--- trunk/contrib/perl/dist/SelfLoader/t/03taint.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/SelfLoader/t/03taint.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/SelfLoader/t/03taint.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/ChangeLog
===================================================================
--- trunk/contrib/perl/dist/Storable/ChangeLog 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/ChangeLog 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,20 @@
+?
+ Version 2.40
+
+ Security warnings section added
+
+Tue 11 Sep 06:51:11 IST 2012 Abhijit Menon-Sen <ams at toroid.org>
+ Version 2.39
+
+ Various bugfixes, including compatibility fixes for older
+ versions of Perl and vstring handling.
+
+Sun 3 Jul 09:10:11 IST 2011 Abhijit Menon-Sen <ams at toroid.org>
+ Version 2.29
+
+ Various bugfixes, notably including preventing nfreeze from
+ incorrectly stringifying integers.
+
Fri 3 Dec 14:12:32 GMT 2010 David Leadbeater <dgl at dgl.cx>
Version 2.25
Property changes on: trunk/contrib/perl/dist/Storable/ChangeLog
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/Makefile.PL
===================================================================
--- trunk/contrib/perl/dist/Storable/Makefile.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/Makefile.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -13,11 +13,14 @@
DISTNAME => "Storable",
# We now ship this in t/
# PREREQ_PM => { 'Test::More' => '0.41' },
- INSTALLDIRS => $] >= 5.007 ? 'perl' : 'site',
+ PREREQ_PM => { XSLoader => 0 },
+ INSTALLDIRS => ($] >= 5.007 && $] < 5.012) ? 'perl' : 'site',
VERSION_FROM => 'Storable.pm',
- META_MERGE => { resources =>
+ ($ExtUtils::MakeMaker::VERSION > 6.45 ?
+ (META_MERGE => { resources =>
{ bugtracker => 'http://rt.perl.org/perlbug/' }
},
+ ) : ()),
dist => { SUFFIX => 'gz', COMPRESS => 'gzip -f' },
);
Property changes on: trunk/contrib/perl/dist/Storable/Makefile.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/README
===================================================================
--- trunk/contrib/perl/dist/Storable/README 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/README 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/README
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/Storable.pm
===================================================================
--- trunk/contrib/perl/dist/Storable/Storable.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/Storable.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -21,7 +21,7 @@
use vars qw($canonical $forgive_me $VERSION);
-$VERSION = '2.27';
+$VERSION = '2.41';
BEGIN {
if (eval { local $SIG{__DIE__}; require Log::Agent; 1 }) {
@@ -31,13 +31,14 @@
# Use of Log::Agent is optional. If it hasn't imported these subs then
# provide a fallback implementation.
#
- else {
+ if (!exists &logcroak) {
require Carp;
-
*logcroak = sub {
Carp::croak(@_);
};
-
+ }
+ if (!exists &logcarp) {
+ require Carp;
*logcarp = sub {
Carp::carp(@_);
};
@@ -69,7 +70,7 @@
$Storable::downgrade_restricted = 1;
$Storable::accept_future_minor = 1;
-XSLoader::load 'Storable', $Storable::VERSION;
+XSLoader::load('Storable', $Storable::VERSION);
#
# Determine whether locking is possible, but only when needed.
@@ -904,8 +905,8 @@
"2.007". This value is suitable for numeric comparisons.
The constant function C<Storable::BIN_VERSION_NV> returns a comparable
-number that represent the highest file version number that this
-version of Storable fully support (but see discussion of
+number that represents the highest file version number that this
+version of Storable fully supports (but see discussion of
C<$Storable::accept_future_minor> above). The constant
C<Storable::BIN_WRITE_VERSION_NV> function returns what file version
is written and might be less than C<Storable::BIN_VERSION_NV> in some
@@ -1018,6 +1019,38 @@
=for example_testing
is( $code->(), 42 );
+=head1 SECURITY WARNING
+
+B<Do not accept Storable documents from untrusted sources!>
+
+Some features of Storable can lead to security vulnerabilities if you
+accept Storable documents from untrusted sources. Most obviously, the
+optional (off by default) CODE reference serialization feature allows
+transfer of code to the deserializing process. Furthermore, any
+serialized object will cause Storable to helpfully load the module
+corresponding to the class of the object in the deserializing module.
+For manipulated module names, this can load almost arbitrary code.
+Finally, the deserialized object's destructors will be invoked when
+the objects get destroyed in the deserializing process. Maliciously
+crafted Storable documents may put such objects in the value of
+a hash key that is overridden by another key/value pair in the
+same hash, thus causing immediate destructor execution.
+
+In a future version of Storable, we intend to provide options to disable
+loading modules for classes and to disable deserializing objects
+altogether. I<Nonetheless, Storable deserializing documents from
+untrusted sources is expected to have other, yet undiscovered,
+security concerns such as allowing an attacker to cause the deserializer
+to crash hard.>
+
+B<Therefore, let me repeat: Do not accept Storable documents from
+untrusted sources!>
+
+If your application requires accepting data from untrusted sources, you
+are best off with a less powerful and more-likely safe serialization format
+and implementation. If your data is sufficently simple, JSON is a good
+choice and offers maximum interoperability.
+
=head1 WARNING
If you're using references as keys within your hash tables, you're bound
Property changes on: trunk/contrib/perl/dist/Storable/Storable.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/Storable.xs
===================================================================
--- trunk/contrib/perl/dist/Storable/Storable.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/Storable.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -17,11 +17,12 @@
#include <patchlevel.h> /* Perl's one, needed since 5.6 */
#endif
-#if !defined(PERL_VERSION) || PERL_VERSION < 8 || (PERL_VERSION == 8 && PERL_SUBVERSION < 9) || (PERL_VERSION == 10 && PERL_SUBVERSION < 1)
+#if !defined(PERL_VERSION) || PERL_VERSION < 10 || (PERL_VERSION == 10 && PERL_SUBVERSION < 1)
#define NEED_load_module
#define NEED_vload_module
#define NEED_newCONSTSUB
#define NEED_newSVpvn_flags
+#define NEED_newRV_noinc
#include "ppport.h" /* handle old perls */
#endif
@@ -49,75 +50,15 @@
* Earlier versions of perl might be used, we can't assume they have the latest!
*/
-#ifndef PERL_VERSION /* For perls < 5.6 */
-#define PERL_VERSION PATCHLEVEL
-#ifndef newRV_noinc
-#define newRV_noinc(sv) ((Sv = newRV(sv)), --SvREFCNT(SvRV(Sv)), Sv)
-#endif
-#if (PATCHLEVEL <= 4) /* Older perls (<= 5.004) lack PL_ namespace */
-#define PL_sv_yes sv_yes
-#define PL_sv_no sv_no
-#define PL_sv_undef sv_undef
-#if (SUBVERSION <= 4) /* 5.004_04 has been reported to lack newSVpvn */
-#define newSVpvn newSVpv
-#endif
-#endif /* PATCHLEVEL <= 4 */
#ifndef HvSHAREKEYS_off
#define HvSHAREKEYS_off(hv) /* Ignore */
#endif
-#ifndef AvFILLp /* Older perls (<=5.003) lack AvFILLp */
-#define AvFILLp AvFILL
-#endif
-typedef double NV; /* Older perls lack the NV type */
-#define IVdf "ld" /* Various printf formats for Perl types */
-#define UVuf "lu"
-#define UVof "lo"
-#define UVxf "lx"
-#define INT2PTR(t,v) (t)(IV)(v)
-#define PTR2UV(v) (unsigned long)(v)
-#endif /* PERL_VERSION -- perls < 5.6 */
-#ifndef NVef /* The following were not part of perl 5.6 */
-#if defined(USE_LONG_DOUBLE) && \
- defined(HAS_LONG_DOUBLE) && defined(PERL_PRIfldbl)
-#define NVef PERL_PRIeldbl
-#define NVff PERL_PRIfldbl
-#define NVgf PERL_PRIgldbl
-#else
-#define NVef "e"
-#define NVff "f"
-#define NVgf "g"
+/* perl <= 5.8.2 needs this */
+#ifndef SvIsCOW
+# define SvIsCOW(sv) 0
#endif
-#endif
-#ifndef SvRV_set
-#define SvRV_set(sv, val) \
- STMT_START { \
- assert(SvTYPE(sv) >= SVt_RV); \
- (((XRV*)SvANY(sv))->xrv_rv = (val)); \
- } STMT_END
-#endif
-
-#ifndef PERL_UNUSED_DECL
-# ifdef HASATTRIBUTE
-# if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
-# define PERL_UNUSED_DECL
-# else
-# define PERL_UNUSED_DECL __attribute__((unused))
-# endif
-# else
-# define PERL_UNUSED_DECL
-# endif
-#endif
-
-#ifndef dNOOP
-#define dNOOP extern int Perl___notused PERL_UNUSED_DECL
-#endif
-
-#ifndef dVAR
-#define dVAR dNOOP
-#endif
-
#ifndef HvRITER_set
# define HvRITER_set(hv,r) (HvRITER(hv) = r)
#endif
@@ -132,14 +73,14 @@
# define HvEITER_get HvEITER
#endif
-#ifndef HvNAME_get
-#define HvNAME_get HvNAME
-#endif
-
#ifndef HvPLACEHOLDERS_get
# define HvPLACEHOLDERS_get HvPLACEHOLDERS
#endif
+#ifndef HvTOTALKEYS
+# define HvTOTALKEYS(hv) HvKEYS(hv)
+#endif
+
#ifdef DEBUGME
#ifndef DASSERT
@@ -207,7 +148,9 @@
#define SX_CODE C(26) /* Code references as perl source code */
#define SX_WEAKREF C(27) /* Weak reference to object forthcoming */
#define SX_WEAKOVERLOAD C(28) /* Overloaded weak reference */
-#define SX_ERROR C(29) /* Error */
+#define SX_VSTRING C(29) /* vstring forthcoming (small) */
+#define SX_LVSTRING C(30) /* vstring forthcoming (large) */
+#define SX_ERROR C(31) /* Error */
/*
* Those are only used to retrieve "old" pre-0.6 binary images.
@@ -318,6 +261,9 @@
#ifndef SvWEAKREF
#define WEAKREF_CROAK() CROAK(("Cannot retrieve weak references in this perl"))
#endif
+#ifndef SvVOK
+#define VSTRING_CROAK() CROAK(("Cannot retrieve vstring in this perl"))
+#endif
#ifdef HvPLACEHOLDERS
#define HAS_RESTRICTED_HASHES
@@ -847,15 +793,17 @@
#endif
#define STORABLE_BIN_MAJOR 2 /* Binary major "version" */
-#define STORABLE_BIN_MINOR 8 /* Binary minor "version" */
+#define STORABLE_BIN_MINOR 9 /* Binary minor "version" */
#if (PATCHLEVEL <= 5)
#define STORABLE_BIN_WRITE_MINOR 4
-#else
+#elif !defined (SvVOK)
/*
- * Perl 5.6.0 onwards can do weak references.
+ * Perl 5.6.0-5.8.0 can do weak references, but not vstring magic.
*/
#define STORABLE_BIN_WRITE_MINOR 8
+#else
+#define STORABLE_BIN_WRITE_MINOR 9
#endif /* (PATCHLEVEL <= 5) */
#if (PATCHLEVEL < 8 || (PATCHLEVEL == 8 && SUBVERSION < 1))
@@ -1045,7 +993,7 @@
} STMT_END
/*
- * Bless `s' in `p', via a temporary reference, required by sv_bless().
+ * Bless 's' in 'p', via a temporary reference, required by sv_bless().
* "A" magic is added before the sv_bless for overloaded classes, this avoids
* an expensive call to S_reset_amagic in sv_bless.
*/
@@ -1099,6 +1047,12 @@
static int store(pTHX_ stcxt_t *cxt, SV *sv);
static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname);
+#define UNSEE() \
+ STMT_START { \
+ av_pop(cxt->aseen); \
+ cxt->tagnum--; \
+ } STMT_END
+
/*
* Dynamic dispatching table for SV store.
*/
@@ -1181,6 +1135,8 @@
(sv_retrieve_t)retrieve_other, /* SX_CODE not supported */
(sv_retrieve_t)retrieve_other, /* SX_WEAKREF not supported */
(sv_retrieve_t)retrieve_other, /* SX_WEAKOVERLOAD not supported */
+ (sv_retrieve_t)retrieve_other, /* SX_VSTRING not supported */
+ (sv_retrieve_t)retrieve_other, /* SX_LVSTRING not supported */
(sv_retrieve_t)retrieve_other, /* SX_ERROR */
};
@@ -1199,6 +1155,8 @@
static SV *retrieve_code(pTHX_ stcxt_t *cxt, const char *cname);
static SV *retrieve_weakref(pTHX_ stcxt_t *cxt, const char *cname);
static SV *retrieve_weakoverloaded(pTHX_ stcxt_t *cxt, const char *cname);
+static SV *retrieve_vstring(pTHX_ stcxt_t *cxt, const char *cname);
+static SV *retrieve_lvstring(pTHX_ stcxt_t *cxt, const char *cname);
static const sv_retrieve_t sv_retrieve[] = {
0, /* SX_OBJECT -- entry unused dynamically */
@@ -1230,6 +1188,8 @@
(sv_retrieve_t)retrieve_code, /* SX_CODE */
(sv_retrieve_t)retrieve_weakref, /* SX_WEAKREF */
(sv_retrieve_t)retrieve_weakoverloaded, /* SX_WEAKOVERLOAD */
+ (sv_retrieve_t)retrieve_vstring, /* SX_VSTRING */
+ (sv_retrieve_t)retrieve_lvstring, /* SX_LVSTRING */
(sv_retrieve_t)retrieve_other, /* SX_ERROR */
};
@@ -1294,7 +1254,7 @@
cxt->entry = 1; /* No recursion yet */
/*
- * The `hseen' table is used to keep track of each SV stored and their
+ * The 'hseen' table is used to keep track of each SV stored and their
* associated tag numbers is special. It is "abused" because the
* values stored are not real SV, just integers cast to (SV *),
* which explains the freeing below.
@@ -1336,7 +1296,7 @@
#endif
/*
- * The `hclass' hash uses the same settings as `hseen' above, but it is
+ * The 'hclass' hash uses the same settings as 'hseen' above, but it is
* used to assign sequential tags (numbers) to class names for blessed
* objects.
*
@@ -1350,7 +1310,7 @@
#endif
/*
- * The `hook' hash table is used to keep track of the references on
+ * The 'hook' hash table is used to keep track of the references on
* the STORABLE_freeze hook routines, when found in some class name.
*
* It is assumed that the inheritance tree will not be changed during
@@ -1361,7 +1321,7 @@
cxt->hook = newHV(); /* Table where hooks are cached */
/*
- * The `hook_seen' array keeps track of all the SVs returned by
+ * The 'hook_seen' array keeps track of all the SVs returned by
* STORABLE_freeze hooks for us to serialize, so that they are not
* reclaimed until the end of the serialization process. Each SV is
* only stored once, the first time it is seen.
@@ -1781,7 +1741,7 @@
* Look into the cache to see whether we already have determined
* where the routine was, if any.
*
- * NOTA BENE: we don't use `method' at all in our lookup, since we know
+ * NOTA BENE: we don't use 'method' at all in our lookup, since we know
* that only one hook (i.e. always the same) is cached in a given cache.
*/
@@ -1906,8 +1866,8 @@
/*
* known_class
*
- * Lookup the class name in the `hclass' table and either assign it a new ID
- * or return the existing one, by filling in `classnum'.
+ * Lookup the class name in the 'hclass' table and either assign it a new ID
+ * or return the existing one, by filling in 'classnum'.
*
* Return true if the class was known, false if the ID was just generated.
*/
@@ -1991,8 +1951,13 @@
* Store a scalar.
*
* Layout is SX_LSCALAR <length> <data>, SX_SCALAR <length> <data> or SX_UNDEF.
+ * SX_LUTF8STR and SX_UTF8STR are used for UTF-8 strings.
* The <data> section is omitted if <length> is 0.
*
+ * For vstrings, the vstring portion is stored first with
+ * SX_LVSTRING <length> <data> or SX_VSTRING <length> <data>, followed by
+ * SX_(L)SCALAR or SX_(L)UTF8STR with the actual PV.
+ *
* If integer or double, the layout is SX_INTEGER <data> or SX_DOUBLE <data>.
* Small integers (within [-127, +127]) are stored as SX_BYTE <byte>.
*/
@@ -2117,9 +2082,9 @@
if (
#ifdef SVf_IVisUV
/* Sorry. This isn't in 5.005_56 (IIRC) or earlier. */
- ((flags & SVf_IVisUV) && SvUV(sv) > 0x7FFFFFFF) ||
+ ((flags & SVf_IVisUV) && SvUV(sv) > (UV)0x7FFFFFFF) ||
#endif
- (iv > 0x7FFFFFFF) || (iv < -0x80000000)) {
+ (iv > (IV)0x7FFFFFFF) || (iv < -(IV)0x80000000)) {
/* Bigger than 32 bits. */
TRACEME(("large network order integer as string, value = %"IVdf, iv));
goto string_readlen;
@@ -2169,6 +2134,9 @@
TRACEME(("ok (double 0x%"UVxf", value = %"NVff")", PTR2UV(sv), nv));
} else if (flags & (SVp_POK | SVp_NOK | SVp_IOK)) {
+#ifdef SvVOK
+ MAGIC *mg;
+#endif
I32 wlen; /* For 64-bit machines */
string_readlen:
@@ -2180,6 +2148,12 @@
*/
string:
+#ifdef SvVOK
+ if (SvMAGICAL(sv) && (mg = mg_find(sv, 'V')))
+ STORE_PV_LEN((const char *)mg->mg_ptr,
+ mg->mg_len, SX_VSTRING, SX_LVSTRING);
+#endif
+
wlen = (I32) len; /* WLEN via STORE_SCALAR expects I32 */
if (SvUTF8 (sv))
STORE_UTF8STR(pv, wlen);
@@ -2285,12 +2259,7 @@
static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
{
dVAR;
- I32 len =
-#ifdef HAS_RESTRICTED_HASHES
- HvTOTALKEYS(hv);
-#else
- HvKEYS(hv);
-#endif
+ I32 len = HvTOTALKEYS(hv);
I32 i;
int ret = 0;
I32 riter;
@@ -2435,7 +2404,8 @@
/* Implementation of restricted hashes isn't nicely
abstracted: */
- if ((hash_flags & SHV_RESTRICTED) && SvREADONLY(val)) {
+ if ((hash_flags & SHV_RESTRICTED)
+ && SvREADONLY(val) && !SvIsCOW(val)) {
flags |= SHV_K_LOCKED;
}
@@ -2527,7 +2497,7 @@
abstracted: */
flags
= (((hash_flags & SHV_RESTRICTED)
- && SvREADONLY(val))
+ && SvREADONLY(val) && !SvIsCOW(val))
? SHV_K_LOCKED : 0);
if (val == &PL_sv_placeholder) {
@@ -2917,6 +2887,7 @@
*/
switch (type) {
+ case svis_REF:
case svis_SCALAR:
obj_type = SHT_SCALAR;
break;
@@ -2938,7 +2909,7 @@
* Signal the tie-ing magic by setting the object type as SHT_EXTRA
* (since we have only 2 bits in <flags> to store the type), and an
* <extra> byte flag will be emitted after the FIRST <flags> in the
- * stream, carrying what we put in `eflags'.
+ * stream, carrying what we put in 'eflags'.
*/
obj_type = SHT_EXTRA;
switch (SvTYPE(sv)) {
@@ -2970,7 +2941,7 @@
* $object->STORABLE_freeze($cloning);
*
* but we don't have the $object here. For instance, if $object is
- * a blessed array, what we have in `sv' is the array, and we can't
+ * a blessed array, what we have in 'sv' is the array, and we can't
* call a method on those.
*
* Therefore, we need to create a temporary reference to the object and
@@ -2979,9 +2950,8 @@
TRACEME(("about to call STORABLE_freeze on class %s", classname));
- ref = newRV_noinc(sv); /* Temporary reference */
+ ref = newRV_inc(sv); /* Temporary reference */
av = array_call(aTHX_ ref, hook, clone); /* @a = $object->STORABLE_freeze($c) */
- SvRV_set(ref, NULL);
SvREFCNT_dec(ref); /* Reclaim temporary reference */
count = AvFILLp(av) + 1;
@@ -3111,7 +3081,7 @@
CROAK(("Could not serialize item #%d from hook in %s", i, classname));
#endif
/*
- * It was the first time we serialized `xsv'.
+ * It was the first time we serialized 'xsv'.
*
* Keep this SV alive until the end of the serialization: if we
* disposed of it right now by decrementing its refcount, and it was
@@ -3127,7 +3097,7 @@
sv_seen:
/*
- * Dispose of the REF they returned. If we saved the `xsv' away
+ * Dispose of the REF they returned. If we saved the 'xsv' away
* in the array of returned SVs, that will not cause the underlying
* referenced SV to be reclaimed.
*/
@@ -3395,7 +3365,7 @@
* We don't know how to store the item we reached, so return an error condition.
* (it's probably a GLOB, some CODE reference, etc...)
*
- * If they defined the `forgive_me' variable at the Perl level to some
+ * If they defined the 'forgive_me' variable at the Perl level to some
* true value, then don't croak, just warn, and store a placeholder string
* instead.
*/
@@ -3614,7 +3584,7 @@
#endif
/*
- * Store `sv' and everything beneath it, using appropriate routine.
+ * Store 'sv' and everything beneath it, using appropriate routine.
* Abort immediately if we get a non-zero status back.
*/
@@ -3739,9 +3709,9 @@
* Common code for store operations.
*
* When memory store is requested (f = NULL) and a non null SV* is given in
- * `res', it is filled with a new SV created out of the memory buffer.
+ * 'res', it is filled with a new SV created out of the memory buffer.
*
- * It is required to provide a non-null `res' when the operation type is not
+ * It is required to provide a non-null 'res' when the operation type is not
* dclone() and store() is performed to memory.
*/
static int do_store(
@@ -3924,7 +3894,7 @@
RLEN(idx);
/*
- * Fetch classname in `aclass'
+ * Fetch classname in 'aclass'
*/
sva = av_fetch(cxt->aclass, idx, FALSE);
@@ -4125,7 +4095,7 @@
I32 idx;
/*
- * Fetch index from `aclass'
+ * Fetch index from 'aclass'
*/
if (flags & SHF_LARGE_CLASSLEN)
@@ -4279,8 +4249,12 @@
attached = scalar_call(aTHX_ rv, attach_hook, clone, av, G_SCALAR);
if (attached &&
SvROK(attached) &&
- sv_derived_from(attached, classname))
+ sv_derived_from(attached, classname)
+ ) {
+ UNSEE();
+ SEEN(SvRV(attached), 0, 0);
return SvRV(attached);
+ }
CROAK(("STORABLE_attach did not return a %s object", classname));
}
@@ -4313,7 +4287,7 @@
}
/*
- * If we don't have an `av' yet, prepare one.
+ * If we don't have an 'av' yet, prepare one.
* Then insert the frozen string as item [0].
*/
@@ -4913,6 +4887,79 @@
}
/*
+ * retrieve_vstring
+ *
+ * Retrieve a vstring, and then retrieve the stringy scalar following it,
+ * attaching the vstring to the scalar via magic.
+ * If we're retrieving a vstring in a perl without vstring magic, croaks.
+ *
+ * The vstring layout mirrors an SX_SCALAR string:
+ * SX_VSTRING <length> <data> with SX_VSTRING already read.
+ */
+static SV *retrieve_vstring(pTHX_ stcxt_t *cxt, const char *cname)
+{
+#ifdef SvVOK
+ MAGIC *mg;
+ char s[256];
+ int len;
+ SV *sv;
+
+ GETMARK(len);
+ TRACEME(("retrieve_vstring (#%d), len = %d", cxt->tagnum, len));
+
+ READ(s, len);
+
+ sv = retrieve(aTHX_ cxt, cname);
+
+ sv_magic(sv,NULL,PERL_MAGIC_vstring,s,len);
+ /* 5.10.0 and earlier seem to need this */
+ SvRMAGICAL_on(sv);
+
+ TRACEME(("ok (retrieve_vstring at 0x%"UVxf")", PTR2UV(sv)));
+ return sv;
+#else
+ VSTRING_CROAK();
+ return Nullsv;
+#endif
+}
+
+/*
+ * retrieve_lvstring
+ *
+ * Like retrieve_vstring, but for longer vstrings.
+ */
+static SV *retrieve_lvstring(pTHX_ stcxt_t *cxt, const char *cname)
+{
+#ifdef SvVOK
+ MAGIC *mg;
+ char *s;
+ I32 len;
+ SV *sv;
+
+ RLEN(len);
+ TRACEME(("retrieve_lvstring (#%d), len = %"IVdf,
+ cxt->tagnum, (IV)len));
+
+ New(10003, s, len+1, char);
+ SAFEPVREAD(s, len, s);
+
+ sv = retrieve(aTHX_ cxt, cname);
+
+ sv_magic(sv,NULL,PERL_MAGIC_vstring,s,len);
+ /* 5.10.0 and earlier seem to need this */
+ SvRMAGICAL_on(sv);
+
+ Safefree(s);
+
+ TRACEME(("ok (retrieve_lvstring at 0x%"UVxf")", PTR2UV(sv)));
+ return sv;
+#else
+ VSTRING_CROAK();
+ return Nullsv;
+#endif
+}
+
+/*
* retrieve_integer
*
* Retrieve defined integer.
@@ -5160,7 +5207,7 @@
SEEN(hv, cname, 0); /* Will return if table not allocated properly */
if (len == 0)
return (SV *) hv; /* No data follow if table empty */
- hv_ksplit(hv, len); /* pre-extend hash to save multiple splits */
+ hv_ksplit(hv, len + 1); /* pre-extend hash to save multiple splits */
/*
* Now get each key/value pair in turn...
@@ -5247,7 +5294,7 @@
SEEN(hv, cname, 0); /* Will return if table not allocated properly */
if (len == 0)
return (SV *) hv; /* No data follow if table empty */
- hv_ksplit(hv, len); /* pre-extend hash to save multiple splits */
+ hv_ksplit(hv, len + 1); /* pre-extend hash to save multiple splits */
/*
* Now get each key/value pair in turn...
@@ -5566,7 +5613,7 @@
SEEN(hv, 0, 0); /* Will return if table not allocated properly */
if (len == 0)
return (SV *) hv; /* No data follow if table empty */
- hv_ksplit(hv, len); /* pre-extend hash to save multiple splits */
+ hv_ksplit(hv, len + 1); /* pre-extend hash to save multiple splits */
/*
* Now get each key/value pair in turn...
@@ -6037,7 +6084,7 @@
/*
* Prepare context.
*
- * Data is loaded into the memory buffer when f is NULL, unless `in' is
+ * Data is loaded into the memory buffer when f is NULL, unless 'in' is
* also NULL, in which case we're expecting the data to already lie
* in the buffer (dclone case).
*/
@@ -6106,7 +6153,7 @@
* Check whether input source is tainted, so that we don't wrongly
* taint perfectly good values...
*
- * We assume file input is always tainted. If both `f' and `in' are
+ * We assume file input is always tainted. If both 'f' and 'in' are
* NULL, then we come from dclone, and tainted is already filled in
* the context. That's a kludge, but the whole dclone() thing is
* already quite a kludge anyway! -- RAM, 15/09/2000.
@@ -6296,7 +6343,7 @@
cxt = real_context; /* And we need this temporary... */
/*
- * Now, `cxt' may refer to a new context.
+ * Now, 'cxt' may refer to a new context.
*/
ASSERT(!cxt->s_dirty, ("clean context"));
@@ -6452,23 +6499,20 @@
OUTPUT:
RETVAL
-bool
+void
last_op_in_netorder()
- CODE:
- RETVAL = !!last_op_in_netorder(aTHX);
- OUTPUT:
- RETVAL
-
-bool
-is_storing()
ALIAS:
is_storing = ST_STORE
is_retrieving = ST_RETRIEVE
- CODE:
- {
- dSTCXT;
+ PREINIT:
+ bool result;
+ PPCODE:
+ if (ix) {
+ dSTCXT;
- RETVAL = cxt->entry && (cxt->optype & ix) ? TRUE : FALSE;
- }
- OUTPUT:
- RETVAL
+ result = cxt->entry && (cxt->optype & ix) ? TRUE : FALSE;
+ } else {
+ result = !!last_op_in_netorder(aTHX);
+ }
+ ST(0) = boolSV(result);
+ XSRETURN(1);
Property changes on: trunk/contrib/perl/dist/Storable/Storable.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/hints/gnukfreebsd.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/hints/gnukfreebsd.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/hints/gnukfreebsd.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/hints/gnukfreebsd.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/hints/gnuknetbsd.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/hints/gnuknetbsd.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/hints/gnuknetbsd.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/hints/gnuknetbsd.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/hints/hpux.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/hints/hpux.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/hints/hpux.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/hints/hpux.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/hints/linux.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/hints/linux.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/hints/linux.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/hints/linux.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/HAS_ATTACH.pm
===================================================================
--- trunk/contrib/perl/dist/Storable/t/HAS_ATTACH.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/HAS_ATTACH.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/HAS_ATTACH.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/HAS_HOOK.pm
===================================================================
--- trunk/contrib/perl/dist/Storable/t/HAS_HOOK.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/HAS_HOOK.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/HAS_HOOK.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/HAS_OVERLOAD.pm
===================================================================
--- trunk/contrib/perl/dist/Storable/t/HAS_OVERLOAD.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/HAS_OVERLOAD.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/HAS_OVERLOAD.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/t/attach_errors.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/attach_errors.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/attach_errors.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -22,7 +22,7 @@
}
}
-use Test::More tests => 35;
+use Test::More tests => 40;
use Storable ();
@@ -71,7 +71,7 @@
eval {
Storable::freeze( $badfreeze );
};
- ok( $@, 'Storable dies correctly when STORABLE_freeze returns a referece' );
+ ok( $@, 'Storable dies correctly when STORABLE_freeze returns a reference' );
# Check for a unique substring of the error message
ok( $@ =~ /cannot return references/, 'Storable dies with the expected error' );
@@ -215,8 +215,43 @@
}
}
+# Good case - multiple references to the same object should be attached properly
+{
+ my $obj = bless { id => 111 }, 'My::GoodAttach::MultipleReferences';
+ my $arr = [$obj];
+ push @$arr, $obj;
+ my $frozen = Storable::freeze($arr);
+
+ ok( $frozen, 'My::GoodAttach return as expected' );
+
+ my $thawed = eval {
+ Storable::thaw( $frozen );
+ };
+
+ isa_ok( $thawed->[0], 'My::GoodAttach::MultipleReferences' );
+ isa_ok( $thawed->[1], 'My::GoodAttach::MultipleReferences' );
+
+ is($thawed->[0], $thawed->[1], 'References to the same object are attached properly');
+ is($thawed->[1]{id}, $obj->{id}, 'Object with multiple references attchached properly');
+
+ package My::GoodAttach::MultipleReferences;
+
+ sub STORABLE_freeze {
+ my ($obj) = @_;
+ $obj->{id}
+ }
+
+ sub STORABLE_attach {
+ my ($class, $cloning, $id) = @_;
+ bless { id => $id }, $class;
+ }
+
+}
+
+
+
# Bad Cases - die on thaw
{
my $returnvalue = undef;
Property changes on: trunk/contrib/perl/dist/Storable/t/attach_errors.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/attach_singleton.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/attach_singleton.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/attach_singleton.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/attach_singleton.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/t/blessed.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/blessed.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/blessed.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -26,8 +26,17 @@
n => \(1 == 0)
);
+{
+ %::weird_refs = (
+ REF => \(my $aref = []),
+ VSTRING => \(my $vstring = v1.2.3),
+ 'long VSTRING' => \(my $vstring = eval "v" . 0 x 300),
+ LVALUE => \(my $substr = substr((my $str = "foo"), 0, 3)),
+ );
+}
+
my $test = 12;
-my $tests = $test + 22 + 2 * 6 * keys %::immortals;
+my $tests = $test + 23 + (2 * 6 * keys %::immortals) + (3 * keys %::weird_refs);
plan(tests => $tests);
package SHORT_NAME;
@@ -249,3 +258,50 @@
is($STRESS_THE_STACK::thaw_count, 1);
isnt($t, undef);
is(ref $t, 'STRESS_THE_STACK');
+
+{
+ package ModifyARG112358;
+ sub STORABLE_freeze { $_[0] = "foo"; }
+ my $o= {str=>bless {}};
+ my $f= ::freeze($o);
+ ::is ref $o->{str}, __PACKAGE__,
+ 'assignment to $_[0] in STORABLE_freeze does not corrupt things';
+}
+
+# [perl #113880]
+{
+ {
+ package WeirdRefHook;
+ sub STORABLE_freeze { () }
+ $INC{'WeirdRefHook.pm'} = __FILE__;
+ }
+
+ for my $weird (keys %weird_refs) {
+ my $obj = $weird_refs{$weird};
+ bless $obj, 'WeirdRefHook';
+ my $frozen;
+ my $success = eval { $frozen = freeze($obj); 1 };
+ ok($success, "can freeze $weird objects")
+ || diag("freezing failed: $@");
+ my $thawn = thaw($frozen);
+ # is_deeply ignores blessings
+ is ref $thawn, ref $obj, "get the right blessing back for $weird";
+ if ($weird =~ 'VSTRING') {
+ # It is not just Storable that did not support vstrings. :-)
+ # See https://rt.cpan.org/Ticket/Display.html?id=78678
+ my $newver = "version"->can("new")
+ ? sub { "version"->new(shift) }
+ : sub { "" };
+ if (!ok
+ $$thawn eq $$obj && &$newver($$thawn) eq &$newver($$obj),
+ "get the right value back"
+ ) {
+ diag "$$thawn vs $$obj";
+ diag &$newver($$thawn) eq &$newver($$obj) if &$newver(1);
+ }
+ }
+ else {
+ is_deeply($thawn, $obj, "get the right value back");
+ }
+ }
+}
Property changes on: trunk/contrib/perl/dist/Storable/t/blessed.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/canonical.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/canonical.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/canonical.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/canonical.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/circular_hook.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/circular_hook.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/circular_hook.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/circular_hook.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/t/code.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/code.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/code.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -60,7 +60,7 @@
\&Another::Package::foo, # code in another package
sub ($$;$) { 0 }, # prototypes
sub { print "test\n" },
- \&Test::More::ok, # large scalar
+ \&Storable::_store, # large scalar
],
{"a" => sub { "srt" }, "b" => \&code},
Property changes on: trunk/contrib/perl/dist/Storable/t/code.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/compat01.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/compat01.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/compat01.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/compat01.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/compat06.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/compat06.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/compat06.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/compat06.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/croak.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/croak.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/croak.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/croak.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/dclone.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/dclone.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/dclone.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/dclone.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/downgrade.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/downgrade.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/downgrade.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/downgrade.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/file_magic.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/file_magic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/file_magic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/file_magic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/forgive.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/forgive.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/forgive.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/forgive.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/freeze.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/freeze.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/freeze.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/freeze.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/integer.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/integer.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/integer.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/integer.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/interwork56.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/interwork56.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/interwork56.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/interwork56.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/just_plain_nasty.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/just_plain_nasty.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/just_plain_nasty.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/just_plain_nasty.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/lock.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/lock.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/lock.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/lock.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/make_56_interwork.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/t/make_56_interwork.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/make_56_interwork.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/make_56_interwork.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/make_downgrade.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/t/make_downgrade.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/make_downgrade.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/make_downgrade.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/make_overload.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/t/make_overload.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/make_overload.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/make_overload.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/t/malice.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/malice.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/malice.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -34,8 +34,8 @@
$other_magic = 7 + length $byteorder;
$network_magic = 2;
$major = 2;
-$minor = 8;
-$minor_write = $] > 5.005_50 ? 8 : 4;
+$minor = 9;
+$minor_write = $] > 5.008 ? 9 : $] > 5.005_50 ? 8 : 4;
use Test::More;
@@ -208,7 +208,7 @@
$where = $file_magic + $network_magic;
}
- # Just the header and a tag 255. As 28 is currently the highest tag, this
+ # Just the header and a tag 255. As 30 is currently the highest tag, this
# is "unexpected"
$copy = substr ($contents, 0, $where) . chr 255;
@@ -228,7 +228,7 @@
# local $Storable::DEBUGME = 1;
# This is the delayed croak
test_corrupt ($copy, $sub,
- "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 28/",
+ "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 30/",
"bogus tag, minor plus 4");
# And check again that this croak is not delayed:
{
Property changes on: trunk/contrib/perl/dist/Storable/t/malice.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/overload.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/overload.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/overload.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/overload.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/recurse.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/recurse.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/recurse.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/recurse.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Storable/t/restrict.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/restrict.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/restrict.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -35,8 +35,8 @@
use Storable qw(dclone freeze thaw);
-use Hash::Util qw(lock_hash unlock_value);
-use Test::More tests => 100;
+use Hash::Util qw(lock_hash unlock_value lock_keys);
+use Test::More tests => 304;
my %hash = (question => '?', answer => 42, extra => 'junk', undef => undef);
lock_hash %hash;
@@ -110,5 +110,32 @@
eval { $copy->{$k} = undef } ;
is($@, '', "Can assign to reserved key '$k'?");
}
+
+ my %hv;
+ $hv{a} = __PACKAGE__;
+ lock_keys %hv;
+ my $hv2 = &$cloner(\%hv);
+ ok eval { $$hv2{a} = 70 }, 'COWs do not become read-only';
}
}
+
+# [perl #73972]
+{
+ for my $n (1..100) {
+ my @keys = map { "FOO$_" } (1..$n);
+
+ my $hash1 = {};
+ lock_keys(%$hash1, @keys);
+ my $hash2 = dclone($hash1);
+
+ my $success;
+
+ $success = eval { $hash2->{$_} = 'test' for @keys; 1 };
+ my $err = $@;
+ ok($success, "can store in all of the $n restricted slots")
+ || diag("failed with $@");
+
+ $success = !eval { $hash2->{a} = 'test'; 1 };
+ ok($success, "the hash is still restricted");
+ }
+}
Property changes on: trunk/contrib/perl/dist/Storable/t/restrict.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/retrieve.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/retrieve.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/retrieve.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/retrieve.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Storable/t/robust.t (from rev 6437, vendor/perl/5.18.1/dist/Storable/t/robust.t)
===================================================================
--- trunk/contrib/perl/dist/Storable/t/robust.t (rev 0)
+++ trunk/contrib/perl/dist/Storable/t/robust.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,12 @@
+#!/usr/bin/perl
+
+# This test script checks that Storable will load properly if someone
+# is incorrectly messing with %INC to hide Log::Agent. No, no-one should
+# really be doing this, but, then, it *used* to work!
+
+use Test::More;
+plan tests => 1;
+
+$INC{'Log/Agent.pm'} = '#ignore#';
+require Storable;
+pass;
Index: trunk/contrib/perl/dist/Storable/t/sig_die.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/sig_die.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/sig_die.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/sig_die.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/st-dump.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/t/st-dump.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/st-dump.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/st-dump.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/store.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/store.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/store.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/store.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/testlib.pl
===================================================================
--- trunk/contrib/perl/dist/Storable/t/testlib.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/testlib.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/testlib.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/threads.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/threads.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/threads.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/threads.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/tied.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/tied.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/tied.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/tied.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/tied_hook.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/tied_hook.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/tied_hook.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/tied_hook.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/tied_items.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/tied_items.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/tied_items.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/tied_items.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/utf8.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/utf8.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/utf8.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/utf8.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/utf8hash.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/utf8hash.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/utf8hash.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/utf8hash.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Storable/t/weak.t
===================================================================
--- trunk/contrib/perl/dist/Storable/t/weak.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Storable/t/weak.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Storable/t/weak.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/Thread-Queue/lib/Thread/Queue.pm
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/lib/Thread/Queue.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/lib/Thread/Queue.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -3,7 +3,7 @@
use strict;
use warnings;
-our $VERSION = '2.12';
+our $VERSION = '3.02';
$VERSION = eval $VERSION;
use threads::shared 1.21;
@@ -13,7 +13,7 @@
our @CARP_NOT = ("threads::shared");
# Predeclarations for internal functions
-my ($validate_count, $validate_index);
+my ($validate_count, $validate_index, $validate_timeout);
# Create a new queue possibly pre-populated with items
sub new
@@ -20,38 +20,59 @@
{
my $class = shift;
my @queue :shared = map { shared_clone($_) } @_;
- return bless(\@queue, $class);
+ my %self :shared = ( 'queue' => \@queue );
+ return bless(\%self, $class);
}
# Add items to the tail of a queue
sub enqueue
{
- my $queue = shift;
- lock(@$queue);
- push(@$queue, map { shared_clone($_) } @_)
- and cond_signal(@$queue);
+ my $self = shift;
+ lock(%$self);
+ if ($$self{'ENDED'}) {
+ require Carp;
+ Carp::croak("'enqueue' method called on queue that has been 'end'ed");
+ }
+ push(@{$$self{'queue'}}, map { shared_clone($_) } @_)
+ and cond_signal(%$self);
}
# Return a count of the number of items on a queue
sub pending
{
- my $queue = shift;
- lock(@$queue);
- return scalar(@$queue);
+ my $self = shift;
+ lock(%$self);
+ return if ($$self{'ENDED'} && ! @{$$self{'queue'}});
+ return scalar(@{$$self{'queue'}});
}
+# Indicate that no more data will enter the queue
+sub end
+{
+ my $self = shift;
+ lock $self;
+ # No more data is coming
+ $$self{'ENDED'} = 1;
+ # Try to release at least one blocked thread
+ cond_signal(%$self);
+}
+
# Return 1 or more items from the head of a queue, blocking if needed
sub dequeue
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
my $count = @_ ? $validate_count->(shift) : 1;
# Wait for requisite number of items
- cond_wait(@$queue) until (@$queue >= $count);
- cond_signal(@$queue) if (@$queue > $count);
+ cond_wait(%$self) while ((@$queue < $count) && ! $$self{'ENDED'});
+ cond_signal(%$self) if ((@$queue > $count) || $$self{'ENDED'});
+ # If no longer blocking, try getting whatever is left on the queue
+ return $self->dequeue_nb($count) if ($$self{'ENDED'});
+
# Return single item
return shift(@$queue) if ($count == 1);
@@ -64,8 +85,9 @@
# Return items from the head of a queue with no blocking
sub dequeue_nb
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
my $count = @_ ? $validate_count->(shift) : 1;
@@ -81,21 +103,54 @@
return @items;
}
+# Return items from the head of a queue, blocking if needed up to a timeout
+sub dequeue_timed
+{
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
+
+ # Timeout may be relative or absolute
+ my $timeout = @_ ? $validate_timeout->(shift) : -1;
+ # Convert to an absolute time for use with cond_timedwait()
+ if ($timeout < 32000000) { # More than one year
+ $timeout += time();
+ }
+
+ my $count = @_ ? $validate_count->(shift) : 1;
+
+ # Wait for requisite number of items, or until timeout
+ while ((@$queue < $count) && ! $$self{'ENDED'}) {
+ last if (! cond_timedwait(%$self, $timeout));
+ }
+ cond_signal(%$self) if ((@$queue > $count) || $$self{'ENDED'});
+
+ # Get whatever we need off the queue if available
+ return $self->dequeue_nb($count);
+}
+
# Return an item without removing it from a queue
sub peek
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
my $index = @_ ? $validate_index->(shift) : 0;
- return $$queue[$index];
+ return $$self{'queue'}[$index];
}
# Insert items anywhere into a queue
sub insert
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+ if ($$self{'ENDED'}) {
+ require Carp;
+ Carp::croak("'insert' method called on queue that has been 'end'ed");
+ }
+
+ my $queue = $$self{'queue'};
+
my $index = $validate_index->(shift);
return if (! @_); # Nothing to insert
@@ -121,14 +176,15 @@
push(@$queue, @tmp);
# Soup's up
- cond_signal(@$queue);
+ cond_signal(%$self);
}
# Remove items from anywhere in a queue
sub extract
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
my $index = @_ ? $validate_index->(shift) : 0;
my $count = @_ ? $validate_count->(shift) : 1;
@@ -139,7 +195,7 @@
if ($index < 0) {
$count += $index;
return if ($count <= 0); # Beyond the head of the queue
- return $queue->dequeue_nb($count); # Extract from the head
+ return $self->dequeue_nb($count); # Extract from the head
}
}
@@ -202,6 +258,23 @@
return $count;
};
+# Check value of the requested timeout
+$validate_timeout = sub {
+ my $timeout = shift;
+
+ if (! defined($timeout) ||
+ ! looks_like_number($timeout))
+ {
+ require Carp;
+ my ($method) = (caller(1))[3];
+ $method =~ s/Thread::Queue:://;
+ $timeout = 'undef' if (! defined($timeout));
+ Carp::croak("Invalid 'timeout' argument ($timeout) to '$method' method");
+ }
+
+ return $timeout;
+};
+
1;
=head1 NAME
@@ -210,7 +283,7 @@
=head1 VERSION
-This document describes Thread::Queue version 2.12
+This document describes Thread::Queue version 3.02
=head1 SYNOPSIS
@@ -223,15 +296,24 @@
my $q = Thread::Queue->new(); # A new empty queue
# Worker thread
- my $thr = threads->create(sub {
- while (my $item = $q->dequeue()) {
- # Do work on $item
- }
- })->detach();
+ my $thr = threads->create(
+ sub {
+ # Thread will loop until no more work
+ while (defined(my $item = $q->dequeue())) {
+ # Do work on $item
+ ...
+ }
+ }
+ );
# Send work to the thread
$q->enqueue($item1, ...);
+ # Signal that there is no more work to be sent
+ $q->end();
+ # Join up with the thread when it finishes
+ $thr->join();
+ ...
# Count of items in the queue
my $left = $q->pending();
@@ -241,6 +323,11 @@
# Work on $item
}
+ # Blocking dequeue with 5-second timeout
+ if (defined(my $item = $q->dequeue_timed(5))) {
+ # Work on $item
+ }
+
# Get the second item in the queue without dequeuing anything
my $item = $q->peek(1);
@@ -342,10 +429,42 @@
items there are on the queue. If the queue is empty, then C<undef> is
returned.
+=item ->dequeue_timed(TIMEOUT)
+
+=item ->dequeue_timed(TIMEOUT, COUNT)
+
+Removes the requested number of items (default is 1) from the head of the
+queue, and returns them. If the queue contains fewer than the requested
+number of items, then the thread will be blocked until the requisite number of
+items are available, or until the timeout is reached. If the timeout is
+reached, it returns whatever items there are on the queue, or C<undef> if the
+queue is empty.
+
+The timeout may be a number of seconds relative to the current time (e.g., 5
+seconds from when the call is made), or may be an absolute timeout in I<epoch>
+seconds the same as would be used with
+L<cond_timedwait()|threads::shared/"cond_timedwait VARIABLE, ABS_TIMEOUT">.
+Fractional seconds (e.g., 2.5 seconds) are also supported (to the extent of
+the underlying implementation).
+
+If C<TIMEOUT> is missing, c<undef>, or less than or equal to 0, then this call
+behaves the same as C<dequeue_nb>.
+
=item ->pending()
-Returns the number of items still in the queue.
+Returns the number of items still in the queue. Returns C<undef> if the queue
+has been ended (see below), and there are no more items in the queue.
+=item ->end()
+
+Declares that no more items will be added to the queue.
+
+All threads blocking on C<dequeue()> calls will be unblocked with any
+remaining items in the queue and/or C<undef> being returned. Any subsequent
+calls to C<dequeue()> will behave like C<dequeue_nb()>.
+
+Once ended, no more items may be placed in the queue.
+
=back
=head1 ADVANCED METHODS
@@ -464,6 +583,8 @@
L<threads>, L<threads::shared>
+Sample code in the I<examples> directory of this distribution on CPAN.
+
=head1 MAINTAINER
Jerry D. Hedden, S<E<lt>jdhedden AT cpan DOT orgE<gt>>
Property changes on: trunk/contrib/perl/dist/Thread-Queue/lib/Thread/Queue.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/01_basic.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/01_basic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/01_basic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/01_basic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/02_refs.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/02_refs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/02_refs.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/02_refs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/03_peek.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/03_peek.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/03_peek.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/03_peek.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/04_errs.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/04_errs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/04_errs.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/04_errs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/05_extract.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/05_extract.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/05_extract.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/05_extract.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/06_insert.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/06_insert.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/06_insert.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/06_insert.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/07_lock.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/07_lock.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/07_lock.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/07_lock.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Queue/t/08_nothreads.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/08_nothreads.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Queue/t/08_nothreads.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Queue/t/08_nothreads.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/Thread-Queue/t/09_ended.t (from rev 6437, vendor/perl/5.18.1/dist/Thread-Queue/t/09_ended.t)
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/09_ended.t (rev 0)
+++ trunk/contrib/perl/dist/Thread-Queue/t/09_ended.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,146 @@
+use strict;
+use warnings;
+
+use Config;
+
+BEGIN {
+ if (! $Config{'useithreads'}) {
+ print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+ exit(0);
+ }
+ if (! $Config{'d_select'}) {
+ print("1..0 # SKIP 'select()' not available for testing\n");
+ exit(0);
+ }
+}
+
+use threads;
+use Thread::Queue;
+
+use Test::More;
+
+my $num_threads = 3;
+my $cycles = 2;
+my $count = 2;
+plan tests => 3*$num_threads*$cycles*$count + 6*$num_threads + 6;
+
+# Test for end() while threads are blocked and no more items in queue
+{
+ my @items = 1..($num_threads*$cycles*$count);
+ my $q = Thread::Queue->new(@items);
+ my $r = Thread::Queue->new();
+
+ my @threads;
+ for my $ii (1..$num_threads) {
+ push @threads, threads->create( sub {
+ # Thread will loop until no more work is coming
+ LOOP:
+ while (my @set = $q->dequeue($count)) {
+ foreach my $item (@set) {
+ last LOOP if (! defined($item));
+ pass("'$item' read from queue in thread $ii");
+ }
+ select(undef, undef, undef, rand(1));
+ $r->enqueue($ii);
+ }
+ pass("Thread $ii exiting");
+ });
+ }
+
+ # Make sure there's nothing in the queue and threads are blocking
+ for my $ii (1..($num_threads*$cycles)) {
+ $r->dequeue();
+ }
+ sleep(1);
+ threads->yield();
+
+ is($q->pending(), 0, 'Queue is empty');
+
+ # Signal no more work is coming
+ $q->end();
+
+ is($q->pending(), undef, 'Queue is ended');
+
+ for my $thread (@threads) {
+ $thread->join;
+ pass($thread->tid." joined");
+ }
+}
+
+# Test for end() while threads are blocked and items still remain in queue
+{
+ my @items = 1..($num_threads*$cycles*$count + 1);
+ my $q = Thread::Queue->new(@items);
+ my $r = Thread::Queue->new();
+
+ my @threads;
+ for my $ii (1..$num_threads) {
+ push @threads, threads->create( sub {
+ # Thread will loop until no more work is coming
+ LOOP:
+ while (my @set = $q->dequeue($count)) {
+ foreach my $item (@set) {
+ last LOOP if (! defined($item));
+ pass("'$item' read from queue in thread $ii");
+ }
+ select(undef, undef, undef, rand(1));
+ $r->enqueue($ii);
+ }
+ pass("Thread $ii exiting");
+ });
+ }
+
+ # Make sure there's nothing in the queue and threads are blocking
+ for my $ii (1..($num_threads*$cycles)) {
+ $r->dequeue();
+ }
+ sleep(1);
+ threads->yield();
+
+ is($q->pending(), 1, 'Queue has one left');
+
+ # Signal no more work is coming
+ $q->end();
+
+ for my $thread (@threads) {
+ $thread->join;
+ pass($thread->tid." joined");
+ }
+
+ is($q->pending(), undef, 'Queue is ended');
+}
+
+# Test of end() send while items in queue
+{
+ my @items = 1..($num_threads*$cycles*$count + 1);
+ my $q = Thread::Queue->new(@items);
+
+ my @threads;
+ for my $ii (1..$num_threads) {
+ push @threads, threads->create( sub {
+ # Thread will loop until no more work is coming
+ LOOP:
+ while (my @set = $q->dequeue($count)) {
+ foreach my $item (@set) {
+ last LOOP if (! defined($item));
+ pass("'$item' read from queue in thread $ii");
+ }
+ select(undef, undef, undef, rand(1));
+ }
+ pass("Thread $ii exiting");
+ });
+ }
+
+ # Signal no more work is coming to the blocked threads, they
+ # should unblock.
+ $q->end();
+
+ for my $thread (@threads) {
+ $thread->join;
+ pass($thread->tid." joined");
+ }
+}
+
+exit(0);
+
+# EOF
Copied: trunk/contrib/perl/dist/Thread-Queue/t/10_timed.t (from rev 6437, vendor/perl/5.18.1/dist/Thread-Queue/t/10_timed.t)
===================================================================
--- trunk/contrib/perl/dist/Thread-Queue/t/10_timed.t (rev 0)
+++ trunk/contrib/perl/dist/Thread-Queue/t/10_timed.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,66 @@
+use strict;
+use warnings;
+
+BEGIN {
+ use Config;
+ if (! $Config{'useithreads'}) {
+ print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+ exit(0);
+ }
+}
+
+use threads;
+use Thread::Queue;
+
+if ($] == 5.008) {
+ require 't/test.pl'; # Test::More work-alike for Perl 5.8.0
+} else {
+ require Test::More;
+}
+Test::More->import();
+plan('tests' => 19);
+
+### ->dequeue_timed(TIMEOUT, COUNT) test ###
+
+my $q = Thread::Queue->new();
+ok($q, 'New queue');
+
+my @items = qw/foo bar baz qux exit/;
+$q->enqueue(@items);
+is($q->pending(), scalar(@items), 'Queue count');
+
+threads->create(sub {
+ is($q->pending(), scalar(@items), 'Queue count in thread');
+ while (my @el = $q->dequeue_timed(2.5, 2)) {
+ is($el[0], shift(@items), "Thread got $el[0]");
+ if ($el[0] eq 'exit') {
+ is(scalar(@el), 1, 'Thread to exit');
+ } else {
+ is($el[1], shift(@items), "Thread got $el[1]");
+ }
+ }
+ is($q->pending(), 0, 'Empty queue');
+ $q->enqueue('done');
+})->join();
+
+is($q->pending(), 1, 'Queue count after thread');
+is($q->dequeue(), 'done', 'Thread reported done');
+is($q->pending(), 0, 'Empty queue');
+
+### ->dequeue_timed(TIMEOUT) test on empty queue ###
+
+threads->create(sub {
+ is($q->pending(), 0, 'Empty queue in thread');
+ my @el = $q->dequeue_timed(1.5);
+ is($el[0], undef, "Thread got no items");
+ is($q->pending(), 0, 'Empty queue in thread');
+ $q->enqueue('done');
+})->join();
+
+is($q->pending(), 1, 'Queue count after thread');
+is($q->dequeue(), 'done', 'Thread reported done');
+is($q->pending(), 0, 'Empty queue');
+
+exit(0);
+
+# EOF
Index: trunk/contrib/perl/dist/Thread-Semaphore/lib/Thread/Semaphore.pm
===================================================================
--- trunk/contrib/perl/dist/Thread-Semaphore/lib/Thread/Semaphore.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Semaphore/lib/Thread/Semaphore.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Semaphore/lib/Thread/Semaphore.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Semaphore/t/01_basic.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Semaphore/t/01_basic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Semaphore/t/01_basic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Semaphore/t/01_basic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Semaphore/t/02_errs.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Semaphore/t/02_errs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Semaphore/t/02_errs.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Semaphore/t/02_errs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Semaphore/t/03_nothreads.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Semaphore/t/03_nothreads.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Semaphore/t/03_nothreads.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Semaphore/t/03_nothreads.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Semaphore/t/04_nonblocking.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Semaphore/t/04_nonblocking.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Semaphore/t/04_nonblocking.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Semaphore/t/04_nonblocking.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/Thread-Semaphore/t/05_force.t
===================================================================
--- trunk/contrib/perl/dist/Thread-Semaphore/t/05_force.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/Thread-Semaphore/t/05_force.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/Thread-Semaphore/t/05_force.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/XSLoader/Makefile.PL
===================================================================
--- trunk/contrib/perl/dist/XSLoader/Makefile.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/XSLoader/Makefile.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -27,6 +27,11 @@
# In case the empty lib/ directory was not created.
mkdir 'lib', 0755 unless $ENV{PERL_CORE};
+# starting with Perl 5.11, "site" and "vendor" directories finally are
+# before "perl" (core) in @INC, thus allowing dual-life modules to be
+# updated without the need to overwrite the old version
+my $installdirs = $] < 5.011 ? "perl" : "site";
+
WriteMakefile(
NAME => $PACKAGE,
LICENSE => 'perl',
@@ -33,12 +38,22 @@
AUTHOR => 'Sebastien Aperghis-Tramoni <sebastien at aperghis.net>',
VERSION_FROM => 'XSLoader_pm.PL',
ABSTRACT_FROM => 'XSLoader_pm.PL',
- INSTALLDIRS => 'perl',
+ INSTALLDIRS => $installdirs,
PL_FILES => { 'XSLoader_pm.PL' => 'XSLoader.pm' },
PM => { 'XSLoader.pm' => '$(INST_ARCHLIB)/XSLoader.pm' },
PREREQ_PM => {
- 'Test::More' => '0.62',
+ 'Test::More' => '0.47',
},
+ META_MERGE => {
+ resources => {
+ repository => 'git://perl5.git.perl.org/perl.git',
+ license => 'http://dev.perl.org/licenses/',
+ homepage => 'https://metacpan.org/module/Math::BigInt',
+ irc => 'irc://irc.perl.org/#p5p',
+ mailinglist => 'http://lists.perl.org/list/perl5-porters.html',
+ bugtracker => "https://rt.perl.org/rt3/Search/Results.html?Query=Queue='perl5' AND Content LIKE 'module=XSLoader' AND (Status='open' OR Status='new' OR Status='stalled')",
+ },
+ },
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'XSLoader-* XSLoader.pm' },
);
Property changes on: trunk/contrib/perl/dist/XSLoader/Makefile.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/XSLoader/XSLoader_pm.PL
===================================================================
--- trunk/contrib/perl/dist/XSLoader/XSLoader_pm.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/XSLoader/XSLoader_pm.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -8,15 +8,35 @@
package XSLoader;
-$VERSION = "0.13";
+$VERSION = "0.16";
#use strict;
+package DynaLoader;
+
+EOT
+
+# dlutils.c before 5.006 has this:
+#
+# #ifdef DEBUGGING
+# dl_debug = SvIV( perl_get_sv("DynaLoader::dl_debug", 0x04) );
+# #endif
+#
+# where 0x04 is GV_ADDWARN, which causes a warning to be issued by the call
+# into XS below, if DynaLoader.pm hasn't been loaded.
+# It was changed to 0 in the commit(s) that added XSLoader to the core
+# (9cf41c4d23a47c8b and its parent 9426adcd48655815)
+# Hence to backport XSLoader to work silently with earlier DynaLoaders we need
+# to ensure that the variable exists:
+
+print OUT <<'EOT' if $] < 5.006;
+
# enable debug/trace messages from DynaLoader perl code
-# $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug;
+$dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug;
-package DynaLoader;
+EOT
+print OUT <<'EOT';
# No prizes for guessing why we don't say 'bootstrap DynaLoader;' here.
# NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB
boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) &&
@@ -29,9 +49,9 @@
my ($module, $modlibname) = caller();
if (@_) {
- $module = $_[0];
+ $module = $_[0];
} else {
- $_[0] = $module;
+ $_[0] = $module;
}
# work with static linking too
@@ -63,7 +83,7 @@
print OUT <<'EOT';
my $modpname = join('/', at modparts);
my $c = @modparts;
- $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
+ $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
EOT
my $dl_dlext = quotemeta($Config::Config{'dlext'});
@@ -139,7 +159,7 @@
}
EOT
-# Can't test with DynaLoader->can('bootstrap_inherit' when building in the
+# Can't test with DynaLoader->can('bootstrap_inherit') when building in the
# core, as XSLoader gets built before DynaLoader.
if ($] >= 5.006) {
@@ -181,7 +201,7 @@
=head1 VERSION
-Version 0.13
+Version 0.16
=head1 SYNOPSIS
@@ -237,7 +257,7 @@
XSLoader::load 'YourPackage';
-If the call to C<load> is from the YourPackage, then that can be further
+If the call to C<load> is from C<YourPackage>, then that can be further
simplified to
XSLoader::load();
@@ -269,7 +289,7 @@
C<XSLoader::load()> is present.
This boilerplate uses the low-overhead C<XSLoader> if present; if used with
-an antic Perl which has no C<XSLoader>, it falls back to using C<DynaLoader>.
+an antique Perl which has no C<XSLoader>, it falls back to using C<DynaLoader>.
=head1 Order of initialization: early load()
@@ -392,6 +412,12 @@
C<make install>.
+=head1 KNOWN BUGS
+
+The new simpler way to call C<XSLoader::load()> with no arguments at all
+does not work on Perl 5.8.4 and 5.8.5.
+
+
=head1 BUGS
Please report any bugs or feature requests via the perlbug(1) utility.
@@ -414,7 +440,7 @@
=head1 COPYRIGHT & LICENSE
-Copyright (C) 1990-2007 by Larry Wall and others.
+Copyright (C) 1990-2011 by Larry Wall and others.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
Property changes on: trunk/contrib/perl/dist/XSLoader/XSLoader_pm.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/XSLoader/t/XSLoader.t
===================================================================
--- trunk/contrib/perl/dist/XSLoader/t/XSLoader.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/XSLoader/t/XSLoader.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,12 +5,13 @@
my $db_file;
BEGIN {
- eval "use Test::More";
- if ($@) {
+ if (not eval "use Test::More; 1") {
print "1..0 # Skip: Test::More not available\n";
die "Test::More not available\n";
}
+ plan(skip_all => "these tests needs Perl 5.5+") if $] < 5.005;
+
use Config;
foreach (qw/SDBM_File GDBM_File ODBM_File NDBM_File DB_File/) {
if ($Config{extensions} =~ /\b$_\b/) {
@@ -24,13 +25,15 @@
my %modules = (
# ModuleName => q|code to check that it was loaded|,
'Cwd' => q| ::can_ok( 'Cwd' => 'fastcwd' ) |, # 5.7 ?
- 'File::Glob' => q| ::can_ok( 'File::Glob' => 'doglob' ) |, # 5.6
+ 'File::Glob' => q| ::can_ok( 'File::Glob' => # 5.6
+ $] > 5.014
+ ? 'bsd_glob' : 'doglob') |,
$db_file => q| ::can_ok( $db_file => 'TIEHASH' ) |, # 5.0
'Socket' => q| ::can_ok( 'Socket' => 'inet_aton' ) |, # 5.0
'Time::HiRes'=> q| ::can_ok( 'Time::HiRes' => 'usleep' ) |, # 5.7.3
);
-plan tests => keys(%modules) * 3 + 7;
+plan tests => keys(%modules) * 3 + 8;
# Try to load the module
use_ok( 'XSLoader' );
@@ -40,20 +43,31 @@
can_ok( 'XSLoader' => 'bootstrap_inherit' );
# Check error messages
-foreach (['Thwack', 'package Thwack; XSLoader::load(); 1'],
- ['Zlott', 'package Thwack; XSLoader::load("Zlott"); 1'],
- ) {
- my ($should_load, $codestr) = @$_;
- is(eval $codestr, undef, "eval '$codestr' should die");
+my @cases = (
+ [ 'Thwack', 'package Thwack; XSLoader::load(); 1' ],
+ [ 'Zlott' , 'package Thwack; XSLoader::load("Zlott"); 1' ],
+);
+for my $case (@cases) {
+ my ($should_load, $codestr) = @$case;
+ my $diag;
+
+ # determine the expected diagnostic
if ($Config{usedl}) {
- like( $@, qr/^Can't locate loadable object for module $should_load in \@INC/,
- "calling XSLoader::load() under a package with no XS part" );
+ if ($case->[0] eq "Thwack" and ($] == 5.008004 or $] == 5.008005)) {
+ # these versions had bugs with chained C<goto &>
+ $diag = "Usage: DynaLoader::bootstrap\\(module\\)";
+ } else {
+ # normal diagnostic for a perl with dynamic loading
+ $diag = "Can't locate loadable object for module $should_load in \@INC";
+ }
+ } else {
+ # a perl with no dynamic loading
+ $diag = "Can't load module $should_load, dynamic loading not available in this perl.";
}
- else {
- like( $@, qr/^Can't load module $should_load, dynamic loading not available in this perl./,
- "calling XSLoader::load() under a package with no XS part" );
- }
+
+ is(eval $codestr, undef, "eval '$codestr' should die");
+ like($@, qr/^$diag/, "calling XSLoader::load() under a package with no XS part");
}
# Now try to load well known XS modules
@@ -61,14 +75,11 @@
$extensions =~ s|/|::|g;
for my $module (sort keys %modules) {
- my $warnings = "";
- local $SIG{__WARN__} = sub { $warnings = $_[0] };
-
SKIP: {
- skip "$module not available", 4 if $extensions !~ /\b$module\b/;
+ skip "$module not available", 3 if $extensions !~ /\b$module\b/;
eval qq{ package $module; XSLoader::load('$module', "12345678"); };
- like( $@, "/^$module object version \\S+ does not match bootstrap parameter (?:12345678|0)/",
+ like( $@, "/^$module object version \\S+ does not match bootstrap parameter 12345678/",
"calling XSLoader::load() with a XS module and an incorrect version" );
eval qq{ package $module; XSLoader::load('$module'); };
@@ -78,3 +89,10 @@
}
}
+SKIP: {
+ skip "Needs 5.15.6", 1 unless $] > 5.0150051;
+ skip "List::Util not available", 1 if $extensions !~ /\bList::Util\b/;
+ eval 'package List::Util; XSLoader::load(__PACKAGE__, "version")';
+ like $@, "/^Invalid version format/",
+ 'correct error msg for invalid versions';
+}
Property changes on: trunk/contrib/perl/dist/XSLoader/t/XSLoader.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/autouse/lib/autouse.pm
===================================================================
--- trunk/contrib/perl/dist/autouse/lib/autouse.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/autouse/lib/autouse.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -3,7 +3,7 @@
#use strict; # debugging only
use 5.006; # use warnings
-$autouse::VERSION = '1.06';
+$autouse::VERSION = '1.07';
$autouse::DEBUG ||= 0;
Property changes on: trunk/contrib/perl/dist/autouse/lib/autouse.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/autouse/t/autouse.t
===================================================================
--- trunk/contrib/perl/dist/autouse/t/autouse.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/autouse/t/autouse.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -8,7 +8,7 @@
}
}
-use Test::More tests => 12;
+use Test::More tests => 15;
BEGIN {
require autouse;
@@ -69,3 +69,34 @@
my $ret = test_function();
is( $ret, 'works' );
+# Test that autouse is exempt from all methods of triggering the subroutine
+# redefinition warning.
+SKIP: {
+ skip "Fails in 5.15.5 and below (perl bug)", 2 if $] < 5.0150051;
+ use warnings; local $^W = 1; no warnings 'once';
+ my $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ use autouse MyTestModule2 => 'test_function2';
+ *MyTestModule2::test_function2 = \&test_function2;
+ require MyTestModule2;
+ is $w, undef,
+ 'no redefinition warning when clobbering autouse stub with new sub';
+ undef $w;
+ import MyTestModule2 'test_function2';
+ is $w, undef,
+ 'no redefinition warning when clobbering autouse stub via *a=\&b';
+}
+SKIP: {
+ skip "Fails from 5.10 to 5.15.5 (perl bug)", 1
+ if $] < 5.0150051 and $] > 5.0099;
+ use Config;
+ skip "no B", 1 unless $Config{extensions} =~ /\bB\b/;
+ use warnings; local $^W = 1; no warnings 'once';
+ my $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ use autouse B => "sv_undef";
+ *B::sv_undef = \&sv_undef;
+ require B;
+ is $w, undef,
+ 'no redefinition warning when clobbering autouse stub with new XSUB';
+}
Property changes on: trunk/contrib/perl/dist/autouse/t/autouse.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/autouse/t/lib/MyTestModule.pm
===================================================================
--- trunk/contrib/perl/dist/autouse/t/lib/MyTestModule.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/autouse/t/lib/MyTestModule.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/autouse/t/lib/MyTestModule.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/autouse/t/lib/MyTestModule2.pm (from rev 6437, vendor/perl/5.18.1/dist/autouse/t/lib/MyTestModule2.pm)
===================================================================
--- trunk/contrib/perl/dist/autouse/t/lib/MyTestModule2.pm (rev 0)
+++ trunk/contrib/perl/dist/autouse/t/lib/MyTestModule2.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,12 @@
+package MyTestModule2;
+use warnings;
+
+ at ISA = Exporter;
+require Exporter;
+ at EXPORT_OK = 'test_function2';
+
+sub test_function2 {
+ return 'works';
+}
+
+1;
Modified: trunk/contrib/perl/dist/base/Changes
===================================================================
--- trunk/contrib/perl/dist/base/Changes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/Changes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,10 @@
+2.18
+ - Backport from bleadperl before 5.16.0 release
+ - base no longer sets a module's $VERSION to "-1" when a module it
+ loads does not define a $VERSION.
+ - base no longer internally skips loading modules it has already
+ loaded and instead relies on require to inspect %INC.
+
2.15
- Bump version to 2.15 so base and fields have the same version again
Property changes on: trunk/contrib/perl/dist/base/Changes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/MANIFEST
===================================================================
--- trunk/contrib/perl/dist/base/MANIFEST 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/MANIFEST 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/MANIFEST
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/META.yml
===================================================================
--- trunk/contrib/perl/dist/base/META.yml 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/META.yml 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/META.yml
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/base/lib/base.pm
===================================================================
--- trunk/contrib/perl/dist/base/lib/base.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/lib/base.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,7 +2,7 @@
use strict 'vars';
use vars qw($VERSION);
-$VERSION = '2.16';
+$VERSION = '2.18';
$VERSION = eval $VERSION;
# constant.pm is slow
@@ -22,12 +22,6 @@
return( ($fglob && 'GLOB' eq ref($fglob) && *$fglob{HASH}) ? 1 : 0 );
}
-sub has_version {
- my($base) = shift;
- my $vglob = ${$base.'::'}{VERSION};
- return( ($vglob && *$vglob{SCALAR}) ? 1 : 0 );
-}
-
sub has_attr {
my($proto) = shift;
my($class) = ref $proto || $proto;
@@ -70,7 +64,6 @@
my $fields_base;
my $inheritor = caller(0);
- my @isa_classes;
my @bases;
foreach my $base (@_) {
@@ -80,11 +73,8 @@
next if grep $_->isa($base), ($inheritor, @bases);
- if (has_version($base)) {
- ${$base.'::VERSION'} = '-1, set by base.pm'
- unless defined ${$base.'::VERSION'};
- }
- else {
+ # Following blocks help isolate $SIG{__DIE__} changes
+ {
my $sigdie;
{
local $SIG{__DIE__};
@@ -105,8 +95,6 @@
}
# Make sure a global $SIG{__DIE__} makes it out of the localization.
$SIG{__DIE__} = $sigdie if defined $sigdie;
- ${$base.'::VERSION'} = "-1, set by base.pm"
- unless defined ${$base.'::VERSION'};
}
push @bases, $base;
@@ -121,8 +109,6 @@
}
}
# Save this until the end so it's all or nothing if the above loop croaks.
- push @{"$inheritor\::ISA"}, @isa_classes;
-
push @{"$inheritor\::ISA"}, @bases;
if( defined $fields_base ) {
@@ -206,26 +192,26 @@
push @ISA, qw(Foo Bar);
}
-C<base> employs some heuristics to determine if a module has already been
-loaded, if it has it doesn't try again. If C<base> tries to C<require> the
-module it will not die if it cannot find the module's file, but will die on any
-other error. After all this, should your base class be empty, containing no
-symbols, it will die. This is useful for inheriting from classes in the same
-file as yourself, like so:
+When C<base> tries to C<require> a module, it will not die if it cannot find
+the module's file, but will die on any other error. After all this, should
+your base class be empty, containing no symbols, C<base> will die. This is
+useful for inheriting from classes in the same file as yourself but where
+the filename does not match the base module name, like so:
+ # in Bar.pm
package Foo;
sub exclaim { "I can have such a thing?!" }
-
+
package Bar;
use base "Foo";
-If $VERSION is not detected even after loading it, <base> will define $VERSION
-in the base package, setting it to the string C<-1, set by base.pm>.
+There is no F<Foo.pm>, but because C<Foo> defines a symbol (the C<exclaim>
+subroutine), C<base> will not die when the C<require> fails to load F<Foo.pm>.
C<base> will also initialize the fields if one of the base classes has it.
Multiple inheritance of fields is B<NOT> supported, if two or more base classes
-each have inheritable fields the 'base' pragma will croak. See L<fields>,
-L<public> and L<protected> for a description of this feature.
+each have inheritable fields the 'base' pragma will croak. See L<fields>
+for a description of this feature.
The base class' C<import> method is B<not> called.
Property changes on: trunk/contrib/perl/dist/base/lib/base.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/base/lib/fields.pm
===================================================================
--- trunk/contrib/perl/dist/base/lib/fields.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/lib/fields.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -11,7 +11,7 @@
}
use vars qw(%attr $VERSION);
-$VERSION = '2.15';
+$VERSION = '2.16';
# constant.pm is slow
sub PUBLIC () { 2**0 }
@@ -278,8 +278,8 @@
sub new {
my $self = shift;
$self = fields::new($self) unless ref $self;
- $self->{cat} = 'meow'; # scalar element
- @$self{'dog','bird'} = ('bark','tweet'); # slice
+ $self->{cat} = 'meow'; # scalar element
+ @$self{'dog','bird'} = ('bark','tweet'); # slice
return $self;
}
Property changes on: trunk/contrib/perl/dist/base/lib/fields.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/base/t/base.t
===================================================================
--- trunk/contrib/perl/dist/base/t/base.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/base.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -14,7 +14,7 @@
package Test::Version;
use base qw(No::Version);
-::ok( $No::Version::VERSION =~ /set by base\.pm/, '$VERSION bug' );
+::ok( ! defined $No::Version::VERSION, '$VERSION bug' );
# Test Inverse of $VERSION bug base.pm should not clobber existing $VERSION
package Has::Version;
Property changes on: trunk/contrib/perl/dist/base/t/base.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/compile-time.t
===================================================================
--- trunk/contrib/perl/dist/base/t/compile-time.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/compile-time.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/compile-time.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/fields-5_6_0.t
===================================================================
--- trunk/contrib/perl/dist/base/t/fields-5_6_0.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/fields-5_6_0.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/fields-5_6_0.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/base/t/fields-5_8_0.t
===================================================================
--- trunk/contrib/perl/dist/base/t/fields-5_8_0.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/fields-5_8_0.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -100,7 +100,7 @@
'Foo::Bar::Baz' => 'b1:1,b2:2,b3:3,foo:4,bar:5,baz:6',
);
-print "1..", int(keys %expect)+21, "\n";
+print "1..", int(keys %expect)+20, "\n";
my $testno = 0;
while (my($class, $exp) = each %expect) {
no strict 'refs';
@@ -187,19 +187,6 @@
print $a->{bar}->{A}, "\n";
}
-
-# Test $VERSION bug
-package No::Version;
-
-use vars qw($Foo);
-sub VERSION { 42 }
-
-package Test::Version;
-
-use base qw(No::Version);
-print "# $No::Version::VERSION\nnot " unless $No::Version::VERSION =~ /set by base\.pm/;
-print "ok ", ++$testno ,"\n";
-
# Test Inverse of $VERSION bug base.pm should not clobber existing $VERSION
package Has::Version;
Property changes on: trunk/contrib/perl/dist/base/t/fields-5_8_0.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/fields-base.t
===================================================================
--- trunk/contrib/perl/dist/base/t/fields-base.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/fields-base.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/fields-base.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/base/t/fields.t
===================================================================
--- trunk/contrib/perl/dist/base/t/fields.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/fields.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -108,10 +108,10 @@
ok(exists $x->{b}, 'x has b');
SKIP: {
- skip "These tests trigger a perl bug", 2 if $] < 5.014001;
+ skip "These tests trigger a perl bug", 2 if $] < 5.015;
$x->{a} = __PACKAGE__;
- ok eval { delete $x->{a}; 1 }, 'deleting COW values';
+ ok eval { delete $x->{a}; 1 }, 'deleting COW values' or diag $@;
$x->{a} = __PACKAGE__;
- ok eval { %$x = (); 1 }, 'clearing a restr hash containing COWs';
+ ok eval { %$x = (); 1 }, 'clearing a restr hash containing COWs' or diag $@;
}
}
Property changes on: trunk/contrib/perl/dist/base/t/fields.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/isa.t
===================================================================
--- trunk/contrib/perl/dist/base/t/isa.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/isa.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/isa.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/lib/Dummy.pm
===================================================================
--- trunk/contrib/perl/dist/base/t/lib/Dummy.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/lib/Dummy.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/lib/Dummy.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/lib/HasSigDie.pm
===================================================================
--- trunk/contrib/perl/dist/base/t/lib/HasSigDie.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/lib/HasSigDie.pm 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/lib/HasSigDie.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/sigdie.t
===================================================================
--- trunk/contrib/perl/dist/base/t/sigdie.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/sigdie.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/sigdie.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/version.t
===================================================================
--- trunk/contrib/perl/dist/base/t/version.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/version.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/version.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/base/t/warnings.t
===================================================================
--- trunk/contrib/perl/dist/base/t/warnings.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/base/t/warnings.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/base/t/warnings.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/bignum/lib/Math/BigFloat/Trace.pm
===================================================================
--- trunk/contrib/perl/dist/bignum/lib/Math/BigFloat/Trace.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/lib/Math/BigFloat/Trace.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -12,7 +12,7 @@
@ISA = qw(Exporter Math::BigFloat);
-$VERSION = 0.01;
+$VERSION = '0.32';
use overload; # inherit overload from BigFloat
Property changes on: trunk/contrib/perl/dist/bignum/lib/Math/BigFloat/Trace.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/bignum/lib/Math/BigInt/Trace.pm
===================================================================
--- trunk/contrib/perl/dist/bignum/lib/Math/BigInt/Trace.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/lib/Math/BigInt/Trace.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -12,7 +12,7 @@
@ISA = qw(Exporter Math::BigInt);
-$VERSION = 0.01;
+$VERSION = '0.32';
use overload; # inherit overload from BigInt
Property changes on: trunk/contrib/perl/dist/bignum/lib/Math/BigInt/Trace.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/bignum/lib/bigint.pm
===================================================================
--- trunk/contrib/perl/dist/bignum/lib/bigint.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/lib/bigint.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,10 +1,10 @@
package bigint;
use 5.006;
-$VERSION = '0.27';
+$VERSION = '0.34';
use Exporter;
@ISA = qw( Exporter );
- at EXPORT_OK = qw( PI e bpi bexp );
+ at EXPORT_OK = qw( PI e bpi bexp hex oct );
@EXPORT = qw( inf NaN );
use strict;
@@ -120,39 +120,68 @@
#############################################################################
# the following two routines are for "use bigint qw/hex oct/;":
-sub _hex_global
+use constant LEXICAL => $] > 5.009004;
+
+{
+ my $proto = LEXICAL ? '_' : ';$';
+ eval '
+sub hex(' . $proto . ')' . <<'.';
{
- my $i = $_[0];
+ my $i = @_ ? $_[0] : $_;
$i = '0x'.$i unless $i =~ /^0x/;
Math::BigInt->new($i);
}
-
-sub _oct_global
+.
+ eval '
+sub oct(' . $proto . ')' . <<'.';
{
- my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
+ my $i = @_ ? $_[0] : $_;
+ # oct() should never fall back to decimal
+ return Math::BigInt->from_oct($i) if $i =~ s/^(?=0[0-9]|[1-9])/0/;
Math::BigInt->new($i);
}
+.
+}
#############################################################################
# the following two routines are for Perl 5.9.4 or later and are lexical
-sub _hex
+my ($prev_oct, $prev_hex, $overridden);
+
+if (LEXICAL) { eval <<'.' }
+sub _hex(_)
{
- return CORE::hex($_[0]) unless in_effect(1);
+ my $hh = (caller 0)[10];
+ return $prev_hex ? &$prev_hex($_[0]) : CORE::hex($_[0])
+ unless $$hh{bigint}||$$hh{bignum}||$$hh{bigrat};
my $i = $_[0];
$i = '0x'.$i unless $i =~ /^0x/;
Math::BigInt->new($i);
}
-sub _oct
+sub _oct(_)
{
- return CORE::oct($_[0]) unless in_effect(1);
+ my $hh = (caller 0)[10];
+ return $prev_oct ? &$prev_oct($_[0]) : CORE::oct($_[0])
+ unless $$hh{bigint}||$$hh{bignum}||$$hh{bigrat};
my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
+ # oct() should never fall back to decimal
+ return Math::BigInt->from_oct($i) if $i =~ s/^(?=0[0-9]|[1-9])/0/;
Math::BigInt->new($i);
}
+.
+sub _override
+ {
+ return if $overridden;
+ $prev_oct = *CORE::GLOBAL::oct{CODE};
+ $prev_hex = *CORE::GLOBAL::hex{CODE};
+ no warnings 'redefine';
+ *CORE::GLOBAL::oct = \&_oct;
+ *CORE::GLOBAL::hex = \&_hex;
+ $overridden++;
+ }
+
sub import
{
my $self = shift;
@@ -159,12 +188,10 @@
$^H{bigint} = 1; # we are in effect
- my ($hex,$oct);
# for newer Perls always override hex() and oct() with a lexical version:
- if ($] > 5.009004)
+ if (LEXICAL)
{
- $oct = \&_oct;
- $hex = \&_hex;
+ _override();
}
# some defaults
my $lib = ''; my $lib_kind = 'try';
@@ -205,18 +232,8 @@
$trace = 1;
splice @a, $j, 1; $j --;
}
- elsif ($_[$i] eq 'hex')
+ elsif ($_[$i] !~ /^(PI|e|bpi|bexp|hex|oct)\z/)
{
- splice @a, $j, 1; $j --;
- $hex = \&_hex_global;
- }
- elsif ($_[$i] eq 'oct')
- {
- splice @a, $j, 1; $j --;
- $oct = \&_oct_global;
- }
- elsif ($_[$i] !~ /^(PI|e|bpi|bexp)\z/)
- {
die ("unknown option $_[$i]");
}
}
@@ -271,12 +288,7 @@
{
$self->export_to_level(1,$self, at a); # export inf and NaN, e and PI
}
- {
- no warnings 'redefine';
- *CORE::GLOBAL::oct = $oct if $oct;
- *CORE::GLOBAL::hex = $hex if $hex;
}
- }
sub inf () { Math::BigInt::binf(); }
sub NaN () { Math::BigInt::bnan(); }
@@ -302,7 +314,7 @@
print 2 ** 512,"\n"; # really is what you think it is
print inf + 42,"\n"; # inf
print NaN * 7,"\n"; # NaN
- print hex("0x1234567890123490"),"\n"; # Perl v5.9.4 or later
+ print hex("0x1234567890123490"),"\n"; # Perl v5.10.0 or later
{
no bigint;
@@ -309,7 +321,7 @@
print 2 ** 256,"\n"; # a normal Perl scalar now
}
- # Note that this will be global:
+ # Import into current package:
use bigint qw/hex oct/;
print hex("0x1234567890123490"),"\n";
print oct("01234567890123490"),"\n";
@@ -316,8 +328,8 @@
=head1 DESCRIPTION
-All operators (including basic math operations) are overloaded. Integer
-constants are created as proper BigInts.
+All operators (including basic math operations) except the range operator C<..>
+are overloaded. Integer constants are created as proper BigInts.
Floating point constants are truncated to integer. All parts and results of
expressions are also truncated.
@@ -353,11 +365,11 @@
expressions will be truncated anyway, but this can, for instance, affect the
return value of subroutines:
- sub three_integer { use integer; return 3.2; }
- sub three_bigint { use bigint; return 3.2; }
-
- print three_integer(), " ", three_bigint(),"\n"; # prints "3.2 3"
+ sub three_integer { use integer; return 3.2; }
+ sub three_bigint { use bigint; return 3.2; }
+ print three_integer(), " ", three_bigint(),"\n"; # prints "3.2 3"
+
=head2 Options
bigint recognizes some options that can be passed while loading it via use.
@@ -397,14 +409,16 @@
=item hex
Override the built-in hex() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or ealier, this will be global
-and cannot be disabled with "no bigint;".
+integers. 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 bigint pragma is active.
=item oct
Override the built-in oct() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or ealier, this will be global
-and cannot be disabled with "no bigint;".
+integers. 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 l, lib, try or only
@@ -479,12 +493,46 @@
minus infinity. You will get '+inf' when dividing a positive number by 0, and
'-inf' when dividing any negative number by 0.
-=head2 Methods
+=head2 Method calls
Since all numbers are now objects, you can use all functions that are part of
the BigInt API. You can only use the bxxx() notation, and not the fxxx()
notation, though.
+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;
+
+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 testthe 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.
+
+=head2 Methods
+
=over 2
=item inf()
@@ -556,48 +604,24 @@
=back
-=head2 MATH LIBRARY
+=head1 CAVEATS
-Math with the numbers is done (by default) by a module called
+=over 2
-=head2 Caveat
+=item ranges
-But a warning is in order. When using the following to make a copy of a number,
-only a shallow copy will be made.
+Perl does not allow overloading of ranges, so you can neither safely use
+ranges with bigint endpoints, nor is the iterator variable a bigint.
- $x = 9; $y = $x;
- $x = $y = 7;
+ use 5.010;
+ for my $i (12..13) {
+ for my $j (20..21) {
+ say $i ** $j; # produces a floating-point number,
+ # not a big integer
+ }
+ }
-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 testthe 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.
-
-=head1 CAVEATS
-
-=over 2
-
=item in_effect()
This method only works on Perl v5.9.4 or later.
@@ -644,7 +668,7 @@
Some cool command line examples to impress the Python crowd ;) You might want
to compare them to the results under -Mbignum or -Mbigrat:
-
+
perl -Mbigint -le 'print sqrt(33)'
perl -Mbigint -le 'print 2*255'
perl -Mbigint -le 'print 4.5+2*255'
@@ -666,7 +690,7 @@
L<bignum> as in C<perl -Mbignum -le 'print sqrt(2)'>.
L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well
-as L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+as L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=head1 AUTHORS
Property changes on: trunk/contrib/perl/dist/bignum/lib/bigint.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/bignum/lib/bignum.pm
===================================================================
--- trunk/contrib/perl/dist/bignum/lib/bignum.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/lib/bignum.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,15 +1,15 @@
package bignum;
use 5.006;
-$VERSION = '0.27';
+$VERSION = '0.33';
use Exporter;
@ISA = qw( bigint );
- at EXPORT_OK = qw( PI e bexp bpi );
+ at EXPORT_OK = qw( PI e bexp bpi hex oct );
@EXPORT = qw( inf NaN );
use strict;
use overload;
-require bigint; # no "use" to avoid import being called
+use bigint ();
##############################################################################
@@ -17,6 +17,8 @@
{
*inf = \&bigint::inf;
*NaN = \&bigint::NaN;
+ *hex = \&bigint::hex;
+ *oct = \&bigint::oct;
}
# These are all alike, and thus faked by AUTOLOAD
@@ -68,24 +70,7 @@
}
#############################################################################
-# the following two routines are for Perl 5.9.4 or later and are lexical
-sub _hex
- {
- return CORE::hex($_[0]) unless in_effect(1);
- my $i = $_[0];
- $i = '0x'.$i unless $i =~ /^0x/;
- Math::BigInt->new($i);
- }
-
-sub _oct
- {
- return CORE::oct($_[0]) unless in_effect(1);
- my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
- Math::BigInt->new($i);
- }
-
sub import
{
my $self = shift;
@@ -92,13 +77,10 @@
$^H{bignum} = 1; # we are in effect
- my ($hex,$oct);
-
# for newer Perls override hex() and oct() with a lexical version:
- if ($] > 5.009003)
+ if ($] > 5.009004)
{
- $hex = \&_hex;
- $oct = \&_oct;
+ bigint::_override();
}
# some defaults
@@ -156,18 +138,8 @@
$trace = 1;
splice @a, $j, 1; $j --;
}
- elsif ($_[$i] eq 'hex')
+ elsif ($_[$i] !~ /^(PI|e|bexp|bpi|hex|oct)\z/)
{
- splice @a, $j, 1; $j --;
- $hex = \&bigint::_hex_global;
- }
- elsif ($_[$i] eq 'oct')
- {
- splice @a, $j, 1; $j --;
- $oct = \&bigint::_oct_global;
- }
- elsif ($_[$i] !~ /^(PI|e|bexp|bpi)\z/)
- {
die ("unknown option $_[$i]");
}
}
@@ -233,12 +205,7 @@
{
$self->export_to_level(1,$self, at a); # export inf and NaN
}
- {
- no warnings 'redefine';
- *CORE::GLOBAL::oct = $oct if $oct;
- *CORE::GLOBAL::hex = $hex if $hex;
}
- }
sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); }
@@ -267,7 +234,7 @@
print 2 ** 256,"\n"; # a normal Perl scalar now
}
- # for older Perls, note that this will be global:
+ # for older Perls, import into current package:
use bignum qw/hex oct/;
print hex("0x1234567890123490"),"\n";
print oct("01234567890123490"),"\n";
@@ -364,12 +331,12 @@
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); }'
+ 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($_); }'
+ perl -Mbignum -le 'for (1..2) { print ref($_); }'
=head2 Options
@@ -420,14 +387,16 @@
=item hex
Override the built-in hex() method with a version that can handle big
-integers. Note that under Perl older than v5.9.4, this will be global
-and cannot be disabled with "no bigint;".
+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
-integers. Note that under Perl older than v5.9.4, this will be global
-and cannot be disabled with "no bigint;".
+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
@@ -650,7 +619,7 @@
=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'
@@ -672,7 +641,7 @@
Especially L<bigrat> as in C<perl -Mbigrat -le 'print 1/3+1/4'>.
L<Math::BigFloat>, L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well
-as L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+as L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=head1 AUTHORS
Property changes on: trunk/contrib/perl/dist/bignum/lib/bignum.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/bignum/lib/bigrat.pm
===================================================================
--- trunk/contrib/perl/dist/bignum/lib/bigrat.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/lib/bigrat.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,15 +1,15 @@
package bigrat;
use 5.006;
-$VERSION = '0.28';
+$VERSION = '0.33';
require Exporter;
@ISA = qw( bigint );
- at EXPORT_OK = qw( PI e bpi bexp );
+ at EXPORT_OK = qw( PI e bpi bexp hex oct );
@EXPORT = qw( inf NaN );
use strict;
use overload;
-require bigint; # no "use" to avoid callind import
+use bigint ();
##############################################################################
@@ -17,6 +17,8 @@
{
*inf = \&bigint::inf;
*NaN = \&bigint::NaN;
+ *hex = \&bigint::hex;
+ *oct = \&bigint::oct;
}
# These are all alike, and thus faked by AUTOLOAD
@@ -69,24 +71,7 @@
}
#############################################################################
-# the following two routines are for Perl 5.9.4 or later and are lexical
-sub _hex
- {
- return CORE::hex($_[0]) unless in_effect(1);
- my $i = $_[0];
- $i = '0x'.$i unless $i =~ /^0x/;
- Math::BigInt->new($i);
- }
-
-sub _oct
- {
- return CORE::oct($_[0]) unless in_effect(1);
- my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
- Math::BigInt->new($i);
- }
-
sub import
{
my $self = shift;
@@ -95,12 +80,10 @@
$^H{bigrat} = 1; # we are in effect
- my ($hex,$oct);
# for newer Perls always override hex() and oct() with a lexical version:
if ($] > 5.009004)
{
- $oct = \&_oct;
- $hex = \&_hex;
+ bigint::_override();
}
# some defaults
my $lib = ''; my $lib_kind = 'try'; my $upgrade = 'Math::BigFloat';
@@ -148,18 +131,8 @@
$trace = 1;
splice @a, $j, 1; $j --;
}
- elsif ($_[$i] eq 'hex')
+ elsif ($_[$i] !~ /^(PI|e|bpi|bexp|hex|oct)\z/)
{
- splice @a, $j, 1; $j --;
- $hex = \&bigint::_hex_global;
- }
- elsif ($_[$i] eq 'oct')
- {
- splice @a, $j, 1; $j --;
- $oct = \&bigint::_oct_global;
- }
- elsif ($_[$i] !~ /^(PI|e|bpi|bexp)\z/)
- {
die ("unknown option $_[$i]");
}
}
@@ -219,12 +192,7 @@
{
$self->export_to_level(1,$self, at a); # export inf and NaN
}
- {
- no warnings 'redefine';
- *CORE::GLOBAL::oct = $oct if $oct;
- *CORE::GLOBAL::hex = $hex if $hex;
}
- }
sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); }
@@ -257,7 +225,7 @@
print 1/3,"\n"; # 0.33333...
}
- # Note that this will make hex() and oct() be globally overridden:
+ # Import into current package:
use bigrat qw/hex oct/;
print hex("0x1234567890123490"),"\n";
print oct("01234567890123490"),"\n";
@@ -486,14 +454,16 @@
=item hex
Override the built-in hex() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or ealier, this will be global
-and cannot be disabled with "no bigint;".
+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 bigrat pragma is active.
=item oct
Override the built-in oct() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or earlier, this will be global
-and cannot be disabled with "no bigint;".
+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 bigrat pragma is active.
=item v or version
@@ -557,7 +527,7 @@
Especially L<bignum>.
L<Math::BigFloat>, L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well
-as L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+as L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=head1 AUTHORS
Property changes on: trunk/contrib/perl/dist/bignum/lib/bigrat.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/big_e_pi.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/big_e_pi.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/big_e_pi.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/big_e_pi.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/bigexp.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bigexp.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bigexp.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/bigexp.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/bignum/t/bigint.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bigint.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bigint.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -66,17 +66,17 @@
###############################################################################
# accuracy and precision
-is (bigint->accuracy(), undef);
-is (bigint->accuracy(12),12);
-is (bigint->accuracy(),12);
+is ('bigint'->accuracy(), undef);
+is ('bigint'->accuracy(12),12);
+is ('bigint'->accuracy(),12);
-is (bigint->precision(), undef);
-is (bigint->precision(12),12);
-is (bigint->precision(),12);
+is ('bigint'->precision(), undef);
+is ('bigint'->precision(12),12);
+is ('bigint'->precision(),12);
-is (bigint->round_mode(),'even');
-is (bigint->round_mode('odd'),'odd');
-is (bigint->round_mode(),'odd');
+is ('bigint'->round_mode(),'even');
+is ('bigint'->round_mode('odd'),'odd');
+is ('bigint'->round_mode(),'odd');
###############################################################################
# hex() and oct()
Property changes on: trunk/contrib/perl/dist/bignum/t/bigint.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/bignum.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bignum.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bignum.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/bignum.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/bigrat.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bigrat.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bigrat.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/bigrat.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/bii_e_pi.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bii_e_pi.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bii_e_pi.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/bii_e_pi.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/biinfnan.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/biinfnan.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/biinfnan.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/biinfnan.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/bir_e_pi.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bir_e_pi.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bir_e_pi.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/bir_e_pi.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/bn_lite.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bn_lite.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bn_lite.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/bn_lite.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/bninfnan.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/bninfnan.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/bninfnan.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/bninfnan.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/br_lite.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/br_lite.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/br_lite.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/br_lite.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/brinfnan.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/brinfnan.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/brinfnan.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/brinfnan.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/in_effect.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/in_effect.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/in_effect.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/in_effect.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/infnan.inc
===================================================================
--- trunk/contrib/perl/dist/bignum/t/infnan.inc 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/infnan.inc 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/infnan.inc
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/option_a.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/option_a.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/option_a.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/option_a.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/option_l.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/option_l.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/option_l.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/option_l.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/option_p.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/option_p.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/option_p.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/option_p.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/bignum/t/overrides.t (from rev 6437, vendor/perl/5.18.1/dist/bignum/t/overrides.t)
===================================================================
--- trunk/contrib/perl/dist/bignum/t/overrides.t (rev 0)
+++ trunk/contrib/perl/dist/bignum/t/overrides.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,112 @@
+#!perl -w
+
+# Test behaviour of hex and oct overrides in detail, and also how the three
+# modules interact.
+
+use Test::More tests => 35;
+
+# For testing that existing CORE::GLOBAL overrides are not clobbered
+BEGIN
+ {
+ if ($] > 5.009004)
+ {
+ no warnings 'syntax';
+ *CORE::GLOBAL::hex = sub(_) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+ *CORE::GLOBAL::oct = sub(_) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+ }
+ else
+ {
+ *CORE::GLOBAL::hex = sub(;$) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+ *CORE::GLOBAL::oct = sub(;$) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+ }
+ }
+
+{
+ use bigint;
+ $_ = "20";
+ is hex, "32", 'bigint hex override without arguments infers $_';
+ is oct, "16", 'bigint oct override without arguments infers $_';
+ @_ = 1..20;
+ is hex(@_), "32", 'bigint hex override provides scalar context';
+ is oct(@_), "16", 'bigint oct override provides scalar context';
+ SKIP:
+ {
+ skip "no lexical hex/oct", 2 unless $] > do { no bigint; 5.009004};
+ is ref hex(1), 'Math::BigInt',
+ 'bigint hex() works when bignum and bigrat are loaded';
+ is ref oct(1), 'Math::BigInt',
+ 'bigint oct() works when bignum and bigrat are loaded';
+ }
+}
+{
+ use bignum;
+ $_ = "20";
+ is hex, "32", 'bignum hex override without arguments infers $_';
+ is oct, "16", 'bignum oct override without arguments infers $_';
+ @_ = 1..20;
+ is hex(@_), "32", 'bignum hex override provides scalar context';
+ is oct(@_), "16", 'bignum oct override provides scalar context';
+ SKIP:
+ {
+ skip "no lexical hex/oct", 2 unless $] > 5.009004;
+ is ref hex(1), 'Math::BigInt',
+ 'bignum hex() works when bigint and bigrat are loaded';
+ is ref oct(1), 'Math::BigInt',
+ 'bignum oct() works when bigint and bigrat are loaded';
+ }
+}
+{
+ use bigrat;
+ $_ = "20";
+ is hex, "32", 'bigrat hex override without arguments infers $_';
+ is oct, "16", 'bigrat oct override without arguments infers $_';
+ @_ = 1..20;
+ is hex(@_), "32", 'bigrat hex override provides scalar context';
+ is oct(@_), "16", 'bigrat oct override provides scalar context';
+ SKIP:
+ {
+ skip "no lexical hex/oct", 2 unless $] > 5.009004;
+ is ref hex(1), 'Math::BigInt',
+ 'bigrat hex() works when bignum and bigint are loaded';
+ is ref oct(1), 'Math::BigInt',
+ 'bigrat oct() works when bignum and bigint are loaded';
+ }
+}
+
+$hex_called = 0;
+() = hex 0;
+is $hex_called, 1, 'existing hex overrides are called';
+$oct_called = 0;
+() = oct 0;
+is $oct_called, 1, 'existing oct overrides are called';
+
+{
+ package _importer;
+ {
+ use bigint 'hex', 'oct';
+ ::is \&hex, \&bigint::hex, 'exported hex function';
+ ::is \&oct, \&bigint::oct, 'exported oct function';
+ }
+ ::ok ref hex(), 'exported hex function returns ref outside pragma scope';
+ ::ok ref oct(), 'exported oct function returns ref outside pragma scope';
+ ::is oct("20"), "16", 'exported oct function works with "decimal"';
+ # (used to return 20 because it thought it was decimal)
+}
+{
+ package _importer2;
+ use bignum 'hex', 'oct';
+ ::is \&hex, \&bignum::hex, 'bignum exports hex';
+ ::is \&oct, \&bignum::oct, 'bignum exports oct';
+ ::is \&hex, \&bigint::hex, 'bignum exports same hex as bigint';
+ ::is \&oct, \&bigint::oct, 'bignum exports same oct as bigint';
+}
+{
+ package _importer3;
+ use bigrat 'hex', 'oct';
+ ::is \&hex, \&bigrat::hex, 'bigrat exports hex';
+ ::is \&oct, \&bigrat::oct, 'bigrat exports oct';
+ ::is \&hex, \&bigint::hex, 'bigrat exports same hex as bigint';
+ ::is \&oct, \&bigint::oct, 'bigrat exports same oct as bigint';
+}
+is ref(hex 0), "", 'hex export is not global';
+is ref(oct 0), "", 'oct export is not global';
Index: trunk/contrib/perl/dist/bignum/t/ratopt_a.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/ratopt_a.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/ratopt_a.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/ratopt_a.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/scope_f.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/scope_f.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/scope_f.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/scope_f.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/scope_i.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/scope_i.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/scope_i.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/scope_i.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/bignum/t/scope_r.t
===================================================================
--- trunk/contrib/perl/dist/bignum/t/scope_r.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/bignum/t/scope_r.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/bignum/t/scope_r.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/constant/lib/constant.pm
===================================================================
--- trunk/contrib/perl/dist/constant/lib/constant.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/constant/lib/constant.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,10 +1,10 @@
package constant;
-use 5.005;
+use 5.008;
use strict;
use warnings::register;
use vars qw($VERSION %declared);
-$VERSION = '1.21';
+$VERSION = '1.27';
#=======================================================================
@@ -17,10 +17,9 @@
my %forbidden = (%keywords, %forced_into_main);
-my $str_end = $] >= 5.006 ? "\\z" : "\\Z";
-my $normal_constant_name = qr/^_?[^\W_0-9]\w*$str_end/;
-my $tolerable = qr/^[A-Za-z_]\w*$str_end/;
-my $boolean = qr/^[01]?$str_end/;
+my $normal_constant_name = qr/^_?[^\W_0-9]\w*\z/;
+my $tolerable = qr/^[A-Za-z_]\w*\z/;
+my $boolean = qr/^[01]?\z/;
BEGIN {
# We'd like to do use constant _CAN_PCS => $] > 5.009002
@@ -29,6 +28,9 @@
no strict 'refs';
my $const = $] > 5.009002;
*_CAN_PCS = sub () {$const};
+
+ my $downgrade = $] < 5.015004; # && $] >= 5.008
+ *_DOWNGRADE = sub () { $downgrade };
}
#=======================================================================
@@ -117,10 +119,12 @@
if ($multiple || @_ == 1) {
my $scalar = $multiple ? $constants->{$name} : $_[0];
- # Work around perl bug #xxxxx: Sub names (actually glob
- # names in general) ignore the UTF8 flag. So we have to
- # turn it off to get the "right" symbol table entry.
- utf8::is_utf8 $name and utf8::encode $name;
+ if (_DOWNGRADE) { # for 5.8 to 5.14
+ # Work around perl bug #31991: Sub names (actually glob
+ # names in general) ignore the UTF8 flag. So we have to
+ # turn it off to get the "right" symbol table entry.
+ utf8::is_utf8 $name and utf8::encode $name;
+ }
# The constant serves to optimise this entire block out on
# 5.8 and earlier.
@@ -358,9 +362,6 @@
L<Readonly> - Facility for creating read-only scalars, arrays, hashes.
-L<Const> - Facility for creating read-only variables. Similar to C<Readonly>,
-but uses C<SvREADONLY> instead of C<tie>.
-
L<Attribute::Constant> - Make read-only variables via attribute
L<Scalar::Readonly> - Perl extension to the C<SvREADONLY> scalar flag
Property changes on: trunk/contrib/perl/dist/constant/lib/constant.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/constant/t/constant.t
===================================================================
--- trunk/contrib/perl/dist/constant/t/constant.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/constant/t/constant.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -167,7 +167,6 @@
@warnings = ();
eval q{
no warnings;
- #local $^W if $] < 5.006;
use warnings 'constant';
use constant 'BEGIN' => 1 ;
use constant 'INIT' => 1 ;
Property changes on: trunk/contrib/perl/dist/constant/t/constant.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/constant/t/utf8.t
===================================================================
--- trunk/contrib/perl/dist/constant/t/utf8.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/constant/t/utf8.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,10 +1,16 @@
#!./perl -T
+use Test::More;
+BEGIN {
+ plan skip_all => "irrelevant on pre-5.8.4" if $] < 5.008004
+}
+
# Tests for constant.pm that require the utf8 pragma
use utf8;
-use Test::More tests => 2;
+plan tests => 2;
+
use constant π => 4 * atan2 1, 1;
ok defined π, 'basic scalar constant with funny name';
Property changes on: trunk/contrib/perl/dist/constant/t/utf8.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/if/if.pm
===================================================================
--- trunk/contrib/perl/dist/if/if.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/if/if.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,10 +1,10 @@
package if;
-$VERSION = '0.0601';
+$VERSION = '0.0602';
sub work {
my $method = shift() ? 'import' : 'unimport';
- die "Too few arguments to `use if' (some code returning an empty list in list context?)"
+ die "Too few arguments to 'use if' (some code returning an empty list in list context?)"
unless @_ >= 2;
return unless shift; # CONDITION
Property changes on: trunk/contrib/perl/dist/if/if.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/if/t/if.t
===================================================================
--- trunk/contrib/perl/dist/if/t/if.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/if/t/if.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -26,7 +26,7 @@
'"use if" with a true condition and a pragma');
like( $@, qr/while "strict refs" in use/, 'expected error message'),
-# Old version had problems with the module name `open', which is a keyword too
+# Old version had problems with the module name 'open', which is a keyword too
# Use 'open' =>, since pre-5.6.0 could interpret differently
is( (eval "use if ($v_plus > \$]), 'open' => IN => ':crlf'; 12" || 0), 12,
'"use if" with open');
Property changes on: trunk/contrib/perl/dist/if/t/if.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/lib/Makefile.PL
===================================================================
--- trunk/contrib/perl/dist/lib/Makefile.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/lib/Makefile.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/lib/Makefile.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/lib/lib_pm.PL
===================================================================
--- trunk/contrib/perl/dist/lib/lib_pm.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/lib/lib_pm.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/lib/lib_pm.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/lib/t/01lib.t
===================================================================
--- trunk/contrib/perl/dist/lib/t/01lib.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/lib/t/01lib.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/lib/t/01lib.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/hints/hpux.pl
===================================================================
--- trunk/contrib/perl/dist/threads/hints/hpux.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/hints/hpux.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/hints/hpux.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/hints/linux.pl
===================================================================
--- trunk/contrib/perl/dist/threads/hints/linux.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/hints/linux.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/hints/linux.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads/lib/threads.pm
===================================================================
--- trunk/contrib/perl/dist/threads/lib/threads.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/lib/threads.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -5,7 +5,7 @@
use strict;
use warnings;
-our $VERSION = '1.83';
+our $VERSION = '1.86';
my $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -134,7 +134,7 @@
=head1 VERSION
-This document describes threads version 1.83
+This document describes threads version 1.86
=head1 SYNOPSIS
@@ -939,6 +939,36 @@
On MSWin32, each thread maintains its own set of environment variables.
+=item Catching signals
+
+Signals are I<caught> by the main thread (thread ID = 0) of a script.
+Therefore, setting up signal handlers in threads for purposes other than
+L</"THREAD SIGNALLING"> as documented above will not accomplish what is
+intended.
+
+This is especially true if trying to catch C<SIGALRM> in a thread. To handle
+alarms in threads, set up a signal handler in the main thread, and then use
+L</"THREAD SIGNALLING"> to relay the signal to the thread:
+
+ # Create thread with a task that may time out
+ my $thr->create(sub {
+ threads->yield();
+ eval {
+ $SIG{ALRM} = sub { die("Timeout\n"); };
+ alarm(10);
+ ... # Do work here
+ alarm(0);
+ };
+ if ($@ =~ /Timeout/) {
+ warn("Task in thread timed out\n");
+ }
+ };
+
+ # Set signal handler to relay SIGALRM to thread
+ $SIG{ALRM} = sub { $thr->kill('ALRM') };
+
+ ... # Main thread continues working
+
=item Parent-child threads
On some platforms, it might not be possible to destroy I<parent> threads while
@@ -1051,7 +1081,7 @@
L<http://www.perl.com/pub/a/2002/09/04/threads.html>
Perl threads mailing list:
-L<http://lists.cpan.org/showlist.cgi?name=iThreads>
+L<http://lists.perl.org/list/ithreads.html>
Stack size discussion:
L<http://www.perlmonks.org/?node_id=532956>
Property changes on: trunk/contrib/perl/dist/threads/lib/threads.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/basic.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/basic.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/basic.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/basic.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/blocks.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/blocks.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/blocks.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/blocks.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/context.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/context.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/context.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/context.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/end.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/end.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/end.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/end.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/err.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/err.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/err.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/err.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads/t/exit.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/exit.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/exit.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -48,7 +48,7 @@
ok(! defined($rc), 'Exited: threads->exit()');
-run_perl(prog => 'use threads 1.83;' .
+run_perl(prog => 'use threads 1.86;' .
'threads->exit(86);' .
'exit(99);',
nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -98,7 +98,7 @@
ok(! defined($rc), 'Exited: $thr->set_thread_exit_only');
-run_perl(prog => 'use threads 1.83 qw(exit thread_only);' .
+run_perl(prog => 'use threads 1.86 qw(exit thread_only);' .
'threads->create(sub { exit(99); })->join();' .
'exit(86);',
nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -108,7 +108,7 @@
is($?>>8, 86, "'use threads 'exit' => 'thread_only'");
}
-my $out = run_perl(prog => 'use threads 1.83;' .
+my $out = run_perl(prog => 'use threads 1.86;' .
'threads->create(sub {' .
' exit(99);' .
'});' .
@@ -124,7 +124,7 @@
like($out, '1 finished and unjoined', "exit(status) in thread");
-$out = run_perl(prog => 'use threads 1.83 qw(exit thread_only);' .
+$out = run_perl(prog => 'use threads 1.86 qw(exit thread_only);' .
'threads->create(sub {' .
' threads->set_thread_exit_only(0);' .
' exit(99);' .
@@ -141,7 +141,7 @@
like($out, '1 finished and unjoined', "set_thread_exit_only(0)");
-run_perl(prog => 'use threads 1.83;' .
+run_perl(prog => 'use threads 1.86;' .
'threads->create(sub {' .
' $SIG{__WARN__} = sub { exit(99); };' .
' die();' .
Property changes on: trunk/contrib/perl/dist/threads/t/exit.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/free.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/free.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/free.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/free.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/free2.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/free2.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/free2.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/free2.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/join.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/join.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/join.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/join.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/kill.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/kill.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/kill.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/kill.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/kill2.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/kill2.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/kill2.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/kill2.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/libc.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/libc.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/libc.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/libc.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/list.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/list.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/list.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/list.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/no_threads.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/no_threads.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/no_threads.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/no_threads.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/problems.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/problems.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/problems.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/problems.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/stack.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/stack.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/stack.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/stack.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/stack_env.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/stack_env.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/stack_env.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/stack_env.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/state.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/state.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/state.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/state.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/stress_cv.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/stress_cv.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/stress_cv.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/stress_cv.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/stress_re.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/stress_re.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/stress_re.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/stress_re.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads/t/stress_string.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/stress_string.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/stress_string.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads/t/stress_string.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads/t/thread.t
===================================================================
--- trunk/contrib/perl/dist/threads/t/thread.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/t/thread.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -161,7 +161,7 @@
# bugid #24165
-run_perl(prog => 'use threads 1.83;' .
+run_perl(prog => 'use threads 1.86;' .
'sub a{threads->create(shift)} $t = a sub{};' .
'$t->tid; $t->join; $t->tid',
nolib => ($ENV{PERL_CORE}) ? 0 : 1,
Property changes on: trunk/contrib/perl/dist/threads/t/thread.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads/threads.xs
===================================================================
--- trunk/contrib/perl/dist/threads/threads.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads/threads.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -14,6 +14,9 @@
# if defined(USE_NO_MINGW_SETJMP_TWO_ARGS) || (!defined(__BORLANDC__) && !defined(__MINGW64__))
# define setjmp(x) _setjmp(x)
# endif
+# if defined(__MINGW64__)
+# define setjmp(x) _setjmpex((x), mingw_getsp())
+# endif
#endif
#ifdef HAS_PPPORT_H
# define NEED_PL_signals
@@ -982,7 +985,6 @@
SV *thread_exit_only;
char *str;
int idx;
- unsigned int num_args;
dMY_POOL;
CODE:
if ((items >= 2) && SvROK(ST(1)) && SvTYPE(SvRV(ST(1)))==SVt_PVHV) {
Property changes on: trunk/contrib/perl/dist/threads/threads.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/hints/linux.pl
===================================================================
--- trunk/contrib/perl/dist/threads-shared/hints/linux.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/hints/linux.pl 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/hints/linux.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads-shared/lib/threads/shared.pm
===================================================================
--- trunk/contrib/perl/dist/threads-shared/lib/threads/shared.pm 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/lib/threads/shared.pm 2013-12-02 21:27:05 UTC (rev 6440)
@@ -7,7 +7,7 @@
use Scalar::Util qw(reftype refaddr blessed);
-our $VERSION = '1.37';
+our $VERSION = '1.43';
my $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -14,6 +14,9 @@
# Declare that we have been loaded
$threads::shared::threads_shared = 1;
+# Method of complaint about things we can't clone
+$threads::shared::clone_warn = undef;
+
# Load the XS code, if applicable
if ($threads::threads) {
require XSLoader;
@@ -156,7 +159,12 @@
} else {
require Carp;
- Carp::croak("Unsupported ref type: ", $ref_type);
+ if (! defined($threads::shared::clone_warn)) {
+ Carp::croak("Unsupported ref type: ", $ref_type);
+ } elsif ($threads::shared::clone_warn) {
+ Carp::carp("Unsupported ref type: ", $ref_type);
+ }
+ return undef;
}
# If input item is an object, then bless the copy into the same class
@@ -187,7 +195,7 @@
=head1 VERSION
-This document describes threads::shared version 1.37
+This document describes threads::shared version 1.43
=head1 SYNOPSIS
@@ -311,6 +319,19 @@
$var = &share([]); # Same as $var = shared_clone([]);
$var = &share({}); # Same as $var = shared_clone({});
+Not all Perl data types can be cloned (e.g., globs, code refs). By default,
+C<shared_clone> will L<croak|Carp> if it encounters such items. To change
+this behaviour to a warning, then set the following:
+
+ $threads::shared::clone_warn = 1;
+
+In this case, C<undef> will be substituted for the item to be cloned. If
+set to zero:
+
+ $threads::shared::clone_warn = 0;
+
+then the C<undef> substitution will be performed silently.
+
=item is_shared VARIABLE
C<is_shared> checks if the specified variable is shared or not. If shared,
@@ -383,10 +404,10 @@
The C<cond_wait> function takes a B<locked> variable as a parameter, unlocks
the variable, and blocks until another thread does a C<cond_signal> or
C<cond_broadcast> for that same locked variable. The variable that
-C<cond_wait> blocked on is relocked after the C<cond_wait> is satisfied. If
+C<cond_wait> blocked on is re-locked after the C<cond_wait> is satisfied. If
there are multiple threads C<cond_wait>ing on the same variable, all but one
will re-block waiting to reacquire the lock on the variable. (So if you're only
-using C<cond_wait> for synchronisation, give up the lock as soon as possible).
+using C<cond_wait> for synchronization, give up the lock as soon as possible).
The two actions of unlocking the variable and entering the blocked wait state
are atomic, the two actions of exiting from the blocked wait state and
re-locking the variable are not.
@@ -408,7 +429,8 @@
=item cond_timedwait CONDVAR, ABS_TIMEOUT, LOCKVAR
In its two-argument form, C<cond_timedwait> takes a B<locked> variable and an
-absolute timeout as parameters, unlocks the variable, and blocks until the
+absolute timeout in I<epoch> seconds (see L<time() in perlfunc|perlfunc/time>
+for more) as parameters, unlocks the variable, and blocks until the
timeout is reached or another thread signals the variable. A false value is
returned if the timeout is reached, and a true value otherwise. In either
case, the variable is re-locked upon return.
@@ -527,6 +549,11 @@
mentioned limitation. See F<examples/class.pl> (in the CPAN distribution of
this module) for how to create a class that supports object sharing.
+Destructors may not be called on objects if those objects still exist at
+global destruction time. If the destructors must be called, make sure
+there are no circular references and that nothing is referencing the
+objects, before the program ends.
+
Does not support C<splice> on arrays. Does not support explicitly changing
array lengths via $#array -- use C<push> and C<pop> instead.
@@ -538,12 +565,12 @@
C<< share($arrayref->[idx]) >> without giving any error message. But the
C<< $hashref->{key} >> or C<< $arrayref->[idx] >> is B<not> shared, causing
the error "lock can only be used on shared values" to occur when you attempt
-to C<< lock($hasref->{key}) >> or C<< lock($arrayref->[idx]) >> in another
+to C<< lock($hashref->{key}) >> or C<< lock($arrayref->[idx]) >> in another
thread.
Using L<refaddr()|Scalar::Util/"refaddr EXPR">) is unreliable for testing
whether or not two shared references are equivalent (e.g., when testing for
-circular references). Use L<is_shared()/"is_shared VARIABLE">, instead:
+circular references). Use L<is_shared()|/"is_shared VARIABLE">, instead:
use threads;
use threads::shared;
@@ -580,6 +607,13 @@
...
}
+This module supports dual-valued variables created using L<dualvar() from
+Scalar::Util|Scalar::Util/"dualvar NUM, STRING">). However, while C<$!> acts
+like a dualvar, it is implemented as a tied SV. To propagate its value, use
+the follow construct, if needed:
+
+ my $errno :shared = dualvar($!,$!);
+
View existing bug reports at, and submit any new bugs, problems, patches, etc.
to: L<http://rt.cpan.org/Public/Dist/Display.html?Name=threads-shared>
@@ -594,7 +628,7 @@
L<http://www.perl.com/pub/a/2002/09/04/threads.html>
Perl threads mailing list:
-L<http://lists.cpan.org/showlist.cgi?name=iThreads>
+L<http://lists.perl.org/list/ithreads.html>
=head1 AUTHOR
Property changes on: trunk/contrib/perl/dist/threads-shared/lib/threads/shared.pm
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads-shared/shared.xs
===================================================================
--- trunk/contrib/perl/dist/threads-shared/shared.xs 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/shared.xs 2013-12-02 21:27:05 UTC (rev 6440)
@@ -304,6 +304,24 @@
#endif
};
+
+/* Support for dual-valued variables */
+#ifdef SVf_IVisUV
+# define DUALVAR_FLAGS(sv) \
+ ((SvPOK(sv)) \
+ ? ((SvNOK(sv) || SvNOKp(sv)) ? SVf_NOK \
+ : ((SvIsUV(sv)) ? (SVf_IOK | SVf_IVisUV) \
+ : ((SvIOK(sv) || SvIOKp(sv)) ? SVf_IOK : 0))) \
+ : 0)
+#else
+# define DUALVAR_FLAGS(sv) \
+ ((SvPOK(sv)) \
+ ? ((SvNOK(sv) || SvNOKp(sv)) ? SVf_NOK \
+ : ((SvIOK(sv) || SvIOKp(sv)) ? SVf_IOK : 0)) \
+ : 0)
+#endif
+
+
/*
* Access to shared things is heavily based on MAGIC
* - in mg.h/mg.c/sv.c sense
@@ -326,11 +344,7 @@
/* Get shared aggregate SV pointed to by threads::shared::tie magic object */
-STATIC SV *
-S_sharedsv_from_obj(pTHX_ SV *sv)
-{
- return ((SvROK(sv)) ? INT2PTR(SV *, SvIV(SvRV(sv))) : NULL);
-}
+#define SHAREDSV_FROM_OBJ(sv) ((SvROK(sv)) ? INT2PTR(SV *, SvIV(SvRV(sv))) : NULL)
/* Return the user_lock structure (if any) associated with a shared SV.
@@ -405,7 +419,7 @@
}
/* Just for tidyness of API also handle tie objects */
if (SvROK(sv) && sv_derived_from(sv, "threads::shared::tie")) {
- return (S_sharedsv_from_obj(aTHX_ sv));
+ return (SHAREDSV_FROM_OBJ(sv));
}
return (NULL);
}
@@ -661,14 +675,13 @@
}
-/* Given a shared RV, copy it's value to a private RV, also copying the
- * object status of the referent.
+/* Given a thingy referenced by a shared RV, copy it's value to a private
+ * RV, also copying the object status of the referent.
* If the private side is already an appropriate RV->SV combination, keep
* it if possible.
*/
STATIC void
-S_get_RV(pTHX_ SV *sv, SV *ssv) {
- SV *sobj = SvRV(ssv);
+S_get_RV(pTHX_ SV *sv, SV *sobj) {
SV *obj;
if (! (SvROK(sv) &&
((obj = SvRV(sv))) &&
@@ -683,7 +696,7 @@
sv_setsv_nomg(sv, &PL_sv_undef);
SvROK_on(sv);
}
- obj = S_sharedsv_new_private(aTHX_ SvRV(ssv));
+ obj = S_sharedsv_new_private(aTHX_ sobj);
SvRV_set(sv, obj);
}
@@ -702,7 +715,17 @@
}
}
+/* Every caller of S_get_RV needs this incantation (which cannot go inside
+ S_get_RV itself, as we do not want recursion beyond one level): */
+#define get_RV(sv, sobj) \
+ S_get_RV(aTHX_ sv, sobj); \
+ /* Look ahead for refs of refs */ \
+ if (SvROK(sobj)) { \
+ SvROK_on(SvRV(sv)); \
+ S_get_RV(aTHX_ SvRV(sv), SvRV(sobj)); \
+ }
+
/* ------------ PERL_MAGIC_shared_scalar(n) functions -------------- */
/* Get magic for PERL_MAGIC_shared_scalar(n) */
@@ -715,12 +738,7 @@
ENTER_LOCK;
if (SvROK(ssv)) {
- S_get_RV(aTHX_ sv, ssv);
- /* Look ahead for refs of refs */
- if (SvROK(SvRV(ssv))) {
- SvROK_on(SvRV(sv));
- S_get_RV(aTHX_ SvRV(sv), SvRV(ssv));
- }
+ get_RV(sv, SvRV(ssv));
} else {
sv_setsv_nomg(sv, ssv);
}
@@ -739,6 +757,11 @@
bool allowed = TRUE;
assert(PL_sharedsv_lock.owner == aTHX);
+ if (!PL_dirty && SvROK(ssv) && SvREFCNT(SvRV(ssv)) == 1) {
+ SV *sv = sv_newmortal();
+ sv_upgrade(sv, SVt_RV);
+ get_RV(sv, SvRV(ssv));
+ }
if (SvROK(sv)) {
SV *obj = SvRV(sv);
SV *sobj = Perl_sharedsv_find(aTHX_ obj);
@@ -809,7 +832,15 @@
sharedsv_scalar_mg_free(pTHX_ SV *sv, MAGIC *mg)
{
PERL_UNUSED_ARG(sv);
+ ENTER_LOCK;
+ if (!PL_dirty
+ && SvROK((SV *)mg->mg_ptr) && SvREFCNT(SvRV((SV *)mg->mg_ptr)) == 1) {
+ SV *sv = sv_newmortal();
+ sv_upgrade(sv, SVt_RV);
+ get_RV(sv, SvRV((SV *)mg->mg_ptr));
+ }
S_sharedsv_dec(aTHX_ (SV*)mg->mg_ptr);
+ LEAVE_LOCK;
return (0);
}
@@ -868,7 +899,7 @@
sharedsv_elem_mg_FETCH(pTHX_ SV *sv, MAGIC *mg)
{
dTHXc;
- SV *saggregate = S_sharedsv_from_obj(aTHX_ mg->mg_obj);
+ SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
SV** svp = NULL;
ENTER_LOCK;
@@ -898,12 +929,7 @@
if (svp) {
/* Exists in the array */
if (SvROK(*svp)) {
- S_get_RV(aTHX_ sv, *svp);
- /* Look ahead for refs of refs */
- if (SvROK(SvRV(*svp))) {
- SvROK_on(SvRV(sv));
- S_get_RV(aTHX_ SvRV(sv), SvRV(*svp));
- }
+ get_RV(sv, SvRV(*svp));
} else {
/* $ary->[elem] or $ary->{elem} is a scalar */
Perl_sharedsv_associate(aTHX_ sv, *svp);
@@ -923,8 +949,10 @@
sharedsv_elem_mg_STORE(pTHX_ SV *sv, MAGIC *mg)
{
dTHXc;
- SV *saggregate = S_sharedsv_from_obj(aTHX_ mg->mg_obj);
+ SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
SV **svp;
+ U32 dualvar_flags = DUALVAR_FLAGS(sv);
+
/* Theory - SV itself is magically shared - and we have ordered the
magic such that by the time we get here it has been stored
to its shared counterpart
@@ -953,6 +981,7 @@
CALLER_CONTEXT;
Perl_sharedsv_associate(aTHX_ sv, *svp);
sharedsv_scalar_store(aTHX_ sv, *svp);
+ SvFLAGS(*svp) |= dualvar_flags;
LEAVE_LOCK;
return (0);
}
@@ -964,7 +993,7 @@
{
dTHXc;
MAGIC *shmg;
- SV *saggregate = S_sharedsv_from_obj(aTHX_ mg->mg_obj);
+ SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
/* Object may not exist during global destruction */
if (! saggregate) {
@@ -1005,7 +1034,7 @@
sharedsv_elem_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *param)
{
PERL_UNUSED_ARG(param);
- SvREFCNT_inc_void(S_sharedsv_from_obj(aTHX_ mg->mg_obj));
+ SvREFCNT_inc_void(SHAREDSV_FROM_OBJ(mg->mg_obj));
assert(mg->mg_flags & MGf_DUP);
return (0);
}
@@ -1039,7 +1068,7 @@
val = av_len((AV*) ssv);
} else {
/* Not actually defined by tie API but ... */
- val = HvKEYS((HV*) ssv);
+ val = HvUSEDKEYS((HV*) ssv);
}
SHARED_RELEASE;
return (val);
@@ -1052,13 +1081,29 @@
{
dTHXc;
SV *ssv = (SV *) mg->mg_ptr;
+ const bool isav = SvTYPE(ssv) == SVt_PVAV;
PERL_UNUSED_ARG(sv);
SHARED_EDIT;
- if (SvTYPE(ssv) == SVt_PVAV) {
- av_clear((AV*) ssv);
- } else {
- hv_clear((HV*) ssv);
+ if (!PL_dirty) {
+ SV **svp = isav ? AvARRAY((AV *)ssv) : NULL;
+ I32 items = isav ? AvFILLp((AV *)ssv) + 1 : 0;
+ HE *iter;
+ if (!isav) hv_iterinit((HV *)ssv);
+ while (isav ? items-- : !!(iter = hv_iternext((HV *)ssv))) {
+ SV *sv = isav ? *svp++ : HeVAL(iter);
+ if (!sv) continue;
+ if ( (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv))))
+ && SvREFCNT(sv) == 1 ) {
+ SV *tmp = Perl_sv_newmortal(caller_perl);
+ PERL_SET_CONTEXT((aTHX = caller_perl));
+ sv_upgrade(tmp, SVt_RV);
+ get_RV(tmp, sv);
+ PERL_SET_CONTEXT((aTHX = PL_sharedsv_space));
+ }
+ }
}
+ if (isav) av_clear((AV*) ssv);
+ else hv_clear((HV*) ssv);
SHARED_RELEASE;
return (0);
}
@@ -1156,7 +1201,7 @@
sv = SvRV(sv);
ssv = Perl_sharedsv_find(aTHX_ sv);
if (!ssv)
- croak("lock can only be used on shared values");
+ croak("lock can only be used on shared values");
Perl_sharedsv_lock(aTHX_ ssv);
}
@@ -1191,7 +1236,7 @@
us = (PL_sharedsv_lock.owner == aTHX);
MUTEX_UNLOCK(&PL_sharedsv_lock.mutex);
if (us)
- return; /* try again later */
+ return; /* try again later */
prev_signal_hook(aTHX);
}
#endif
@@ -1215,8 +1260,8 @@
#endif
#ifdef PL_signalhook
if (!prev_signal_hook) {
- prev_signal_hook = PL_signalhook;
- PL_signalhook = &S_shared_signal_hook;
+ prev_signal_hook = PL_signalhook;
+ PL_signalhook = &S_shared_signal_hook;
}
#endif
}
@@ -1233,14 +1278,16 @@
PUSH(SV *obj, ...)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
- int i;
- for (i = 1; i < items; i++) {
- SV* tmp = newSVsv(ST(i));
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
+ int ii;
+ for (ii = 1; ii < items; ii++) {
+ SV* tmp = newSVsv(ST(ii));
SV *stmp;
+ U32 dualvar_flags = DUALVAR_FLAGS(tmp);
ENTER_LOCK;
stmp = S_sharedsv_new_shared(aTHX_ tmp);
sharedsv_scalar_store(aTHX_ tmp, stmp);
+ SvFLAGS(stmp) |= dualvar_flags;
SHARED_CONTEXT;
av_push((AV*) sobj, stmp);
SvREFCNT_inc_void(stmp);
@@ -1253,18 +1300,20 @@
UNSHIFT(SV *obj, ...)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
- int i;
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
+ int ii;
ENTER_LOCK;
SHARED_CONTEXT;
av_unshift((AV*)sobj, items - 1);
CALLER_CONTEXT;
- for (i = 1; i < items; i++) {
- SV *tmp = newSVsv(ST(i));
+ for (ii = 1; ii < items; ii++) {
+ SV *tmp = newSVsv(ST(ii));
+ U32 dualvar_flags = DUALVAR_FLAGS(tmp);
SV *stmp = S_sharedsv_new_shared(aTHX_ tmp);
sharedsv_scalar_store(aTHX_ tmp, stmp);
SHARED_CONTEXT;
- av_store((AV*) sobj, i - 1, stmp);
+ SvFLAGS(stmp) |= dualvar_flags;
+ av_store((AV*) sobj, ii - 1, stmp);
SvREFCNT_inc_void(stmp);
CALLER_CONTEXT;
SvREFCNT_dec(tmp);
@@ -1276,7 +1325,7 @@
POP(SV *obj)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SV* ssv;
ENTER_LOCK;
SHARED_CONTEXT;
@@ -1293,7 +1342,7 @@
SHIFT(SV *obj)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SV* ssv;
ENTER_LOCK;
SHARED_CONTEXT;
@@ -1310,7 +1359,7 @@
EXTEND(SV *obj, IV count)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SHARED_EDIT;
av_extend((AV*)sobj, count);
SHARED_RELEASE;
@@ -1320,7 +1369,7 @@
STORESIZE(SV *obj,IV count)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SHARED_EDIT;
av_fill((AV*) sobj, count);
SHARED_RELEASE;
@@ -1330,7 +1379,7 @@
EXISTS(SV *obj, SV *index)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
bool exists;
if (SvTYPE(sobj) == SVt_PVAV) {
SHARED_EDIT;
@@ -1355,7 +1404,7 @@
FIRSTKEY(SV *obj)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
char* key = NULL;
I32 len = 0;
HE* entry;
@@ -1380,7 +1429,7 @@
NEXTKEY(SV *obj, SV *oldkey)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
char* key = NULL;
I32 len = 0;
HE* entry;
@@ -1614,7 +1663,7 @@
void
-bless(SV* myref, ...);
+bless(SV* myref, ...)
PROTOTYPE: $;$
PREINIT:
HV* stash;
Property changes on: trunk/contrib/perl/dist/threads-shared/shared.xs
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/0nothread.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/0nothread.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/0nothread.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/0nothread.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/av_refs.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/av_refs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/av_refs.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/av_refs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/av_simple.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/av_simple.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/av_simple.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/av_simple.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/blessed.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/blessed.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/blessed.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/blessed.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads-shared/t/clone.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/clone.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/clone.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -27,7 +27,7 @@
BEGIN {
$| = 1;
- print("1..34\n"); ### Number of tests that will be run ###
+ print("1..40\n"); ### Number of tests that will be run ###
};
my $test = 1;
@@ -170,6 +170,29 @@
ok($test++, ref($copy) eq 'Foo', 'Cloned object class');
}
+{
+ my $foo = \*STDIN;
+ my $copy :shared;
+ eval {
+ $copy = shared_clone($foo);
+ };
+ ok($test++, $@ =~ /Unsupported/, 'Cannot clone GLOB - fatal');
+ ok($test++, ! defined($copy), 'Nothing cloned');
+
+ $threads::shared::clone_warn = 1;
+ my $warn;
+ $SIG{'__WARN__'} = sub { $warn = shift; };
+ $copy = shared_clone($foo);
+ ok($test++, $warn =~ /Unsupported/, 'Cannot clone GLOB - warning');
+ ok($test++, ! defined($copy), 'Nothing cloned');
+
+ $threads::shared::clone_warn = 0;
+ undef($warn);
+ $copy = shared_clone($foo);
+ ok($test++, ! defined($warn), 'Cannot clone GLOB - silent');
+ ok($test++, ! defined($copy), 'Nothing cloned');
+}
+
exit(0);
# EOF
Property changes on: trunk/contrib/perl/dist/threads-shared/t/clone.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/cond.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/cond.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/cond.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/cond.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/disabled.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/disabled.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/disabled.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/disabled.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/threads-shared/t/dualvar.t (from rev 6437, vendor/perl/5.18.1/dist/threads-shared/t/dualvar.t)
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/dualvar.t (rev 0)
+++ trunk/contrib/perl/dist/threads-shared/t/dualvar.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,447 @@
+use strict;
+use warnings;
+
+BEGIN {
+ use Config;
+ if (! $Config{'useithreads'}) {
+ print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+ exit(0);
+ }
+}
+
+use ExtUtils::testlib;
+
+BEGIN {
+ $| = 1;
+ print("1..226\n"); ### Number of tests that will be run ###
+}
+
+use threads;
+use threads::shared;
+use Scalar::Util qw(dualvar);
+
+my $TEST = 1;
+
+sub ok {
+ my ($ok, $name) = @_;
+
+ # You have to do it this way or VMS will get confused.
+ if ($ok) {
+ print("ok $TEST - $name\n");
+ } else {
+ print("not ok $TEST - $name\n");
+ printf("# Failed test at line %d\n", (caller(1))[2]);
+ }
+
+ $TEST++;
+}
+
+sub ok_iv
+{
+ my ($var, $iv) = @_;
+ ok($var == $iv, 'IV number preserved');
+ ok($var eq $iv, 'String preserved');
+}
+
+sub ok_nv
+{
+ my ($var, $nv) = @_;
+ ok($var == $nv, 'NV number preserved');
+ ok($var eq $nv, 'String preserved');
+}
+
+sub ok_uv
+{
+ my ($var, $uv) = @_;
+ ok($var == $uv, 'UV number preserved');
+ ok($var > 0, 'UV number preserved');
+ ok($var eq $uv, 'String preserved');
+}
+
+### Start of Testing ###
+
+my $iv = dualvar(42, 'Fourty-Two');
+my $nv = dualvar(3.14, 'PI');
+my $bits = ($Config{'use64bitint'}) ? 63 : 31;
+my $uv = dualvar(1<<$bits, 'Large unsigned int');
+
+print("# Shared scalar assignment using shared_clone()\n");
+
+my $siv :shared = shared_clone($iv);
+my $snv :shared = shared_clone($nv);
+my $suv :shared = shared_clone($uv);
+
+ok_iv($siv, $iv);
+ok_nv($snv, $nv);
+ok_uv($suv, $uv);
+
+{
+ print("# Shared array initialization\n");
+
+ my @ary :shared = ($iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array list assignment\n");
+
+ my @ary :shared;
+ @ary = ($iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array element assignment\n");
+
+ my @ary :shared;
+ $ary[0] = $iv;
+ $ary[1] = $nv;
+ $ary[2] = $uv;
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array initialization - shared scalars\n");
+
+ my @ary :shared = ($siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array list assignment - shared scalars\n");
+
+ my @ary :shared;
+ @ary = ($siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array element assignment - shared scalars\n");
+
+ my @ary :shared;
+ $ary[0] = $siv;
+ $ary[1] = $snv;
+ $ary[2] = $suv;
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared hash initialization\n");
+
+ my %hsh :shared = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash assignment\n");
+
+ my %hsh :shared;
+ %hsh = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash element assignment\n");
+
+ my %hsh :shared;
+ $hsh{'iv'} = $iv;
+ $hsh{'nv'} = $nv;
+ $hsh{'uv'} = $uv;
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash initialization - shared scalars\n");
+
+ my %hsh :shared = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash assignment - shared scalars\n");
+
+ my %hsh :shared;
+ %hsh = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash element assignment - shared scalars\n");
+
+ my %hsh :shared;
+ $hsh{'iv'} = $siv;
+ $hsh{'nv'} = $snv;
+ $hsh{'uv'} = $suv;
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared array push\n");
+
+ my @ary :shared;
+ push(@ary, $iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array pop\n");
+
+ my $xuv = pop(@ary);
+ my $xnv = pop(@ary);
+ my $xiv = pop(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+
+ print("# Shared array unshift\n");
+
+ unshift(@ary, $iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array shift\n");
+
+ $xiv = shift(@ary);
+ $xnv = shift(@ary);
+ $xuv = shift(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+}
+
+{
+ print("# Shared array push - shared scalars\n");
+
+ my @ary :shared;
+ push(@ary, $siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array pop - shared scalars\n");
+
+ my $xuv = pop(@ary);
+ my $xnv = pop(@ary);
+ my $xiv = pop(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+
+ print("# Shared array unshift - shared scalars\n");
+
+ unshift(@ary, $siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array shift - shared scalars\n");
+
+ $xiv = shift(@ary);
+ $xnv = shift(@ary);
+ $xuv = shift(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+}
+
+{
+ print("# Shared hash delete\n");
+
+ my %hsh :shared = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+
+ ok_iv(delete($hsh{'iv'}), $iv);
+ ok_nv(delete($hsh{'nv'}), $nv);
+ ok_uv(delete($hsh{'uv'}), $uv);
+}
+
+{
+ print("# Shared hash delete - shared scalars\n");
+
+ my %hsh :shared = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+
+ ok_iv(delete($hsh{'iv'}), $iv);
+ ok_nv(delete($hsh{'nv'}), $nv);
+ ok_uv(delete($hsh{'uv'}), $uv);
+}
+
+{
+ print("# Shared array copy to non-shared array\n");
+
+ my @ary :shared = ($iv, $nv, $uv);
+ my @nsa = @ary;
+
+ ok_iv($nsa[0], $iv);
+ ok_nv($nsa[1], $nv);
+ ok_uv($nsa[2], $uv);
+
+ print("# Shared array copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\@nsa);
+
+ ok_iv($$copy[0], $iv);
+ ok_nv($$copy[1], $nv);
+ ok_uv($$copy[2], $uv);
+}
+
+{
+ print("# Shared array copy to non-shared array - shared scalars\n");
+
+ my @ary :shared = ($siv, $snv, $suv);
+ my @nsa = @ary;
+
+ ok_iv($nsa[0], $iv);
+ ok_nv($nsa[1], $nv);
+ ok_uv($nsa[2], $uv);
+
+ print("# Shared array copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\@nsa);
+
+ ok_iv($$copy[0], $iv);
+ ok_nv($$copy[1], $nv);
+ ok_uv($$copy[2], $uv);
+}
+
+{
+ print("# Shared hash copy to non-shared hash\n");
+
+ my %hsh :shared = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+ my %nsh = %hsh;
+
+ ok_iv($nsh{'iv'}, $iv);
+ ok_nv($nsh{'nv'}, $nv);
+ ok_uv($nsh{'uv'}, $uv);
+
+ print("# Shared hash copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\%nsh);
+
+ ok_iv($$copy{'iv'}, $iv);
+ ok_nv($$copy{'nv'}, $nv);
+ ok_uv($$copy{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash copy to non-shared hash - shared scalars\n");
+
+ my %hsh :shared = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+ my %nsh = %hsh;
+
+ ok_iv($nsh{'iv'}, $iv);
+ ok_nv($nsh{'nv'}, $nv);
+ ok_uv($nsh{'uv'}, $uv);
+
+ print("# Shared hash copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\%nsh);
+
+ ok_iv($$copy{'iv'}, $iv);
+ ok_nv($$copy{'nv'}, $nv);
+ ok_uv($$copy{'uv'}, $uv);
+}
+
+print("# Mix it up with a thread\n");
+my @ary :shared;
+my %hsh :shared;
+
+threads->create(sub {
+ @ary = ($siv);
+ push(@ary, $snv);
+
+ %hsh = ( 'nv' => $ary[1] );
+ $hsh{'iv'} = $ary[0];
+ $hsh{'uv'} = $suv;
+
+ $ary[2] = $hsh{'uv'};
+ })->join();
+
+ok_iv($hsh{'iv'}, $ary[0]);
+ok_nv($hsh{'nv'}, $ary[1]);
+ok_uv($hsh{'uv'}, $ary[2]);
+
+# $! behaves like a dualvar, but is really implemented as a tied SV.
+# As a result sharing $! directly only propagates the string value.
+# However, we can create a dualvar from it.
+print("# Errno\n");
+$! = 1;
+my $ss :shared = dualvar($!,$!);
+ok_iv($ss, $!);
+
+exit(0);
Index: trunk/contrib/perl/dist/threads-shared/t/hv_refs.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/hv_refs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/hv_refs.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/hv_refs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/hv_simple.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/hv_simple.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/hv_simple.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/hv_simple.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/no_share.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/no_share.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/no_share.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/no_share.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/object.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/object.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/object.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/object.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/dist/threads-shared/t/object2.t (from rev 6437, vendor/perl/5.18.1/dist/threads-shared/t/object2.t)
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/object2.t (rev 0)
+++ trunk/contrib/perl/dist/threads-shared/t/object2.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,409 @@
+use strict;
+use warnings;
+
+BEGIN {
+ use Config;
+ if (! $Config{'useithreads'}) {
+ print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+ exit(0);
+ }
+ if ($] < 5.010) {
+ print("1..0 # SKIP Needs Perl 5.10.0 or later\n");
+ exit(0);
+ }
+}
+
+use ExtUtils::testlib;
+
+BEGIN {
+ $| = 1;
+ print("1..122\n"); ### Number of tests that will be run ###
+};
+
+use threads;
+use threads::shared;
+
+my $TEST;
+BEGIN {
+ share($TEST);
+ $TEST = 1;
+}
+
+sub ok {
+ my ($ok, $name) = @_;
+
+ lock($TEST);
+ my $id = $TEST++;
+
+ # You have to do it this way or VMS will get confused.
+ if ($ok) {
+ print("ok $id - $name\n");
+ } else {
+ print("not ok $id - $name\n");
+ printf("# Failed test at line %d\n", (caller)[2]);
+ }
+
+ return ($ok);
+}
+
+ok(1, 'Loaded');
+
+### Start of Testing ###
+
+my $ID :shared = -1;
+my (@created, @destroyed);
+
+{ package HashObj;
+ sub new {
+ my $class = shift;
+ my $self = &threads::shared::share({});
+ $$self{'ID'} = ++$ID;
+ $created[$ID] = 1;
+ return bless($self, $class);
+ }
+
+ sub DESTROY {
+ my $self = shift;
+ $destroyed[$$self{'ID'}] = 1;
+ }
+}
+
+{ package AryObj;
+ sub new {
+ my $class = shift;
+ my $self = &threads::shared::share([]);
+ $$self[0] = ++$ID;
+ $created[$ID] = 1;
+ return bless($self, $class);
+ }
+
+ sub DESTROY {
+ my $self = shift;
+ $destroyed[$$self[0]] = 1;
+ }
+}
+
+{ package SclrObj;
+ sub new {
+ my $class = shift;
+ my $self = \do{ my $scalar = ++$ID; };
+ $created[$ID] = 1;
+ threads::shared::share($self);
+ return bless($self, $class);
+ }
+
+ sub DESTROY {
+ my $self = shift;
+ $destroyed[$$self] = 1;
+ }
+}
+
+# Testing with normal array
+my @normal_ary;
+
+# Testing with hash object
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+delete($normal_ary[0]);
+ok($destroyed[$ID], 'Deleted hash object in normal array');
+
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+$normal_ary[0] = undef;
+ok($destroyed[$ID], 'Undef hash object in normal array');
+
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+ok($destroyed[$ID-1], 'Replaced hash object in normal array');
+ at normal_ary = ();
+ok($destroyed[$ID], 'Hash object removed from cleared normal array');
+
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+undef(@normal_ary);
+ok($destroyed[$ID], 'Hash object removed from undef normal array');
+
+# Testing with array object
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+delete($normal_ary[0]);
+ok($destroyed[$ID], 'Deleted array object in normal array');
+
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+$normal_ary[0] = undef;
+ok($destroyed[$ID], 'Undef array object in normal array');
+
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+ok($destroyed[$ID-1], 'Replaced array object in normal array');
+ at normal_ary = ();
+ok($destroyed[$ID], 'Array object removed from cleared normal array');
+
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+undef(@normal_ary);
+ok($destroyed[$ID], 'Array object removed from undef normal array');
+
+# Testing with scalar object
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+delete($normal_ary[0]);
+ok($destroyed[$ID], 'Deleted scalar object in normal array');
+
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+$normal_ary[0] = undef;
+ok($destroyed[$ID], 'Undef scalar object in normal array');
+
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+ok($destroyed[$ID-1], 'Replaced scalar object in normal array');
+ at normal_ary = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared normal array');
+
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+undef(@normal_ary);
+ok($destroyed[$ID], 'Scalar object removed from undef normal array');
+
+# Testing with normal hash
+my %normal_hash;
+
+# Testing with hash object
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+delete($normal_hash{'obj'});
+ok($destroyed[$ID], 'Deleted hash object in normal hash');
+
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+$normal_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef hash object in normal hash');
+
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+ok($destroyed[$ID-1], 'Replaced hash object in normal hash');
+%normal_hash = ();
+ok($destroyed[$ID], 'Hash object removed from cleared normal hash');
+
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+undef(%normal_hash);
+ok($destroyed[$ID], 'Hash object removed from undef normal hash');
+
+# Testing with array object
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+delete($normal_hash{'obj'});
+ok($destroyed[$ID], 'Deleted array object in normal hash');
+
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+$normal_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef array object in normal hash');
+
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+ok($destroyed[$ID-1], 'Replaced array object in normal hash');
+%normal_hash = ();
+ok($destroyed[$ID], 'Array object removed from cleared normal hash');
+
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+undef(%normal_hash);
+ok($destroyed[$ID], 'Array object removed from undef normal hash');
+
+# Testing with scalar object
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+delete($normal_hash{'obj'});
+ok($destroyed[$ID], 'Deleted scalar object in normal hash');
+
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+$normal_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef scalar object in normal hash');
+
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+ok($destroyed[$ID-1], 'Replaced scalar object in normal hash');
+%normal_hash = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared normal hash');
+
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+undef(%normal_hash);
+ok($destroyed[$ID], 'Scalar object removed from undef normal hash');
+
+# Testing with shared array
+my @shared_ary :shared;
+
+# Testing with hash object
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+delete($shared_ary[0]);
+ok($destroyed[$ID], 'Deleted hash object in shared array');
+
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+$shared_ary[0] = undef;
+ok($destroyed[$ID], 'Undef hash object in shared array');
+
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+ok($destroyed[$ID-1], 'Replaced hash object in shared array');
+ at shared_ary = ();
+ok($destroyed[$ID], 'Hash object removed from cleared shared array');
+
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+undef(@shared_ary);
+ok($destroyed[$ID], 'Hash object removed from undef shared array');
+
+# Testing with array object
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+delete($shared_ary[0]);
+ok($destroyed[$ID], 'Deleted array object in shared array');
+
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+$shared_ary[0] = undef;
+ok($destroyed[$ID], 'Undef array object in shared array');
+
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+ok($destroyed[$ID-1], 'Replaced array object in shared array');
+ at shared_ary = ();
+ok($destroyed[$ID], 'Array object removed from cleared shared array');
+
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+undef(@shared_ary);
+ok($destroyed[$ID], 'Array object removed from undef shared array');
+
+# Testing with scalar object
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+delete($shared_ary[0]);
+ok($destroyed[$ID], 'Deleted scalar object in shared array');
+
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+$shared_ary[0] = undef;
+ok($destroyed[$ID], 'Undef scalar object in shared array');
+
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+ok($destroyed[$ID-1], 'Replaced scalar object in shared array');
+ at shared_ary = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared shared array');
+
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+undef(@shared_ary);
+ok($destroyed[$ID], 'Scalar object removed from undef shared array');
+
+# Testing with shared hash
+my %shared_hash :shared;
+
+# Testing with hash object
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+delete($shared_hash{'obj'});
+ok($destroyed[$ID], 'Deleted hash object in shared hash');
+
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+$shared_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef hash object in shared hash');
+
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+ok($destroyed[$ID-1], 'Replaced hash object in shared hash');
+%shared_hash = ();
+ok($destroyed[$ID], 'Hash object removed from cleared shared hash');
+
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+undef(%shared_hash);
+ok($destroyed[$ID], 'Hash object removed from undef shared hash');
+
+# Testing with array object
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+delete($shared_hash{'obj'});
+ok($destroyed[$ID], 'Deleted array object in shared hash');
+
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+$shared_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef array object in shared hash');
+
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+ok($destroyed[$ID-1], 'Replaced array object in shared hash');
+%shared_hash = ();
+ok($destroyed[$ID], 'Array object removed from cleared shared hash');
+
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+undef(%shared_hash);
+ok($destroyed[$ID], 'Array object removed from undef shared hash');
+
+# Testing with scalar object
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+delete($shared_hash{'obj'});
+ok($destroyed[$ID], 'Deleted scalar object in shared hash');
+
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+$shared_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef scalar object in shared hash');
+
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+ok($destroyed[$ID-1], 'Replaced scalar object in shared hash');
+%shared_hash = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared shared hash');
+
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+undef(%shared_hash);
+ok($destroyed[$ID], 'Scalar object removed from undef shared hash');
+
+# Testing with shared scalar
+{
+ my $shared_scalar : shared;
+ # Use a separate thread to make sure we have no private SV
+ async { $shared_scalar = SclrObj->new(); }->join();
+}
+ok($destroyed[$ID], 'Scalar object removed from shared scalar');
+
+# EOF
Index: trunk/contrib/perl/dist/threads-shared/t/shared_attr.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/shared_attr.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/shared_attr.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/shared_attr.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads-shared/t/stress.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/stress.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/stress.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -11,6 +11,14 @@
print("1..0 # SKIP Broken under HP-UX 10.20\n");
exit(0);
}
+
+ # http://lists.alioth.debian.org/pipermail/perl-maintainers/2011-June/002285.html
+ # There _is_ TLS support on m68k, but this stress test is overwhelming
+ # for the hardware
+ if ($^O eq 'linux' && $Config{archname} =~ /^m68k/) {
+ print("1..0 # Skip: m68k doesn't have enough oomph for these stress tests\n");
+ exit(0);
+ }
}
use ExtUtils::testlib;
@@ -34,6 +42,47 @@
{
my $cnt = 50;
+ # Depending on hardware and compiler options, the time for a busy loop can
+ # by a factor of (at least) 40, so one size doesn't fit all.
+ # For a fixed iteration count, on a particularly slow machine the timeout
+ # can fire before all threads have had a realistic chance to complete, but
+ # dropping the iteration count will cause fast machines to finish each
+ # thread too quickly.
+ # Fastest machine I tested can loop 20,000,000 times a second, slowest
+ # 500,000
+
+ my $busycount;
+ {
+ my $tries = 1e4;
+ # Try to align to the start of a second:
+ my $want = time + 1;
+ while (time < $want && --$tries) {
+ my $sum;
+ for (0..1e4) {
+ ++$sum;
+ }
+ }
+
+ if ($tries) {
+ $tries = 1e4;
+ ++$want;
+
+ while (time < $want && --$tries) {
+ my $sum;
+ for (0..1e4) {
+ ++$sum;
+ }
+ }
+
+ # This should be about 0.025s
+ $busycount = (1e4 - $tries) * 250;
+ } else {
+ # Fall back to the old default if everything fails
+ $busycount = 500000;
+ }
+ print "# Looping for $busycount iterations should take about 0.025s\n";
+ }
+
my $TIMEOUT = 60;
my $mutex = 1;
@@ -52,7 +101,7 @@
# Randomize the amount of work the thread does
my $sum;
- for (0..(500000+int(rand(500000)))) {
+ for (0..($busycount+int(rand($busycount)))) {
$sum++
}
Property changes on: trunk/contrib/perl/dist/threads-shared/t/stress.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/sv_refs.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/sv_refs.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/sv_refs.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/sv_refs.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/sv_simple.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/sv_simple.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/sv_simple.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/sv_simple.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/utf8.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/utf8.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/utf8.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/utf8.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/dist/threads-shared/t/wait.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/wait.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/wait.t 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/dist/threads-shared/t/wait.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/dist/threads-shared/t/waithires.t
===================================================================
--- trunk/contrib/perl/dist/threads-shared/t/waithires.t 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/dist/threads-shared/t/waithires.t 2013-12-02 21:27:05 UTC (rev 6440)
@@ -16,6 +16,12 @@
if (! eval 'use Time::HiRes "time"; 1') {
Test::skip_all('Time::HiRes not available');
}
+
+ if ($^O eq 'linux' && $Config{archname} =~ /^m68k/) {
+ print("1..0 # Skip: no TLS on m68k yet <http://bugs.debian.org/495826>\n");
+ exit(0);
+ }
+
}
use ExtUtils::testlib;
@@ -36,7 +42,7 @@
BEGIN {
$| = 1;
- print("1..57\n"); ### Number of tests that will be run ###
+ print("1..63\n"); ### Number of tests that will be run ###
};
use threads;
@@ -72,20 +78,29 @@
# run cond_timedwait, and repeat if it times out (give up after 10 secs)
-sub cond_timedwaitN {
+sub do_cond_timedwait {
my $ok;
- my $end = time() + 10;
- while (1) {
- if (@_ == 3) {
- $ok = cond_timedwait($_[0], $_[1], $_[2]);
- }
- else {
- $ok = cond_timedwait($_[0], $_[1]);
- }
- last if $ok;
- last if time() > $end;
+ my ($t0, $t1);
+ if (@_ == 3) {
+ $t0 = time();
+ $ok = cond_timedwait($_[0], time()+$_[1], $_[2]);
+ $t1 = time();
}
- return $ok;
+ else {
+ $t0 = time();
+ $ok = cond_timedwait($_[0], time()+$_[1]);
+ $t1 = time();
+ }
+ return ($ok, $t1-$t0) if $ok;
+
+ # we timed out. Try again with no timeout to unblock the child
+ if (@_ == 3) {
+ cond_wait($_[0], $_[2]);
+ }
+ else {
+ cond_wait($_[0]);
+ }
+ return ($ok, $t1-$t0);
}
@@ -94,6 +109,7 @@
my $cond :shared;
my $lock :shared;
+ my $ready :shared;
ok($TEST++, 1, "Shared synchronization tests preparation");
@@ -103,19 +119,31 @@
{
my $testno = $_[0];
- ok($testno++, 1, "$test_type: child before lock");
- $test_type =~ /twain/ ? lock($lock) : lock($cond);
- ok($testno++, 1, "$test_type: child obtained lock");
+ my ($t0, $t1);
+ {
+ lock($ready);
+ $ready = 1;
+ $t0 = time();
+ cond_signal($ready);
+ }
- if ($test_type =~ 'twain') {
- no warnings 'threads'; # lock var != cond var, so disable warnings
- cond_signal($cond);
- } else {
- cond_signal($cond);
- }
+ {
+ ok($testno++, 1, "$test_type: child before lock");
+ $test_type =~ /twain/ ? lock($lock) : lock($cond);
+ ok($testno++, 1, "$test_type: child obtained lock");
+
+ if ($test_type =~ 'twain') {
+ no warnings 'threads'; # lock var != cond var, so disable warnings
+ cond_signal($cond);
+ } else {
+ cond_signal($cond);
+ }
+ $t1 = time();
+ } # implicit unlock
+
ok($testno++, 1, "$test_type: child signalled condition");
- return($testno);
+ return($testno, $t1-$t0);
}
sub ctw_ok
@@ -126,23 +154,41 @@
$test_type =~ /twain/ ? lock($lock) : lock($cond);
ok($testnum++, 1, "$test_type: obtained initial lock");
- my $thr = threads->create(\&signaller, $testnum);
+ lock($ready);
+ $ready = 0;
+
+ my ($thr) = threads->create(\&signaller, $testnum);
my $ok = 0;
+ cond_wait($ready) while !$ready; # wait for child to start up
+
+ my $t;
for ($test_type) {
- $ok = cond_timedwaitN($cond, time() + $to), last if /simple/;
- $ok = cond_timedwaitN($cond, time() + $to, $cond), last if /repeat/;
- $ok = cond_timedwaitN($cond, time() + $to, $lock), last if /twain/;
+ ($ok, $t) = do_cond_timedwait($cond, $to), last if /simple/;
+ ($ok, $t) = do_cond_timedwait($cond, $to, $cond), last if /repeat/;
+ ($ok, $t) = do_cond_timedwait($cond, $to, $lock), last if /twain/;
die "$test_type: unknown test\n";
}
- $testnum = $thr->join();
- ok($testnum++, $ok, "$test_type: condition obtained");
-
+ my $child_time;
+ ($testnum, $child_time) = $thr->join();
+ if ($ok) {
+ ok($testnum++, $ok, "$test_type: condition obtained");
+ ok($testnum++, 1, "nothing to do here");
+ }
+ else {
+ # if cond_timewait timed out, make sure it was a reasonable
+ # timeout: i.e. that both the parent and child over the
+ # relevant interval exceeded the timeout
+ ok($testnum++, $child_time >= $to, "test_type: child exceeded time");
+ print "# child time = $child_time\n";
+ ok($testnum++, $t >= $to, "test_type: parent exceeded time");
+ print "# parent time = $t\n";
+ }
return ($testnum);
}
foreach (@wait_how) {
$test_type = "cond_timedwait [$_]";
- my $thr = threads->create(\&ctw_ok, $TEST, 0.1);
+ my $thr = threads->create(\&ctw_ok, $TEST, 0.4);
$TEST = $thr->join();
}
@@ -195,6 +241,7 @@
my $true_cond :shared;
my $true_lock :shared;
+ my $ready :shared;
my $cond = \$true_cond;
my $lock = \$true_lock;
@@ -207,19 +254,31 @@
{
my $testno = $_[0];
- ok($testno++, 1, "$test_type: child before lock");
- $test_type =~ /twain/ ? lock($lock) : lock($cond);
- ok($testno++, 1, "$test_type: child obtained lock");
+ my ($t0, $t1);
+ {
+ lock($ready);
+ $ready = 1;
+ $t0 = time();
+ cond_signal($ready);
+ }
- if ($test_type =~ 'twain') {
- no warnings 'threads'; # lock var != cond var, so disable warnings
- cond_signal($cond);
- } else {
- cond_signal($cond);
- }
+ {
+ ok($testno++, 1, "$test_type: child before lock");
+ $test_type =~ /twain/ ? lock($lock) : lock($cond);
+ ok($testno++, 1, "$test_type: child obtained lock");
+
+ if ($test_type =~ 'twain') {
+ no warnings 'threads'; # lock var != cond var, so disable warnings
+ cond_signal($cond);
+ } else {
+ cond_signal($cond);
+ }
+ $t1 = time();
+ } # implicit unlock
+
ok($testno++, 1, "$test_type: child signalled condition");
- return($testno);
+ return($testno, $t1-$t0);
}
sub ctw_ok2
@@ -230,23 +289,41 @@
$test_type =~ /twain/ ? lock($lock) : lock($cond);
ok($testnum++, 1, "$test_type: obtained initial lock");
- my $thr = threads->create(\&signaller2, $testnum);
+ lock($ready);
+ $ready = 0;
+
+ my ($thr) = threads->create(\&signaller2, $testnum);
my $ok = 0;
+ cond_wait($ready) while !$ready; # wait for child to start up
+
+ my $t;
for ($test_type) {
- $ok = cond_timedwaitN($cond, time() + $to), last if /simple/;
- $ok = cond_timedwaitN($cond, time() + $to, $cond), last if /repeat/;
- $ok = cond_timedwaitN($cond, time() + $to, $lock), last if /twain/;
+ ($ok, $t) = do_cond_timedwait($cond, $to), last if /simple/;
+ ($ok, $t) = do_cond_timedwait($cond, $to, $cond), last if /repeat/;
+ ($ok, $t) = do_cond_timedwait($cond, $to, $lock), last if /twain/;
die "$test_type: unknown test\n";
}
- $testnum = $thr->join();
- ok($testnum++, $ok, "$test_type: condition obtained");
-
+ my $child_time;
+ ($testnum, $child_time) = $thr->join();
+ if ($ok) {
+ ok($testnum++, $ok, "$test_type: condition obtained");
+ ok($testnum++, 1, "nothing to do here");
+ }
+ else {
+ # if cond_timewait timed out, make sure it was a reasonable
+ # timeout: i.e. that both the parent and child over the
+ # relevant interval exceeded the timeout
+ ok($testnum++, $child_time >= $to, "test_type: child exceeded time");
+ print "# child time = $child_time\n";
+ ok($testnum++, $t >= $to, "test_type: parent exceeded time");
+ print "# parent time = $t\n";
+ }
return ($testnum);
}
foreach (@wait_how) {
$test_type = "cond_timedwait [$_]";
- my $thr = threads->create(\&ctw_ok2, $TEST, 0.05);
+ my $thr = threads->create(\&ctw_ok2, $TEST, 0.4);
$TEST = $thr->join();
}
Property changes on: trunk/contrib/perl/dist/threads-shared/t/waithires.t
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/regen/embed.pl
===================================================================
--- trunk/contrib/perl/regen/embed.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/embed.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -4,7 +4,6 @@
#
# embed.h
# embedvar.h
-# global.sym
# perlapi.c
# perlapi.h
# proto.h
@@ -28,6 +27,7 @@
BEGIN {
# Get function prototypes
require 'regen/regen_lib.pl';
+ require 'regen/embed_lib.pl';
}
my $SPLINT = 0; # Turn true for experimental splint support http://www.splint.org
@@ -40,173 +40,35 @@
# implicit interpreter context argument.
#
-sub do_not_edit ($)
-{
- my $file = shift;
+sub full_name ($$) { # Returns the function name with potentially the
+ # prefixes 'S_' or 'Perl_'
+ my ($func, $flags) = @_;
- return read_only_top(lang => ($file =~ /\.[ch]$/ ? 'C' : 'Perl'),
- file => $file, style => '*', by => 'regen/embed.pl',
- from => ['data in embed.fnc', 'regen/embed.pl',
- 'regen/opcodes', 'intrpvar.h', 'perlvars.h'],
- final => "\nEdit those files and run 'make regen_headers' to effect changes.\n",
- copyright => [1993 .. 2009]);
-} # do_not_edit
-
-open IN, "embed.fnc" or die $!;
-
-my @embed;
-my (%has_va, %has_nocontext);
-
-while (<IN>) {
- chomp;
- next if /^:/;
- next if /^$/;
- while (s|\\$||) {
- $_ .= <IN>;
- chomp;
- }
- s/\s+$//;
- my @args;
- if (/^\s*(#|$)/) {
- @args = $_;
- }
- else {
- @args = split /\s*\|\s*/, $_;
- my $func = $args[2];
- if ($func) {
- ++$has_va{$func} if $args[-1] =~ /\.\.\./;
- ++$has_nocontext{$1} if $func =~ /(.*)_nocontext/;
- }
- }
- if (@args == 1 && $args[0] !~ /^#\s*(?:if|ifdef|ifndef|else|endif)/) {
- die "Illegal line $. '$args[0]' in embed.fnc";
- }
- push @embed, \@args;
+ return "S_$func" if $flags =~ /[si]/;
+ return "Perl_$func" if $flags =~ /[bp]/;
+ return $func;
}
-open IN, 'regen/opcodes' or die $!;
-{
- my %syms;
+sub open_print_header {
+ my ($file, $quote) = @_;
- while (<IN>) {
- chop;
- next unless $_;
- next if /^#/;
- my (undef, undef, $check) = split /\t+/, $_;
- ++$syms{$check};
- }
-
- foreach (keys %syms) {
- # These are all indirectly referenced by globals.c.
- push @embed, ['pR', 'OP *', $_, 'NN OP *o'];
- }
+ return open_new($file, '>',
+ { file => $file, style => '*', by => 'regen/embed.pl',
+ from => ['data in embed.fnc', 'regen/embed.pl',
+ 'regen/opcodes', 'intrpvar.h', 'perlvars.h'],
+ final => "\nEdit those files and run 'make regen_headers' to effect changes.\n",
+ copyright => [1993 .. 2009], quote => $quote });
}
-close IN;
-my (@core, @ext, @api);
-{
- # Cluster entries in embed.fnc that have the same #ifdef guards.
- # Also, split out at the top level the three classes of functions.
- my @state;
- my %groups;
- my $current;
- foreach (@embed) {
- if (@$_ > 1) {
- push @$current, $_;
- next;
- }
- $_->[0] =~ s/^#\s+/#/;
- $_->[0] =~ /^\S*/;
- $_->[0] =~ s/^#ifdef\s+(\S+)/#if defined($1)/;
- $_->[0] =~ s/^#ifndef\s+(\S+)/#if !defined($1)/;
- if ($_->[0] =~ /^#if\s*(.*)/) {
- push @state, $1;
- } elsif ($_->[0] =~ /^#else\s*$/) {
- die "Unmatched #else in embed.fnc" unless @state;
- $state[-1] = "!($state[-1])";
- } elsif ($_->[0] =~ m!^#endif\s*(?:/\*.*\*/)?$!) {
- die "Unmatched #endif in embed.fnc" unless @state;
- pop @state;
- } else {
- die "Unhandled pre-processor directive '$_->[0]' in embed.fnc";
- }
- $current = \%groups;
- # Nested #if blocks are effectively &&ed together
- # For embed.fnc, ordering withing the && isn't relevant, so we can
- # sort them to try to group more functions together.
- my @sorted = sort @state;
- while (my $directive = shift @sorted) {
- $current->{$directive} ||= {};
- $current = $current->{$directive};
- }
- $current->{''} ||= [];
- $current = $current->{''};
- }
+my ($embed, $core, $ext, $api) = setup_embed();
- sub add_level {
- my ($level, $indent, $wanted) = @_;
- my $funcs = $level->{''};
- my @entries;
- if ($funcs) {
- if (!defined $wanted) {
- @entries = @$funcs;
- } else {
- foreach (@$funcs) {
- if ($_->[0] =~ /A/) {
- push @entries, $_ if $wanted eq 'A';
- } elsif ($_->[0] =~ /E/) {
- push @entries, $_ if $wanted eq 'E';
- } else {
- push @entries, $_ if $wanted eq '';
- }
- }
- }
- @entries = sort {$a->[2] cmp $b->[2]} @entries;
- }
- foreach (sort grep {length $_} keys %$level) {
- my @conditional = add_level($level->{$_}, $indent . ' ', $wanted);
- push @entries,
- ["#${indent}if $_"], @conditional, ["#${indent}endif"]
- if @conditional;
- }
- return @entries;
- }
- @core = add_level(\%groups, '', '');
- @ext = add_level(\%groups, '', 'E');
- @api = add_level(\%groups, '', 'A');
-
- @embed = add_level(\%groups, '');
-}
-
-# walk table providing an array of components in each line to
-# subroutine, printing the result
-sub walk_table (&@) {
- my ($function, $filename) = @_;
- my $F;
- if (ref $filename) { # filehandle
- $F = $filename;
- }
- else {
- $F = safer_open("$filename-new", $filename);
- print $F do_not_edit ($filename);
- }
- foreach (@embed) {
- my @outs = &{$function}(@$_);
- # $function->(@args) is not 5.003
- print $F @outs;
- }
- unless (ref $filename) {
- read_only_bottom_close_and_rename($F);
- }
-}
-
# generate proto.h
{
- my $pr = safer_open('proto.h-new', 'proto.h');
- print $pr do_not_edit ("proto.h"), "START_EXTERN_C\n";
+ my $pr = open_print_header("proto.h");
+ print $pr "START_EXTERN_C\n";
my $ret;
- foreach (@embed) {
+ foreach (@$embed) {
if (@$_ == 1) {
print $pr "$_->[0]\n";
next;
@@ -223,6 +85,16 @@
my @names_of_nn;
my $func;
+ if (! $can_ignore && $retval eq 'void') {
+ warn "It is nonsensical to require the return value of a void function ($plain_func) to be checked";
+ }
+
+ my $scope_type_flag_count = 0;
+ $scope_type_flag_count++ if $flags =~ /s/;
+ $scope_type_flag_count++ if $flags =~ /i/;
+ $scope_type_flag_count++ if $flags =~ /p/;
+ warn "$plain_func: i, p, and s flags are all mutually exclusive"
+ if $scope_type_flag_count > 1;
my $splint_flags = "";
if ( $SPLINT && !$commented_out ) {
$splint_flags .= '/*@noreturn@*/ ' if $never_returns;
@@ -232,20 +104,24 @@
}
if ($flags =~ /([si])/) {
- my $type = ($1 eq 's') ? "STATIC" : "PERL_STATIC_INLINE";
- warn "$func: i and s flags are mutually exclusive"
- if $flags =~ /s/ && $flags =~ /i/;
+ my $type;
+ if ($never_returns) {
+ $type = $1 eq 's' ? "PERL_STATIC_NO_RET" : "PERL_STATIC_INLINE_NO_RET";
+ }
+ else {
+ $type = $1 eq 's' ? "STATIC" : "PERL_STATIC_INLINE";
+ }
$retval = "$type $splint_flags$retval";
- $func = "S_$plain_func";
}
else {
- $retval = "PERL_CALLCONV $splint_flags$retval";
- if ($flags =~ /[bp]/) {
- $func = "Perl_$plain_func";
- } else {
- $func = $plain_func;
+ if ($never_returns) {
+ $retval = "PERL_CALLCONV_NO_RET $splint_flags$retval";
}
+ else {
+ $retval = "PERL_CALLCONV $splint_flags$retval";
+ }
}
+ $func = full_name($plain_func, $flags);
$ret = "$retval\t$func(";
if ( $has_context ) {
$ret .= @args ? "pTHX_ " : "pTHX";
@@ -340,59 +216,28 @@
read_only_bottom_close_and_rename($pr);
}
-# generates global.sym (API export list)
-{
- my %seen;
- sub write_global_sym {
- if (@_ > 1) {
- my ($flags,$retval,$func, at args) = @_;
- if ($flags =~ /[AX]/ && $flags !~ /[xm]/
- || $flags =~ /b/) { # public API, so export
- # If a function is defined twice, for example before and after
- # an #else, only export its name once.
- return '' if $seen{$func}++;
- $func = "Perl_$func" if $flags =~ /[pbX]/;
- return "$func\n";
- }
- }
- return '';
- }
-}
-
warn "$unflagged_pointers pointer arguments to clean up\n" if $unflagged_pointers;
-walk_table(\&write_global_sym, "global.sym");
-sub readvars(\%$$@) {
- my ($syms, $file,$pre,$keep_pre) = @_;
+sub readvars {
+ my ($file, $pre) = @_;
local (*FILE, $_);
+ my %seen;
open(FILE, "< $file")
or die "embed.pl: Can't open $file: $!\n";
while (<FILE>) {
s/[ \t]*#.*//; # Delete comments.
- if (/PERLVARA?I?S?C?\($pre(\w+)/) {
- my $sym = $1;
- $sym = $pre . $sym if $keep_pre;
- warn "duplicate symbol $sym while processing $file line $.\n"
- if exists $$syms{$sym};
- $$syms{$sym} = $pre || 1;
+ if (/PERLVARA?I?C?\($pre,\s*(\w+)/) {
+ warn "duplicate symbol $1 while processing $file line $.\n"
+ if $seen{$1}++;
}
}
close(FILE);
+ return sort keys %seen;
}
-my %intrp;
-my %globvar;
+my @intrp = readvars 'intrpvar.h','I';
+my @globvar = readvars 'perlvars.h','G';
-readvars %intrp, 'intrpvar.h','I';
-readvars %globvar, 'perlvars.h','G';
-
-my $sym;
-
-sub undefine ($) {
- my ($sym) = @_;
- "#undef $sym\n";
-}
-
sub hide {
my ($from, $to, $indent) = @_;
$indent = '' unless defined $indent;
@@ -400,25 +245,14 @@
"#${indent}define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n";
}
-sub bincompat_var ($$) {
- my ($pfx, $sym) = @_;
- my $arg = ($pfx eq 'G' ? 'NULL' : 'aTHX');
- undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))");
-}
-
sub multon ($$$) {
my ($sym,$pre,$ptr) = @_;
hide("PL_$sym", "($ptr$pre$sym)");
}
-sub multoff ($$) {
- my ($sym,$pre) = @_;
- return hide("PL_$pre$sym", "PL_$sym");
-}
+my $em = open_print_header('embed.h');
-my $em = safer_open('embed.h-new', 'embed.h');
-
-print $em do_not_edit ("embed.h"), <<'END';
+print $em <<'END';
/* (Doing namespace management portably in C is really gross.) */
/* By defining PERL_NO_SHORT_NAMES (not done by default) the short forms
@@ -451,12 +285,7 @@
unless ($flags =~ /[om]/) {
my $args = scalar @args;
if ($flags =~ /n/) {
- if ($flags =~ /s/) {
- $ret = hide($func,"S_$func");
- }
- elsif ($flags =~ /p/) {
- $ret = hide($func,"Perl_$func");
- }
+ $ret = hide($func, full_name($func, $flags));
}
elsif ($args and $args[$args-1] =~ /\.\.\./) {
if ($flags =~ /p/) {
@@ -463,7 +292,7 @@
# we're out of luck for varargs functions under CPP
# So we can only do these macros for no implicit context:
$ret = "#ifndef PERL_IMPLICIT_CONTEXT\n"
- . hide($func,"Perl_$func") . "#endif\n";
+ . hide($func, full_name($func, $flags)) . "#endif\n";
}
}
else {
@@ -471,12 +300,7 @@
$ret = "#define $func($alist)";
my $t = int(length($ret) / 8);
$ret .= "\t" x ($t < 4 ? 4 - $t : 1);
- if ($flags =~ /[si]/) {
- $ret .= "S_$func(aTHX";
- }
- elsif ($flags =~ /p/) {
- $ret .= "Perl_$func(aTHX";
- }
+ $ret .= full_name($func, $flags) . "(aTHX";
$ret .= "_ " if $alist;
$ret .= $alist . ")\n";
}
@@ -498,9 +322,9 @@
print $em "#endif\n" if $guard;
}
-embed_h('', \@api);
-embed_h('#if defined(PERL_CORE) || defined(PERL_EXT)', \@ext);
-embed_h('#ifdef PERL_CORE', \@core);
+embed_h('', $api);
+embed_h('#if defined(PERL_CORE) || defined(PERL_EXT)', $ext);
+embed_h('#ifdef PERL_CORE', $core);
print $em <<'END';
@@ -526,18 +350,33 @@
# define perl_atexit(a,b) call_atexit(a,b)
END
-walk_table {
- my ($flags,$retval,$func, at args) = @_;
- return unless $func;
- return unless $flags =~ /O/;
+foreach (@$embed) {
+ my ($flags, $retval, $func, @args) = @$_;
+ next unless $func;
+ next unless $flags =~ /O/;
my $alist = join ",", @az[0..$#args];
my $ret = "# define perl_$func($alist)";
my $t = (length $ret) >> 3;
$ret .= "\t" x ($t < 5 ? 5 - $t : 1);
- "$ret$func($alist)\n";
-} $em;
+ print $em "$ret$func($alist)\n";
+}
+my @nocontext;
+{
+ my (%has_va, %has_nocontext);
+ foreach (@$embed) {
+ next unless @$_ > 1;
+ ++$has_va{$_->[2]} if $_->[-1] =~ /\.\.\./;
+ ++$has_nocontext{$1} if $_->[2] =~ /(.*)_nocontext/;
+ }
+
+ @nocontext = sort grep {
+ $has_nocontext{$_}
+ && !/printf/ # Not clear to me why these are skipped but they are.
+ } keys %has_va;
+}
+
print $em <<'END';
/* varargs functions can't be handled with CPP macros. :-(
@@ -548,9 +387,7 @@
#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_SHORT_NAMES)
END
-foreach (sort keys %has_va) {
- next unless $has_nocontext{$_};
- next if /printf/; # Not clear to me why these are skipped but they are.
+foreach (@nocontext) {
print $em hide($_, "Perl_${_}_nocontext", " ");
}
@@ -563,9 +400,7 @@
/* undefined symbols, point them back at the usual ones */
END
-foreach (sort keys %has_va) {
- next unless $has_nocontext{$_};
- next if /printf/; # Not clear to me why these are skipped but they are.
+foreach (@nocontext) {
print $em hide("Perl_${_}_nocontext", "Perl_$_", " ");
}
@@ -575,9 +410,9 @@
read_only_bottom_close_and_rename($em);
-$em = safer_open('embedvar.h-new', 'embedvar.h');
+$em = open_print_header('embedvar.h');
-print $em do_not_edit ("embedvar.h"), <<'END';
+print $em <<'END';
/* (Doing namespace management portably in C is really gross.) */
/*
@@ -604,28 +439,20 @@
END
-for $sym (sort keys %intrp) {
+my $sym;
+
+for $sym (@intrp) {
+ if ($sym eq 'sawampersand') {
+ print $em "#ifndef PL_sawampersand\n";
+ }
print $em multon($sym,'I','vTHX->');
+ if ($sym eq 'sawampersand') {
+ print $em "#endif\n";
+ }
}
print $em <<'END';
-#else /* !MULTIPLICITY */
-
-/* case 1 above */
-
-END
-
-for $sym (sort keys %intrp) {
- print $em multoff($sym,'I');
-}
-
-print $em <<'END';
-
-END
-
-print $em <<'END';
-
#endif /* MULTIPLICITY */
#if defined(PERL_GLOBAL_STRUCT)
@@ -632,32 +459,23 @@
END
-for $sym (sort keys %globvar) {
+for $sym (@globvar) {
+ print $em "#ifdef OS2\n" if $sym eq 'sh_path';
print $em multon($sym, 'G','my_vars->');
print $em multon("G$sym",'', 'my_vars->');
+ print $em "#endif\n" if $sym eq 'sh_path';
}
print $em <<'END';
-#else /* !PERL_GLOBAL_STRUCT */
-
-END
-
-for $sym (sort keys %globvar) {
- print $em multoff($sym,'G');
-}
-
-print $em <<'END';
-
#endif /* PERL_GLOBAL_STRUCT */
END
read_only_bottom_close_and_rename($em);
-my $capi = safer_open('perlapi.c-new', 'perlapi.c');
-my $capih = safer_open('perlapi.h-new', 'perlapi.h');
+my $capih = open_print_header('perlapi.h');
-print $capih do_not_edit ("perlapi.h"), <<'EOT';
+print $capih <<'EOT';
/* declare accessor functions for Perl variables */
#ifndef __perlapi_h__
#define __perlapi_h__
@@ -670,14 +488,11 @@
#undef PERLVARA
#undef PERLVARI
#undef PERLVARIC
-#undef PERLVARISC
-#define PERLVAR(v,t) EXTERN_C t* Perl_##v##_ptr(pTHX);
-#define PERLVARA(v,n,t) typedef t PL_##v##_t[n]; \
- EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX);
-#define PERLVARI(v,t,i) PERLVAR(v,t)
-#define PERLVARIC(v,t,i) PERLVAR(v, const t)
-#define PERLVARISC(v,i) typedef const char PL_##v##_t[sizeof(i)]; \
- EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX);
+#define PERLVAR(p,v,t) EXTERN_C t* Perl_##p##v##_ptr(pTHX);
+#define PERLVARA(p,v,n,t) typedef t PL_##v##_t[n]; \
+ EXTERN_C PL_##v##_t* Perl_##p##v##_ptr(pTHX);
+#define PERLVARI(p,v,t,i) PERLVAR(p,v,t)
+#define PERLVARIC(p,v,t,i) PERLVAR(p,v, const t)
#include "perlvars.h"
@@ -685,7 +500,6 @@
#undef PERLVARA
#undef PERLVARI
#undef PERLVARIC
-#undef PERLVARISC
END_EXTERN_C
@@ -708,11 +522,10 @@
#undef PERLVARA
#undef PERLVARI
#undef PERLVARIC
-#define PERLVAR(v,t) (void*)Perl_##v##_ptr,
-#define PERLVARA(v,n,t) PERLVAR(v,t)
-#define PERLVARI(v,t,i) PERLVAR(v,t)
-#define PERLVARIC(v,t,i) PERLVAR(v,t)
-#define PERLVARISC(v,i) PERLVAR(v,char)
+#define PERLVAR(p,v,t) (void*)Perl_##p##v##_ptr,
+#define PERLVARA(p,v,n,t) PERLVAR(p,v,t)
+#define PERLVARI(p,v,t,i) PERLVAR(p,v,t)
+#define PERLVARIC(p,v,t,i) PERLVAR(p,v,t)
/* In Tru64 (__DEC && __osf__) the cc option -std1 causes that one
* cannot cast between void pointers and function pointers without
@@ -737,7 +550,6 @@
#undef PERLVARA
#undef PERLVARI
#undef PERLVARIC
-#undef PERLVARISC
};
#endif /* DOINIT */
@@ -749,8 +561,9 @@
EOT
-foreach $sym (sort keys %globvar) {
- print $capih bincompat_var('G',$sym);
+foreach $sym (@globvar) {
+ print $capih
+ "#undef PL_$sym\n" . hide("PL_$sym", "(*Perl_G${sym}_ptr(NULL))");
}
print $capih <<'EOT';
@@ -763,9 +576,9 @@
read_only_bottom_close_and_rename($capih);
-my $warning = do_not_edit ("perlapi.c");
-$warning =~ s! \*/\n! *
+my $capi = open_print_header('perlapi.c', <<'EOQ');
*
+ *
* Up to the threshold of the door there mounted a flight of twenty-seven
* broad stairs, hewn by some unknown art of the same black stone. This
* was the only entrance to the tower; ...
@@ -773,9 +586,9 @@
* [p.577 of _The Lord of the Rings_, III/x: "The Voice of Saruman"]
*
*/
-!;
+EOQ
-print $capi $warning, <<'EOT';
+print $capi <<'EOT';
#include "EXTERN.h"
#include "perl.h"
#include "perlapi.h"
@@ -786,21 +599,18 @@
START_EXTERN_C
#undef PERLVARI
-#define PERLVARI(v,t,i) PERLVAR(v,t)
+#define PERLVARI(p,v,t,i) PERLVAR(p,v,t)
#undef PERLVAR
#undef PERLVARA
-#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHX) \
+#define PERLVAR(p,v,t) t* Perl_##p##v##_ptr(pTHX) \
{ dVAR; PERL_UNUSED_CONTEXT; return &(PL_##v); }
-#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHX) \
+#define PERLVARA(p,v,n,t) PL_##v##_t* Perl_##p##v##_ptr(pTHX) \
{ dVAR; PERL_UNUSED_CONTEXT; return &(PL_##v); }
#undef PERLVARIC
-#undef PERLVARISC
-#define PERLVARIC(v,t,i) \
- const t* Perl_##v##_ptr(pTHX) \
+#define PERLVARIC(p,v,t,i) \
+ const t* Perl_##p##v##_ptr(pTHX) \
{ PERL_UNUSED_CONTEXT; return (const t *)&(PL_##v); }
-#define PERLVARISC(v,i) PL_##v##_t* Perl_##v##_ptr(pTHX) \
- { dVAR; PERL_UNUSED_CONTEXT; return &(PL_##v); }
#include "perlvars.h"
#undef PERLVAR
@@ -807,7 +617,6 @@
#undef PERLVARA
#undef PERLVARI
#undef PERLVARIC
-#undef PERLVARISC
END_EXTERN_C
Property changes on: trunk/contrib/perl/regen/embed.pl
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/regen/embed_lib.pl (from rev 6437, vendor/perl/5.18.1/regen/embed_lib.pl)
===================================================================
--- trunk/contrib/perl/regen/embed_lib.pl (rev 0)
+++ trunk/contrib/perl/regen/embed_lib.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,141 @@
+#!/usr/bin/perl -w
+use strict;
+
+# read embed.fnc and regen/opcodes, needed by regen/embed.pl and makedef.pl
+
+require 5.004; # keep this compatible, an old perl is all we may have before
+ # we build the new one
+
+# Records the current pre-processor state:
+my @state;
+# Nested structure to group functions by the pre-processor conditions that
+# control when they are compiled:
+my %groups;
+
+sub current_group {
+ my $group = \%groups;
+ # Nested #if blocks are effectively &&ed together
+ # For embed.fnc, ordering within the && isn't relevant, so we can
+ # sort them to try to group more functions together.
+ foreach (sort @state) {
+ $group->{$_} ||= {};
+ $group = $group->{$_};
+ }
+ return $group->{''} ||= [];
+}
+
+sub add_level {
+ my ($level, $indent, $wanted) = @_;
+ my $funcs = $level->{''};
+ my @entries;
+ if ($funcs) {
+ if (!defined $wanted) {
+ @entries = @$funcs;
+ } else {
+ foreach (@$funcs) {
+ if ($_->[0] =~ /A/) {
+ push @entries, $_ if $wanted eq 'A';
+ } elsif ($_->[0] =~ /E/) {
+ push @entries, $_ if $wanted eq 'E';
+ } else {
+ push @entries, $_ if $wanted eq '';
+ }
+ }
+ }
+ @entries = sort {$a->[2] cmp $b->[2]} @entries;
+ }
+ foreach (sort grep {length $_} keys %$level) {
+ my @conditional = add_level($level->{$_}, $indent . ' ', $wanted);
+ push @entries,
+ ["#${indent}if $_"], @conditional, ["#${indent}endif"]
+ if @conditional;
+ }
+ return @entries;
+}
+
+sub setup_embed {
+ my $prefix = shift || '';
+ open IN, $prefix . 'embed.fnc' or die $!;
+
+ my @embed;
+
+ while (<IN>) {
+ chomp;
+ next if /^:/;
+ next if /^$/;
+ while (s|\\$||) {
+ $_ .= <IN>;
+ chomp;
+ }
+ s/\s+$//;
+ my @args;
+ if (/^\s*(#|$)/) {
+ @args = $_;
+ }
+ else {
+ @args = split /\s*\|\s*/, $_;
+ }
+ if (@args == 1 && $args[0] !~ /^#\s*(?:if|ifdef|ifndef|else|endif)/) {
+ die "Illegal line $. '$args[0]' in embed.fnc";
+ }
+ push @embed, \@args;
+ }
+
+ close IN or die "Problem reading embed.fnc: $!";
+
+ open IN, $prefix . 'regen/opcodes' or die $!;
+ {
+ my %syms;
+
+ while (<IN>) {
+ chomp;
+ next unless $_;
+ next if /^#/;
+ my $check = (split /\t+/, $_)[2];
+ next if $syms{$check}++;
+
+ # These are all indirectly referenced by globals.c.
+ push @embed, ['pR', 'OP *', $check, 'NN OP *o'];
+ }
+ }
+ close IN or die "Problem reading regen/opcodes: $!";
+
+ # Cluster entries in embed.fnc that have the same #ifdef guards.
+ # Also, split out at the top level the three classes of functions.
+ # Output structure is actually the same as input structure - an
+ # (ordered) list of array references, where the elements in the
+ # reference determine what it is - a reference to a 1-element array is a
+ # pre-processor directive, a reference to 2+ element array is a function.
+
+ my $current = current_group();
+
+ foreach (@embed) {
+ if (@$_ > 1) {
+ push @$current, $_;
+ next;
+ }
+ $_->[0] =~ s/^#\s+/#/;
+ $_->[0] =~ /^\S*/;
+ $_->[0] =~ s/^#ifdef\s+(\S+)/#if defined($1)/;
+ $_->[0] =~ s/^#ifndef\s+(\S+)/#if !defined($1)/;
+ if ($_->[0] =~ /^#if\s*(.*)/) {
+ push @state, $1;
+ } elsif ($_->[0] =~ /^#else\s*$/) {
+ die "Unmatched #else in embed.fnc" unless @state;
+ $state[-1] = "!($state[-1])";
+ } elsif ($_->[0] =~ m!^#endif\s*(?:/\*.*\*/)?$!) {
+ die "Unmatched #endif in embed.fnc" unless @state;
+ pop @state;
+ } else {
+ die "Unhandled pre-processor directive '$_->[0]' in embed.fnc";
+ }
+ $current = current_group();
+ }
+
+ return ([add_level(\%groups, '')],
+ [add_level(\%groups, '', '')], # core
+ [add_level(\%groups, '', 'E')], # ext
+ [add_level(\%groups, '', 'A')]); # api
+}
+
+1;
Copied: trunk/contrib/perl/regen/feature.pl (from rev 6437, vendor/perl/5.18.1/regen/feature.pl)
===================================================================
--- trunk/contrib/perl/regen/feature.pl (rev 0)
+++ trunk/contrib/perl/regen/feature.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,706 @@
+#!/usr/bin/perl
+#
+# Regenerate (overwriting only if changed):
+#
+# lib/feature.pm
+# feature.h
+#
+# from information hardcoded into this script and from two #defines
+# in perl.h.
+#
+# This script is normally invoked from regen.pl.
+
+BEGIN {
+ require 'regen/regen_lib.pl';
+ push @INC, './lib';
+}
+use strict ;
+
+
+###########################################################################
+# Hand-editable data
+
+# (feature name) => (internal name, used in %^H and macro names)
+my %feature = (
+ say => 'say',
+ state => 'state',
+ switch => 'switch',
+ evalbytes => 'evalbytes',
+ array_base => 'arybase',
+ current_sub => '__SUB__',
+ lexical_subs => 'lexsubs',
+ unicode_eval => 'unieval',
+ unicode_strings => 'unicode',
+ fc => 'fc',
+);
+
+# NOTE: If a feature is ever enabled in a non-contiguous range of Perl
+# versions, any code below that uses %BundleRanges will have to
+# be changed to account.
+
+# 5.odd implies the next 5.even, but an explicit 5.even can override it.
+my %feature_bundle = (
+ all => [ keys %feature ],
+ default => [qw(array_base)],
+ "5.9.5" => [qw(say state switch array_base)],
+ "5.10" => [qw(say state switch array_base)],
+ "5.11" => [qw(say state switch unicode_strings array_base)],
+ "5.13" => [qw(say state switch unicode_strings array_base)],
+ "5.15" => [qw(say state switch unicode_strings unicode_eval
+ evalbytes current_sub fc)],
+ "5.17" => [qw(say state switch unicode_strings unicode_eval
+ evalbytes current_sub fc)],
+);
+
+# not actually used currently
+my @experimental = qw( lexical_subs );
+
+
+###########################################################################
+# More data generated from the above
+
+for (keys %feature_bundle) {
+ next unless /^5\.(\d*[13579])\z/;
+ $feature_bundle{"5.".($1+1)} ||= $feature_bundle{$_};
+}
+
+my %UniqueBundles; # "say state switch" => 5.10
+my %Aliases; # 5.12 => 5.11
+for( sort keys %feature_bundle ) {
+ my $value = join(' ', sort @{$feature_bundle{$_}});
+ if (exists $UniqueBundles{$value}) {
+ $Aliases{$_} = $UniqueBundles{$value};
+ }
+ else {
+ $UniqueBundles{$value} = $_;
+ }
+}
+ # start end
+my %BundleRanges; # say => ['5.10', '5.15'] # unique bundles for values
+for my $bund (
+ sort { $a eq 'default' ? -1 : $b eq 'default' ? 1 : $a cmp $b }
+ values %UniqueBundles
+) {
+ next if $bund =~ /[^\d.]/ and $bund ne 'default';
+ for (@{$feature_bundle{$bund}}) {
+ if (@{$BundleRanges{$_} ||= []} == 2) {
+ $BundleRanges{$_}[1] = $bund
+ }
+ else {
+ push @{$BundleRanges{$_}}, $bund;
+ }
+ }
+}
+
+my $HintShift;
+my $HintMask;
+my $Uni8Bit;
+
+open "perl.h", "perl.h" or die "$0 cannot open perl.h: $!";
+while (readline "perl.h") {
+ next unless /#\s*define\s+(HINT_FEATURE_MASK|HINT_UNI_8_BIT)/;
+ my $is_u8b = $1 =~ 8;
+ /(0x[A-Fa-f0-9]+)/ or die "No hex number in:\n\n$_\n ";
+ if ($is_u8b) {
+ $Uni8Bit = $1;
+ }
+ else {
+ my $hex = $HintMask = $1;
+ my $bits = sprintf "%b", oct $1;
+ $bits =~ /^0*1+(0*)\z/
+ or die "Non-contiguous bits in $bits (binary for $hex):\n\n$_\n ";
+ $HintShift = length $1;
+ my $bits_needed =
+ length sprintf "%b", scalar keys %UniqueBundles;
+ $bits =~ /1{$bits_needed}/
+ or die "Not enough bits (need $bits_needed)"
+ . " in $bits (binary for $hex):\n\n$_\n ";
+ }
+ if ($Uni8Bit && $HintMask) { last }
+}
+die "No HINT_FEATURE_MASK defined in perl.h" unless $HintMask;
+die "No HINT_UNI_8_BIT defined in perl.h" unless $Uni8Bit;
+
+close "perl.h";
+
+my @HintedBundles =
+ ('default', grep !/[^\d.]/, sort values %UniqueBundles);
+
+
+###########################################################################
+# Open files to be generated
+
+my ($pm, $h) = map {
+ open_new($_, '>', { by => 'regen/feature.pl' });
+} 'lib/feature.pm', 'feature.h';
+
+
+###########################################################################
+# Generate lib/feature.pm
+
+while (<DATA>) {
+ last if /^FEATURES$/ ;
+ print $pm $_ ;
+}
+
+sub longest {
+ my $long;
+ for(@_) {
+ if (!defined $long or length $long < length) {
+ $long = $_;
+ }
+ }
+ $long;
+}
+
+print $pm "our %feature = (\n";
+my $width = length longest keys %feature;
+for(sort { length $a <=> length $b || $a cmp $b } keys %feature) {
+ print $pm " $_" . " "x($width-length)
+ . " => 'feature_$feature{$_}',\n";
+}
+print $pm ");\n\n";
+
+print $pm "our %feature_bundle = (\n";
+$width = length longest values %UniqueBundles;
+for( sort { $UniqueBundles{$a} cmp $UniqueBundles{$b} }
+ keys %UniqueBundles ) {
+ my $bund = $UniqueBundles{$_};
+ print $pm qq' "$bund"' . " "x($width-length $bund)
+ . qq' => [qw($_)],\n';
+}
+print $pm ");\n\n";
+
+for (sort keys %Aliases) {
+ print $pm
+ qq'\$feature_bundle{"$_"} = \$feature_bundle{"$Aliases{$_}"};\n';
+};
+
+#print $pm "my \%experimental = (\n";
+#print $pm " $_ => 1,\n", for @experimental;
+#print $pm ");\n";
+
+print $pm <<EOPM;
+
+our \$hint_shift = $HintShift;
+our \$hint_mask = $HintMask;
+our \@hint_bundles = qw( @HintedBundles );
+
+# This gets set (for now) in \$^H as well as in %^H,
+# for runtime speed of the uc/lc/ucfirst/lcfirst functions.
+# See HINT_UNI_8_BIT in perl.h.
+our \$hint_uni8bit = $Uni8Bit;
+EOPM
+
+
+while (<DATA>) {
+ last if /^PODTURES$/ ;
+ print $pm $_ ;
+}
+
+select +(select($pm), $~ = 'PODTURES')[0];
+format PODTURES =
+ ^<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+$::bundle, $::feature
+.
+
+for ('default', sort grep /\.\d[02468]/, keys %feature_bundle) {
+ $::bundle = ":$_";
+ $::feature = join ' ', @{$feature_bundle{$_}};
+ write $pm;
+ print $pm "\n";
+}
+
+while (<DATA>) {
+ print $pm $_ ;
+}
+
+read_only_bottom_close_and_rename($pm);
+
+
+###########################################################################
+# Generate feature.h
+
+print $h <<EOH;
+
+#if defined(PERL_CORE) || defined (PERL_EXT)
+
+#define HINT_FEATURE_SHIFT $HintShift
+
+EOH
+
+my $count;
+for (@HintedBundles) {
+ (my $key = uc) =~ y/.//d;
+ print $h "#define FEATURE_BUNDLE_$key ", $count++, "\n";
+}
+
+print $h <<'EOH';
+#define FEATURE_BUNDLE_CUSTOM (HINT_FEATURE_MASK >> HINT_FEATURE_SHIFT)
+
+#define CURRENT_HINTS \
+ (PL_curcop == &PL_compiling ? PL_hints : PL_curcop->cop_hints)
+#define CURRENT_FEATURE_BUNDLE \
+ ((CURRENT_HINTS & HINT_FEATURE_MASK) >> HINT_FEATURE_SHIFT)
+
+/* Avoid using ... && Perl_feature_is_enabled(...) as that triggers a bug in
+ the HP-UX cc on PA-RISC */
+#define FEATURE_IS_ENABLED(name) \
+ ((CURRENT_HINTS \
+ & HINT_LOCALIZE_HH) \
+ ? Perl_feature_is_enabled(aTHX_ STR_WITH_LEN(name)) : FALSE)
+/* The longest string we pass in. */
+EOH
+
+my $longest_internal_feature_name = longest values %feature;
+print $h <<EOL;
+#define MAX_FEATURE_LEN (sizeof("$longest_internal_feature_name")-1)
+
+EOL
+
+for (
+ sort { length $a <=> length $b || $a cmp $b } keys %feature
+) {
+ my($first,$last) =
+ map { (my $__ = uc) =~ y/.//d; $__ } @{$BundleRanges{$_}};
+ my $name = $feature{$_};
+ my $NAME = uc $name;
+ if ($last && $first eq 'DEFAULT') { # ‘>= DEFAULT’ warns
+ print $h <<EOI;
+#define FEATURE_$NAME\_IS_ENABLED \\
+ ( \\
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_$last \\
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+ FEATURE_IS_ENABLED("$name")) \\
+ )
+
+EOI
+ }
+ elsif ($last) {
+ print $h <<EOH3;
+#define FEATURE_$NAME\_IS_ENABLED \\
+ ( \\
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_$first && \\
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_$last) \\
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+ FEATURE_IS_ENABLED("$name")) \\
+ )
+
+EOH3
+ }
+ elsif ($first) {
+ print $h <<EOH4;
+#define FEATURE_$NAME\_IS_ENABLED \\
+ ( \\
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_$first \\
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+ FEATURE_IS_ENABLED("$name")) \\
+ )
+
+EOH4
+ }
+ else {
+ print $h <<EOH5;
+#define FEATURE_$NAME\_IS_ENABLED \\
+ ( \\
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+ FEATURE_IS_ENABLED("$name") \\
+ )
+
+EOH5
+ }
+}
+
+print $h <<EOH;
+
+#endif /* PERL_CORE or PERL_EXT */
+
+#ifdef PERL_IN_OP_C
+PERL_STATIC_INLINE void
+S_enable_feature_bundle(pTHX_ SV *ver)
+{
+ SV *comp_ver = sv_newmortal();
+ PL_hints = (PL_hints &~ HINT_FEATURE_MASK)
+ | (
+EOH
+
+for (reverse @HintedBundles[1..$#HintedBundles]) { # skip default
+ my $numver = $_;
+ if ($numver eq '5.10') { $numver = '5.009005' } # special case
+ else { $numver =~ s/\./.0/ } # 5.11 => 5.011
+ (my $macrover = $_) =~ y/.//d;
+ print $h <<" EOK";
+ (sv_setnv(comp_ver, $numver),
+ vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
+ ? FEATURE_BUNDLE_$macrover :
+ EOK
+}
+
+print $h <<EOJ;
+ FEATURE_BUNDLE_DEFAULT
+ ) << HINT_FEATURE_SHIFT;
+ /* special case */
+ assert(PL_curcop == &PL_compiling);
+ if (FEATURE_UNICODE_IS_ENABLED) PL_hints |= HINT_UNI_8_BIT;
+ else PL_hints &= ~HINT_UNI_8_BIT;
+}
+#endif /* PERL_IN_OP_C */
+EOJ
+
+read_only_bottom_close_and_rename($h);
+
+
+###########################################################################
+# Template for feature.pm
+
+__END__
+package feature;
+
+our $VERSION = '1.32';
+
+FEATURES
+
+# TODO:
+# - think about versioned features (use feature switch => 2)
+
+=head1 NAME
+
+feature - Perl pragma to enable new features
+
+=head1 SYNOPSIS
+
+ use feature qw(say switch);
+ given ($foo) {
+ when (1) { say "\$foo == 1" }
+ when ([2,3]) { say "\$foo == 2 || \$foo == 3" }
+ when (/^a[bc]d$/) { say "\$foo eq 'abd' || \$foo eq 'acd'" }
+ when ($_ > 100) { say "\$foo > 100" }
+ default { say "None of the above" }
+ }
+
+ use feature ':5.10'; # loads all features available in perl 5.10
+
+ use v5.10; # implicitly loads :5.10 feature bundle
+
+=head1 DESCRIPTION
+
+It is usually impossible to add new syntax to Perl without breaking
+some existing programs. This pragma provides a way to minimize that
+risk. New syntactic constructs, or new semantic meanings to older
+constructs, can be enabled by C<use feature 'foo'>, and will be parsed
+only when the appropriate feature pragma is in scope. (Nevertheless, the
+C<CORE::> prefix provides access to all Perl keywords, regardless of this
+pragma.)
+
+=head2 Lexical effect
+
+Like other pragmas (C<use strict>, for example), features have a lexical
+effect. C<use feature qw(foo)> will only make the feature "foo" available
+from that point to the end of the enclosing block.
+
+ {
+ use feature 'say';
+ say "say is available here";
+ }
+ print "But not here.\n";
+
+=head2 C<no feature>
+
+Features can also be turned off by using C<no feature "foo">. This too
+has lexical effect.
+
+ use feature 'say';
+ say "say is available here";
+ {
+ no feature 'say';
+ print "But not here.\n";
+ }
+ say "Yet it is here.";
+
+C<no feature> with no features specified will reset to the default group. To
+disable I<all> features (an unusual request!) use C<no feature ':all'>.
+
+=head1 AVAILABLE FEATURES
+
+=head2 The 'say' feature
+
+C<use feature 'say'> tells the compiler to enable the Perl 6 style
+C<say> function.
+
+See L<perlfunc/say> for details.
+
+This feature is available starting with Perl 5.10.
+
+=head2 The 'state' feature
+
+C<use feature 'state'> tells the compiler to enable C<state>
+variables.
+
+See L<perlsub/"Persistent Private Variables"> for details.
+
+This feature is available starting with Perl 5.10.
+
+=head2 The 'switch' feature
+
+C<use feature 'switch'> tells the compiler to enable the Perl 6
+given/when construct.
+
+See L<perlsyn/"Switch Statements"> for details.
+
+This feature is available starting with Perl 5.10.
+
+=head2 The 'unicode_strings' feature
+
+C<use feature 'unicode_strings'> tells the compiler to use Unicode semantics
+in all string operations executed within its scope (unless they are also
+within the scope of either C<use locale> or C<use bytes>). The same applies
+to all regular expressions compiled within the scope, even if executed outside
+it. It does not change the internal representation of strings, but only how
+they are interpreted.
+
+C<no feature 'unicode_strings'> tells the compiler to use the traditional
+Perl semantics wherein the native character set semantics is used unless it is
+clear to Perl that Unicode is desired. This can lead to some surprises
+when the behavior suddenly changes. (See
+L<perlunicode/The "Unicode Bug"> for details.) For this reason, if you are
+potentially using Unicode in your program, the
+C<use feature 'unicode_strings'> subpragma is B<strongly> recommended.
+
+This feature is available starting with Perl 5.12; was almost fully
+implemented in Perl 5.14; and extended in Perl 5.16 to cover C<quotemeta>.
+
+=head2 The 'unicode_eval' and 'evalbytes' features
+
+Under the C<unicode_eval> feature, Perl's C<eval> function, when passed a
+string, will evaluate it as a string of characters, ignoring any
+C<use utf8> declarations. C<use utf8> exists to declare the encoding of
+the script, which only makes sense for a stream of bytes, not a string of
+characters. Source filters are forbidden, as they also really only make
+sense on strings of bytes. Any attempt to activate a source filter will
+result in an error.
+
+The C<evalbytes> feature enables the C<evalbytes> keyword, which evaluates
+the argument passed to it as a string of bytes. It dies if the string
+contains any characters outside the 8-bit range. Source filters work
+within C<evalbytes>: they apply to the contents of the string being
+evaluated.
+
+Together, these two features are intended to replace the historical C<eval>
+function, which has (at least) two bugs in it, that cannot easily be fixed
+without breaking existing programs:
+
+=over
+
+=item *
+
+C<eval> behaves differently depending on the internal encoding of the
+string, sometimes treating its argument as a string of bytes, and sometimes
+as a string of characters.
+
+=item *
+
+Source filters activated within C<eval> leak out into whichever I<file>
+scope is currently being compiled. To give an example with the CPAN module
+L<Semi::Semicolons>:
+
+ BEGIN { eval "use Semi::Semicolons; # not filtered here " }
+ # filtered here!
+
+C<evalbytes> fixes that to work the way one would expect:
+
+ use feature "evalbytes";
+ BEGIN { evalbytes "use Semi::Semicolons; # filtered " }
+ # not filtered
+
+=back
+
+These two features are available starting with Perl 5.16.
+
+=head2 The 'current_sub' feature
+
+This provides the C<__SUB__> token that returns a reference to the current
+subroutine or C<undef> outside of a subroutine.
+
+This feature is available starting with Perl 5.16.
+
+=head2 The 'array_base' feature
+
+This feature supports the legacy C<$[> variable. See L<perlvar/$[> and
+L<arybase>. It is on by default but disabled under C<use v5.16> (see
+L</IMPLICIT LOADING>, below).
+
+This feature is available under this name starting with Perl 5.16. In
+previous versions, it was simply on all the time, and this pragma knew
+nothing about it.
+
+=head2 The 'fc' feature
+
+C<use feature 'fc'> tells the compiler to enable the C<fc> function,
+which implements Unicode casefolding.
+
+See L<perlfunc/fc> for details.
+
+This feature is available from Perl 5.16 onwards.
+
+=head2 The 'lexical_subs' feature
+
+B<WARNING>: This feature is still experimental and the implementation may
+change in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the
+warning:
+
+ no warnings "experimental::lexical_subs";
+
+This enables declaration of subroutines via C<my sub foo>, C<state sub foo>
+and C<our sub foo> syntax. See L<perlsub/Lexical Subroutines> for details.
+
+This feature is available from Perl 5.18 onwards.
+
+=head1 FEATURE BUNDLES
+
+It's possible to load multiple features together, using
+a I<feature bundle>. The name of a feature bundle is prefixed with
+a colon, to distinguish it from an actual feature.
+
+ use feature ":5.10";
+
+The following feature bundles are available:
+
+ bundle features included
+ --------- -----------------
+PODTURES
+The C<:default> bundle represents the feature set that is enabled before
+any C<use feature> or C<no feature> declaration.
+
+Specifying sub-versions such as the C<0> in C<5.14.0> in feature bundles has
+no effect. Feature bundles are guaranteed to be the same for all sub-versions.
+
+ use feature ":5.14.0"; # same as ":5.14"
+ use feature ":5.14.1"; # same as ":5.14"
+
+=head1 IMPLICIT LOADING
+
+Instead of loading feature bundles by name, it is easier to let Perl do
+implicit loading of a feature bundle for you.
+
+There are two ways to load the C<feature> pragma implicitly:
+
+=over 4
+
+=item *
+
+By using the C<-E> switch on the Perl command-line instead of C<-e>.
+That will enable the feature bundle for that version of Perl in the
+main compilation unit (that is, the one-liner that follows C<-E>).
+
+=item *
+
+By explicitly requiring a minimum Perl version number for your program, with
+the C<use VERSION> construct. That is,
+
+ use v5.10.0;
+
+will do an implicit
+
+ no feature ':all';
+ use feature ':5.10';
+
+and so on. Note how the trailing sub-version
+is automatically stripped from the
+version.
+
+But to avoid portability warnings (see L<perlfunc/use>), you may prefer:
+
+ use 5.010;
+
+with the same effect.
+
+If the required version is older than Perl 5.10, the ":default" feature
+bundle is automatically loaded instead.
+
+=back
+
+=cut
+
+sub import {
+ my $class = shift;
+
+ if (!@_) {
+ croak("No features specified");
+ }
+
+ __common(1, @_);
+}
+
+sub unimport {
+ my $class = shift;
+
+ # A bare C<no feature> should reset to the default bundle
+ if (!@_) {
+ $^H &= ~($hint_uni8bit|$hint_mask);
+ return;
+ }
+
+ __common(0, @_);
+}
+
+
+sub __common {
+ my $import = shift;
+ my $bundle_number = $^H & $hint_mask;
+ my $features = $bundle_number != $hint_mask
+ && $feature_bundle{$hint_bundles[$bundle_number >> $hint_shift]};
+ if ($features) {
+ # Features are enabled implicitly via bundle hints.
+ # Delete any keys that may be left over from last time.
+ delete @^H{ values(%feature) };
+ $^H |= $hint_mask;
+ for (@$features) {
+ $^H{$feature{$_}} = 1;
+ $^H |= $hint_uni8bit if $_ eq 'unicode_strings';
+ }
+ }
+ while (@_) {
+ my $name = shift;
+ if (substr($name, 0, 1) eq ":") {
+ my $v = substr($name, 1);
+ if (!exists $feature_bundle{$v}) {
+ $v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/;
+ if (!exists $feature_bundle{$v}) {
+ unknown_feature_bundle(substr($name, 1));
+ }
+ }
+ unshift @_, @{$feature_bundle{$v}};
+ next;
+ }
+ if (!exists $feature{$name}) {
+ unknown_feature($name);
+ }
+ if ($import) {
+ $^H{$feature{$name}} = 1;
+ $^H |= $hint_uni8bit if $name eq 'unicode_strings';
+ } else {
+ delete $^H{$feature{$name}};
+ $^H &= ~ $hint_uni8bit if $name eq 'unicode_strings';
+ }
+ }
+}
+
+sub unknown_feature {
+ my $feature = shift;
+ croak(sprintf('Feature "%s" is not supported by Perl %vd',
+ $feature, $^V));
+}
+
+sub unknown_feature_bundle {
+ my $feature = shift;
+ croak(sprintf('Feature bundle "%s" is not supported by Perl %vd',
+ $feature, $^V));
+}
+
+sub croak {
+ require Carp;
+ Carp::croak(@_);
+}
+
+1;
Modified: trunk/contrib/perl/regen/keywords.pl
===================================================================
--- trunk/contrib/perl/regen/keywords.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/keywords.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -13,15 +13,13 @@
require 'regen/regen_lib.pl';
-my $h = safer_open('keywords.h-new', 'keywords.h');
-my $c = safer_open('keywords.c-new', 'keywords.c');
+my $h = open_new('keywords.h', '>',
+ { by => 'regen/keywords.pl', from => 'its data',
+ file => 'keywords.h', style => '*',
+ copyright => [1994 .. 1997, 1999 .. 2002, 2005 .. 2007]});
+my $c = open_new('keywords.c', '>',
+ { by => 'regen/keywords.pl', from => 'its data', style => '*'});
-print $h read_only_top(lang => 'C', by => 'regen/keywords.pl',
- from => 'its data', file => 'keywords.h', style => '*',
- copyright => [1994 .. 1997, 1999 .. 2002, 2005 .. 2007]);
-print $c read_only_top(lang => 'C', by => 'regen/keywords.pl',
- from => 'its data', style => '*');
-
my %by_strength;
my $keynum = 0;
@@ -35,6 +33,8 @@
push @{$by_strength{$strength}}, $keyword;
}
+# If this hash changes, make sure the equivalent hash in
+# dist/B-Deparse/Deparse.pm is also updated.
my %feature_kw = (
given => 'switch',
when => 'switch',
@@ -45,6 +45,12 @@
say => 'say',
state => 'state',
+
+ evalbytes=>'evalbytes',
+
+ __SUB__ => '__SUB__',
+
+ fc => 'fc',
);
my %pos = map { ($_ => 1) } @{$by_strength{'+'}};
@@ -64,6 +70,7 @@
#define PERL_IN_KEYWORDS_C
#include "perl.h"
#include "keywords.h"
+#include "feature.h"
I32
Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
@@ -91,7 +98,7 @@
elsif (my $feature = $feature_kw{$k}) {
$feature =~ s/([\\"])/\\$1/g;
return <<END;
-return (all_keywords || FEATURE_IS_ENABLED("$feature") ? ${sign}KEY_$k : 0);
+return (all_keywords || FEATURE_\U$feature\E_IS_ENABLED ? ${sign}KEY_$k : 0);
END
}
return <<END;
@@ -101,6 +108,10 @@
read_only_bottom_close_and_rename($_, [$0]) foreach $c, $h;
+
+# coresub_op in op.c expects __FILE__, __LINE__ and __PACKAGE__ to be the
+# first three.
+
__END__
NULL
@@ -109,6 +120,7 @@
-__PACKAGE__
+__DATA__
+__END__
+-__SUB__
+AUTOLOAD
+BEGIN
+UNITCHECK
@@ -161,10 +173,12 @@
-eof
-eq
+eval
+-evalbytes
-exec
+exists
-exit
-exp
+-fc
-fcntl
-fileno
-flock
Property changes on: trunk/contrib/perl/regen/keywords.pl
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/regen/mg_vtable.pl (from rev 6437, vendor/perl/5.18.1/regen/mg_vtable.pl)
===================================================================
--- trunk/contrib/perl/regen/mg_vtable.pl (rev 0)
+++ trunk/contrib/perl/regen/mg_vtable.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,359 @@
+#!/usr/bin/perl -w
+#
+# Regenerate (overwriting only if changed):
+#
+# mg_names.c
+# mg_raw.h
+# mg_vtable.h
+# pod/perlguts.pod
+#
+# from information stored in this file. pod/perlguts.pod is not completely
+# regenerated. Only the magic table is replaced; the other parts remain
+# untouched.
+#
+# Accepts the standard regen_lib -q and -v args.
+#
+# This script is normally invoked from regen.pl.
+
+use strict;
+require 5.004;
+
+BEGIN {
+ # Get function prototypes
+ require 'regen/regen_lib.pl';
+}
+
+my %mg =
+ (
+ sv => { char => '\0', vtable => 'sv', readonly_acceptable => 1,
+ desc => 'Special scalar variable' },
+ # overload, or type "A" magic, used to be here. Hence overloaded is
+ # often called AMAGIC internally, even though it does not use "A"
+ # magic any more.
+ overload_table => { char => 'c', vtable => 'ovrld',
+ desc => 'Holds overload table (AMT) on stash' },
+ bm => { char => 'B', vtable => 'regexp', value_magic => 1,
+ readonly_acceptable => 1,
+ desc => 'Boyer-Moore (fast string search)' },
+ regdata => { char => 'D', vtable => 'regdata',
+ desc => "Regex match position data\n(\@+ and \@- vars)" },
+ regdatum => { char => 'd', vtable => 'regdatum',
+ desc => 'Regex match position data element' },
+ env => { char => 'E', vtable => 'env', desc => '%ENV hash' },
+ envelem => { char => 'e', vtable => 'envelem',
+ desc => '%ENV hash element' },
+ fm => { char => 'f', vtable => 'regexp', value_magic => 1,
+ readonly_acceptable => 1, desc => "Formline ('compiled' format)" },
+ regex_global => { char => 'g', vtable => 'mglob', value_magic => 1,
+ readonly_acceptable => 1, desc => 'm//g target' },
+ hints => { char => 'H', vtable => 'hints', desc => '%^H hash' },
+ hintselem => { char => 'h', vtable => 'hintselem',
+ desc => '%^H hash element' },
+ isa => { char => 'I', vtable => 'isa', desc => '@ISA array' },
+ isaelem => { char => 'i', vtable => 'isaelem',
+ desc => '@ISA array element' },
+ nkeys => { char => 'k', vtable => 'nkeys', value_magic => 1,
+ desc => 'scalar(keys()) lvalue' },
+ dbfile => { char => 'L',
+ desc => 'Debugger %_<filename' },
+ dbline => { char => 'l', vtable => 'dbline',
+ desc => 'Debugger %_<filename element' },
+ shared => { char => 'N', desc => 'Shared between threads',
+ unknown_to_sv_magic => 1 },
+ shared_scalar => { char => 'n', desc => 'Shared between threads',
+ unknown_to_sv_magic => 1 },
+ collxfrm => { char => 'o', vtable => 'collxfrm', value_magic => 1,
+ desc => 'Locale transformation' },
+ tied => { char => 'P', vtable => 'pack',
+ value_magic => 1, # treat as value, so 'local @tied' isn't tied
+ desc => 'Tied array or hash' },
+ tiedelem => { char => 'p', vtable => 'packelem',
+ desc => 'Tied array or hash element' },
+ tiedscalar => { char => 'q', vtable => 'packelem',
+ desc => 'Tied scalar or handle' },
+ qr => { char => 'r', vtable => 'regexp', value_magic => 1,
+ desc => 'precompiled qr// regex' },
+ sig => { char => 'S', desc => '%SIG hash' },
+ sigelem => { char => 's', vtable => 'sigelem',
+ desc => '%SIG hash element' },
+ taint => { char => 't', vtable => 'taint', value_magic => 1,
+ desc => 'Taintedness' },
+ uvar => { char => 'U', vtable => 'uvar',
+ desc => 'Available for use by extensions' },
+ uvar_elem => { char => 'u', desc => 'Reserved for use by extensions',
+ unknown_to_sv_magic => 1 },
+ vec => { char => 'v', vtable => 'vec', value_magic => 1,
+ desc => 'vec() lvalue' },
+ vstring => { char => 'V', value_magic => 1,
+ desc => 'SV was vstring literal' },
+ utf8 => { char => 'w', vtable => 'utf8', value_magic => 1,
+ desc => 'Cached UTF-8 information' },
+ substr => { char => 'x', vtable => 'substr', value_magic => 1,
+ desc => 'substr() lvalue' },
+ defelem => { char => 'y', vtable => 'defelem', value_magic => 1,
+ desc => "Shadow \"foreach\" iterator variable /\nsmart parameter vivification" },
+ arylen => { char => '#', vtable => 'arylen', value_magic => 1,
+ desc => 'Array length ($#ary)' },
+ proto => { char => '&', desc => 'my sub prototype CV' },
+ pos => { char => '.', vtable => 'pos', value_magic => 1,
+ desc => 'pos() lvalue' },
+ backref => { char => '<', vtable => 'backref', value_magic => 1,
+ readonly_acceptable => 1, desc => 'for weak ref data' },
+ symtab => { char => ':', value_magic => 1,
+ desc => 'extra data for symbol tables' },
+ rhash => { char => '%', value_magic => 1,
+ desc => 'extra data for restricted hashes' },
+ arylen_p => { char => '@', value_magic => 1,
+ desc => 'to move arylen out of XPVAV' },
+ ext => { char => '~', desc => 'Available for use by extensions' },
+ checkcall => { char => ']', value_magic => 1, vtable => 'checkcall',
+ desc => 'inlining/mutation of call to this CV'},
+);
+
+# These have a subtly different "namespace" from the magic types.
+my %sig =
+ (
+ 'sv' => {get => 'get', set => 'set'},
+ 'env' => {set => 'set_all_env', clear => 'clear_all_env'},
+ 'envelem' => {set => 'setenv', clear => 'clearenv'},
+ 'sigelem' => {get => 'getsig', set => 'setsig', clear => 'clearsig',
+ cond => '#ifndef PERL_MICRO'},
+ 'pack' => {len => 'sizepack', clear => 'wipepack'},
+ 'packelem' => {get => 'getpack', set => 'setpack', clear => 'clearpack'},
+ 'dbline' => {set => 'setdbline'},
+ 'isa' => {set => 'setisa', clear => 'clearisa'},
+ 'isaelem' => {set => 'setisa'},
+ 'arylen' => {get => 'getarylen', set => 'setarylen', const => 1},
+ 'arylen_p' => {clear => 'cleararylen_p', free => 'freearylen_p'},
+ 'mglob' => {set => 'setmglob'},
+ 'nkeys' => {get => 'getnkeys', set => 'setnkeys'},
+ 'taint' => {get => 'gettaint', set => 'settaint'},
+ 'substr' => {get => 'getsubstr', set => 'setsubstr'},
+ 'vec' => {get => 'getvec', set => 'setvec'},
+ 'pos' => {get => 'getpos', set => 'setpos'},
+ 'uvar' => {get => 'getuvar', set => 'setuvar'},
+ 'defelem' => {get => 'getdefelem', set => 'setdefelem'},
+ 'regexp' => {set => 'setregexp', alias => [qw(bm fm)]},
+ 'regdata' => {len => 'regdata_cnt'},
+ 'regdatum' => {get => 'regdatum_get', set => 'regdatum_set'},
+ 'backref' => {free => 'killbackrefs'},
+ 'ovrld' => {free => 'freeovrld'},
+ 'utf8' => {set => 'setutf8'},
+ 'collxfrm' => {set => 'setcollxfrm',
+ cond => '#ifdef USE_LOCALE_COLLATE'},
+ 'hintselem' => {set => 'sethint', clear => 'clearhint'},
+ 'hints' => {clear => 'clearhints'},
+ 'checkcall' => {copy => 'copycallchecker'},
+);
+
+my ($vt, $raw, $names) = map {
+ open_new($_, '>',
+ { by => 'regen/mg_vtable.pl', file => $_, style => '*' });
+} 'mg_vtable.h', 'mg_raw.h', 'mg_names.c';
+my $guts = open_new("pod/perlguts.pod", ">");
+
+print $vt <<'EOH';
+/* These constants should be used in preference to raw characters
+ * when using magic. Note that some perl guts still assume
+ * certain character properties of these constants, namely that
+ * isUPPER() and toLOWER() may do useful mappings.
+ */
+
+EOH
+
+# Of course, it would be *much* easier if we could output this table directly
+# here and now. However, for our sins, we try to support EBCDIC, which wouldn't
+# be *so* bad, except that there are (at least) 3 EBCDIC charset variants, and
+# they don't agree on the code point for '~'. Which we use. Great.
+# So we have to get the local build runtime to sort our table in character order
+# (And of course, just to be helpful, in POSIX BC '~' is \xFF, so we can't even
+# simplify the C code by assuming that the last element of the array is
+# predictable)
+
+{
+ my $longest = 0;
+ foreach (keys %mg) {
+ $longest = length $_ if length $_ > $longest;
+ }
+
+ my $longest_p1 = $longest + 1;
+
+ my %mg_order;
+ while (my ($name, $data) = each %mg) {
+ my $byte = eval qq{"$data->{char}"};
+ $data->{byte} = $byte;
+ $mg_order{(uc $byte) . $byte} = $name;
+ }
+ my @rows;
+ foreach (sort keys %mg_order) {
+ my $name = $mg_order{$_};
+ my $data = $mg{$name};
+ my $i = ord $data->{byte};
+ unless ($data->{unknown_to_sv_magic}) {
+ my $value = $data->{vtable}
+ ? "want_vtbl_$data->{vtable}" : 'magic_vtable_max';
+ $value .= ' | PERL_MAGIC_READONLY_ACCEPTABLE'
+ if $data->{readonly_acceptable};
+ $value .= ' | PERL_MAGIC_VALUE_MAGIC' if $data->{value_magic};
+ my $comment = "/* $name '$data->{char}' $data->{desc} */";
+ $comment =~ s/([\\"])/\\$1/g;
+ $comment =~ tr/\n/ /;
+ print $raw qq{ { '$data->{char}', "$value",\n "$comment" },\n};
+ }
+
+ my $comment = $data->{desc};
+ my $leader = ' ' x ($longest + 27);
+ $comment =~ s/\n/\n$leader/s;
+ printf $vt "#define PERL_MAGIC_%-${longest}s '%s' /* %s */\n",
+ $name, $data->{char}, $comment;
+
+ my $char = $data->{char};
+ $char =~ s/([\\"])/\\$1/g;
+ printf $names qq[\t{ PERL_MAGIC_%-${longest_p1}s "%s(%s)" },\n],
+ "$name,", $name, $char;
+
+ push @rows, [(sprintf "%-2s PERL_MAGIC_%s", $data->{char}, $name),
+ $data->{vtable} ? "vtbl_$data->{vtable}" : '(none)',
+ $data->{desc}];
+ }
+ select +(select($guts), do {
+ my @header = ('(old-style char and macro)', 'MGVTBL', 'Type of magic');
+ my @widths = (0, 0);
+ foreach my $row (@rows) {
+ for (0, 1) {
+ $widths[$_] = length $row->[$_]
+ if length $row->[$_] > $widths[$_];
+ }
+ }
+ my $indent = ' ';
+ my $format
+ = sprintf "$indent%%-%ds%%-%ds%%s\n", $widths[0] + 1, $widths[1] + 1;
+ my $desc_wrap =
+ 79 - 7 - (length $indent) - $widths[0] - $widths[1] - 2;
+
+ open my $oldguts, "<", "pod/perlguts.pod"
+ or die "$0 cannot open pod/perlguts.pod for reading: $!";
+ while (<$oldguts>) {
+ print;
+ last if /^=for mg_vtable.pl begin/
+ }
+
+ print "\n", $indent . "mg_type\n";
+ printf $format, @header;
+ printf $format, map {'-' x length $_} @header;
+ foreach (@rows) {
+ my ($type, $vtbl, $desc) = @$_;
+ $desc =~ tr/\n/ /;
+ my @cont;
+ if (length $desc > $desc_wrap) {
+ # If it's too long, first split on '(', if there.
+ # [Which, if there, is always short enough, currently.
+ # Make this more robust if that changes]
+ ($desc, @cont) = split /(?=\()/, $desc;
+ if (!@cont) {
+ ($desc, @cont) = $desc =~ /(.{1,$desc_wrap})(?: |\z)/g
+ }
+ }
+ printf $format, $type, $vtbl, $desc;
+ printf $format, '', '', $_ foreach @cont;
+ }
+ print "\n";
+
+ while (<$oldguts>) {
+ last if /^=for mg_vtable.pl end/;
+ }
+ do { print } while <$oldguts>;
+ })[0];
+}
+
+my @names = sort keys %sig;
+{
+ my $want = join ",\n ", (map {"want_vtbl_$_"} @names), 'magic_vtable_max';
+ my $names = join qq{",\n "}, @names;
+
+ print $vt <<"EOH";
+
+enum { /* pass one of these to get_vtbl */
+ $want
+};
+
+#ifdef DOINIT
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max] = {
+ "$names"
+};
+#else
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max];
+#endif
+
+EOH
+}
+
+print $vt <<'EOH';
+/* These all need to be 0, not NULL, as NULL can be (void*)0, which is a
+ * pointer to data, whereas we're assigning pointers to functions, which are
+ * not the same beast. ANSI doesn't allow the assignment from one to the other.
+ * (although most, but not all, compilers are prepared to do it)
+ */
+
+/* order is:
+ get
+ set
+ len
+ clear
+ free
+ copy
+ dup
+ local
+*/
+
+#ifdef DOINIT
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
+EOH
+
+my @vtable_names;
+my @aliases;
+
+while (my $name = shift @names) {
+ my $data = $sig{$name};
+ push @vtable_names, $name;
+ my @funcs = map {
+ $data->{$_} ? "Perl_magic_$data->{$_}" : 0;
+ } qw(get set len clear free copy dup local);
+
+ $funcs[0] = "(int (*)(pTHX_ SV *, MAGIC *))" . $funcs[0] if $data->{const};
+ my $funcs = join ", ", @funcs;
+
+ # Because we can't have a , after the last {...}
+ my $comma = @names ? ',' : '';
+
+ print $vt "$data->{cond}\n" if $data->{cond};
+ print $vt " { $funcs }$comma\n";
+ print $vt <<"EOH" if $data->{cond};
+#else
+ { 0, 0, 0, 0, 0, 0, 0, 0 }$comma
+#endif
+EOH
+ foreach(@{$data->{alias}}) {
+ push @aliases, "#define want_vtbl_$_ want_vtbl_$name\n";
+ push @vtable_names, $_;
+ }
+}
+
+print $vt <<'EOH';
+};
+#else
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
+#endif
+
+EOH
+
+print $vt (sort @aliases), "\n";
+
+print $vt "#define PL_vtbl_$_ PL_magic_vtables[want_vtbl_$_]\n"
+ foreach sort @vtable_names;
+
+# 63, not 64, As we rely on the last possible value to mean "NULL vtable"
+die "Too many vtable names" if @vtable_names > 63;
+
+read_only_bottom_close_and_rename($_) foreach $vt, $raw, $names;
+ close_and_rename($guts);
Modified: trunk/contrib/perl/regen/mk_PL_charclass.pl
===================================================================
--- trunk/contrib/perl/regen/mk_PL_charclass.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/mk_PL_charclass.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,14 +1,13 @@
#!perl -w
-use 5.012;
+use v5.15.8;
use strict;
use warnings;
require 'regen/regen_lib.pl';
-# This program outputs the 256 lines that form the guts of the PL_charclass
-# table. The output should be used to manually replace the table contents in
-# l1_charclass_tab.h. Each line is a bit map of properties that the Unicode
+# This program outputs l1_charclass_tab.h, which defines the guts of the
+# PL_charclass table. Each line is a bit map of properties that the Unicode
# code point at the corresponding position in the table array has. The first
-# line corresponds to code point U+0000, NULL, the last line to U=00FF. For
+# line corresponds to code point U+0000, NULL, the last line to U+00FF. For
# an application to see if the code point "i" has a particular property, it
# just does
# 'PL_charclass[i] & BIT'
@@ -19,98 +18,163 @@
# character (ISO-8859-1 including the C0 and C1 controls). A property without
# these suffixes does not have different forms for both ranges.
-# The data in the table is pretty well set in stone, so that this program need
-# be run only when adding new properties to it.
+# This program need be run only when adding new properties to it, or upon a
+# new Unicode release, to make sure things haven't been changed by it.
my @properties = qw(
- ALNUMC_A
- ALNUMC_L1
- ALPHA_A
- ALPHA_L1
- BLANK_A
- BLANK_L1
+ NONLATIN1_FOLD
+ ALPHANUMERIC
+ ALPHA
+ ASCII
+ BLANK
+ CASED
CHARNAME_CONT
- CNTRL_A
- CNTRL_L1
- DIGIT_A
- GRAPH_A
- GRAPH_L1
- IDFIRST_A
- IDFIRST_L1
- LOWER_A
- LOWER_L1
- OCTAL_A
- PRINT_A
- PRINT_L1
- PSXSPC_A
- PSXSPC_L1
- PUNCT_A
- PUNCT_L1
- SPACE_A
- SPACE_L1
- UPPER_A
- UPPER_L1
- WORDCHAR_A
- WORDCHAR_L1
- XDIGIT_A
+ CNTRL
+ DIGIT
+ GRAPH
+ IDFIRST
+ LOWER
+ NON_FINAL_FOLD
+ PRINT
+ PSXSPC
+ PUNCT
+ QUOTEMETA
+ SPACE
+ UPPER
+ WORDCHAR
+ XDIGIT
+ VERTSPACE
+ IS_IN_SOME_FOLD
+ BACKSLASH_FOO_LBRACE_IS_META
);
# Read in the case fold mappings.
my %folded_closure;
-my $file="lib/unicore/CaseFolding.txt";
-open my $fh, "<", $file or die "Failed to read '$file': $!";
-while (<$fh>) {
- chomp;
+my @hex_non_final_folds;
+my @folds;
+use Unicode::UCD;
- # Lines look like (without the initial '#'
- #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
- my ($line, $comment) = split / \s+ \# \s+ /x, $_;
- next if $line eq "" || substr($line, 0, 1) eq '#';
- my ($hex_from, $fold_type, @folded) = split /[\s;]+/, $line;
+BEGIN { # Have to do this at compile time because using user-defined \p{property}
- my $from = hex $hex_from;
+ # Use the Unicode data file if we are on an ASCII platform (which its data
+ # is for), and it is in the modern format (starting in Unicode 3.1.0) and
+ # it is available. This avoids being affected by potential bugs
+ # introduced by other layers of Perl
+ my $file="lib/unicore/CaseFolding.txt";
- # Perl only deals with C and F folds
- next if $fold_type ne 'C' and $fold_type ne 'F';
+ if (ord('A') == 65
+ && pack("C*", split /\./, Unicode::UCD::UnicodeVersion()) ge v3.1.0
+ && open my $fh, "<", $file)
+ {
+ @folds = <$fh>;
+ }
+ else {
+ my ($invlist_ref, $invmap_ref, undef, $default)
+ = Unicode::UCD::prop_invmap('Case_Folding');
+ for my $i (0 .. @$invlist_ref - 1 - 1) {
+ next if $invmap_ref->[$i] == $default;
+ my $adjust = -1;
+ for my $j ($invlist_ref->[$i] .. $invlist_ref->[$i+1] -1) {
+ $adjust++;
- # Get each code point in the range that participates in this line's fold.
- # The hash has keys of each code point in the range, and values of what it
- # folds to and what folds to it
- foreach my $hex_fold (@folded) {
- my $fold = hex $hex_fold;
- push @{$folded_closure{$fold}}, $from if $fold < 256;
- push @{$folded_closure{$from}}, $fold if $from < 256;
+ # Single-code point maps go to a 'C' type
+ if (! ref $invmap_ref->[$i]) {
+ push @folds, sprintf("%04X; C; %04X\n",
+ $j,
+ $invmap_ref->[$i] + $adjust);
+ }
+ else { # Multi-code point maps go to 'F'. prop_invmap()
+ # guarantees that no adjustment is needed for these,
+ # as the range will contain just one element
+ push @folds, sprintf("%04X; F; %s\n",
+ $j,
+ join " ", map { sprintf "%04X", $_ }
+ @{$invmap_ref->[$i]});
+ }
+ }
+ }
}
+
+ for (@folds) {
+ chomp;
+
+ # Lines look like (without the initial '#'
+ #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+ # Get rid of comments, ignore blank or comment-only lines
+ my $line = $_ =~ s/ (?: \s* \# .* )? $ //rx;
+ next unless length $line;
+ my ($hex_from, $fold_type, @folded) = split /[\s;]+/, $line;
+
+ my $from = hex $hex_from;
+
+ # Perl only deals with C and F folds
+ next if $fold_type ne 'C' and $fold_type ne 'F';
+
+ # Get each code point in the range that participates in this line's fold.
+ # The hash has keys of each code point in the range, and values of what it
+ # folds to and what folds to it
+ for my $i (0 .. @folded - 1) {
+ my $hex_fold = $folded[$i];
+ my $fold = hex $hex_fold;
+ push @{$folded_closure{$fold}}, $from if $fold < 256;
+ push @{$folded_closure{$from}}, $fold if $from < 256;
+
+ if ($i < @folded-1
+ && $fold < 256
+ && ! grep { $_ eq $hex_fold } @hex_non_final_folds)
+ {
+ push @hex_non_final_folds, $hex_fold;
+
+ # Also add the upper case, which in the latin1 range folds to
+ # $fold
+ push @hex_non_final_folds, sprintf "%04X", ord uc chr $fold;
+ }
+ }
+ }
+
+ # Now having read all the lines, combine them into the full closure of each
+ # code point in the range by adding lists together that share a common
+ # element
+ foreach my $folded (keys %folded_closure) {
+ foreach my $from (grep { $_ < 256 } @{$folded_closure{$folded}}) {
+ push @{$folded_closure{$from}}, @{$folded_closure{$folded}};
+ }
+ }
}
-# Now having read all the lines, combine them into the full closure of each
-# code point in the range by adding lists together that share a common element
-foreach my $folded (keys %folded_closure) {
- foreach my $from (grep { $_ < 256 } @{$folded_closure{$folded}}) {
- push @{$folded_closure{$from}}, @{$folded_closure{$folded}};
+sub Is_Non_Latin1_Fold {
+ my @return;
+
+ foreach my $folded (keys %folded_closure) {
+ push @return, sprintf("%X", $folded), if grep { $_ > 255 }
+ @{$folded_closure{$folded}};
}
+ return join("\n", @return) . "\n";
}
+sub Is_Non_Final_Fold {
+ return join("\n", @hex_non_final_folds) . "\n";
+}
+
my @bits; # Bit map for each code point
-foreach my $folded (keys %folded_closure) {
- $bits[$folded] = "_CC_NONLATIN1_FOLD" if grep { $_ > 255 }
- @{$folded_closure{$folded}};
-}
-
+# For each character, calculate which properties it matches.
for my $ord (0..255) {
my $char = chr($ord);
utf8::upgrade($char); # Important to use Unicode semantics!
+
+ # Look at all the properties we care about here.
for my $property (@properties) {
my $name = $property;
- # The property name that corresponds to this doesn't have a suffix.
+ # Remove the suffix to get the actual property name.
+ # Currently the suffixes are '_L1', '_A', and none.
# If is a latin1 version, no further checking is needed.
if (! ($name =~ s/_L1$//)) {
- # Here, isn't an L1. It's either a special one or the suffix ends
- # in _A. In the latter case, it's automatically false for
- # non-ascii. The one current special is valid over the whole range.
+ # Here, isn't an _L1. If its _A, it's automatically false for
+ # non-ascii. The only current ones (besides ASCII) without a
+ # suffix are valid over the whole range.
next if $name =~ s/_A$// && $ord >= 128;
}
@@ -121,20 +185,33 @@
# just \pP outside it.
$re = qr/\p{Punct}|[^\P{Symbol}\P{ASCII}]/;
} elsif ($name eq 'CHARNAME_CONT') {;
- $re = qr/[-\w ():\xa0]/;
+ $re = qr/\p{_Perl_Charname_Continue}/,
} elsif ($name eq 'SPACE') {;
- $re = qr/\s/;
+ $re = qr/\p{XPerlSpace}/;
} elsif ($name eq 'IDFIRST') {
$re = qr/[_\p{Alpha}]/;
} elsif ($name eq 'PSXSPC') {
$re = qr/[\v\p{Space}]/;
} elsif ($name eq 'WORDCHAR') {
- $re = qr/\w/;
- } elsif ($name eq 'ALNUMC') {
+ $re = qr/\p{XPosixWord}/;
+ } elsif ($name eq 'ALPHANUMERIC') {
# Like \w, but no underscore
$re = qr/\p{Alnum}/;
- } elsif ($name eq 'OCTAL') {
- $re = qr/[0-7]/;
+ } elsif ($name eq 'QUOTEMETA') {
+ $re = qr/\p{_Perl_Quotemeta}/;
+ } elsif ($name eq 'NONLATIN1_FOLD') {
+ $re = qr/\p{Is_Non_Latin1_Fold}/;
+ } elsif ($name eq 'NON_FINAL_FOLD') {
+ $re = qr/\p{Is_Non_Final_Fold}/;
+ } elsif ($name eq 'IS_IN_SOME_FOLD') {
+ $re = qr/\p{_Perl_Any_Folds}/;
+ } elsif ($name eq 'BACKSLASH_FOO_LBRACE_IS_META') {
+
+ # This is true for FOO where FOO is the varying character in:
+ # \a{, \b{, \c{, ...
+ # and the sequence has non-literal meaning to Perl; so it is true
+ # for 'x' because \x{ is special, but not 'a' because \a{ isn't.
+ $re = qr/[gkNopPx]/;
} else { # The remainder have the same name and values as Unicode
$re = eval "qr/\\p{$name}/";
use Carp;
@@ -143,7 +220,7 @@
#print "$ord, $name $property, $re\n";
if ($char =~ $re) { # Add this property if matches
$bits[$ord] .= '|' if $bits[$ord];
- $bits[$ord] .= "_CC_$property";
+ $bits[$ord] .= "(1U<<_CC_$property)";
}
}
#print __LINE__, " $ord $char $bits[$ord]\n";
@@ -222,8 +299,9 @@
APC
);
-my $out_fh = safer_open('l1_char_class_tab.h-new', 'l1_char_class_tab.h');
-print $out_fh read_only_top(lang => 'C', style => '*', by => $0, from => $file);
+my $out_fh = open_new('l1_char_class_tab.h', '>',
+ {style => '*', by => $0,
+ from => "property definitions"});
# Output the table using fairly short names for each char.
for my $ord (0..255) {
Property changes on: trunk/contrib/perl/regen/mk_PL_charclass.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/regen/mk_invlists.pl (from rev 6437, vendor/perl/5.18.1/regen/mk_invlists.pl)
===================================================================
--- trunk/contrib/perl/regen/mk_invlists.pl (rev 0)
+++ trunk/contrib/perl/regen/mk_invlists.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,275 @@
+#!perl -w
+use 5.015;
+use strict;
+use warnings;
+use Unicode::UCD qw(prop_invlist prop_invmap);
+require 'regen/regen_lib.pl';
+
+# This program outputs charclass_invlists.h, which contains various inversion
+# lists in the form of C arrays that are to be used as-is for inversion lists.
+# Thus, the lists it contains are essentially pre-compiled, and need only a
+# light-weight fast wrapper to make them usable at run-time.
+
+# As such, this code knows about the internal structure of these lists, and
+# any change made to that has to be done here as well. A random number stored
+# in the headers is used to minimize the possibility of things getting
+# out-of-sync, or the wrong data structure being passed. Currently that
+# random number is:
+my $VERSION_DATA_STRUCTURE_TYPE = 290655244;
+
+my $out_fh = open_new('charclass_invlists.h', '>',
+ {style => '*', by => $0,
+ from => "Unicode::UCD"});
+
+print $out_fh "/* See the generating file for comments */\n\n";
+
+my %include_in_ext_re = ( NonL1_Perl_Non_Final_Folds => 1 );
+
+sub output_invlist ($$) {
+ my $name = shift;
+ my $invlist = shift; # Reference to inversion list array
+
+ die "No inversion list for $name" unless defined $invlist
+ && ref $invlist eq 'ARRAY'
+ && @$invlist;
+
+ # Output the inversion list $invlist using the name $name for it.
+ # It is output in the exact internal form for inversion lists.
+
+ my $zero_or_one; # Is the last element of the header 0, or 1 ?
+
+ # If the first element is 0, it goes in the header, instead of the body
+ if ($invlist->[0] == 0) {
+ shift @$invlist;
+
+ $zero_or_one = 0;
+
+ # Add a dummy 0 at the end so that the length is constant. inversion
+ # lists are always stored with enough room so that if they change from
+ # beginning with 0, they don't have to grow.
+ push @$invlist, 0;
+ }
+ else {
+ $zero_or_one = 1;
+ }
+
+ print $out_fh "\n#ifndef PERL_IN_XSUB_RE\n" unless exists $include_in_ext_re{$name};
+ print $out_fh "\nstatic UV ${name}_invlist[] = {\n";
+
+ print $out_fh "\t", scalar @$invlist, ",\t/* Number of elements */\n";
+
+ # This should be UV_MAX, but I (khw) am not confident that the suffixes
+ # for specifying the constant are portable, e.g. 'ull' on a 32 bit
+ # machine that is configured to use 64 bits; might need a Configure probe
+ print $out_fh "\t0,\t/* Current iteration position */\n";
+ print $out_fh "\t0,\t/* Cache of previous search index result */\n";
+ print $out_fh "\t$VERSION_DATA_STRUCTURE_TYPE, /* Version and data structure type */\n";
+ print $out_fh "\t", $zero_or_one,
+ ",\t/* 0 if this is the first element of the list proper;",
+ "\n\t\t 1 if the next element is the first */\n";
+
+ # The main body are the UVs passed in to this routine. Do the final
+ # element separately
+ for my $i (0 .. @$invlist - 1 - 1) {
+ print $out_fh "\t$invlist->[$i],\n";
+ }
+
+ # The final element does not have a trailing comma, as C can't handle it.
+ print $out_fh "\t$invlist->[-1]\n";
+
+ print $out_fh "};\n";
+ print $out_fh "\n#endif\n" unless exists $include_in_ext_re{$name};
+
+}
+
+sub mk_invlist_from_cp_list {
+
+ # Returns an inversion list constructed from the sorted input array of
+ # code points
+
+ my $list_ref = shift;
+
+ # Initialize to just the first element
+ my @invlist = ( $list_ref->[0], $list_ref->[0] + 1);
+
+ # For each succeeding element, if it extends the previous range, adjust
+ # up, otherwise add it.
+ for my $i (1 .. @$list_ref - 1) {
+ if ($invlist[-1] == $list_ref->[$i]) {
+ $invlist[-1]++;
+ }
+ else {
+ push @invlist, $list_ref->[$i], $list_ref->[$i] + 1;
+ }
+ }
+ return @invlist;
+}
+
+# Read in the Case Folding rules, and construct arrays of code points for the
+# properties we need.
+my ($cp_ref, $folds_ref, $format) = prop_invmap("Case_Folding");
+die "Could not find inversion map for Case_Folding" unless defined $format;
+die "Incorrect format '$format' for Case_Folding inversion map"
+ unless $format eq 'al';
+my @has_multi_char_fold;
+my @is_non_final_fold;
+
+for my $i (0 .. @$folds_ref - 1) {
+ next unless ref $folds_ref->[$i]; # Skip single-char folds
+ push @has_multi_char_fold, $cp_ref->[$i];
+
+ # Add to the the non-finals list each code point that is in a non-final
+ # position
+ for my $j (0 .. @{$folds_ref->[$i]} - 2) {
+ push @is_non_final_fold, $folds_ref->[$i][$j]
+ unless grep { $folds_ref->[$i][$j] == $_ } @is_non_final_fold;
+ }
+}
+
+sub _Perl_Multi_Char_Folds {
+ @has_multi_char_fold = sort { $a <=> $b } @has_multi_char_fold;
+ return mk_invlist_from_cp_list(\@has_multi_char_fold);
+}
+
+sub _Perl_Non_Final_Folds {
+ @is_non_final_fold = sort { $a <=> $b } @is_non_final_fold;
+ return mk_invlist_from_cp_list(\@is_non_final_fold);
+}
+
+output_invlist("Latin1", [ 0, 256 ]);
+output_invlist("AboveLatin1", [ 256 ]);
+
+# We construct lists for all the POSIX and backslash sequence character
+# classes in two forms:
+# 1) ones which match only in the ASCII range
+# 2) ones which match either in the Latin1 range, or the entire Unicode range
+#
+# These get compiled in, and hence affect the memory footprint of every Perl
+# program, even those not using Unicode. To minimize the size, currently
+# the Latin1 version is generated for the beyond ASCII range except for those
+# lists that are quite small for the entire range, such as for \s, which is 22
+# UVs long plus 4 UVs (currently) for the header.
+#
+# To save even more memory, the ASCII versions could be derived from the
+# larger ones at runtime, saving some memory (minus the expense of the machine
+# instructions to do so), but these are all small anyway, so their total is
+# about 100 UVs.
+#
+# In the list of properties below that get generated, the L1 prefix is a fake
+# property that means just the Latin1 range of the full property (whose name
+# has an X prefix instead of L1).
+#
+# An initial & means to use the subroutine from this file instead of an
+# official inversion list.
+
+for my $prop (qw(
+ ASCII
+ L1Cased
+ VertSpace
+ PerlSpace
+ XPerlSpace
+ PosixAlnum
+ L1PosixAlnum
+ PosixAlpha
+ L1PosixAlpha
+ PosixBlank
+ XPosixBlank
+ PosixCntrl
+ XPosixCntrl
+ PosixDigit
+ PosixGraph
+ L1PosixGraph
+ PosixLower
+ L1PosixLower
+ PosixPrint
+ L1PosixPrint
+ PosixPunct
+ L1PosixPunct
+ PosixSpace
+ XPosixSpace
+ PosixUpper
+ L1PosixUpper
+ PosixWord
+ L1PosixWord
+ PosixXDigit
+ XPosixXDigit
+ &NonL1_Perl_Non_Final_Folds
+ &_Perl_Multi_Char_Folds
+ )
+) {
+
+ # For the Latin1 properties, we change to use the eXtended version of the
+ # base property, then go through the result and get rid of everything not
+ # in Latin1 (above 255). Actually, we retain the element for the range
+ # that crosses the 255/256 boundary if it is one that matches the
+ # property. For example, in the Word property, there is a range of code
+ # points that start at U+00F8 and goes through U+02C1. Instead of
+ # artifically cutting that off at 256 because 256 is the first code point
+ # above Latin1, we let the range go to its natural ending. That gives us
+ # extra information with no added space taken. But if the range that
+ # crosses the boundary is one that doesn't match the property, we don't
+ # start a new range above 255, as that could be construed as going to
+ # infinity. For example, the Upper property doesn't include the character
+ # at 255, but does include the one at 256. We don't include the 256 one.
+ my $prop_name = $prop;
+ my $is_local_sub = $prop_name =~ s/^&//;
+ my $lookup_prop = $prop_name;
+ my $l1_only = ($lookup_prop =~ s/^L1Posix/XPosix/ or $lookup_prop =~ s/^L1//);
+ my $nonl1_only = 0;
+ $nonl1_only = $lookup_prop =~ s/^NonL1// unless $l1_only;
+
+ my @invlist;
+ if ($is_local_sub) {
+ @invlist = eval $lookup_prop;
+ }
+ else {
+ @invlist = prop_invlist($lookup_prop, '_perl_core_internal_ok');
+ }
+ die "Could not find inversion list for '$lookup_prop'" unless @invlist;
+
+ if ($l1_only) {
+ for my $i (0 .. @invlist - 1 - 1) {
+ if ($invlist[$i] > 255) {
+
+ # In an inversion list, even-numbered elements give the code
+ # points that begin ranges that match the property;
+ # odd-numbered give ones that begin ranges that don't match.
+ # If $i is odd, we are at the first code point above 255 that
+ # doesn't match, which means the range it is ending does
+ # match, and crosses the 255/256 boundary. We want to include
+ # this ending point, so increment $i, so the splice below
+ # includes it. Conversely, if $i is even, it is the first
+ # code point above 255 that matches, which means there was no
+ # matching range that crossed the boundary, and we don't want
+ # to include this code point, so splice before it.
+ $i++ if $i % 2 != 0;
+
+ # Remove everything past this.
+ splice @invlist, $i;
+ last;
+ }
+ }
+ }
+ elsif ($nonl1_only) {
+ my $found_nonl1 = 0;
+ for my $i (0 .. @invlist - 1 - 1) {
+ next if $invlist[$i] < 256;
+
+ # Here, we have the first element in the array that indicates an
+ # element above Latin1. Get rid of all previous ones.
+ splice @invlist, 0, $i;
+
+ # If this one's index is not divisible by 2, it means that this
+ # element is inverting away from being in the list, which means
+ # all code points from 256 to this one are in this list.
+ unshift @invlist, 256 if $i % 2 != 0;
+ $found_nonl1 = 1;
+ last;
+ }
+ die "No non-Latin1 code points in $lookup_prop" unless $found_nonl1;
+ }
+
+ output_invlist($prop_name, \@invlist);
+}
+
+read_only_bottom_close_and_rename($out_fh)
Modified: trunk/contrib/perl/regen/opcode.pl
===================================================================
--- trunk/contrib/perl/regen/opcode.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/opcode.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -20,9 +20,15 @@
require 'regen/regen_lib.pl';
}
-my $oc = safer_open('opcode.h-new', 'opcode.h');
-my $on = safer_open('opnames.h-new', 'opnames.h');
+my $oc = open_new('opcode.h', '>',
+ {by => 'regen/opcode.pl', from => 'its data',
+ file => 'opcode.h', style => '*',
+ copyright => [1993 .. 2007]});
+my $on = open_new('opnames.h', '>',
+ { by => 'regen/opcode.pl', from => 'its data', style => '*',
+ file => 'opnames.h', copyright => [1999 .. 2008] });
+
# Read data.
my %seen;
@@ -38,8 +44,10 @@
$args = '' unless defined $args;
warn qq[Description "$desc" duplicates $seen{$desc}\n]
- if $seen{$desc} and $key ne "transr";
+ if $seen{$desc} and $key !~ "transr|(?:intro|clone)cv";
die qq[Opcode "$key" duplicates $seen{$key}\n] if $seen{$key};
+ die qq[Opcode "freed" is reserved for the slab allocator\n]
+ if $key eq 'freed';
$seen{$desc} = qq[description of opcode "$key"];
$seen{$key} = qq[opcode "$key"];
@@ -110,13 +118,12 @@
Perl_pp_chop => [qw(chop chomp)],
Perl_pp_schop => [qw(schop schomp)],
Perl_pp_bind => {connect => '#ifdef HAS_SOCKET'},
- Perl_pp_preinc => ['i_preinc'],
- Perl_pp_predec => ['i_predec'],
- Perl_pp_postinc => ['i_postinc'],
- Perl_pp_postdec => ['i_postdec'],
+ Perl_pp_preinc => ['i_preinc', 'predec', 'i_predec'],
+ Perl_pp_postinc => ['i_postinc', 'postdec', 'i_postdec'],
Perl_pp_ehostent => [qw(enetent eprotoent eservent
spwent epwent sgrent egrent)],
Perl_pp_shostent => [qw(snetent sprotoent sservent)],
+ Perl_pp_aelemfast => ['aelemfast_lex'],
);
while (my ($func, $names) = splice @raw_alias, 0, 2) {
@@ -138,10 +145,7 @@
# Emit defines.
-print $oc read_only_top(lang => 'C', by => 'regen/opcode.pl', from => 'its data',
- file => 'opcode.h', style => '*',
- copyright => [1993 .. 2007]),
- "#ifndef PERL_GLOBAL_STRUCT_INIT\n\n";
+print $oc "#ifndef PERL_GLOBAL_STRUCT_INIT\n\n";
{
my $last_cond = '';
@@ -178,10 +182,7 @@
unimplemented();
}
-print $on read_only_top(lang => 'C', by => 'regen/opcode.pl',
- from => 'its data', style => '*',
- file => 'opnames.h', copyright => [1999 .. 2008]),
- "typedef enum opcode {\n";
+print $on "typedef enum opcode {\n";
my $i = 0;
for (@ops) {
@@ -190,6 +191,7 @@
print $on "\t", tab(3,"OP_max"), "\n";
print $on "} opcode;\n";
print $on "\n#define MAXO ", scalar @ops, "\n";
+print $on "#define OP_FREED MAXO\n";
# Emit op names and descriptions.
@@ -207,6 +209,7 @@
}
print $oc <<'END';
+ "freed",
};
#endif
@@ -226,6 +229,7 @@
}
print $oc <<'END';
+ "freed op",
};
#endif
@@ -348,9 +352,12 @@
'u' => 128, # defaults to $_
);
-my %OP_IS_SOCKET;
-my %OP_IS_FILETEST;
-my %OP_IS_FT_ACCESS;
+my %OP_IS_SOCKET; # /Fs/
+my %OP_IS_FILETEST; # /F-/
+my %OP_IS_FT_ACCESS; # /F-+/
+my %OP_IS_NUMCOMPARE; # /S</
+my %OP_IS_DIRHOP; # /Fd/
+
my $OCSHIFT = 8;
my $OASHIFT = 12;
@@ -369,6 +376,10 @@
$argsum |= $opclass{$flags} << $OCSHIFT;
my $argshift = $OASHIFT;
for my $arg (split(' ',$args{$op})) {
+ if ($arg =~ s/^D//) {
+ # handle 1st, just to put D 1st.
+ $OP_IS_DIRHOP{$op} = $opnum{$op};
+ }
if ($arg =~ /^F/) {
# record opnums of these opnames
$OP_IS_SOCKET{$op} = $opnum{$op} if $arg =~ s/s//;
@@ -375,6 +386,9 @@
$OP_IS_FILETEST{$op} = $opnum{$op} if $arg =~ s/-//;
$OP_IS_FT_ACCESS{$op} = $opnum{$op} if $arg =~ s/\+//;
}
+ elsif ($arg =~ /^S</) {
+ $OP_IS_NUMCOMPARE{$op} = $opnum{$op} if $arg =~ s/<//;
+ }
my $argnum = ($arg =~ s/\?//) ? 8 : 0;
die "op = $op, arg = $arg\n"
unless exists $argnum{$arg};
@@ -402,14 +416,17 @@
print $on <<'EO_OP_IS_COMMENT';
-/* the OP_IS_(SOCKET|FILETEST) macros are optimized to a simple range
- check because all the member OPs are contiguous in opcode.pl
- <OPS> table. opcode.pl verifies the range contiguity. */
+/* the OP_IS_* macros are optimized to a simple range check because
+ all the member OPs are contiguous in regen/opcodes table.
+ opcode.pl verifies the range contiguity, or generates an OR-equals
+ expression */
EO_OP_IS_COMMENT
gen_op_is_macro( \%OP_IS_SOCKET, 'OP_IS_SOCKET');
gen_op_is_macro( \%OP_IS_FILETEST, 'OP_IS_FILETEST');
gen_op_is_macro( \%OP_IS_FT_ACCESS, 'OP_IS_FILETEST_ACCESS');
+gen_op_is_macro( \%OP_IS_NUMCOMPARE, 'OP_IS_NUMCOMPARE');
+gen_op_is_macro( \%OP_IS_DIRHOP, 'OP_IS_DIRHOP');
sub gen_op_is_macro {
my ($op_is, $macname) = @_;
@@ -430,21 +447,20 @@
if ( $op_is->{$last} - $op_is->{$first} == scalar @rest + 1) {
# contiguous ops -> optimized version
- print $on "(op) >= OP_" . uc($first) . " && (op) <= OP_" . uc($last);
- print $on ")\n";
+ print $on "(op) >= OP_" . uc($first)
+ . " && (op) <= OP_" . uc($last);
}
else {
print $on join(" || \\\n\t ",
- map { "(op) == OP_" . uc() } sort keys %$op_is);
- print $on ")\n";
+ map { "(op) == OP_" . uc() } sort keys %$op_is);
}
+ print $on ")\n";
}
}
-my $pp = safer_open('pp_proto.h-new', 'pp_proto.h');
+my $pp = open_new('pp_proto.h', '>',
+ { by => 'opcode.pl', from => 'its data' });
-print $pp read_only_top(lang => 'C', by => 'opcode.pl', from => 'its data');
-
{
my %funcs;
for (@ops) {
Property changes on: trunk/contrib/perl/regen/opcode.pl
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/regen/opcodes
===================================================================
--- trunk/contrib/perl/regen/opcodes 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/opcodes 2013-12-02 21:27:05 UTC (rev 6440)
@@ -30,6 +30,7 @@
# scalar - S list - L array - A
# hash - H sub (CV) - C file - F
# socket - Fs filetest - F- filetest_access - F-+
+# num-compare - S< dirhandle - DF
# reference - R
# "?" denotes an optional operand.
@@ -88,7 +89,8 @@
subst substitution (s///) ck_match dis/ S
substcont substitution iterator ck_null dis|
trans transliteration (tr///) ck_match is" S
-# transr (the /r version) is further down.
+# y///r
+transr transliteration (tr///) ck_match is" S
# Lvalue operators.
# sassign is special-cased for op class
@@ -101,9 +103,9 @@
chomp chomp ck_spair mTs% L
schomp scalar chomp ck_null sTu% S?
defined defined operator ck_defined isu% S?
-undef undef operator ck_lfun s% S?
+undef undef operator ck_fun s% R?
study study ck_fun su% S?
-pos match position ck_lfun stu% S?
+pos match position ck_fun stu% R?
preinc preincrement (++) ck_lfun dIs1 S
i_preinc integer preincrement (++) ck_lfun dis1 S
@@ -124,7 +126,7 @@
i_divide integer division (/) ck_null ifsT2 S S
modulo modulus (%) ck_null IifsT2 S S
i_modulo integer modulus (%) ck_null ifsT2 S S
-repeat repeat (x) ck_repeat mt2 L S
+repeat repeat (x) ck_repeat fmt2 L S
add addition (+) ck_null IfsT2 S S
i_add integer addition (+) ck_null ifsT2 S S
@@ -136,20 +138,20 @@
left_shift left bitshift (<<) ck_bitop fsT2 S S
right_shift right bitshift (>>) ck_bitop fsT2 S S
-lt numeric lt (<) ck_null Iifs2 S S
-i_lt integer lt (<) ck_null ifs2 S S
-gt numeric gt (>) ck_null Iifs2 S S
-i_gt integer gt (>) ck_null ifs2 S S
-le numeric le (<=) ck_null Iifs2 S S
-i_le integer le (<=) ck_null ifs2 S S
-ge numeric ge (>=) ck_null Iifs2 S S
-i_ge integer ge (>=) ck_null ifs2 S S
-eq numeric eq (==) ck_null Iifs2 S S
-i_eq integer eq (==) ck_null ifs2 S S
-ne numeric ne (!=) ck_null Iifs2 S S
-i_ne integer ne (!=) ck_null ifs2 S S
-ncmp numeric comparison (<=>) ck_null Iifst2 S S
-i_ncmp integer comparison (<=>) ck_null ifst2 S S
+lt numeric lt (<) ck_cmp Iifs2 S S<
+i_lt integer lt (<) ck_cmp ifs2 S S<
+gt numeric gt (>) ck_cmp Iifs2 S S<
+i_gt integer gt (>) ck_cmp ifs2 S S<
+le numeric le (<=) ck_cmp Iifs2 S S<
+i_le integer le (<=) ck_cmp ifs2 S S<
+ge numeric ge (>=) ck_cmp Iifs2 S S<
+i_ge integer ge (>=) ck_cmp ifs2 S S<
+eq numeric eq (==) ck_null Iifs2 S S<
+i_eq integer eq (==) ck_null ifs2 S S<
+ne numeric ne (!=) ck_null Iifs2 S S<
+i_ne integer ne (!=) ck_null ifs2 S S<
+ncmp numeric comparison (<=>) ck_null Iifst2 S S<
+i_ncmp integer comparison (<=>) ck_null ifst2 S S<
slt string lt ck_null ifs2 S S
sgt string gt ck_null ifs2 S S
@@ -190,7 +192,7 @@
# String stuff.
-length length ck_fun ifsTu% S?
+length length ck_length ifsTu% S?
substr substr ck_substr st@ S S S? S?
vec vec ck_fun ist@ S S S
@@ -197,7 +199,7 @@
index index ck_index isT@ S S S?
rindex rindex ck_index isT@ S S S?
-sprintf sprintf ck_fun fmst@ S L
+sprintf sprintf ck_lfun fmst@ S L
formline formline ck_fun ms@ S L
ord ord ck_fun ifsTu% S?
chr chr ck_fun fsTu% S?
@@ -212,6 +214,7 @@
rv2av array dereference ck_rvconst dt1
aelemfast constant array element ck_null s$ A S
+aelemfast_lex constant lexical array element ck_null d0 A S
aelem array element ck_null s2 A S
aslice array slice ck_null m@ A L
@@ -229,12 +232,11 @@
rv2hv hash dereference ck_rvconst dt1
helem hash element ck_null s2 H S
hslice hash slice ck_null m@ H L
-boolkeys boolkeys ck_fun % H
# Explosives and implosives.
-unpack unpack ck_unpack @ S S?
-pack pack ck_fun mst@ S L
+unpack unpack ck_fun u@ S S?
+pack pack ck_fun fmst@ S L
split split ck_split t@ S S S
join join or string ck_join mst@ S L
@@ -346,8 +348,8 @@
syswrite syswrite ck_fun imst@ F S S? S?
eof eof ck_eof is% F?
-tell tell ck_fun st% F?
-seek seek ck_fun s@ F S S
+tell tell ck_tell st% F?
+seek seek ck_tell s@ F S S
# truncate really behaves as if it had both "S S" and "F S"
truncate truncate ck_trunc is@ S S
@@ -377,8 +379,8 @@
# Stat calls. OP_IS_FILETEST wants them consecutive.
-lstat lstat ck_ftst u- F
-stat stat ck_ftst u- F
+lstat lstat ck_ftst u- F?
+stat stat ck_ftst u- F?
ftrread -R ck_ftst isu- F-+
ftrwrite -W ck_ftst isu- F-+
ftrexec -X ck_ftst isu- F-+
@@ -410,7 +412,7 @@
# File calls.
# chdir really behaves as if it had both "S?" and "F?"
-chdir chdir ck_chdir isT% S?
+chdir chdir ck_trunc isT% S?
chown chown ck_fun imsT@ L
chroot chroot ck_fun isTu% S?
unlink unlink ck_fun imsTu@ L
@@ -426,11 +428,11 @@
# Directory calls.
open_dir opendir ck_fun is@ F S
-readdir readdir ck_fun % F
-telldir telldir ck_fun st% F
-seekdir seekdir ck_fun s@ F S
-rewinddir rewinddir ck_fun s% F
-closedir closedir ck_fun is% F
+readdir readdir ck_fun % DF
+telldir telldir ck_fun st% DF
+seekdir seekdir ck_fun s@ DF S
+rewinddir rewinddir ck_fun s% DF
+closedir closedir ck_fun is% DF
# Process control.
@@ -480,9 +482,8 @@
require require ck_require du% S?
dofile do "file" ck_fun d1 S
hintseval eval hints ck_svconst s$
-entereval eval "string" ck_eval d% S
+entereval eval "string" ck_eval du% S?
leaveeval eval "string" exit ck_null 1 S
-#evalonce eval constant string ck_null d1 S
entertry eval {block} ck_eval d|
leavetry eval {block} exit ck_null @
@@ -538,5 +539,15 @@
rkeys keys on reference ck_each t% S
rvalues values on reference ck_each t% S
-# y///r
-transr transliteration (tr///) ck_match is" S
+# For CORE:: subs
+coreargs CORE:: subroutine ck_null $
+
+runcv __SUB__ ck_null s0
+
+# fc and \F
+fc fc ck_fun fstu% S?
+
+padcv private subroutine ck_null d0
+introcv private subroutine ck_null d0
+clonecv private subroutine ck_null d0
+padrange list of private variables ck_null d0
Property changes on: trunk/contrib/perl/regen/opcodes
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/regen/overload.pl
===================================================================
--- trunk/contrib/perl/regen/overload.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/overload.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -30,14 +30,17 @@
push @names, $name;
}
-my $c = safer_open('overload.c-new', 'overload.c');
-my $h = safer_open('overload.h-new', 'overload.h');
+my ($c, $h) = map {
+ open_new($_, '>',
+ { by => 'regen/overload.pl', file => $_, style => '*',
+ copyright => [1997, 1998, 2000, 2001, 2005 .. 2007, 2011] });
+} 'overload.c', 'overload.h';
+
mkdir("lib/overload", 0777) unless -d 'lib/overload';
-my $p = safer_open('lib/overload/numbers.pm-new', 'lib/overload/numbers.pm');
+my $p = open_new('lib/overload/numbers.pm', '>',
+ { by => 'regen/overload.pl',
+ file => 'lib/overload/numbers.pm', copyright => [2008] });
-print $p read_only_top(lang => 'Perl', by => 'regen/overload.pl',
- file => 'lib/overload/numbers.pm', copyright => [2008]);
-
{
local $" = "\n ";
print $p <<"EOF";
@@ -57,14 +60,6 @@
EOF
}
-for ([$c, 'overload.c'], [$h, 'overload.h']) {
- my ($handle, $file) = @$_;
- print $handle read_only_top(lang => 'C', by => 'regen/overload.pl',
- file => $file, style => '*',
- copyright => [1997, 1998, 2000, 2001,
- 2005 .. 2007, 2011]);
-}
-
print $h "enum {\n";
for (0..$#enums) {
@@ -203,5 +198,3 @@
smart (~~
ftest (-X
regexp (qr
-# Note: Perl_Gv_AMupdate() assumes that DESTROY is the last entry
-DESTROY DESTROY
Property changes on: trunk/contrib/perl/regen/overload.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/regen/reentr.pl
===================================================================
--- trunk/contrib/perl/regen/reentr.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/reentr.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -50,13 +50,17 @@
# Example #2: S_SBIE means type func_r(type, char*, int, int*)
# Example #3: S_CBI means type func_r(const char*, char*, int)
+sub open_print_header {
+ my ($file, $quote) = @_;
+ return open_new($file, '>',
+ { by => 'regen/reentr.pl',
+ from => 'data in regen/reentr.pl',
+ file => $file, style => '*',
+ copyright => [2002, 2003, 2005 .. 2007],
+ quote => $quote });
+}
-my $h = safer_open('reentr.h-new', 'reentr.h');
-print $h read_only_top(lang => 'C', by => 'regen/reentr.pl',
- from => 'data in regen/reentr.pl',
- file => 'reentr.h', style => '*',
- copyright => [2002, 2003, 2005 .. 2007]);
-
+my $h = open_print_header('reentr.h');
print $h <<EOF;
#ifndef REENTR_H
#define REENTR_H
@@ -222,7 +226,7 @@
}
# Output the metaconfig unit header.
print U <<"EOF";
-?RCS: \$Id: reentr.pl,v 1.1.1.1 2011-05-18 13:33:26 laffer1 Exp ${func}_r.U,v $
+?RCS: \$Id: d_${func}_r.U,v $
?RCS:
?RCS: Copyright (c) 2002,2003 Jarkko Hietaniemi
?RCS:
@@ -782,15 +786,10 @@
# Prepare to write the reentr.c.
-my $c = safer_open('reentr.c-new', 'reentr.c');
-my $top = read_only_top(lang => 'C', by => 'regen/reentr.pl',
- from => 'data in regen/reentr.pl',
- file => 'reentr.c', style => '*',
- copyright => [2002, 2003, 2005 .. 2007]);
-
-$top =~ s! \*/\n! *
+my $c = open_print_header('reentr.c', <<'EOQ');
+ *
* "Saruman," I said, standing away from him, "only one hand at a time can
- * wield the One, and you know that well, so do not trouble to say we\!"
+ * wield the One, and you know that well, so do not trouble to say we!"
*
* This file contains a collection of automatically created wrappers
* (created by running reentr.pl) for reentrant (thread-safe) versions of
@@ -799,9 +798,9 @@
* care about the differences between various platforms' idiosyncrasies
* regarding these reentrant interfaces.
*/
-!s;
+EOQ
-print $c $top, <<"EOF";
+print $c <<"EOF";
#include "EXTERN.h"
#define PERL_IN_REENTR_C
#include "perl.h"
@@ -836,10 +835,10 @@
void*
Perl_reentrant_retry(const char *f, ...)
{
- dTHX;
void *retptr = NULL;
va_list ap;
#ifdef USE_REENTRANT_API
+ dTHX;
/* Easier to special case this here than in embed.pl. (Look at what it
generates for proto.h) */
PERL_ARGS_ASSERT_REENTRANT_RETRY;
Property changes on: trunk/contrib/perl/regen/reentr.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/regen/regcharclass.pl
===================================================================
--- trunk/contrib/perl/regen/regcharclass.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/regcharclass.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,3 +1,4 @@
+#!perl
package CharClass::Matcher;
use strict;
use 5.008;
@@ -4,11 +5,15 @@
use warnings;
use warnings FATAL => 'all';
use Text::Wrap qw(wrap);
-use Encode;
use Data::Dumper;
$Data::Dumper::Useqq= 1;
our $hex_fmt= "0x%02X";
+sub DEBUG () { 0 }
+$|=1 if DEBUG;
+
+sub ASCII_PLATFORM { (ord('A') == 65) }
+
require 'regen/regen_lib.pl';
=head1 NAME
@@ -23,37 +28,48 @@
Dynamically generates macros for detecting special charclasses
in latin-1, utf8, and codepoint forms. Macros can be set to return
-the length (in bytes) of the matched codepoint, or the codepoint itself.
+the length (in bytes) of the matched codepoint, and/or the codepoint itself.
-To regenerate regcharclass.h, run this script from perl-root. No arguments
+To regenerate F<regcharclass.h>, run this script from perl-root. No arguments
are necessary.
-Using WHATEVER as an example the following macros will be produced:
+Using WHATEVER as an example the following macros can be produced, depending
+on the input parameters (how to get each is described by internal comments at
+the C<__DATA__> line):
=over 4
-=item is_WHATEVER(s,is_utf8)
+=item C<is_WHATEVER(s,is_utf8)>
-=item is_WHATEVER_safe(s,e,is_utf8)
+=item C<is_WHATEVER_safe(s,e,is_utf8)>
-Do a lookup as appropriate based on the is_utf8 flag. When possible
-comparisons involving octect<128 are done before checking the is_utf8
+Do a lookup as appropriate based on the C<is_utf8> flag. When possible
+comparisons involving octect<128 are done before checking the C<is_utf8>
flag, hopefully saving time.
-=item is_WHATEVER_utf8(s)
+The version without the C<_safe> suffix should be used only when the input is
+known to be well-formed.
-=item is_WHATEVER_utf8_safe(s,e)
+=item C<is_WHATEVER_utf8(s)>
+=item C<is_WHATEVER_utf8_safe(s,e)>
+
Do a lookup assuming the string is encoded in (normalized) UTF8.
-=item is_WHATEVER_latin1(s)
+The version without the C<_safe> suffix should be used only when the input is
+known to be well-formed.
-=item is_WHATEVER_latin1_safe(s,e)
+=item C<is_WHATEVER_latin1(s)>
+=item C<is_WHATEVER_latin1_safe(s,e)>
+
Do a lookup assuming the string is encoded in latin-1 (aka plan octets).
-=item is_WHATEVER_cp(cp)
+The version without the C<_safe> suffix should be used only when it is known
+that C<s> contains at least one character.
+=item C<is_WHATEVER_cp(cp)>
+
Check to see if the string matches a given codepoint (hypothetically a
U32). The condition is constructed as as to "break out" as early as
possible if the codepoint is out of range of the condition.
@@ -65,12 +81,35 @@
Thus if the character is X+1 only two comparisons will be done. Making
matching lookups slower, but non-matching faster.
+=item C<what_len_WHATEVER_FOO(arg1, ..., len)>
+
+A variant form of each of the macro types described above can be generated, in
+which the code point is returned by the macro, and an extra parameter (in the
+final position) is added, which is a pointer for the macro to set the byte
+length of the returned code point.
+
+These forms all have a C<what_len> prefix instead of the C<is_>, for example
+C<what_len_WHATEVER_safe(s,e,is_utf8,len)> and
+C<what_len_WHATEVER_utf8(s,len)>.
+
+These forms should not be used I<except> on small sets of mostly widely
+separated code points; otherwise the code generated is inefficient. For these
+cases, it is best to use the C<is_> forms, and then find the code point with
+C<utf8_to_uvchr_buf>(). This program can fail with a "deep recursion"
+message on the worst of the inappropriate sets. Examine the generated macro
+to see if it is acceptable.
+
+=item C<what_WHATEVER_FOO(arg1, ...)>
+
+A variant form of each of the C<is_> macro types described above can be generated, in
+which the code point and not the length is returned by the macro. These have
+the same caveat as L</what_len_WHATEVER_FOO(arg1, ..., len)>, plus they should
+not be used where the set contains a NULL, as 0 is returned for two different
+cases: a) the set doesn't include the input code point; b) the set does
+include it, and it is a NULL.
+
=back
-Additionally it is possible to generate C<what_> variants that return
-the codepoint read instead of the number of octets read, this can be
-done by suffixing '-cp' to the type description.
-
=head2 CODE FORMAT
perltidy -st -bt=1 -bbt=0 -pt=0 -sbt=1 -ce -nwls== "%f"
@@ -78,7 +117,7 @@
=head1 AUTHOR
-Author: Yves Orton (demerphq) 2007
+Author: Yves Orton (demerphq) 2007. Maintained by Perl5 Porters.
=head1 BUGS
@@ -107,14 +146,16 @@
# represent the string in some given encoding with specific conditions.
#
# $cp - list of codepoints that make up the string.
-# $n - list of octets that make up the string if all codepoints < 128
+# $n - list of octets that make up the string if all codepoints are invariant
+# regardless of if the string is in UTF-8 or not.
# $l - list of octets that make up the string in latin1 encoding if all
-# codepoints < 256, and at least one codepoint is >127.
-# $u - list of octets that make up the string in utf8 if any codepoint >127
+# codepoints < 256, and at least one codepoint is UTF-8 variant.
+# $u - list of octets that make up the string in utf8 if any codepoint is
+# UTF-8 variant
#
# High CP | Defined
#-----------+----------
-# 0 - 127 : $n
+# 0 - 127 : $n (127/128 are the values for ASCII platforms)
# 128 - 255 : $l, $u
# 256 - ... : $u
#
@@ -123,24 +164,37 @@
my $str= shift;
my $max= 0;
my @cp;
+ my @cp_high;
+ my $only_has_invariants = 1;
for my $ch ( split //, $str ) {
my $cp= ord $ch;
push @cp, $cp;
+ push @cp_high, $cp if $cp > 255;
$max= $cp if $max < $cp;
+ if (! ASCII_PLATFORM && $only_has_invariants) {
+ if ($cp > 255) {
+ $only_has_invariants = 0;
+ }
+ else {
+ my $temp = chr($cp);
+ utf8::upgrade($temp);
+ my @utf8 = unpack "U0C*", $temp;
+ $only_has_invariants = (@utf8 == 1 && $utf8[0] == $cp);
+ }
+ }
}
my ( $n, $l, $u );
- if ( $max < 128 ) {
+ $only_has_invariants = $max < 128 if ASCII_PLATFORM;
+ if ($only_has_invariants) {
$n= [@cp];
} else {
$l= [@cp] if $max && $max < 256;
- my $copy= $str; # must copy string, FB_CROAK makes encode destructive
- $u= eval { Encode::encode( "utf8", $copy, Encode::FB_CROAK ) };
- # $u is utf8 but with the utf8 flag OFF
- # therefore "C*" gets us the values of the bytes involved.
- $u= [ unpack "C*", $u ] if defined $u;
+ $u= $str;
+ utf8::upgrade($u);
+ $u= [ unpack "U0C*", $u ] if defined $u;
}
- return ( \@cp, $n, $l, $u );
+ return ( \@cp, \@cp_high, $n, $l, $u );
}
#
@@ -152,14 +206,42 @@
sub __clean {
my ( $expr )= @_;
+
+ #return $expr;
+
our $parens;
$parens= qr/ (?> \( (?> (?: (?> [^()]+ ) | (??{ $parens }) )* ) \) ) /x;
- #print "$parens\n$expr\n";
+ ## remove redundant parens
1 while $expr =~ s/ \( \s* ( $parens ) \s* \) /$1/gx;
- 1 while $expr =~ s/ \( \s* ($parens) \s* \? \s*
- \( \s* ($parens) \s* \? \s* ($parens|[^:]+?) \s* : \s* ($parens|[^)]+?) \s* \)
- \s* : \s* \4 \s* \)/( ( $1 && $2 ) ? $3 : 0 )/gx;
+
+
+ # repeatedly simplify conditions like
+ # ( (cond1) ? ( (cond2) ? X : Y ) : Y )
+ # into
+ # ( ( (cond1) && (cond2) ) ? X : Y )
+ # Also similarly handles expressions like:
+ # : (cond1) ? ( (cond2) ? X : Y ) : Y )
+ # Note the inclusion of the close paren in ([:()]) and the open paren in ([()]) is
+ # purely to ensure we have a balanced set of parens in the expression which makes
+ # it easier to understand the pattern in an editor that understands paren's, we do
+ # not expect either of these cases to actually fire. - Yves
+ 1 while $expr =~ s/
+ ([:()]) \s*
+ ($parens) \s*
+ \? \s*
+ \( \s* ($parens) \s*
+ \? \s* ($parens|[^()?:\s]+?) \s*
+ : \s* ($parens|[^()?:\s]+?) \s*
+ \) \s*
+ : \s* \5 \s*
+ ([()])
+ /$1 ( $2 && $3 ) ? $4 : $5 $6/gx;
+ #$expr=~s/\(\(U8\*\)s\)\[(\d+)\]/S$1/g if length $expr > 8000;
+ #$expr=~s/\s+//g if length $expr > 8000;
+
+ die "Expression too long" if length $expr > 8000;
+
return $expr;
}
@@ -224,7 +306,7 @@
#
# Each string is then stored in the 'strs' subhash as a hash record
# made up of the results of __uni_latin1, using the keynames
-# 'low','latin1','utf8', as well as the synthesized 'LATIN1' and
+# 'low','latin1','utf8', as well as the synthesized 'LATIN1', 'high', and
# 'UTF8' which hold a merge of 'low' and their lowercase equivelents.
#
# Size data is tracked per type in the 'size' subhash.
@@ -247,23 +329,70 @@
my $str= $txt;
if ( $str =~ /^[""]/ ) {
$str= eval $str;
+ } elsif ($str =~ / - /x ) { # A range: Replace this element on the
+ # list with its expansion
+ my ($lower, $upper) = $str =~ / 0x (.+?) \s* - \s* 0x (.+) /x;
+ die "Format must be like '0xDEAD - 0xBEAF'; instead was '$str'" if ! defined $lower || ! defined $upper;
+ foreach my $cp (hex $lower .. hex $upper) {
+ push @{$opt{txt}}, sprintf "0x%X", $cp;
+ }
+ next;
+ } elsif ($str =~ s/ ^ N (?= 0x ) //x ) {
+ # Otherwise undocumented, a leading N means is already in the
+ # native character set; don't convert.
+ $str= chr eval $str;
} elsif ( $str =~ /^0x/ ) {
- $str= chr eval $str;
- } elsif ( /\S/ ) {
+ $str= eval $str;
+
+ # Convert from Unicode/ASCII to native, if necessary
+ $str = utf8::unicode_to_native($str) if ! ASCII_PLATFORM
+ && $str <= 0xFF;
+ $str = chr $str;
+ } elsif ( $str =~ / \s* \\p \{ ( .*? ) \} /x) {
+ my $property = $1;
+ use Unicode::UCD qw(prop_invlist);
+
+ my @invlist = prop_invlist($property, '_perl_core_internal_ok');
+ if (! @invlist) {
+
+ # An empty return could mean an unknown property, or merely
+ # that it is empty. Call in scalar context to differentiate
+ my $count = prop_invlist($property, '_perl_core_internal_ok');
+ die "$property not found" unless defined $count;
+ }
+
+ # Replace this element on the list with the property's expansion
+ for (my $i = 0; $i < @invlist; $i += 2) {
+ foreach my $cp ($invlist[$i] .. $invlist[$i+1] - 1) {
+
+ # prop_invlist() returns native values; add leading 'N'
+ # to indicate that.
+ push @{$opt{txt}}, sprintf "N0x%X", $cp;
+ }
+ }
+ next;
+ } elsif ($str =~ / ^ do \s+ ( .* ) /x) {
+ die "do '$1' failed: $!$@" if ! do $1 or $@;
+ next;
+ } elsif ($str =~ / ^ & \s* ( .* ) /x) { # user-furnished sub() call
+ my @results = eval "$1";
+ die "eval '$1' failed: $@" if $@;
+ push @{$opt{txt}}, @results;
+ next;
+ } else {
die "Unparsable line: $txt\n";
- } else {
- next;
}
- my ( $cp, $low, $latin1, $utf8 )= __uni_latin1( $str );
+ my ( $cp, $cp_high, $low, $latin1, $utf8 )= __uni_latin1( $str );
my $UTF8= $low || $utf8;
my $LATIN1= $low || $latin1;
+ my $high = (scalar grep { $_ < 256 } @$cp) ? 0 : $utf8;
#die Dumper($txt,$cp,$low,$latin1,$utf8)
# if $txt=~/NEL/ or $utf8 and @$utf8>3;
- @{ $self->{strs}{$str} }{qw( str txt low utf8 latin1 cp UTF8 LATIN1 )}=
- ( $str, $txt, $low, $utf8, $latin1, $cp, $UTF8, $LATIN1 );
+ @{ $self->{strs}{$str} }{qw( str txt low utf8 latin1 high cp cp_high UTF8 LATIN1 )}=
+ ( $str, $txt, $low, $utf8, $latin1, $high, $cp, $cp_high, $UTF8, $LATIN1 );
my $rec= $self->{strs}{$str};
- foreach my $key ( qw(low utf8 latin1 cp UTF8 LATIN1) ) {
+ foreach my $key ( qw(low utf8 latin1 high cp cp_high UTF8 LATIN1) ) {
$self->{size}{$key}{ 0 + @{ $self->{strs}{$str}{$key} } }++
if $self->{strs}{$str}{$key};
}
@@ -308,6 +437,22 @@
return 0 + keys( %trie ) ? \%trie : undef;
}
+sub pop_count ($) {
+ my $word = shift;
+
+ # This returns a list of the positions of the bits in the input word that
+ # are 1.
+
+ my @positions;
+ my $position = 0;
+ while ($word) {
+ push @positions, $position if $word & 1;
+ $position++;
+ $word >>= 1;
+ }
+ return @positions;
+}
+
# my $optree= _optree()
#
# recursively convert a trie to an optree where every node represents
@@ -325,8 +470,12 @@
$else= 0 unless defined $else;
$depth= 0 unless defined $depth;
- my @conds= sort { $a <=> $b } grep { length $_ } keys %$trie;
- if ( $trie->{''} ) {
+ # if we have an emptry string as a key it means we are in an
+ # accepting state and unless we can match further on should
+ # return the value of the '' key.
+ if (exists $trie->{''} ) {
+ # we can now update the "else" value, anything failing to match
+ # after this point should return the value from this.
if ( $ret_type eq 'cp' ) {
$else= $self->{strs}{ $trie->{''} }{cp}[0];
$else= sprintf "$self->{val_fmt}", $else if $else > 9;
@@ -338,37 +487,54 @@
$else= "len=$depth, $else";
}
}
+ # extract the meaningful keys from the trie, filter out '' as
+ # it means we are an accepting state (end of sequence).
+ my @conds= sort { $a <=> $b } grep { length $_ } keys %$trie;
+
+ # if we havent any keys there is no further we can match and we
+ # can return the "else" value.
return $else if !@conds;
- my $node= {};
- my $root= $node;
- my ( $yes_res, $as_code, @cond );
- my $test= $test_type eq 'cp' ? "cp" : "((U8*)s)[$depth]";
- my $Update= sub {
- $node->{vals}= [@cond];
+
+
+ my $test= $test_type =~ /^cp/ ? "cp" : "((U8*)s)[$depth]";
+ # first we loop over the possible keys/conditions and find out what they look like
+ # we group conditions with the same optree together.
+ my %dmp_res;
+ my @res_order;
+ local $Data::Dumper::Sortkeys=1;
+ foreach my $cond ( @conds ) {
+
+ # get the optree for this child/condition
+ my $res= $self->_optree( $trie->{$cond}, $test_type, $ret_type, $else, $depth + 1 );
+ # convert it to a string with Dumper
+ my $res_code= Dumper( $res );
+
+ push @{$dmp_res{$res_code}{vals}}, $cond;
+ if (!$dmp_res{$res_code}{optree}) {
+ $dmp_res{$res_code}{optree}= $res;
+ push @res_order, $res_code;
+ }
+ }
+
+ # now that we have deduped the optrees we construct a new optree containing the merged
+ # results.
+ my %root;
+ my $node= \%root;
+ foreach my $res_code_idx (0 .. $#res_order) {
+ my $res_code= $res_order[$res_code_idx];
+ $node->{vals}= $dmp_res{$res_code}{vals};
$node->{test}= $test;
- $node->{yes}= $yes_res;
+ $node->{yes}= $dmp_res{$res_code}{optree};
$node->{depth}= $depth;
- $node->{no}= shift;
- };
- while ( @conds ) {
- my $cond= shift @conds;
- my $res=
- $self->_optree( $trie->{$cond}, $test_type, $ret_type, $else,
- $depth + 1 );
- my $res_code= Dumper( $res );
- if ( !$yes_res || $res_code ne $as_code ) {
- if ( $yes_res ) {
- $Update->( {} );
- $node= $node->{no};
- }
- ( $yes_res, $as_code )= ( $res, $res_code );
- @cond= ( $cond );
+ if ($res_code_idx < $#res_order) {
+ $node= $node->{no}= {};
} else {
- push @cond, $cond;
+ $node->{no}= $else;
}
}
- $Update->( $else );
- return $root;
+
+ # return the optree.
+ return \%root;
}
# my $optree= optree(%opts);
@@ -380,7 +546,7 @@
my %opt= @_;
my $trie= $self->make_trie( $opt{type}, $opt{max_depth} );
$opt{ret_type} ||= 'len';
- my $test_type= $opt{type} eq 'cp' ? 'cp' : 'depth';
+ my $test_type= $opt{type} =~ /^cp/ ? 'cp' : 'depth';
return $self->_optree( $trie, $test_type, $opt{ret_type}, $opt{else}, 0 );
}
@@ -409,9 +575,11 @@
} elsif ( $latin1 ) {
$else= __cond_join( "!( is_utf8 )", $latin1, $else );
}
- my $low= $self->make_trie( 'low', $opt{max_depth} );
- if ( $low ) {
- $else= $self->_optree( $low, $test_type, $opt{ret_type}, $else, 0 );
+ if ($opt{type} eq 'generic') {
+ my $low= $self->make_trie( 'low', $opt{max_depth} );
+ if ( $low ) {
+ $else= $self->_optree( $low, $test_type, $opt{ret_type}, $else, 0 );
+ }
}
return $else;
@@ -428,11 +596,11 @@
my $type= $opt{type};
die "Can't do a length_optree on type 'cp', makes no sense."
- if $type eq 'cp';
+ if $type =~ /^cp/;
my ( @size, $method );
- if ( $type eq 'generic' ) {
+ if ( $type =~ /generic/ ) {
$method= 'generic_optree';
my %sizes= (
%{ $self->{size}{low} || {} },
@@ -454,19 +622,276 @@
return $else;
}
+sub calculate_mask(@) {
+ # Look at the input list of byte values. This routine returns an array of
+ # mask/base pairs to generate that list.
+
+ my @list = @_;
+ my $list_count = @list;
+
+ # Consider a set of byte values, A, B, C .... If we want to determine if
+ # <c> is one of them, we can write c==A || c==B || c==C .... If the
+ # values are consecutive, we can shorten that to A<=c && c<=Z, which uses
+ # far fewer branches. If only some of them are consecutive we can still
+ # save some branches by creating range tests for just those that are
+ # consecutive. _cond_as_str() does this work for looking for ranges.
+ #
+ # Another approach is to look at the bit patterns for A, B, C .... and see
+ # if they have some commonalities. That's what this function does. For
+ # example, consider a set consisting of the bytes
+ # 0xF0, 0xF1, 0xF2, and 0xF3. We could write:
+ # 0xF0 <= c && c <= 0xF4
+ # But the following mask/compare also works, and has just one test:
+ # (c & 0xFC) == 0xF0
+ # The reason it works is that the set consists of exactly those bytes
+ # whose first 4 bits are 1, and the next two are 0. (The value of the
+ # other 2 bits is immaterial in determining if a byte is in the set or
+ # not.) The mask masks out those 2 irrelevant bits, and the comparison
+ # makes sure that the result matches all bytes which match those 6
+ # material bits exactly. In other words, the set of bytes contains
+ # exactly those whose bottom two bit positions are either 0 or 1. The
+ # same principle applies to bit positions that are not necessarily
+ # adjacent. And it can be applied to bytes that differ in 1 through all 8
+ # bit positions. In order to be a candidate for this optimization, the
+ # number of bytes in the set must be a power of 2.
+ #
+ # Consider a different example, the set 0x53, 0x54, 0x73, and 0x74. That
+ # requires 4 tests using either ranges or individual values, and even
+ # though the number in the set is a power of 2, it doesn't qualify for the
+ # mask optimization described above because the number of bits that are
+ # different is too large for that. However, the set can be expressed as
+ # two branches with masks thusly:
+ # (c & 0xDF) == 0x53 || (c & 0xDF) == 0x54
+ # a branch savings of 50%. This is done by splitting the set into two
+ # subsets each of which has 2 elements, and within each set the values
+ # differ by 1 byte.
+ #
+ # This function attempts to find some way to save some branches using the
+ # mask technique. If not, it returns an empty list; if so, it
+ # returns a list consisting of
+ # [ [compare1, mask1], [compare2, mask2], ...
+ # [compare_n, undef], [compare_m, undef], ...
+ # ]
+ # The <mask> is undef in the above for those bytes that must be tested
+ # for individually.
+ #
+ # This function does not attempt to find the optimal set. To do so would
+ # probably require testing all possible combinations, and keeping track of
+ # the current best one.
+ #
+ # There are probably much better algorithms, but this is the one I (khw)
+ # came up with. We start with doing a bit-wise compare of every byte in
+ # the set with every other byte. The results are sorted into arrays of
+ # all those that differ by the same bit positions. These are stored in a
+ # hash with the each key being the bits they differ in. Here is the hash
+ # for the 0x53, 0x54, 0x73, 0x74 set:
+ # {
+ # 4 => {
+ # "0,1,2,5" => [
+ # 83,
+ # 116,
+ # 84,
+ # 115
+ # ]
+ # },
+ # 3 => {
+ # "0,1,2" => [
+ # 83,
+ # 84,
+ # 115,
+ # 116
+ # ]
+ # }
+ # 1 => {
+ # 5 => [
+ # 83,
+ # 115,
+ # 84,
+ # 116
+ # ]
+ # },
+ # }
+ #
+ # The set consisting of values which differ in the 4 bit positions 0, 1,
+ # 2, and 5 from some other value in the set consists of all 4 values.
+ # Likewise all 4 values differ from some other value in the 3 bit
+ # positions 0, 1, and 2; and all 4 values differ from some other value in
+ # the single bit position 5. The keys at the uppermost level in the above
+ # hash, 1, 3, and 4, give the number of bit positions that each sub-key
+ # below it has. For example, the 4 key could have as its value an array
+ # consisting of "0,1,2,5", "0,1,2,6", and "3,4,6,7", if the inputs were
+ # such. The best optimization will group the most values into a single
+ # mask. The most values will be the ones that differ in the most
+ # positions, the ones with the largest value for the topmost key. These
+ # keys, are thus just for convenience of sorting by that number, and do
+ # not have any bearing on the core of the algorithm.
+ #
+ # We start with an element from largest number of differing bits. The
+ # largest in this case is 4 bits, and there is only one situation in this
+ # set which has 4 differing bits, "0,1,2,5". We look for any subset of
+ # this set which has 16 values that differ in these 4 bits. There aren't
+ # any, because there are only 4 values in the entire set. We then look at
+ # the next possible thing, which is 3 bits differing in positions "0,1,2".
+ # We look for a subset that has 8 values that differ in these 3 bits.
+ # Again there are none. So we go to look for the next possible thing,
+ # which is a subset of 2**1 values that differ only in bit position 5. 83
+ # and 115 do, so we calculate a mask and base for those and remove them
+ # from every set. Since there is only the one set remaining, we remove
+ # them from just this one. We then look to see if there is another set of
+ # 2 values that differ in bit position 5. 84 and 116 do, so we calculate
+ # a mask and base for those and remove them from every set (again only
+ # this set remains in this example). The set is now empty, and there are
+ # no more sets to look at, so we are done.
+
+ if ($list_count == 256) { # All 256 is trivially masked
+ return (0, 0);
+ }
+
+ my %hash;
+
+ # Generate bits-differing lists for each element compared against each
+ # other element
+ for my $i (0 .. $list_count - 2) {
+ for my $j ($i + 1 .. $list_count - 1) {
+ my @bits_that_differ = pop_count($list[$i] ^ $list[$j]);
+ my $differ_count = @bits_that_differ;
+ my $key = join ",", @bits_that_differ;
+ push @{$hash{$differ_count}{$key}}, $list[$i] unless grep { $_ == $list[$i] } @{$hash{$differ_count}{$key}};
+ push @{$hash{$differ_count}{$key}}, $list[$j];
+ }
+ }
+
+ print STDERR __LINE__, ": calculate_mask() called: List of values grouped by differing bits: ", Dumper \%hash if DEBUG;
+
+ my @final_results;
+ foreach my $count (reverse sort { $a <=> $b } keys %hash) {
+ my $need = 2 ** $count; # Need 8 values for 3 differing bits, etc
+ foreach my $bits (sort keys $hash{$count}) {
+
+ print STDERR __LINE__, ": For $count bit(s) difference ($bits), need $need; have ", scalar @{$hash{$count}{$bits}}, "\n" if DEBUG;
+
+ # Look only as long as there are at least as many elements in the
+ # subset as are needed
+ while ((my $cur_count = @{$hash{$count}{$bits}}) >= $need) {
+
+ print STDERR __LINE__, ": Looking at bit positions ($bits): ", Dumper $hash{$count}{$bits} if DEBUG;
+
+ # Start with the first element in it
+ my $try_base = $hash{$count}{$bits}[0];
+ my @subset = $try_base;
+
+ # If it succeeds, we return a mask and a base to compare
+ # against the masked value. That base will be the AND of
+ # every element in the subset. Initialize to the one element
+ # we have so far.
+ my $compare = $try_base;
+
+ # We are trying to find a subset of this that has <need>
+ # elements that differ in the bit positions given by the
+ # string $bits, which is comma separated.
+ my @bits = split ",", $bits;
+
+ TRY: # Look through the remainder of the list for other
+ # elements that differ only by these bit positions.
+
+ for (my $i = 1; $i < $cur_count; $i++) {
+ my $try_this = $hash{$count}{$bits}[$i];
+ my @positions = pop_count($try_base ^ $try_this);
+
+ print STDERR __LINE__, ": $try_base vs $try_this: is (", join(',', @positions), ") a subset of ($bits)?" if DEBUG;;
+
+ foreach my $pos (@positions) {
+ unless (grep { $pos == $_ } @bits) {
+ print STDERR " No\n" if DEBUG;
+ my $remaining = $cur_count - $i - 1;
+ if ($remaining && @subset + $remaining < $need) {
+ print STDERR __LINE__, ": Can stop trying $try_base, because even if all the remaining $remaining values work, they wouldn't add up to the needed $need when combined with the existing ", scalar @subset, " ones\n" if DEBUG;
+ last TRY;
+ }
+ next TRY;
+ }
+ }
+
+ print STDERR " Yes\n" if DEBUG;
+ push @subset, $try_this;
+
+ # Add this to the mask base, in case it ultimately
+ # succeeds,
+ $compare &= $try_this;
+ }
+
+ print STDERR __LINE__, ": subset (", join(", ", @subset), ") has ", scalar @subset, " elements; needs $need\n" if DEBUG;
+
+ if (@subset < $need) {
+ shift @{$hash{$count}{$bits}};
+ next; # Try with next value
+ }
+
+ # Create the mask
+ my $mask = 0;
+ foreach my $position (@bits) {
+ $mask |= 1 << $position;
+ }
+ $mask = ~$mask & 0xFF;
+ push @final_results, [$compare, $mask];
+
+ printf STDERR "%d: Got it: compare=%d=0x%X; mask=%X\n", __LINE__, $compare, $compare, $mask if DEBUG;
+
+ # These values are now spoken for. Remove them from future
+ # consideration
+ foreach my $remove_count (sort keys %hash) {
+ foreach my $bits (sort keys %{$hash{$remove_count}}) {
+ foreach my $to_remove (@subset) {
+ @{$hash{$remove_count}{$bits}} = grep { $_ != $to_remove } @{$hash{$remove_count}{$bits}};
+ }
+ }
+ }
+ }
+ }
+ }
+
+ # Any values that remain in the list are ones that have to be tested for
+ # individually.
+ my @individuals;
+ foreach my $count (reverse sort { $a <=> $b } keys %hash) {
+ foreach my $bits (sort keys $hash{$count}) {
+ foreach my $remaining (@{$hash{$count}{$bits}}) {
+
+ # If we already know about this value, just ignore it.
+ next if grep { $remaining == $_ } @individuals;
+
+ # Otherwise it needs to be returned as something to match
+ # individually
+ push @final_results, [$remaining, undef];
+ push @individuals, $remaining;
+ }
+ }
+ }
+
+ # Sort by increasing numeric value
+ @final_results = sort { $a->[0] <=> $b->[0] } @final_results;
+
+ print STDERR __LINE__, ": Final return: ", Dumper \@final_results if DEBUG;
+
+ return @final_results;
+}
+
# _cond_as_str
# turn a list of conditions into a text expression
# - merges ranges of conditions, and joins the result with ||
sub _cond_as_str {
- my ( $self, $op, $combine )= @_;
+ my ( $self, $op, $combine, $opts_ref )= @_;
my $cond= $op->{vals};
my $test= $op->{test};
+ my $is_cp_ret = $opts_ref->{ret_type} eq "cp";
return "( $test )" if !defined $cond;
- # rangify the list
+ # rangify the list.
my @ranges;
my $Update= sub {
- if ( @ranges ) {
+ # We skip this if there are optimizations that
+ # we can apply (below) to the individual ranges
+ if ( ($is_cp_ret || $combine) && @ranges && ref $ranges[-1]) {
if ( $ranges[-1][0] == $ranges[-1][1] ) {
$ranges[-1]= $ranges[-1][0];
} elsif ( $ranges[-1][0] + 1 == $ranges[-1][1] ) {
@@ -475,25 +900,170 @@
}
}
};
- for my $cond ( @$cond ) {
- if ( !@ranges || $cond != $ranges[-1][1] + 1 ) {
+ for my $condition ( @$cond ) {
+ if ( !@ranges || $condition != $ranges[-1][1] + 1 ) {
$Update->();
- push @ranges, [ $cond, $cond ];
+ push @ranges, [ $condition, $condition ];
} else {
$ranges[-1][1]++;
}
}
$Update->();
+
return $self->_combine( $test, @ranges )
if $combine;
- @ranges= map {
- ref $_
- ? sprintf(
- "( $self->{val_fmt} <= $test && $test <= $self->{val_fmt} )",
- @$_ )
- : sprintf( "$self->{val_fmt} == $test", $_ );
- } @ranges;
- return "( " . join( " || ", @ranges ) . " )";
+
+ if ($is_cp_ret) {
+ @ranges= map {
+ ref $_
+ ? sprintf(
+ "( $self->{val_fmt} <= $test && $test <= $self->{val_fmt} )",
+ @$_ )
+ : sprintf( "$self->{val_fmt} == $test", $_ );
+ } @ranges;
+
+ return "( " . join( " || ", @ranges ) . " )";
+ }
+
+ # If the input set has certain characteristics, we can optimize tests
+ # for it. This doesn't apply if returning the code point, as we want
+ # each element of the set individually. The code above is for this
+ # simpler case.
+
+ return 1 if @$cond == 256; # If all bytes match, is trivially true
+
+ my @masks;
+ if (@ranges > 1) {
+
+ # See if the entire set shares optimizable characterstics, and if so,
+ # return the optimization. We delay checking for this on sets with
+ # just a single range, as there may be better optimizations available
+ # in that case.
+ @masks = calculate_mask(@$cond);
+
+ # Stringify the output of calculate_mask()
+ if (@masks) {
+ my @return;
+ foreach my $mask_ref (@masks) {
+ if (defined $mask_ref->[1]) {
+ push @return, sprintf "( ( $test & $self->{val_fmt} ) == $self->{val_fmt} )", $mask_ref->[1], $mask_ref->[0];
+ }
+ else { # An undefined mask means to use the value as-is
+ push @return, sprintf "$test == $self->{val_fmt}", $mask_ref->[0];
+ }
+ }
+
+ # The best possible case below for specifying this set of values via
+ # ranges is 1 branch per range. If our mask method yielded better
+ # results, there is no sense trying something that is bound to be
+ # worse.
+ if (@return < @ranges) {
+ return "( " . join( " || ", @return ) . " )";
+ }
+
+ @masks = @return;
+ }
+ }
+
+ # Here, there was no entire-class optimization that was clearly better
+ # than doing things by ranges. Look at each range.
+ my $range_count_extra = 0;
+ for (my $i = 0; $i < @ranges; $i++) {
+ if (! ref $ranges[$i]) { # Trivial case: no range
+ $ranges[$i] = sprintf "$self->{val_fmt} == $test", $ranges[$i];
+ }
+ elsif ($ranges[$i]->[0] == $ranges[$i]->[1]) {
+ $ranges[$i] = # Trivial case: single element range
+ sprintf "$self->{val_fmt} == $test", $ranges[$i]->[0];
+ }
+ else {
+ my $output = "";
+
+ # Well-formed UTF-8 continuation bytes on ascii platforms must be
+ # in the range 0x80 .. 0xBF. If we know that the input is
+ # well-formed (indicated by not trying to be 'safe'), we can omit
+ # tests that verify that the input is within either of these
+ # bounds. (No legal UTF-8 character can begin with anything in
+ # this range, so we don't have to worry about this being a
+ # continuation byte or not.)
+ if (ASCII_PLATFORM
+ && ! $opts_ref->{safe}
+ && $opts_ref->{type} =~ / ^ (?: utf8 | high ) $ /xi)
+ {
+ my $lower_limit_is_80 = ($ranges[$i]->[0] == 0x80);
+ my $upper_limit_is_BF = ($ranges[$i]->[1] == 0xBF);
+
+ # If the range is the entire legal range, it matches any legal
+ # byte, so we can omit both tests. (This should happen only
+ # if the number of ranges is 1.)
+ if ($lower_limit_is_80 && $upper_limit_is_BF) {
+ return 1;
+ }
+ elsif ($lower_limit_is_80) { # Just use the upper limit test
+ $output = sprintf("( $test <= $self->{val_fmt} )",
+ $ranges[$i]->[1]);
+ }
+ elsif ($upper_limit_is_BF) { # Just use the lower limit test
+ $output = sprintf("( $test >= $self->{val_fmt} )",
+ $ranges[$i]->[0]);
+ }
+ }
+
+ # If we didn't change to omit a test above, see if the number of
+ # elements is a power of 2 (only a single bit in the
+ # representation of its count will be set) and if so, it may be
+ # that a mask/compare optimization is possible.
+ if ($output eq ""
+ && pop_count($ranges[$i]->[1] - $ranges[$i]->[0] + 1) == 1)
+ {
+ my @list;
+ push @list, $_ for ($ranges[$i]->[0] .. $ranges[$i]->[1]);
+ my @this_masks = calculate_mask(@list);
+
+ # Use the mask if there is just one for the whole range.
+ # Otherwise there is no savings over the two branches that can
+ # define the range.
+ if (@this_masks == 1 && defined $this_masks[0][1]) {
+ $output = sprintf "( $test & $self->{val_fmt} ) == $self->{val_fmt}", $this_masks[0][1], $this_masks[0][0];
+ }
+ }
+
+ if ($output ne "") { # Prefer any optimization
+ $ranges[$i] = $output;
+ }
+ else {
+ # No optimization happened. We need a test that the code
+ # point is within both bounds. But, if the bounds are
+ # adjacent code points, it is cleaner to say
+ # 'first == test || second == test'
+ # than it is to say
+ # 'first <= test && test <= second'
+
+ $range_count_extra++; # This range requires 2 branches to
+ # represent
+ if ($ranges[$i]->[0] + 1 == $ranges[$i]->[1]) {
+ $ranges[$i] = "( "
+ . join( " || ", ( map
+ { sprintf "$self->{val_fmt} == $test", $_ }
+ @{$ranges[$i]} ) )
+ . " )";
+ }
+ else { # Full bounds checking
+ $ranges[$i] = sprintf("( $self->{val_fmt} <= $test && $test <= $self->{val_fmt} )", $ranges[$i]->[0], $ranges[$i]->[1]);
+ }
+ }
+ }
+ }
+
+ # We have generated the list of bytes in two ways; one trying to use masks
+ # to cut the number of branches down, and the other to look at individual
+ # ranges (some of which could be cut down by using a mask for just it).
+ # We return whichever method uses the fewest branches.
+ return "( "
+ . join( " || ", (@masks && @masks < @ranges + $range_count_extra)
+ ? @masks
+ : @ranges)
+ . " )";
}
# _combine
@@ -514,8 +1084,13 @@
$gtv= sprintf "$self->{val_fmt}", $item;
}
if ( @cond ) {
- return "( $cstr || ( $gtv < $test &&\n"
- . $self->_combine( $test, @cond ) . " ) )";
+ my $combine= $self->_combine( $test, @cond );
+ if (@cond >1) {
+ return "( $cstr || ( $gtv < $test &&\n"
+ . $combine . " ) )";
+ } else {
+ return "( $cstr || $combine )";
+ }
} else {
return $cstr;
}
@@ -524,13 +1099,18 @@
# _render()
# recursively convert an optree to text with reasonably neat formatting
sub _render {
- my ( $self, $op, $combine, $brace )= @_;
+ my ( $self, $op, $combine, $brace, $opts_ref, $def, $submacros )= @_;
+ return 0 if ! defined $op; # The set is empty
if ( !ref $op ) {
return $op;
}
- my $cond= $self->_cond_as_str( $op, $combine );
- my $yes= $self->_render( $op->{yes}, $combine, 1 );
- my $no= $self->_render( $op->{no}, $combine, 0 );
+ my $cond= $self->_cond_as_str( $op, $combine, $opts_ref );
+ #no warnings 'recursion'; # This would allow really really inefficient
+ # code to be generated. See pod
+ my $yes= $self->_render( $op->{yes}, $combine, 1, $opts_ref, $def, $submacros );
+ return $yes if $cond eq '1';
+
+ my $no= $self->_render( $op->{no}, $combine, 0, $opts_ref, $def, $submacros );
return "( $cond )" if $yes eq '1' and $no eq '0';
my ( $lb, $rb )= $brace ? ( "( ", " )" ) : ( "", "" );
return "$lb$cond ? $yes : $no$rb"
@@ -544,7 +1124,13 @@
$yes= " " . $yes;
}
- return "$lb$cond ?$yes$ind: $no$rb";
+ my $str= "$lb$cond ?$yes$ind: $no$rb";
+ if (length $str > 6000) {
+ push @$submacros, sprintf "#define $def\n( %s )", "_part" . (my $yes_idx= 0+@$submacros), $yes;
+ push @$submacros, sprintf "#define $def\n( %s )", "_part" . (my $no_idx= 0+@$submacros), $no;
+ return sprintf "%s%s ? $def : $def%s", $lb, $cond, "_part$yes_idx", "_part$no_idx", $rb;
+ }
+ return $str;
}
# $expr=render($op,$combine)
@@ -555,9 +1141,12 @@
# longer lists such as that resulting from type 'cp' output.
# Currently only used for type 'cp' macros.
sub render {
- my ( $self, $op, $combine )= @_;
- my $str= "( " . $self->_render( $op, $combine ) . " )";
- return __clean( $str );
+ my ( $self, $op, $combine, $opts_ref, $def_fmt )= @_;
+
+ my @submacros;
+ my $macro= sprintf "#define $def_fmt\n( %s )", "", $self->_render( $op, $combine, 0, $opts_ref, $def_fmt, \@submacros );
+
+ return join "\n\n", map { "/*** GENERATED CODE ***/\n" . __macro( __clean( $_ ) ) } @submacros, $macro;
}
# make_macro
@@ -564,7 +1153,7 @@
# make a macro of a given type.
# calls into make_trie and (generic_|length_)optree as needed
# Opts are:
-# type : 'cp','generic','low','latin1','utf8','LATIN1','UTF8'
+# type : 'cp','cp_high', 'generic','high','low','latin1','utf8','LATIN1','UTF8'
# ret_type : 'cp' or 'len'
# safe : add length guards to macro
#
@@ -583,30 +1172,30 @@
my %opts= @_;
my $type= $opts{type} || 'generic';
die "Can't do a 'cp' on multi-codepoint character class '$self->{op}'"
- if $type eq 'cp'
+ if $type =~ /^cp/
and $self->{has_multi};
- my $ret_type= $opts{ret_type} || ( $opts{type} eq 'cp' ? 'cp' : 'len' );
+ my $ret_type= $opts{ret_type} || ( $opts{type} =~ /^cp/ ? 'cp' : 'len' );
my $method;
if ( $opts{safe} ) {
$method= 'length_optree';
- } elsif ( $type eq 'generic' ) {
+ } elsif ( $type =~ /generic/ ) {
$method= 'generic_optree';
} else {
$method= 'optree';
}
- my $optree= $self->$method( %opts, type => $type, ret_type => $ret_type );
- my $text= $self->render( $optree, $type eq 'cp' );
- my @args= $type eq 'cp' ? 'cp' : 's';
+ my @args= $type =~ /^cp/ ? 'cp' : 's';
push @args, "e" if $opts{safe};
- push @args, "is_utf8" if $type eq 'generic';
+ push @args, "is_utf8" if $type =~ /generic/;
push @args, "len" if $ret_type eq 'both';
my $pfx= $ret_type eq 'both' ? 'what_len_' :
$ret_type eq 'cp' ? 'what_' : 'is_';
- my $ext= $type eq 'generic' ? '' : '_' . lc( $type );
+ my $ext= $type =~ /generic/ ? '' : '_' . lc( $type );
+ $ext .= '_non_low' if $type eq 'generic_non_low';
$ext .= "_safe" if $opts{safe};
my $argstr= join ",", @args;
- return "/*** GENERATED CODE ***/\n"
- . __macro( "#define $pfx$self->{op}$ext($argstr)\n$text" );
+ my $def_fmt="$pfx$self->{op}$ext%s($argstr)";
+ my $optree= $self->$method( %opts, type => $type, ret_type => $ret_type );
+ return $self->render( $optree, ($type =~ /^cp/) ? 1 : 0, \%opts, $def_fmt );
}
# if we arent being used as a module (highly likely) then process
@@ -621,26 +1210,43 @@
if ( $path eq '-' ) {
$out_fh= \*STDOUT;
} else {
- $out_fh = safer_open( "$path-new", $path );
+ $out_fh = open_new( $path );
}
print $out_fh read_only_top( lang => 'C', by => $0,
file => 'regcharclass.h', style => '*',
- copyright => [2007] );
+ copyright => [2007, 2011] );
+ print $out_fh "\n#ifndef H_REGCHARCLASS /* Guard against nested #includes */\n#define H_REGCHARCLASS 1\n\n";
- my ( $op, $title, @txt, @types, @mods );
+ my ( $op, $title, @txt, @types, %mods );
my $doit= sub {
return unless $op;
+
+ # Skip if to compile on a different platform.
+ return if delete $mods{only_ascii_platform} && ! ASCII_PLATFORM;
+ return if delete $mods{only_ebcdic_platform} && ord 'A' != 193;
+
print $out_fh "/*\n\t$op: $title\n\n";
print $out_fh join "\n", ( map { "\t$_" } @txt ), "*/", "";
my $obj= __PACKAGE__->new( op => $op, title => $title, txt => \@txt );
- #die Dumper(\@types,\@mods);
+ #die Dumper(\@types,\%mods);
+ my @mods;
+ push @mods, 'safe' if delete $mods{safe};
+ unshift @mods, 'fast' if delete $mods{fast} || ! @mods; # Default to 'fast'
+ # do this one
+ # first, as
+ # traditional
+ if (%mods) {
+ die "Unknown modifiers: ", join ", ", map { "'$_'" } sort keys %mods;
+ }
+
foreach my $type_spec ( @types ) {
my ( $type, $ret )= split /-/, $type_spec;
$ret ||= 'len';
foreach my $mod ( @mods ) {
- next if $mod eq 'safe' and $type eq 'cp';
+ next if $mod eq 'safe' and $type =~ /^cp/;
+ delete $mods{$mod};
my $macro= $obj->make_macro(
type => $type,
ret_type => $ret,
@@ -652,22 +1258,26 @@
};
while ( <DATA> ) {
- s/^\s*#//;
+ s/^ \s* (?: \# .* ) ? $ //x; # squeeze out comment and blanks
next unless /\S/;
chomp;
- if ( /^([A-Z]+)/ ) {
- $doit->();
+ if ( /^[A-Z]/ ) {
+ $doit->(); # This starts a new definition; do the previous one
( $op, $title )= split /\s*:\s*/, $_, 2;
@txt= ();
} elsif ( s/^=>// ) {
my ( $type, $modifier )= split /:/, $_;
@types= split ' ', $type;
- @mods= split ' ', $modifier;
+ undef %mods;
+ map { $mods{$_} = 1 } split ' ', $modifier;
} else {
push @txt, "$_";
}
}
$doit->();
+
+ print $out_fh "\n#endif /* H_REGCHARCLASS */\n";
+
if($path eq '-') {
print $out_fh "/* ex: set ro: */\n";
} else {
@@ -675,65 +1285,217 @@
}
}
+# The form of the input is a series of definitions to make macros for.
+# The first line gives the base name of the macro, followed by a colon, and
+# then text to be used in comments associated with the macro that are its
+# title or description. In all cases the first (perhaps only) parameter to
+# the macro is a pointer to the first byte of the code point it is to test to
+# see if it is in the class determined by the macro. In the case of non-UTF8,
+# the code point consists only of a single byte.
#
-# Valid types: generic, LATIN1, UTF8, low, latin1, utf8
-# default return value is octects read.
-# append -cp to make it codepoint matched.
-# modifiers come after the colon, valid possibilities
-# being 'fast' and 'safe'.
+# The second line must begin with a '=>' and be followed by the types of
+# macro(s) to be generated; these are specified below. A colon follows the
+# types, followed by the modifiers, also specified below. At least one
+# modifier is required.
#
+# The subsequent lines give what code points go into the class defined by the
+# macro. Multiple characters may be specified via a string like "\x0D\x0A",
+# enclosed in quotes. Otherwise the lines consist of one of:
+# 1) a single Unicode code point, prefaced by 0x
+# 2) a single range of Unicode code points separated by a minus (and
+# optional space)
+# 3) a single Unicode property specified in the standard Perl form
+# "\p{...}"
+# 4) a line like 'do path'. This will do a 'do' on the file given by
+# 'path'. It is assumed that this does nothing but load subroutines
+# (See item 5 below). The reason 'require path' is not used instead is
+# because 'do' doesn't assume that path is in @INC.
+# 5) a subroutine call
+# &pkg::foo(arg1, ...)
+# where pkg::foo was loaded by a 'do' line (item 4). The subroutine
+# returns an array of entries of forms like items 1-3 above. This
+# allows more complex inputs than achievable from the other input types.
+#
+# A blank line or one whose first non-blank character is '#' is a comment.
+# The definition of the macro is terminated by a line unlike those described.
+#
+# Valid types:
+# low generate a macro whose name is 'is_BASE_low' and defines a
+# class that includes only ASCII-range chars. (BASE is the
+# input macro base name.)
+# latin1 generate a macro whose name is 'is_BASE_latin1' and defines a
+# class that includes only upper-Latin1-range chars. It is not
+# designed to take a UTF-8 input parameter.
+# high generate a macro whose name is 'is_BASE_high' and defines a
+# class that includes all relevant code points that are above
+# the Latin1 range. This is for very specialized uses only.
+# It is designed to take only an input UTF-8 parameter.
+# utf8 generate a macro whose name is 'is_BASE_utf8' and defines a
+# class that includes all relevant characters that aren't ASCII.
+# It is designed to take only an input UTF-8 parameter.
+# LATIN1 generate a macro whose name is 'is_BASE_latin1' and defines a
+# class that includes both ASCII and upper-Latin1-range chars.
+# It is not designed to take a UTF-8 input parameter.
+# UTF8 generate a macro whose name is 'is_BASE_utf8' and defines a
+# class that can include any code point, adding the 'low' ones
+# to what 'utf8' works on. It is designed to take only an input
+# UTF-8 parameter.
+# generic generate a macro whose name is 'is_BASE". It has a 2nd,
+# boolean, parameter which indicates if the first one points to
+# a UTF-8 string or not. Thus it works in all circumstances.
+# generic_non_low generate a macro whose name is 'is_BASE_non_low". It has
+# a 2nd, boolean, parameter which indicates if the first one
+# points to a UTF-8 string or not. It excludes any ASCII-range
+# matches, but otherwise it works in all circumstances.
+# cp generate a macro whose name is 'is_BASE_cp' and defines a
+# class that returns true if the UV parameter is a member of the
+# class; false if not.
+# cp_high like cp, but it is assumed that it is known that the UV
+# parameter is above Latin1. The name of the generated macro is
+# 'is_BASE_cp_high'. This is different from high-cp, derived
+# below.
+# A macro of the given type is generated for each type listed in the input.
+# The default return value is the number of octets read to generate the match.
+# Append "-cp" to the type to have it instead return the matched codepoint.
+# The macro name is changed to 'what_BASE...'. See pod for
+# caveats
+# Appending '-both" instead adds an extra parameter to the end of the argument
+# list, which is a pointer as to where to store the number of
+# bytes matched, while also returning the code point. The macro
+# name is changed to 'what_len_BASE...'. See pod for caveats
+#
+# Valid modifiers:
+# safe The input string is not necessarily valid UTF-8. In
+# particular an extra parameter (always the 2nd) to the macro is
+# required, which points to one beyond the end of the string.
+# The macro will make sure not to read off the end of the
+# string. In the case of non-UTF8, it makes sure that the
+# string has at least one byte in it. The macro name has
+# '_safe' appended to it.
+# fast The input string is valid UTF-8. No bounds checking is done,
+# and the macro can make assumptions that lead to faster
+# execution.
+# only_ascii_platform Skip this definition if this program is being run on
+# a non-ASCII platform.
+# only_ebcdic_platform Skip this definition if this program is being run on
+# a non-EBCDIC platform.
+# No modifier need be specified; fast is assumed for this case. If both
+# 'fast', and 'safe' are specified, two macros will be created for each
+# 'type'.
+#
+# If run on a non-ASCII platform will automatically convert the Unicode input
+# to native. The documentation above is slightly wrong in this case. 'low'
+# actually refers to code points whose UTF-8 representation is the same as the
+# non-UTF-8 version (invariants); and 'latin1' refers to all the rest of the
+# code points less than 256.
+
1; # in the unlikely case we are being used as a module
__DATA__
+# This is no longer used, but retained in case it is needed some day.
+# TRICKYFOLD: Problematic fold case letters. When adding to this list, also should add them to regcomp.c and fold_grind.t
+# => generic cp generic-cp generic-both :fast safe
+# 0x00DF # LATIN SMALL LETTER SHARP S
+# 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+# 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+# 0x1E9E # LATIN CAPITAL LETTER SHARP S, because maps to same as 00DF
+# 0x1FD3 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA; maps same as 0390
+# 0x1FE3 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA; maps same as 03B0
+
LNBREAK: Line Break: \R
=> generic UTF8 LATIN1 :fast safe
"\x0D\x0A" # CRLF - Network (Windows) line ending
-0x0A # LF | LINE FEED
-0x0B # VT | VERTICAL TAB
-0x0C # FF | FORM FEED
-0x0D # CR | CARRIAGE RETURN
-0x85 # NEL | NEXT LINE
-0x2028 # LINE SEPARATOR
-0x2029 # PARAGRAPH SEPARATOR
+\p{VertSpace}
HORIZWS: Horizontal Whitespace: \h \H
-=> generic UTF8 LATIN1 cp :fast safe
-0x09 # HT
-0x20 # SPACE
-0xa0 # NBSP
-0x1680 # OGHAM SPACE MARK
-0x180e # MONGOLIAN VOWEL SEPARATOR
-0x2000 # EN QUAD
-0x2001 # EM QUAD
-0x2002 # EN SPACE
-0x2003 # EM SPACE
-0x2004 # THREE-PER-EM SPACE
-0x2005 # FOUR-PER-EM SPACE
-0x2006 # SIX-PER-EM SPACE
-0x2007 # FIGURE SPACE
-0x2008 # PUNCTUATION SPACE
-0x2009 # THIN SPACE
-0x200A # HAIR SPACE
-0x202f # NARROW NO-BREAK SPACE
-0x205f # MEDIUM MATHEMATICAL SPACE
-0x3000 # IDEOGRAPHIC SPACE
+=> generic UTF8 LATIN1 high cp cp_high :fast safe
+\p{HorizSpace}
VERTWS: Vertical Whitespace: \v \V
-=> generic UTF8 LATIN1 cp :fast safe
-0x0A # LF
-0x0B # VT
-0x0C # FF
-0x0D # CR
-0x85 # NEL
-0x2028 # LINE SEPARATOR
-0x2029 # PARAGRAPH SEPARATOR
+=> generic UTF8 high LATIN1 cp cp_high :fast safe
+\p{VertSpace}
+XDIGIT: Hexadecimal digits
+=> UTF8 high cp_high :fast
+\p{XDigit}
-TRICKYFOLD: Problematic fold case letters.
-=> generic cp generic-cp generic-both :fast safe
-0x00DF # LATIN SMALL LETTER SHARP S
-0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-0x1E9E # LATIN CAPITAL LETTER SHARP S, because maps to same as 00DF
-0x1FD3 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA; maps same as 0390
-0x1FE3 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA; maps same as 03B0
+XPERLSPACE: \p{XPerlSpace}
+=> generic UTF8 high cp_high :fast
+\p{XPerlSpace}
+
+REPLACEMENT: Unicode REPLACEMENT CHARACTER
+=> UTF8 :safe
+0xFFFD
+
+NONCHAR: Non character code points
+=> UTF8 :fast
+\p{Nchar}
+
+SURROGATE: Surrogate characters
+=> UTF8 :fast
+\p{Gc=Cs}
+
+GCB_L: Grapheme_Cluster_Break=L
+=> UTF8 :fast
+\p{_X_GCB_L}
+
+GCB_LV_LVT_V: Grapheme_Cluster_Break=(LV or LVT or V)
+=> UTF8 :fast
+\p{_X_LV_LVT_V}
+
+GCB_Prepend: Grapheme_Cluster_Break=Prepend
+=> UTF8 :fast
+\p{_X_GCB_Prepend}
+
+GCB_RI: Grapheme_Cluster_Break=RI
+=> UTF8 :fast
+\p{_X_RI}
+
+GCB_SPECIAL_BEGIN_START: Grapheme_Cluster_Break=special_begin_starts
+=> UTF8 :fast
+\p{_X_Special_Begin_Start}
+
+GCB_T: Grapheme_Cluster_Break=T
+=> UTF8 :fast
+\p{_X_GCB_T}
+
+GCB_V: Grapheme_Cluster_Break=V
+=> UTF8 :fast
+\p{_X_GCB_V}
+
+# This program was run with this enabled, and the results copied to utf8.h;
+# then this was commented out because it takes so long to figure out these 2
+# million code points. The results would not change unless utf8.h decides it
+# wants a maximum other than 4 bytes, or this program creates better
+# optimizations
+#UTF8_CHAR: Matches utf8 from 1 to 4 bytes
+#=> UTF8 :safe only_ascii_platform
+#0x0 - 0x1FFFFF
+
+# This hasn't been commented out, because we haven't an EBCDIC platform to run
+# it on, and the 3 types of EBCDIC allegedly supported by Perl would have
+# different results
+UTF8_CHAR: Matches utf8 from 1 to 5 bytes
+=> UTF8 :safe only_ebcdic_platform
+0x0 - 0x3FFFFF:
+
+QUOTEMETA: Meta-characters that \Q should quote
+=> high :fast
+\p{_Perl_Quotemeta}
+
+MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
+=> UTF8 :safe
+do regen/regcharclass_multi_char_folds.pl
+
+# 1 => All folds
+®charclass_multi_char_folds::multi_char_folds(1)
+
+MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
+=> LATIN1 :safe
+
+®charclass_multi_char_folds::multi_char_folds(0)
+# 0 => Latin1-only
+
+PATWS: pattern white space
+=> generic generic_non_low cp : fast safe
+\p{PatWS}
Property changes on: trunk/contrib/perl/regen/regcharclass.pl
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/regen/regcharclass_multi_char_folds.pl (from rev 6437, vendor/perl/5.18.1/regen/regcharclass_multi_char_folds.pl)
===================================================================
--- trunk/contrib/perl/regen/regcharclass_multi_char_folds.pl (rev 0)
+++ trunk/contrib/perl/regen/regcharclass_multi_char_folds.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,110 @@
+package regcharclass_multi_char_folds;
+use 5.015;
+use strict;
+use warnings;
+use Unicode::UCD "prop_invmap";
+
+# This returns an array of strings of the form
+# "\x{foo}\x{bar}\x{baz}"
+# of the sequences of code points that are multi-character folds in the
+# current Unicode version. If the parameter is 1, all such folds are
+# returned. If the parameters is 0, only the ones containing exclusively
+# Latin1 characters are returned. In the latter case all combinations of
+# Latin1 characters that can fold to the base one are returned. Thus for
+# 'ss', it would return in addition, 'Ss', 'sS', and 'SS'. This is because
+# this code is designed to help regcomp.c, and EXACTFish regnodes. For
+# non-UTF-8 patterns, the strings are not folded, so we need to check for the
+# upper and lower case versions. For UTF-8 patterns, the strings are folded,
+# so we only need to worry about the fold version. There are no non-ASCII
+# Latin1 multi-char folds currently, and none likely to be ever added. Thus
+# the output is the same as if it were just asking for ASCII characters, not
+# full Latin1. Hence, it is suitable for generating things that match
+# EXACTFA. It does check for and croak if there ever were to be an upper
+# Latin1 range multi-character fold.
+#
+# This is designed for input to regen/regcharlass.pl.
+
+sub gen_combinations ($;) {
+ # Generate all combinations for the first parameter which is an array of
+ # arrays.
+
+ my ($fold_ref, $string, $i) = @_;
+ $string = "" unless $string;
+ $i = 0 unless $i;
+
+ my @ret;
+
+ # Look at each element in this level's array.
+ foreach my $j (0 .. @{$fold_ref->[$i]} - 1) {
+
+ # Append its representation to what we have currently
+ my $new_string = sprintf "$string\\x{%X}", $fold_ref->[$i][$j];
+
+ if ($i >= @$fold_ref - 1) { # Final level: just return it
+ push @ret, "\"$new_string\"";
+ }
+ else { # Generate the combinations for the next level with this one's
+ push @ret, &gen_combinations($fold_ref, $new_string, $i + 1);
+ }
+ }
+
+ return @ret;
+}
+
+sub multi_char_folds ($) {
+ my $all_folds = shift; # The single parameter is true if wants all
+ # multi-char folds; false if just the ones that
+ # are all ascii
+
+ my ($cp_ref, $folds_ref, $format) = prop_invmap("Case_Folding");
+ die "Could not find inversion map for Case_Folding" unless defined $format;
+ die "Incorrect format '$format' for Case_Folding inversion map"
+ unless $format eq 'al';
+ my @folds;
+
+ for my $i (0 .. @$folds_ref - 1) {
+ next unless ref $folds_ref->[$i]; # Skip single-char folds
+
+ # The code in regcomp.c currently assumes that no multi-char fold
+ # folds to the upper Latin1 range. It's not a big deal to add; we
+ # just have to forbid such a fold in EXACTFL nodes, like we do already
+ # for ascii chars in EXACTFA (and EXACTFL) nodes. But I (khw) doubt
+ # that there will ever be such a fold created by Unicode, so the code
+ # isn't there to occupy space and time; instead there is this check.
+ die sprintf("regcomp.c can't cope with a latin1 multi-char fold (found in the fold of U+%X", $cp_ref->[$i]) if grep { $_ < 256 && chr($_) !~ /[[:ascii:]]/ } @{$folds_ref->[$i]};
+
+ # Create a line that looks like "\x{foo}\x{bar}\x{baz}" of the code
+ # points that make up the fold.
+ my $fold = join "", map { sprintf "\\x{%X}", $_ } @{$folds_ref->[$i]};
+ $fold = "\"$fold\"";
+
+ # Skip if something else already has this fold
+ next if grep { $_ eq $fold } @folds;
+
+ if ($all_folds) {
+ push @folds, $fold
+ } # Skip if wants only all-ascii folds, and there is a non-ascii
+ elsif (! grep { chr($_) =~ /[^[:ascii:]]/ } @{$folds_ref->[$i]}) {
+
+ # If the fold is to a cased letter, replace the entry with an
+ # array which also includes its upper case.
+ my $this_fold_ref = $folds_ref->[$i];
+ for my $j (0 .. @$this_fold_ref - 1) {
+ my $this_ord = $this_fold_ref->[$j];
+ if (chr($this_ord) =~ /\p{Cased}/) {
+ my $uc = ord(uc(chr($this_ord)));
+ undef $this_fold_ref->[$j];
+ @{$this_fold_ref->[$j]} = ( $this_ord, $uc);
+ }
+ }
+
+ # Then generate all combinations of upper/lower case of the fold.
+ push @folds, gen_combinations($this_fold_ref);
+
+ }
+ }
+
+ return @folds;
+}
+
+1
Modified: trunk/contrib/perl/regen/regcomp.pl
===================================================================
--- trunk/contrib/perl/regen/regcomp.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/regcomp.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -2,6 +2,7 @@
#
# Regenerate (overwriting only if changed):
#
+# pod/perldebguts.pod
# regnodes.h
#
# from information stored in
@@ -9,6 +10,9 @@
# regcomp.sym
# regexp.h
#
+# pod/perldebguts.pod is not completely regenerated. Only the table of
+# regexp nodes is replaced; other parts remain unchanged.
+#
# Accepts the standard regen_lib -q and -v args.
#
# This script is normally invoked from regen.pl.
@@ -22,11 +26,15 @@
open DESC, 'regcomp.sym';
my $ind = 0;
-my (@name, at rest, at type, at code, at args, at flags, at longj);
-my ($desc,$lastregop);
+my (@name, at rest, at type, at code, at args, at flags, at longj, at cmnt);
+my ($longest_name_length,$desc,$lastregop) = 0;
while (<DESC>) {
- s/#.*$//;
- next if /^\s*$/;
+ # Special pod comments
+ if (/^#\* ?/) { $cmnt[$ind] .= "# $'"; }
+ # Truly blank lines possibly surrounding pod comments
+ elsif (/^\s*$/) { $cmnt[$ind] .= "\n" }
+
+ next if /^(?:#|\s*$)/;
chomp; # No \z in 5.004
s/\s*$//;
if (/^-+\s*$/) {
@@ -34,9 +42,11 @@
next;
}
unless ($lastregop) {
- ($name[$ind], $desc, $rest[$ind]) = /^(\S+)\s+([^\t]+)\s*;\s*(.*)/;
+ ($name[$ind], $desc, $rest[$ind]) = /^(\S+)\s+([^\t]+?)\s*;\s*(.*)/;
($type[$ind], $code[$ind], $args[$ind], $flags[$ind], $longj[$ind])
= split /[,\s]\s*/, $desc;
+ $longest_name_length = length $name[$ind]
+ if length $name[$ind] > $longest_name_length;
++$ind;
} else {
my ($type, at lists)=split /\s+/, $_;
@@ -125,10 +135,8 @@
EOP
}
-my $out = safer_open('regnodes.h-new', 'regnodes.h');
-
-print $out read_only_top(lang => 'C', by => 'regen/regcomp.pl',
- from => 'regcomp.sym');
+my $out = open_new('regnodes.h', '>',
+ { by => 'regen/regcomp.pl', from => 'regcomp.sym' });
printf $out <<EOP,
/* Regops and State definitions */
@@ -255,15 +263,20 @@
# optional leading '_'. Return symbol in $1, and strip it from
# rest of line
- if (s/ \#define \s+ ( _? RXf_ \w+ ) \s+ //xi) {
+ if (s/ \# \s* define \s+ ( _? RXf_ \w+ ) \s+ //xi) {
chomp;
my $define = $1;
- s: / \s* \* .*? \* \s* / : :x; # Replace comments by a blank
+ my $orig= $_;
+ s{ /\* .*? \*/ }{ }x; # Replace comments by a blank
# Replace any prior defined symbols by their values
foreach my $key (keys %definitions) {
s/\b$key\b/$definitions{$key}/g;
}
+
+ # Remove the U suffix from unsigned int literals
+ s/\b([0-9]+)U\b/$1/g;
+
my $newval = eval $_; # Get numeric definition
$definitions{$define} = $newval;
@@ -270,7 +283,12 @@
next unless $_ =~ /<</; # Bit defines use left shift
if($val & $newval) {
- die sprintf "Both $define and $reverse{$newval} use %08X", $newval;
+ my @names=($define, $reverse{$newval});
+ s/PMf_// for @names;
+ if ($names[0] ne $names[1]) {
+ die sprintf "ERROR: both $define and $reverse{$newval} use 0x%08X (%s:%s)", $newval, $orig, $_;
+ }
+ next;
}
$val|=$newval;
$rxfv{$define}= $newval;
@@ -280,9 +298,11 @@
}
my %vrxf=reverse %rxfv;
printf $out "\t/* Bits in extflags defined: %s */\n", unpack 'B*', pack 'N', $val;
+my %multibits;
for (0..31) {
my $power_of_2 = 2**$_;
my $n=$vrxf{$power_of_2};
+ my $extra = "";
if (! $n) {
# Here, there was no name that matched exactly the bit. It could be
@@ -297,16 +317,17 @@
# that name, and all the bits it matches
foreach my $name (keys %rxfv) {
if ($rxfv{$name} & $power_of_2) {
- $n = $name;
- $power_of_2 = $rxfv{$name};
+ $n = $name . ( $multibits{$name}++ );
+ $extra= sprintf qq{ : "%s" - 0x%08x}, $name, $rxfv{$name}
+ if $power_of_2 != $rxfv{$name};
last;
}
}
}
}
- $n=~s/^RXf_(PMf_)?//;
- printf $out qq(\t%-20s/* 0x%08x */\n),
- qq("$n",),$power_of_2;
+ s/\bRXf_(PMf_)?// for $n, $extra;
+ printf $out qq(\t%-20s/* 0x%08x%s */\n),
+ qq("$n",),$power_of_2, $extra;
}
print $out <<EOP;
@@ -326,3 +347,51 @@
EOC
read_only_bottom_close_and_rename($out);
+
+my $guts = open_new('pod/perldebguts.pod', '>');
+
+my $code;
+my $name_fmt = '<' x ($longest_name_length-1);
+my $descr_fmt = '<' x (58-$longest_name_length);
+eval <<EOD;
+format GuTS =
+ ^*~~
+ \$cmnt[\$_]
+ ^$name_fmt ^<<<<<<<<< ^$descr_fmt~~
+ \$name[\$_], \$code, \$rest[\$_]
+.
+EOD
+
+select +(select($guts), do {
+ $~ = "GuTS";
+
+ open my $oldguts, "pod/perldebguts.pod"
+ or die "$0 cannot open pod/perldebguts.pod for reading: $!";
+ while(<$oldguts>) {
+ print;
+ last if /=for regcomp.pl begin/;
+ }
+
+ print <<'end';
+
+ # TYPE arg-description [num-args] [longjump-len] DESCRIPTION
+end
+ for (0..$lastregop-1) {
+ $code = "$code[$_] ".($args[$_]||"");
+ $code .= " $longj[$_]" if $longj[$_];
+ if ($cmnt[$_] ||= "") {
+ # Trim multiple blanks
+ $cmnt[$_] =~ s/^\n\n+/\n/; $cmnt[$_] =~ s/\n\n+$/\n\n/
+ }
+ write;
+ }
+ print "\n";
+
+ while(<$oldguts>) {
+ last if /=for regcomp.pl end/;
+ }
+ do { print } while <$oldguts>;
+
+})[0];
+
+close_and_rename($guts);
Property changes on: trunk/contrib/perl/regen/regcomp.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/regen/regen_lib.pl
===================================================================
--- trunk/contrib/perl/regen/regen_lib.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/regen_lib.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -32,54 +32,54 @@
return $cnt;
}
-sub safer_rename_silent {
- my ($from, $to) = @_;
-
- # Some dosish systems can't rename over an existing file:
- safer_unlink $to;
- chmod 0600, $from if $Needs_Write;
- rename $from, $to;
-}
-
-sub rename_if_different {
- my ($from, $to) = @_;
-
- if ($TAP) {
- my $not = compare($from, $to) ? 'not ' : '';
- print STDOUT $not . "ok - $0 $to\n";
- safer_unlink($from);
- return;
- }
- if (compare($from, $to) == 0) {
- warn "no changes between '$from' & '$to'\n" if $Verbose > 0;
- safer_unlink($from);
- return;
- }
- warn "changed '$from' to '$to'\n" if $Verbose > 0;
- push @Changed, $to unless $Verbose < 0;
- safer_rename_silent($from, $to) or die "renaming $from to $to: $!";
-}
-
-# Saf*er*, but not totally safe. And assumes always open for output.
-sub safer_open {
- my ($name, $final_name) = @_;
- if (-f $name) {
- unlink $name or die "$name exists but can't unlink: $!";
+# Open a new file.
+sub open_new {
+ my ($final_name, $mode, $header) = @_;
+ my $name = $final_name . '-new';
+ my $lang = $final_name =~ /\.(?:c|h|tab|act)$/ ? 'C' : 'Perl';
+ my $fh = gensym;
+ if (!defined $mode or $mode eq '>') {
+ if (-f $name) {
+ unlink $name or die "$name exists but can't unlink: $!";
+ }
+ open $fh, ">$name" or die "Can't create $name: $!";
+ } elsif ($mode eq '>>') {
+ open $fh, ">>$name" or die "Can't append to $name: $!";
+ } else {
+ die "Unhandled open mode '$mode#";
}
- my $fh = gensym;
- open $fh, ">$name" or die "Can't create $name: $!";
*{$fh}->{name} = $name;
- if (defined $final_name) {
- *{$fh}->{final_name} = $final_name;
- *{$fh}->{lang} = ($final_name =~ /\.(?:c|h|tab|act)$/ ? 'C' : 'Perl');
- }
+ *{$fh}->{final_name} = $final_name;
+ *{$fh}->{lang} = $lang;
binmode $fh;
+ print {$fh} read_only_top(lang => $lang, %$header) if $header;
$fh;
}
-sub safer_close {
+sub close_and_rename {
my $fh = shift;
- close $fh or die 'Error closing ' . *{$fh}->{name} . ": $!";
+ my $name = *{$fh}->{name};
+ close $fh or die "Error closing $name: $!";
+ my $final_name = *{$fh}->{final_name};
+
+ if ($TAP) {
+ my $not = compare($name, $final_name) ? 'not ' : '';
+ print STDOUT $not . "ok - $0 $final_name\n";
+ safer_unlink($name);
+ return;
+ }
+ if (compare($name, $final_name) == 0) {
+ warn "no changes between '$name' & '$final_name'\n" if $Verbose > 0;
+ safer_unlink($name);
+ return;
+ }
+ warn "changed '$name' to '$final_name'\n" if $Verbose > 0;
+ push @Changed, $final_name unless $Verbose < 0;
+
+ # Some dosish systems can't rename over an existing file:
+ safer_unlink $final_name;
+ chmod 0600, $name if $Needs_Write;
+ rename $name, $final_name or die "renaming $name to $final_name: $!";
}
sub read_only_top {
@@ -129,11 +129,16 @@
? wrap('# ', '# ', $raw) . "\n" : wrap('/* ', $style, $raw) . " */\n\n";
$cooked =~ tr/\0/ /; # Don't break Larry's name etc
$cooked =~ s/ +$//mg; # Remove all trailing spaces
+ $cooked =~ s! \*/\n!$args{quote}!s if $args{quote};
return $cooked;
}
-sub read_only_bottom {
- my ($sources, $lang) = @_;
+sub read_only_bottom_close_and_rename {
+ my ($fh, $sources) = @_;
+ my $name = *{$fh}->{name};
+ my $lang = *{$fh}->{lang};
+ die "No final name specified at open time for $name"
+ unless *{$fh}->{final_name};
my $comment;
if ($sources) {
@@ -152,20 +157,9 @@
$comment =~ s! \* !/* !;
$comment .= " */";
}
- return "$comment\n";
-}
+ print $fh "\n$comment\n";
-sub read_only_bottom_close_and_rename {
- my ($fh, $sources) = @_;
- my $name = *{$fh}->{name};
- my $lang = *{$fh}->{lang};
- die "No final name specified at open time for $name"
- unless *{$fh}->{final_name};
-
- print $fh "\n", read_only_bottom($sources, $lang);
-
- safer_close($fh);
- rename_if_different($name, *{$fh}->{final_name});
+ close_and_rename($fh);
}
sub tab {
Property changes on: trunk/contrib/perl/regen/regen_lib.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/regen/uconfig_h.pl
===================================================================
--- trunk/contrib/perl/regen/uconfig_h.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/uconfig_h.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -22,9 +22,6 @@
my $command = 'sh ./config_h.SH';
system $command and die "`$command` failed, \$?=$?";
-open FH, ">>$uconfig_h_new" or die "Can't append to $uconfig_h_new: $!";
+my $fh = open_new($uconfig_h, '>>');
-print FH "\n", read_only_bottom([$ENV{CONFIG_SH}, 'config_h.SH']);
-
-safer_close(*FH);
-rename_if_different($uconfig_h_new, $uconfig_h);
+read_only_bottom_close_and_rename($fh, [$ENV{CONFIG_SH}, 'config_h.SH']);
Property changes on: trunk/contrib/perl/regen/uconfig_h.pl
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/regen/unicode_constants.pl (from rev 6437, vendor/perl/5.18.1/regen/unicode_constants.pl)
===================================================================
--- trunk/contrib/perl/regen/unicode_constants.pl (rev 0)
+++ trunk/contrib/perl/regen/unicode_constants.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,160 @@
+use v5.16.0;
+use strict;
+use warnings;
+require 'regen/regen_lib.pl';
+use charnames qw(:loose);
+
+my $out_fh = open_new('unicode_constants.h', '>',
+ {style => '*', by => $0,
+ from => "Unicode data"});
+
+print $out_fh <<END;
+
+#ifndef H_UNICODE_CONSTANTS /* Guard against nested #includes */
+#define H_UNICODE_CONSTANTS 1
+
+/* This file contains #defines for various Unicode code points. The values
+ * the macros expand to are the native Unicode code point, or all or portions
+ * of the UTF-8 encoding for the code point. In the former case, the macro
+ * name has the suffix "_NATIVE"; otherwise, the suffix "_UTF8".
+ *
+ * The macros that have the suffix "_UTF8" may have further suffixes, as
+ * follows:
+ * "_FIRST_BYTE" if the value is just the first byte of the UTF-8
+ * representation; the value will be a numeric constant.
+ * "_TAIL" if instead it represents all but the first byte. This, and
+ * with no additional suffix are both string constants */
+
+END
+
+# The data are at the end of this file. A blank line is output as-is.
+# Comments (lines whose first non-blank is a '#') are converted to C-style,
+# though empty comments are converted to blank lines. Otherwise, each line
+# represents one #define, and begins with either a Unicode character name with
+# the blanks and dashes in it squeezed out or replaced by underscores; or it
+# may be a hexadecimal Unicode code point of the form U+xxxx. In the latter
+# case, the name will be looked-up to use as the name of the macro. In either
+# case, the macro name will have suffixes as listed above, and all blanks and
+# dashes will be replaced by underscores.
+#
+# Each line may optionally have one of the following flags on it, separated by
+# white space from the initial token.
+# string indicates that the output is to be of the string form
+# described in the comments above that are placed in the file.
+# string_skip_ifundef is the same as 'string', but instead of dying if the
+# code point doesn't exist, the line is just skipped: no output is
+# generated for it
+# first indicates that the output is to be of the FIRST_BYTE form.
+# tail indicates that the output is of the _TAIL form.
+# native indicates that the output is the code point, converted to the
+# platform's native character set if applicable
+#
+# If the code point has no official name, the desired name may be appended
+# after the flag, which will be ignored if there is an official name.
+#
+# This program is used to make it convenient to create compile time constants
+# of UTF-8, and to generate proper EBCDIC as well as ASCII without manually
+# having to figure things out.
+
+while ( <DATA> ) {
+ chomp;
+
+ # Convert any '#' comments to /* ... */; empty lines and comments are
+ # output as blank lines
+ if ($_ =~ m/ ^ \s* (?: \# ( .* ) )? $ /x) {
+ my $comment_body = $1 // "";
+ if ($comment_body ne "") {
+ print $out_fh "/* $comment_body */\n";
+ }
+ else {
+ print $out_fh "\n";
+ }
+ next;
+ }
+
+ unless ($_ =~ m/ ^ ( [^\ ]* ) # Name or code point token
+ (?: [\ ]+ ( [^ ]* ) )? # optional flag
+ (?: [\ ]+ ( .* ) )? # name if unnamed; flag is required
+ /x)
+ {
+ die "Unexpected syntax at line $.: $_\n";
+ }
+
+ my $name_or_cp = $1;
+ my $flag = $2;
+ my $desired_name = $3;
+
+ my $name;
+ my $cp;
+ my $U_cp; # code point in Unicode (not-native) terms
+ my $undef_ok = $desired_name || $flag =~ /skip_if_undef/;
+
+ if ($name_or_cp =~ /^U\+(.*)/) {
+ $U_cp = hex $1;
+ $name = charnames::viacode($name_or_cp);
+ if (! defined $name) {
+ die "Unknown code point '$name_or_cp' at line $.: $_\n" unless $undef_ok;
+ $name = "";
+ }
+ $cp = utf8::unicode_to_native($U_cp);
+ }
+ else {
+ $name = $name_or_cp;
+ $cp = charnames::vianame($name =~ s/_/ /gr);
+ $U_cp = utf8::native_to_unicode($cp);
+ die "Unknown name '$name' at line $.: $_\n" unless defined $name;
+ }
+
+ $name = $desired_name if $name eq "" && $desired_name;
+ $name =~ s/[- ]/_/g; # The macro name can have no blanks nor dashes
+
+ my $str = join "", map { sprintf "\\x%02X", $_ }
+ unpack("U0C*", pack("U", $cp));
+
+ my $suffix = '_UTF8';
+ if (! defined $flag || $flag =~ /^ string (_skip_if_undef)? $/x) {
+ $str = "\"$str\""; # Will be a string constant
+ } elsif ($flag eq 'tail') {
+ $str =~ s/\\x..//; # Remove the first byte
+ $suffix .= '_TAIL';
+ $str = "\"$str\""; # Will be a string constant
+ }
+ elsif ($flag eq 'first') {
+ $str =~ s/ \\x ( .. ) .* /$1/x; # Get the two nibbles of the 1st byte
+ $suffix .= '_FIRST_BYTE';
+ $str = "0x$str"; # Is a numeric constant
+ }
+ elsif ($flag eq 'native') {
+ die "Are you sure you want to run this on an above-Latin1 code point?" if $cp > 0xff;
+ $suffix = '_NATIVE';
+ $str = sprintf "0x%02X", $cp; # Is a numeric constant
+ }
+ else {
+ die "Unknown flag at line $.: $_\n";
+ }
+ printf $out_fh "#define %s%s %s /* U+%04X */\n", $name, $suffix, $str, $U_cp;
+}
+
+print $out_fh "\n#endif /* H_UNICODE_CONSTANTS */\n";
+
+read_only_bottom_close_and_rename($out_fh);
+
+__DATA__
+
+U+0300 string
+U+0301 string
+U+0308 string
+
+U+03B9 string
+
+U+03C5 string
+
+U+2010 string
+U+D800 first FIRST_SURROGATE
+
+DEL native
+U+00DF native
+U+00E5 native
+U+00C5 native
+U+00FF native
+U+00B5 native
Modified: trunk/contrib/perl/regen/warnings.pl
===================================================================
--- trunk/contrib/perl/regen/warnings.pl 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/regen/warnings.pl 2013-12-02 21:27:05 UTC (rev 6440)
@@ -53,11 +53,11 @@
}],
'severe' => [ 5.008, {
'inplace' => [ 5.008, DEFAULT_ON],
- 'internal' => [ 5.008, DEFAULT_ON],
+ 'internal' => [ 5.008, DEFAULT_OFF],
'debugging' => [ 5.008, DEFAULT_ON],
'malloc' => [ 5.008, DEFAULT_ON],
}],
- 'deprecated' => [ 5.008, DEFAULT_OFF],
+ 'deprecated' => [ 5.008, DEFAULT_ON],
'void' => [ 5.008, DEFAULT_OFF],
'recursion' => [ 5.008, DEFAULT_OFF],
'redefine' => [ 5.008, DEFAULT_OFF],
@@ -66,7 +66,7 @@
'once' => [ 5.008, DEFAULT_OFF],
'misc' => [ 5.008, DEFAULT_OFF],
'regexp' => [ 5.008, DEFAULT_OFF],
- 'glob' => [ 5.008, DEFAULT_OFF],
+ 'glob' => [ 5.008, DEFAULT_ON],
'untie' => [ 5.008, DEFAULT_OFF],
'substr' => [ 5.008, DEFAULT_OFF],
'taint' => [ 5.008, DEFAULT_OFF],
@@ -84,11 +84,22 @@
'unpack' => [ 5.008, DEFAULT_OFF],
'threads' => [ 5.008, DEFAULT_OFF],
'imprecision' => [ 5.011, DEFAULT_OFF],
+ 'experimental' => [ 5.017, {
+ 'experimental::lexical_subs' =>
+ [ 5.017, DEFAULT_ON ],
+ 'experimental::regex_sets' =>
+ [ 5.017, DEFAULT_ON ],
+ 'experimental::lexical_topic' =>
+ [ 5.017, DEFAULT_ON ],
+ 'experimental::smartmatch' =>
+ [ 5.017, DEFAULT_ON ],
+ }],
#'default' => [ 5.008, DEFAULT_ON ],
}],
} ;
+my @def ;
my %list ;
my %Value ;
my %ValueToName ;
@@ -151,6 +162,8 @@
my ($ver, $rest) = @{ $v } ;
if (ref $rest)
{ push (@{ $list{$k} }, walk ($rest)) }
+ elsif ($rest == DEFAULT_ON)
+ { push @def, $NameToValue{uc $k} }
push @list, @{ $list{$k} } ;
}
@@ -260,11 +273,11 @@
exit ;
}
-my $warn = safer_open('warnings.h-new', 'warnings.h');
-my $pm = safer_open('lib/warnings.pm-new', 'lib/warnings.pm');
+my ($warn, $pm) = map {
+ open_new($_, '>', { by => 'regen/warnings.pl' });
+} 'warnings.h', 'lib/warnings.pm';
-print $pm read_only_top(lang => 'Perl', by => 'regen/warnings.pl');
-print $warn read_only_top(lang => 'C', by => 'regen/warnings.pl'), <<'EOM';
+print $warn <<'EOM';
#define Off(x) ((x) / 8)
#define Bit(x) (1 << ((x) % 8))
@@ -310,7 +323,8 @@
my ($name, $version) = @{ $ValueToName{$k} };
print $warn "\n/* Warnings Categories added in Perl $version */\n\n"
if $last_ver != $version ;
- print $warn tab(5, "#define WARN_$name"), "$k\n" ;
+ $name =~ y/:/_/;
+ print $warn tab(5, "#define WARN_$name"), " $k\n" ;
$last_ver = $version ;
}
print $warn "\n" ;
@@ -416,6 +430,8 @@
print $pm " );\n\n" ;
print $pm '$NONE = "', ('\0' x $warn_size) , "\";\n" ;
+print $pm '$DEFAULT = "', mkHex($warn_size, map $_ * 2, @def),
+ '", # [', mkRange(@def), "]\n" ;
print $pm '$LAST_BIT = ' . "$index ;\n" ;
print $pm '$BYTES = ' . "$warn_size ;\n" ;
while (<DATA>) {
@@ -427,7 +443,7 @@
__END__
package warnings;
-our $VERSION = '1.12';
+our $VERSION = '1.18';
# Verify that we're called correctly so that warnings will work.
# see also strict.pm.
@@ -469,7 +485,8 @@
The C<warnings> pragma is a replacement for the command line flag C<-w>,
but the pragma is limited to the enclosing block, while the flag is global.
-See L<perllexwarn> for more information.
+See L<perllexwarn> for more information and the list of built-in warning
+categories.
If no import list is supplied, all possible warnings are either enabled
or disabled.
@@ -635,7 +652,7 @@
{
shift;
- my $mask = ${^WARNING_BITS} ;
+ my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
if (vec($mask, $Offsets{'all'}, 1)) {
$mask |= $Bits{'all'} ;
@@ -651,7 +668,7 @@
shift;
my $catmask ;
- my $mask = ${^WARNING_BITS} ;
+ my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
if (vec($mask, $Offsets{'all'}, 1)) {
$mask |= $Bits{'all'} ;
@@ -730,8 +747,11 @@
$i = _error_loc(); # see where Carp will allocate the error
}
- # Defaulting this to 0 reduces complexity in code paths below.
- my $callers_bitmask = (caller($i))[9] || 0 ;
+ # Default to 0 if caller returns nothing. Default to $DEFAULT if it
+ # explicitly returns undef.
+ my(@callers_bitmask) = (caller($i))[9] ;
+ my $callers_bitmask =
+ @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ;
my @results;
foreach my $type (FATAL, NORMAL) {
@@ -809,6 +829,6 @@
# These are not part of any public interface, so we can delete them to save
# space.
-delete $warnings::{$_} foreach qw(NORMAL FATAL MESSAGE);
+delete @warnings::{qw(NORMAL FATAL MESSAGE)};
1;
Property changes on: trunk/contrib/perl/regen/warnings.pl
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/utils/Makefile
===================================================================
--- trunk/contrib/perl/utils/Makefile 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/Makefile 2013-12-02 21:27:05 UTC (rev 6440)
@@ -10,9 +10,9 @@
# Files to be built with variable substitution after miniperl is
# available. Dependencies handled manually below (for now).
-pl = c2ph.PL config_data.PL corelist.PL cpan.PL h2ph.PL h2xs.PL instmodsh.PL json_pp.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL prove.PL ptar.PL ptardiff.PL ptargrep.PL cpanp-run-perl.PL cpanp.PL cpan2dist.PL shasum.PL splain.PL dprofpp.PL libnetcfg.PL piconv.PL enc2xs.PL xsubpp.PL
-plextract = c2ph config_data corelist cpan h2ph h2xs instmodsh json_pp perlbug perldoc perlivp pl2pm prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum splain dprofpp libnetcfg piconv enc2xs xsubpp
-plextractexe = ./c2ph ./config_data ./corelist ./cpan ./h2ph ./h2xs ./json_pp ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./ptar ./ptardiff ./ptargrep ./cpanp-run-perl ./cpanp ./cpan2dist ./shasum ./splain ./dprofpp ./libnetcfg ./piconv ./enc2xs ./xsubpp
+pl = c2ph.PL config_data.PL corelist.PL cpan.PL h2ph.PL h2xs.PL instmodsh.PL json_pp.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL prove.PL ptar.PL ptardiff.PL ptargrep.PL cpanp-run-perl.PL cpanp.PL cpan2dist.PL shasum.PL splain.PL libnetcfg.PL piconv.PL enc2xs.PL xsubpp.PL pod2html.PL zipdetails.PL
+plextract = c2ph config_data corelist cpan h2ph h2xs instmodsh json_pp perlbug perldoc perlivp pl2pm prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum splain libnetcfg piconv enc2xs xsubpp pod2html zipdetails
+plextractexe = ./c2ph ./config_data ./corelist ./cpan ./h2ph ./h2xs ./json_pp ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./ptar ./ptardiff ./ptargrep ./cpanp-run-perl ./cpanp ./cpan2dist ./shasum ./splain ./libnetcfg ./piconv ./enc2xs ./xsubpp ./pod2html ./zipdetails
all: $(plextract)
@@ -33,6 +33,8 @@
instmodsh: instmodsh.PL ../config.sh
+json_pp: json_pp.PL ../config.sh
+
perlbug: perlbug.PL ../config.sh ../patchlevel.h
perldoc: perldoc.PL ../config.sh
@@ -59,8 +61,6 @@
splain: splain.PL ../config.sh ../lib/diagnostics.pm
-dprofpp: dprofpp.PL ../config.sh
-
libnetcfg: libnetcfg.PL ../config.sh
piconv: piconv.PL ../config.sh
@@ -69,6 +69,10 @@
xsubpp: xsubpp.PL ../config.sh
+zipdetails: zipdetails.PL ../config.sh
+
+pod2html: pod2html.PL ../config.sh ../ext/Pod-Html/bin/pod2html
+
clean:
realclean:
Property changes on: trunk/contrib/perl/utils/Makefile
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Modified: trunk/contrib/perl/utils/Makefile.SH
===================================================================
--- trunk/contrib/perl/utils/Makefile.SH 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/Makefile.SH 2013-12-02 21:27:05 UTC (rev 6440)
@@ -48,9 +48,9 @@
# Files to be built with variable substitution after miniperl is
# available. Dependencies handled manually below (for now).
-pl = c2ph.PL config_data.PL corelist.PL cpan.PL h2ph.PL h2xs.PL instmodsh.PL json_pp.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL prove.PL ptar.PL ptardiff.PL ptargrep.PL cpanp-run-perl.PL cpanp.PL cpan2dist.PL shasum.PL splain.PL dprofpp.PL libnetcfg.PL piconv.PL enc2xs.PL xsubpp.PL
-plextract = c2ph config_data corelist cpan h2ph h2xs instmodsh json_pp perlbug perldoc perlivp pl2pm prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum splain dprofpp libnetcfg piconv enc2xs xsubpp
-plextractexe = ./c2ph ./config_data ./corelist ./cpan ./h2ph ./h2xs ./json_pp ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./ptar ./ptardiff ./ptargrep ./cpanp-run-perl ./cpanp ./cpan2dist ./shasum ./splain ./dprofpp ./libnetcfg ./piconv ./enc2xs ./xsubpp
+pl = c2ph.PL config_data.PL corelist.PL cpan.PL h2ph.PL h2xs.PL instmodsh.PL json_pp.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL prove.PL ptar.PL ptardiff.PL ptargrep.PL cpanp-run-perl.PL cpanp.PL cpan2dist.PL shasum.PL splain.PL libnetcfg.PL piconv.PL enc2xs.PL xsubpp.PL pod2html.PL zipdetails.PL
+plextract = c2ph config_data corelist cpan h2ph h2xs instmodsh json_pp perlbug perldoc perlivp pl2pm prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum splain libnetcfg piconv enc2xs xsubpp pod2html zipdetails
+plextractexe = ./c2ph ./config_data ./corelist ./cpan ./h2ph ./h2xs ./json_pp ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./ptar ./ptardiff ./ptargrep ./cpanp-run-perl ./cpanp ./cpan2dist ./shasum ./splain ./libnetcfg ./piconv ./enc2xs ./xsubpp ./pod2html ./zipdetails
all: $(plextract)
@@ -71,6 +71,8 @@
instmodsh: instmodsh.PL ../config.sh
+json_pp: json_pp.PL ../config.sh
+
perlbug: perlbug.PL ../config.sh ../patchlevel.h
perldoc: perldoc.PL ../config.sh
@@ -97,8 +99,6 @@
splain: splain.PL ../config.sh ../lib/diagnostics.pm
-dprofpp: dprofpp.PL ../config.sh
-
libnetcfg: libnetcfg.PL ../config.sh
piconv: piconv.PL ../config.sh
@@ -107,6 +107,10 @@
xsubpp: xsubpp.PL ../config.sh
+zipdetails: zipdetails.PL ../config.sh
+
+pod2html: pod2html.PL ../config.sh ../ext/Pod-Html/bin/pod2html
+
clean:
realclean:
Property changes on: trunk/contrib/perl/utils/Makefile.SH
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Modified: trunk/contrib/perl/utils/c2ph.PL
===================================================================
--- trunk/contrib/perl/utils/c2ph.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/c2ph.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -278,7 +278,7 @@
=cut
-$RCSID = '$Id: c2ph.PL,v 1.1.1.2 2011-05-18 13:33:26 laffer1 Exp $';
+$RCSID = '$Id: c2ph,v 1.7 95/10/28 10:41:47 tchrist Exp Locker: tchrist $';
use File::Temp;
Property changes on: trunk/contrib/perl/utils/c2ph.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/config_data.PL
===================================================================
--- trunk/contrib/perl/utils/config_data.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/config_data.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/config_data.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/corelist.PL
===================================================================
--- trunk/contrib/perl/utils/corelist.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/corelist.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/corelist.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/cpan.PL
===================================================================
--- trunk/contrib/perl/utils/cpan.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/cpan.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/cpan.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/cpan2dist.PL
===================================================================
--- trunk/contrib/perl/utils/cpan2dist.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/cpan2dist.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/cpan2dist.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/cpanp-run-perl.PL
===================================================================
--- trunk/contrib/perl/utils/cpanp-run-perl.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/cpanp-run-perl.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/cpanp-run-perl.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/cpanp.PL
===================================================================
--- trunk/contrib/perl/utils/cpanp.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/cpanp.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/cpanp.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/dprofpp.PL
===================================================================
--- trunk/contrib/perl/utils/dprofpp.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/dprofpp.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/dprofpp.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
Index: trunk/contrib/perl/utils/enc2xs.PL
===================================================================
--- trunk/contrib/perl/utils/enc2xs.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/enc2xs.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/enc2xs.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Modified: trunk/contrib/perl/utils/h2ph.PL
===================================================================
--- trunk/contrib/perl/utils/h2ph.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/h2ph.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -96,7 +96,7 @@
$t = '';
$tab = 0;
- # $eval_index goes into ``#line'' directives, to help locate syntax errors:
+ # $eval_index goes into '#line' directives, to help locate syntax errors:
$eval_index = 1;
if ($file eq '-') {
@@ -151,24 +151,22 @@
} else {
s/^\s+//;
expr();
+
$new = 1 if $new eq '';
+
+ # Shunt around such directives as '#define FOO FOO':
+ next if $new =~ /^\s*&\Q$name\E\s*\z/;
+
$new = reindent($new);
$args = reindent($args);
- if ($t ne '') {
- $new =~ s/(['\\])/\\$1/g; #']);
+ $new =~ s/(['\\])/\\$1/g; #']);
- if ($opt_h) {
- print OUT $t,"eval \"\\n#line $eval_index $outfile\\n\" . 'sub $name () {",$new,";}' unless defined(\&$name);\n";
- $eval_index++;
- } else {
- print OUT $t,"eval 'sub $name () {",$new,";}' unless defined(\&$name);\n";
- }
- } else {
- # Shunt around such directives as `#define FOO FOO':
- next if " \&$name" eq $new;
-
- print OUT $t,"unless(defined(\&$name)) {\n sub $name () {\t",$new,";}\n}\n";
+ print OUT $t, 'eval ';
+ if ($opt_h) {
+ print OUT "\"\\n#line $eval_index $outfile\\n\" . ";
+ $eval_index++;
}
+ print OUT "'sub $name () {$new;}' unless defined(&$name);\n";
}
} elsif (/^(include|import|include_next)\s*([<\"])(.*)[>\"]/) {
$incl_type = $1;
@@ -660,12 +658,12 @@
if ($opt_r) {
expand_glob($file);
} else {
- print STDERR "Skipping directory `$file'\n";
+ print STDERR "Skipping directory '$file'\n";
}
} elsif ($opt_a) {
return $file;
} else {
- print STDERR "Skipping `$file': not a file or directory\n";
+ print STDERR "Skipping '$file': not a file or directory\n";
}
}
@@ -761,16 +759,8 @@
# non-GCC?) C compilers, but gcc uses additional include directories.
sub inc_dirs
{
- my $from_gcc = `LC_ALL=C $Config{cc} -v 2>&1`;
- if( !( $from_gcc =~ s:^Reading specs from (.*?)/specs\b.*:$1/include:s ) )
- { # gcc-4+ :
- $from_gcc = `LC_ALL=C $Config{cc} -print-search-dirs 2>&1`;
- if ( !($from_gcc =~ s/^install:\s*([^\s]+[^\s\/])([\s\/]*).*$/$1\/include/s) )
- {
- $from_gcc = '';
- };
- };
- length($from_gcc) ? ($from_gcc, $from_gcc . "-fixed", $Config{usrinc}) : ($Config{usrinc});
+ my $from_gcc = `LC_ALL=C $Config{cc} -v -E - < /dev/null 2>&1 | awk '/^#include/, /^End of search list/' | grep '^ '`;
+ length($from_gcc) ? (split(' ', $from_gcc), $Config{usrinc}) : ($Config{usrinc});
}
@@ -853,7 +843,7 @@
my $allsymbols = join " ",
@Config{'ccsymbols', 'cppsymbols', 'cppccsymbols'};
- # Split compiler pre-definitions into `key=value' pairs:
+ # Split compiler pre-definitions into 'key=value' pairs:
while ($allsymbols =~ /([^\s]+)=((\\\s|[^\s])+)/g) {
$define{$1} = $2;
if ($opt_D) {
@@ -930,7 +920,7 @@
=item -h
-Put ``hints'' in the .ph files which will help in locating problems with
+Put 'hints' in the .ph files which will help in locating problems with
I<h2ph>. In those cases when you B<require> a B<.ph> file containing syntax
errors, instead of the cryptic
@@ -949,7 +939,7 @@
=item -Q
-``Quiet'' mode; don't print out the names of the files being converted.
+'Quiet' mode; don't print out the names of the files being converted.
=back
Property changes on: trunk/contrib/perl/utils/h2ph.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
Modified: trunk/contrib/perl/utils/h2xs.PL
===================================================================
--- trunk/contrib/perl/utils/h2xs.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/h2xs.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -498,7 +498,7 @@
use strict;
-my( $H2XS_VERSION ) = ' $Revision: 1.1.1.3 $ ' =~ /\$Revision:\s+([^\s]+)/;
+my( $H2XS_VERSION ) = ' $Revision: 1.23 $ ' =~ /\$Revision:\s+([^\s]+)/;
my $TEMPLATE_VERSION = '0.01';
my @ARGS = @ARGV;
my $compat_version = $];
@@ -789,7 +789,7 @@
}
else {
@paths = (File::Spec->curdir(), $Config{usrinc},
- (split ' ', $Config{locincpth}), '/usr/include');
+ (split / +/, $Config{locincpth} // ""), '/usr/include');
}
foreach my $path_h (@path_h) {
$name ||= $path_h;
@@ -862,6 +862,10 @@
$rest =~ s!/\*.*?(\*/|\n)|//.*!!g; # Remove comments
$rest =~ s/^\s+//;
$rest =~ s/\s+$//;
+ if ($rest eq '') {
+ print("Skip empty $def\n") if $opt_d;
+ next defines;
+ }
# Cannot do: (-1) and ((LHANDLE)3) are OK:
#print("Skip non-wordy $def => $rest\n"),
# next defines if $rest =~ /[^\w\$]/;
@@ -893,7 +897,7 @@
}
else {
# Work from miniperl too - on "normal" systems
- my $SEEK_SET = eval 'use Fcntl qw/SEEK_SET/; SEEK_SET' or 0;
+ my $SEEK_SET = eval 'use Fcntl qw/SEEK_SET/; SEEK_SET' || 0;
seek CH, 0, $SEEK_SET;
my $src = do { local $/; <CH> };
close CH;
@@ -1382,6 +1386,7 @@
warn "Writing $ext$modpname/$modfname.xs\n";
print XS <<"END";
+#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
@@ -2093,8 +2098,8 @@
open EX, ">$testfile" or die "Can't create $ext$modpname/$testfile: $!\n";
print EX <<_END_;
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl $modpname.t'
+# Before 'make install' is performed this script should be runnable with
+# 'make test'. After 'make install' it should work as 'perl $modpname.t'
#########################
Property changes on: trunk/contrib/perl/utils/h2xs.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
Index: trunk/contrib/perl/utils/instmodsh.PL
===================================================================
--- trunk/contrib/perl/utils/instmodsh.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/instmodsh.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/instmodsh.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/json_pp.PL
===================================================================
--- trunk/contrib/perl/utils/json_pp.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/json_pp.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/json_pp.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/utils/libnetcfg.PL
===================================================================
--- trunk/contrib/perl/utils/libnetcfg.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/libnetcfg.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -85,7 +85,7 @@
=head1 SEE ALSO
-L<Net::Config>, L<Net::libnetFAQ>
+L<Net::Config>, L<libnetFAQ>
=head1 AUTHORS
@@ -95,7 +95,7 @@
=cut
-# $Id: libnetcfg.PL,v 1.1.1.1 2009-03-15 19:20:09 ctriv Exp $
+# $Id: Configure,v 1.8 1997/03/04 09:22:32 gbarr Exp $
use strict;
use IO::File;
@@ -218,7 +218,7 @@
print <<"EDQ";
*** ERROR:
- Hostname `$host' does not seem to exist, please enter again
+ Hostname '$host' does not seem to exist, please enter again
or a single space to clear any default
EDQ
@@ -684,9 +684,9 @@
$msg = <<EDQ;
If you specified some default hosts above, it is possible for me to
-do some basic tests when you run `make test'
+do some basic tests when you run 'make test'
-This will cause `make test' to be quite a bit slower and, if your
+This will cause 'make test' to be quite a bit slower and, if your
internet connection is via dialup, will require you to be on-line
unless the hosts are local.
@@ -714,7 +714,7 @@
#---------------------------------------------------------------------------
my $fh = IO::File->new($libnet_cfg_out, "w") or
- die "Cannot create `$libnet_cfg_out': $!";
+ die "Cannot create '$libnet_cfg_out': $!";
print "Writing $libnet_cfg_out\n";
Property changes on: trunk/contrib/perl/utils/libnetcfg.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/utils/perlbug.PL
===================================================================
--- trunk/contrib/perl/utils/perlbug.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/perlbug.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -85,7 +85,6 @@
print OUT <<'!NO!SUBS!';
use warnings;
-no warnings 'once'; # Eventually, the $::opt_ stuff should get cleaned up
use strict;
use Config;
use File::Spec; # keep perlbug Perl 5.005 compatible
@@ -108,58 +107,6 @@
my $Version = "1.39";
-# Changed in 1.06 to skip Mail::Send and Mail::Util if not available.
-# Changed in 1.07 to see more sendmail execs, and added pipe output.
-# Changed in 1.08 to use correct address for sendmail.
-# Changed in 1.09 to close the REP file before calling it up in the editor.
-# Also removed some old comments duplicated elsewhere.
-# Changed in 1.10 to run under VMS without Mail::Send; also fixed
-# temp filename generation.
-# Changed in 1.11 to clean up some text and removed Mail::Send deactivator.
-# Changed in 1.12 to check for editor errors, make save/send distinction
-# clearer and add $ENV{REPLYTO}.
-# Changed in 1.13 to hopefully make it more difficult to accidentally
-# send mail
-# Changed in 1.14 to make the prompts a little more clear on providing
-# helpful information. Also let file read fail gracefully.
-# Changed in 1.15 to add warnings to stop people using perlbug for non-bugs.
-# Also report selected environment variables.
-# Changed in 1.16 to include @INC, and allow user to re-edit if no changes.
-# Changed in 1.17 Win32 support added. GSAR 97-04-12
-# Changed in 1.18 add '-ok' option for reporting build success. CFR 97-06-18
-# Changed in 1.19 '-ok' default not '-v'
-# add local patch information
-# warn on '-ok' if this is an old system; add '-okay'
-# Changed in 1.20 Added patchlevel.h reading and version/config checks
-# Changed in 1.21 Added '-nok' for reporting build failure DFD 98-05-05
-# Changed in 1.22 Heavy reformatting & minor bugfixes HVDS 98-05-10
-# Changed in 1.23 Restore -ok(ay): say 'success'; don't prompt
-# Changed in 1.24 Added '-F<file>' to save report HVDS 98-07-01
-# Changed in 1.25 Warn on failure to open save file. HVDS 98-07-12
-# Changed in 1.26 Don't require -t STDIN for -ok. HVDS 98-07-15
-# Changed in 1.27 Added Mac OS and File::Spec support CNANDOR 99-07-27
-# Changed in 1.28 Additional questions for Perlbugtron RFOLEY 20.03.2000
-# Changed in 1.29 Perlbug(tron): auto(-ok), short prompts RFOLEY 05-05-2000
-# Changed in 1.30 Added warnings on failure to open files MSTEVENS 13-07-2000
-# Changed in 1.31 Add checks on close().Fix my $var unless. TJENNESS 26-07-2000
-# Changed in 1.32 Use File::Spec->tmpdir TJENNESS 20-08-2000
-# Changed in 1.33 Don't require -t STDOUT for -ok.
-# Changed in 1.34 Added Message-Id RFOLEY 18-06-2002
-# Changed in 1.35 Use File::Temp (patch from Solar Designer) NWCLARK 28-02-2004
-# Changed in 1.36 Initial Module::CoreList support Alexandr Ciornii 11-07-2007
-# Changed in 1.37 Killed some string evals, rewrote most prose JESSE 2008-06-08
-# Changed in 1.38 Actually enforce the CoreList check,
-# Record the module the user enters if they do so
-# Refactor prompts to use common code JESSE 2008-06-08
-# Changed in 1.39 Trap mail sending failures (simple ones) so JESSE 2008-06-08
-# users might be able to recover their bug reports
-# Refactor mail sending routines
-# Unify message building code
-# Unify message header building
-# Fix "module" prompting to not squish "category" prompting
-# use warnings; (except 'once' warnings)
-# Unified report fingerprint/change detection code
-# Removed some labeled 'gotos'
#TODO:
# make sure failure (transmission-wise) of Mail::Send is accounted for.
# (This may work now. Unsure of the original author's issue -JESSE 2008-06-08)
@@ -170,7 +117,7 @@
$fh, $me, $body, $andcc, %REP, $ok, $thanks, $progname,
$Is_MSWin32, $Is_Linux, $Is_VMS, $Is_OpenBSD,
$report_about_module, $category, $severity,
-
+ %opt,
);
my $perl_version = $^V ? sprintf("%vd", $^V) : $];
@@ -179,9 +126,9 @@
Init();
-if ($::opt_h) { Help(); exit; }
-if ($::opt_d) { Dump(*STDOUT); exit; }
-if (!-t STDIN && !($ok and not $::opt_n)) {
+if ($opt{h}) { Help(); exit; }
+if ($opt{d}) { Dump(*STDOUT); exit; }
+if (!-t STDIN && !($ok and not $opt{n})) {
paraprint <<"EOF";
Please use $progname interactively. If you want to
include a file, you can use the -f switch.
@@ -190,7 +137,7 @@
}
Query();
-Edit() unless $usefile || ($ok and not $::opt_n);
+Edit() unless $usefile || ($ok and not $opt{n});
NowWhat();
if ($outfile) {
save_message_to_disk($outfile);
@@ -255,7 +202,7 @@
$Is_Linux = lc($^O) eq 'linux';
$Is_OpenBSD = lc($^O) eq 'openbsd';
- if (!getopts("Adhva:s:b:f:F:r:e:SCc:to:n:T")) { Help(); exit; };
+ if (!getopts("Adhva:s:b:f:F:r:e:SCc:to:n:T", \%opt)) { Help(); exit; };
# This comment is needed to notify metaconfig that we are
# using the $perladmin, $cf_by, and $cf_time definitions.
@@ -273,50 +220,50 @@
if (basename ($0) =~ /^perlthanks/i) {
# invoked as perlthanks
- $::opt_T = 1;
- $::opt_C = 1; # don't send a copy to the local admin
+ $opt{T} = 1;
+ $opt{C} = 1; # don't send a copy to the local admin
}
- if ($::opt_T) {
+ if ($opt{T}) {
$thanks = 'thanks';
}
$progname = $thanks ? 'perlthanks' : 'perlbug';
# Target address
- $address = $::opt_a || ($::opt_t ? $testaddress
+ $address = $opt{a} || ($opt{t} ? $testaddress
: $thanks ? $thanksaddress : $bugaddress);
# Users address, used in message and in From and Reply-To headers
- $from = $::opt_r || "";
+ $from = $opt{r} || "";
# Include verbose configuration information
- $verbose = $::opt_v || 0;
+ $verbose = $opt{v} || 0;
# Subject of bug-report message
- $subject = $::opt_s || "";
+ $subject = $opt{s} || "";
# Send a file
- $usefile = ($::opt_f || 0);
+ $usefile = ($opt{f} || 0);
# File to send as report
- $file = $::opt_f || "";
+ $file = $opt{f} || "";
# File to output to
- $outfile = $::opt_F || "";
+ $outfile = $opt{F} || "";
# Body of report
- $body = $::opt_b || "";
+ $body = $opt{b} || "";
# Editor
- $ed = $::opt_e || $ENV{VISUAL} || $ENV{EDITOR} || $ENV{EDIT}
+ $ed = $opt{e} || $ENV{VISUAL} || $ENV{EDITOR} || $ENV{EDIT}
|| ($Is_VMS && "edit/tpu")
|| ($Is_MSWin32 && "notepad")
|| "vi";
# Not OK - provide build failure template by finessing OK report
- if ($::opt_n) {
- if (substr($::opt_n, 0, 2) eq 'ok' ) {
- $::opt_o = substr($::opt_n, 1);
+ if ($opt{n}) {
+ if (substr($opt{n}, 0, 2) eq 'ok' ) {
+ $opt{o} = substr($opt{n}, 1);
} else {
Help();
exit();
@@ -325,10 +272,10 @@
# OK - send "OK" report for build on this system
$ok = '';
- if ($::opt_o) {
- if ($::opt_o eq 'k' or $::opt_o eq 'kay') {
+ if ($opt{o}) {
+ if ($opt{o} eq 'k' or $opt{o} eq 'kay') {
my $age = time - $patchlevel_date;
- if ($::opt_o eq 'k' and $age > 60 * 24 * 60 * 60 ) {
+ if ($opt{o} eq 'k' and $age > 60 * 24 * 60 * 60 ) {
my $date = localtime $patchlevel_date;
print <<"EOF";
"perlbug -ok" and "perlbug -nok" do not report on Perl versions which
@@ -339,14 +286,14 @@
exit();
}
# force these options
- unless ($::opt_n) {
- $::opt_S = 1; # don't prompt for send
- $::opt_b = 1; # we have a body
+ unless ($opt{n}) {
+ $opt{S} = 1; # don't prompt for send
+ $opt{b} = 1; # we have a body
$body = "Perl reported to build OK on this system.\n";
}
- $::opt_C = 1; # don't send a copy to the local admin
- $::opt_s = 1; # we have a subject line
- $subject = ($::opt_n ? 'Not ' : '')
+ $opt{C} = 1; # don't send a copy to the local admin
+ $opt{s} = 1; # we have a subject line
+ $subject = ($opt{n} ? 'Not ' : '')
. "OK: perl $perl_version ${patch_tags}on"
." $::Config{'archname'} $::Config{'osvers'} $subject";
$ok = 'ok';
@@ -361,9 +308,9 @@
# we don't really want it. We'll just take it if we have to.)
#
# This has to be after the $ok stuff above because of the way
- # that $::opt_C is forced.
- $cc = $::opt_C ? "" : (
- $::opt_c || $::Config{'perladmin'}
+ # that $opt{C} is forced.
+ $cc = $opt{C} ? "" : (
+ $opt{c} || $::Config{'perladmin'}
|| $::Config{'cf_email'} || $::Config{'cf_by'}
);
@@ -410,8 +357,8 @@
Please do not use $0 to send test messages, test whether perl
works, or to report bugs in perl modules from CPAN.
-For help using perl, try posting to the Usenet newsgroup
-comp.lang.perl.misc.
+Suggestions for how to find help using Perl can be found at
+http://perldoc.perl.org/perlcommunity.html
EOF
}
}
@@ -449,7 +396,7 @@
}
# Prompt for return address, if needed
- unless ($::opt_r) {
+ unless ($opt{r}) {
# Try and guess return address
my $guess;
@@ -500,7 +447,7 @@
}
# Prompt for administrator address, unless an override was given
- if( !$::opt_C and !$::opt_c ) {
+ if( !$opt{C} and !$opt{c} ) {
my $description = <<EOF;
$0 can send a copy of this report to your local perl
administrator. If the address below is wrong, please correct it,
@@ -523,7 +470,7 @@
# Prompt for editor, if no override is given
editor:
- unless ($::opt_e || $::opt_f || $::opt_b) {
+ unless ($opt{e} || $opt{f} || $opt{b}) {
my $description;
@@ -651,7 +598,7 @@
# Generate report
open(REP,">$filename") or die "Unable to create report file '$filename': $!\n";
my $reptype = !$ok ? ($thanks ? 'thank-you' : 'bug')
- : $::opt_n ? "build failure" : "success";
+ : $opt{n} ? "build failure" : "success";
print REP <<EOF;
This is a $reptype report for perl from $from,
@@ -720,7 +667,7 @@
module=$report_about_module
EFF
}
- if ($::opt_A) {
+ if ($opt{A}) {
print OUT <<EFF;
ack=no
EFF
@@ -819,7 +766,7 @@
return;
}
}
- return if ( $ok and not $::opt_n ) || $body;
+ return if ( $ok and not $opt{n} ) || $body;
# Check that we have a report that has some, eh, report in it.
@@ -850,7 +797,7 @@
sub NowWhat {
# Report is done, prompt for further action
- if( !$::opt_S ) {
+ if( !$opt{S} ) {
while(1) {
my $menu = <<EOF;
@@ -1516,12 +1463,12 @@
I<doc>tored by Gurusamy Sarathy (E<lt>gsar at activestate.comE<gt>),
Tom Christiansen (E<lt>tchrist at perl.comE<gt>), Nathan Torkington
(E<lt>gnat at frii.comE<gt>), Charles F. Randall (E<lt>cfr at pobox.comE<gt>),
-Mike Guy (E<lt>mjtg at cam.a.ukE<gt>), Dominic Dunlop
-(E<lt>domo at computer.orgE<gt>), Hugo van der Sanden (E<lt>hv at crypt.org<gt>),
+Mike Guy (E<lt>mjtg at cam.ac.ukE<gt>), Dominic Dunlop
+(E<lt>domo at computer.orgE<gt>), Hugo van der Sanden (E<lt>hv at crypt.orgE<gt>),
Jarkko Hietaniemi (E<lt>jhi at iki.fiE<gt>), Chris Nandor
(E<lt>pudge at pobox.comE<gt>), Jon Orwant (E<lt>orwant at media.mit.eduE<gt>,
Richard Foley (E<lt>richard.foley at rfi.netE<gt>), and Jesse Vincent
-(E<lt>jesse at bestpractical.com<gt>).
+(E<lt>jesse at bestpractical.comE<gt>).
=head1 SEE ALSO
Property changes on: trunk/contrib/perl/utils/perlbug.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
Index: trunk/contrib/perl/utils/perldoc.PL
===================================================================
--- trunk/contrib/perl/utils/perldoc.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/perldoc.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/perldoc.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Modified: trunk/contrib/perl/utils/perlivp.PL
===================================================================
--- trunk/contrib/perl/utils/perlivp.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/perlivp.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -44,9 +44,8 @@
print << " EOUSAGE";
Usage:
- $0 [-a] [-p] [-v] | [-h]
+ $0 [-p] [-v] | [-h]
- -a Run all tests (default is to skip .ph tests)
-p Print a preface before each test telling what it will test.
-v Verbose mode in which extra information about test results
is printed. Test failures always print out some extra information
@@ -66,8 +65,8 @@
usage() if '?' =~ /\Q$flag/;
usage() if 'h' =~ /\Q$flag/;
usage() if 'H' =~ /\Q$flag/;
- usage("unknown flag: `$flag'") unless 'HhPpVva' =~ /\Q$flag/;
- warn "$0: `$flag' flag already set\n" if $opt{$flag}++;
+ usage("unknown flag: '$flag'") unless 'HhPpVv' =~ /\Q$flag/;
+ warn "$0: '$flag' flag already set\n" if $opt{$flag}++;
}
shift;
}
@@ -81,7 +80,7 @@
!NO!SUBS!
-# We cannot merely check the variable `$^X' in general since on many
+# We cannot merely check the variable '$^X' in general since on many
# Unixes it is the basename rather than the full path to the perl binary.
my $perlpath = '';
if (defined($Config{'perlpath'})) { $perlpath = $Config{'perlpath'}; }
@@ -99,22 +98,24 @@
print OUT <<'!NO!SUBS!';
-print "## Checking Perl binary via variable `\$perlpath' = $perlpath.\n" if $opt{'p'};
+print "## Checking Perl binary via variable '\$perlpath' = $perlpath.\n" if $opt{'p'};
+my $label = 'Executable perl binary';
+
if (-x $perlpath) {
- print "## Perl binary `$perlpath' appears executable.\n" if $opt{'v'};
- print "ok 1\n";
+ print "## Perl binary '$perlpath' appears executable.\n" if $opt{'v'};
+ print "ok 1 $label\n";
$pass__total++;
}
else {
- print "# Perl binary `$perlpath' does not appear executable.\n";
- print "not ok 1\n";
+ print "# Perl binary '$perlpath' does not appear executable.\n";
+ print "not ok 1 $label\n";
$error_total++;
}
$tests_total++;
-print "## Checking Perl version via variable `\$]'.\n" if $opt{'p'};
+print "## Checking Perl version via variable '\$]'.\n" if $opt{'p'};
!NO!SUBS!
@@ -123,20 +124,30 @@
!GROK!THIS!
print OUT <<'!NO!SUBS!';
+
+$label = 'Perl version correct';
if ($ivp_VERSION eq $]) {
- print "## Perl version `$]' appears installed as expected.\n" if $opt{'v'};
- print "ok 2\n";
+ print "## Perl version '$]' appears installed as expected.\n" if $opt{'v'};
+ print "ok 2 $label\n";
$pass__total++;
}
else {
- print "# Perl version `$]' installed, expected $ivp_VERSION.\n";
- print "not ok 2\n";
+ print "# Perl version '$]' installed, expected $ivp_VERSION.\n";
+ print "not ok 2 $label\n";
$error_total++;
}
$tests_total++;
+# We have the right perl and version, so now reset @INC so we ignore
+# PERL5LIB and '.'
+{
+ local $ENV{PERL5LIB};
+ my $perl_V = qx($perlpath -V);
+ $perl_V =~ s{.*\@INC:\n}{}ms;
+ @INC = grep { length && $_ ne '.' } split ' ', $perl_V;
+}
-print "## Checking roots of the Perl library directory tree via variable `\@INC'.\n" if $opt{'p'};
+print "## Checking roots of the Perl library directory tree via variable '\@INC'.\n" if $opt{'p'};
my $INC_total = 0;
my $INC_there = 0;
@@ -143,20 +154,22 @@
foreach (@INC) {
next if $_ eq '.'; # skip -d test here
if (-d $_) {
- print "## Perl \@INC directory `$_' exists.\n" if $opt{'v'};
+ print "## Perl \@INC directory '$_' exists.\n" if $opt{'v'};
$INC_there++;
}
else {
- print "# Perl \@INC directory `$_' does not appear to exist.\n";
+ print "# Perl \@INC directory '$_' does not appear to exist.\n";
}
$INC_total++;
}
+
+$label = '@INC directoreis exist';
if ($INC_total == $INC_there) {
- print "ok 3\n";
+ print "ok 3 $label\n";
$pass__total++;
}
else {
- print "not ok 3\n";
+ print "not ok 3 $label\n";
$error_total++;
}
$tests_total++;
@@ -171,20 +184,21 @@
$needed_total++;
eval "require \"$_\";";
if (!$@) {
- print "## Module `$_' appears to be installed.\n" if $opt{'v'};
+ print "## Module '$_' appears to be installed.\n" if $opt{'v'};
$needed_there++;
}
else {
- print "# Needed module `$_' does not appear to be properly installed.\n";
+ print "# Needed module '$_' does not appear to be properly installed.\n";
}
$@ = undef;
}
+$label = 'Modules needed for rest of perlivp exist';
if ($needed_total == $needed_there) {
- print "ok 4\n";
+ print "ok 4 $label\n";
$pass__total++;
}
else {
- print "not ok 4\n";
+ print "not ok 4 $label\n";
$error_total++;
}
$tests_total++;
@@ -210,6 +224,7 @@
next if $_ eq 'libnet';
next if $_ eq 'Locale/Codes';
next if $_ eq 'podlators';
+ next if $_ eq 'perlfaq';
# test modules
next if $_ eq 'XS/APItest';
next if $_ eq 'XS/Typemap';
@@ -219,11 +234,11 @@
# Compilation failed in require at (eval 1) line 1.
eval " require \"$_.pm\"; ";
if (!$@) {
- print "## Module `$_' appears to be installed.\n" if $opt{'v'};
+ print "## Module '$_' appears to be installed.\n" if $opt{'v'};
$extensions_there++;
}
else {
- print "# Required module `$_' does not appear to be properly installed.\n";
+ print "# Required module '$_' does not appear to be properly installed.\n";
$@ = undef;
}
$extensions_total++;
@@ -238,21 +253,22 @@
$@ = undef;
eval " require \"$unnecessary.pm\"; ";
if ($@) {
- print "## Unnecessary module `$unnecessary' does not appear to be installed.\n" if $opt{'v'};
+ print "## Unnecessary module '$unnecessary' does not appear to be installed.\n" if $opt{'v'};
}
else {
- print "# Unnecessary module `$unnecessary' appears to be installed.\n";
+ print "# Unnecessary module '$unnecessary' appears to be installed.\n";
$extensions_there++;
}
}
$@ = undef;
}
+$label = 'All (and only) expected extensions installed';
if ($extensions_total == $extensions_there) {
- print "ok 5\n";
+ print "ok 5 $label\n";
$pass__total++;
}
else {
- print "not ok 5\n";
+ print "not ok 5 $label\n";
$error_total++;
}
$tests_total++;
@@ -301,73 +317,18 @@
}
@missing = ();
}
+$label = 'Module files correctly installed';
if (($installed_total == $installed_there) &&
($installed_total == $version_check)) {
- print "ok 6\n";
+ print "ok 6 $label\n";
$pass__total++;
}
else {
- print "not ok 6\n";
+ print "not ok 6 $label\n";
$error_total++;
}
$tests_total++;
-
-if ($opt{'a'}) {
-print "## Checking installations of *.h -> *.ph header files.\n" if $opt{'p'};
-my $ph_there = 0;
-my $var = undef;
-my $val = undef;
-my $h_file = undef;
-# Just about "any" C implementation ought to have a stdio.h (even if
-# Config.pm may not list a i_stdio var).
-my @ph_files = qw(stdio.ph);
-# Add the ones that we know that perl thinks are there:
-while (($var, $val) = each %Config) {
- if ($var =~ m/i_(.+)/ && $val eq 'define') {
- $h_file = $1;
- # Some header and symbol names don't match for hysterical raisins.
- $h_file = 'arpa/inet' if $h_file eq 'arpainet';
- $h_file = 'netinet/in' if $h_file eq 'niin';
- $h_file = 'netinet/tcp' if $h_file eq 'netinettcp';
- $h_file = 'sys/resource' if $h_file eq 'sysresrc';
- $h_file = 'sys/select' if $h_file eq 'sysselct';
- $h_file = 'sys/security' if $h_file eq 'syssecrt';
- $h_file = 'rpcsvc/dbm' if $h_file eq 'rpcsvcdbm';
- # This ought to distinguish syslog from sys/syslog.
- # (NB syslog.ph is heavily used for the DBI pre-requisites).
- $h_file =~ s{^sys(\w.+)}{sys/$1} unless $h_file eq 'syslog';
- push(@ph_files, "$h_file.ph");
- }
-}
-#foreach (qw(stdio.ph syslog.ph)) {
-foreach (@ph_files) {
- $@ = undef;
- eval "require \"$_\";";
- if (!$@) {
- print "## Perl header `$_' appears to be installed.\n" if $opt{'v'};
- $ph_there++;
- }
- else {
- print "# Perl header `$_' does not appear to be properly installed.\n";
- }
- $@ = undef;
-}
-
-if (scalar(@ph_files) == $ph_there) {
- print "ok 7\n";
- $pass__total++;
-}
-else {
- print "not ok 7\n";
- $error_total++;
-}
-$tests_total++;
-}
-else {
- print "## Skip checking of *.ph header files.\n" if $opt{'p'};
-}
-
# Final report (rather than feed ousrselves to Test::Harness::runtests()
# we simply format some output on our own to keep things simple and
# easier to "fix" - at least for now.
@@ -389,7 +350,7 @@
=head1 SYNOPSIS
-B<perlivp> [B<-a>] [B<-p>] [B<-v>] [B<-h>]
+B<perlivp> [B<-p>] [B<-v>] [B<-h>]
=head1 DESCRIPTION
@@ -415,11 +376,6 @@
Prints out a brief help message.
-=item B<-a> run all tests
-
-Normally tests for optional features are skipped. With -a all tests
-are executed.
-
=item B<-p> print preface
Gives a description of each test prior to performing it.
@@ -436,22 +392,22 @@
=over 4
-=item * print "# Perl binary `$perlpath' does not appear executable.\n";
+=item * print "# Perl binary '$perlpath' does not appear executable.\n";
Likely to occur for a perl binary that was not properly installed.
Correct by conducting a proper installation.
-=item * print "# Perl version `$]' installed, expected $ivp_VERSION.\n";
+=item * print "# Perl version '$]' installed, expected $ivp_VERSION.\n";
Likely to occur for a perl that was not properly installed.
Correct by conducting a proper installation.
-=item * print "# Perl \@INC directory `$_' does not appear to exist.\n";
+=item * print "# Perl \@INC directory '$_' does not appear to exist.\n";
Likely to occur for a perl library tree that was not properly installed.
Correct by conducting a proper installation.
-=item * print "# Needed module `$_' does not appear to be properly installed.\n";
+=item * print "# Needed module '$_' does not appear to be properly installed.\n";
One of the two modules that is used by perlivp was not present in the
installation. This is a serious error since it adversely affects perlivp's
@@ -458,13 +414,13 @@
ability to function. You may be able to correct this by performing a
proper perl installation.
-=item * print "# Required module `$_' does not appear to be properly installed.\n";
+=item * print "# Required module '$_' does not appear to be properly installed.\n";
An attempt to C<eval "require $module"> failed, even though the list of
extensions indicated that it should succeed. Correct by conducting a proper
installation.
-=item * print "# Unnecessary module `bLuRfle' appears to be installed.\n";
+=item * print "# Unnecessary module 'bLuRfle' appears to be installed.\n";
This test not coming out ok could indicate that you have in fact installed
a bLuRfle.pm module or that the C<eval " require \"$module_name.pm\"; ">
@@ -477,11 +433,6 @@
C<ExtUtils::Installed -E<gt> validate()> over your installation.
Correct by conducting a proper installation.
-=item * print "# Perl header `$_' does not appear to be properly installed.\n";
-
-Correct by running B<h2ph> over your system's C header files. If necessary,
-edit the resulting *.ph files to eliminate perl syntax errors.
-
=back
For further information on how to conduct a proper installation consult the
Property changes on: trunk/contrib/perl/utils/perlivp.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
Index: trunk/contrib/perl/utils/piconv.PL
===================================================================
--- trunk/contrib/perl/utils/piconv.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/piconv.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/piconv.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/pl2pm.PL
===================================================================
--- trunk/contrib/perl/utils/pl2pm.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/pl2pm.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/pl2pm.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Copied: trunk/contrib/perl/utils/pod2html.PL (from rev 6437, vendor/perl/5.18.1/utils/pod2html.PL)
===================================================================
--- trunk/contrib/perl/utils/pod2html.PL (rev 0)
+++ trunk/contrib/perl/utils/pod2html.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,53 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate. Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries. Thus you write
+# $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+my $origdir = cwd;
+chdir dirname($0);
+my $file = basename($0, '.PL');
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{startperl}
+ eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}'
+ if \$running_under_some_shell;
+!GROK!THIS!
+
+use File::Spec;
+
+my $script = File::Spec->catfile(
+ File::Spec->catdir(
+ File::Spec->updir, qw(ext Pod-Html bin),
+ ),
+ 'pod2html',
+);
+
+if (open(IN, $script)) {
+ print OUT <IN>;
+ close IN;
+} else {
+ die "$0: cannot find '$script'\n";
+}
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;
Index: trunk/contrib/perl/utils/prove.PL
===================================================================
--- trunk/contrib/perl/utils/prove.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/prove.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/prove.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
Index: trunk/contrib/perl/utils/ptar.PL
===================================================================
--- trunk/contrib/perl/utils/ptar.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/ptar.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/ptar.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/ptardiff.PL
===================================================================
--- trunk/contrib/perl/utils/ptardiff.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/ptardiff.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/ptardiff.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Index: trunk/contrib/perl/utils/ptargrep.PL
===================================================================
--- trunk/contrib/perl/utils/ptargrep.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/ptargrep.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/ptargrep.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/utils/shasum.PL
===================================================================
--- trunk/contrib/perl/utils/shasum.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/shasum.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/shasum.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
Index: trunk/contrib/perl/utils/splain.PL
===================================================================
--- trunk/contrib/perl/utils/splain.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/splain.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/splain.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.1
\ No newline at end of property
Index: trunk/contrib/perl/utils/xsubpp.PL
===================================================================
--- trunk/contrib/perl/utils/xsubpp.PL 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils/xsubpp.PL 2013-12-02 21:27:05 UTC (rev 6440)
Property changes on: trunk/contrib/perl/utils/xsubpp.PL
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.2
\ No newline at end of property
Copied: trunk/contrib/perl/utils/zipdetails.PL (from rev 6437, vendor/perl/5.18.1/utils/zipdetails.PL)
===================================================================
--- trunk/contrib/perl/utils/zipdetails.PL (rev 0)
+++ trunk/contrib/perl/utils/zipdetails.PL 2013-12-02 21:27:05 UTC (rev 6440)
@@ -0,0 +1,51 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate. Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries. Thus you write
+# $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+my $origdir = cwd;
+chdir dirname($0);
+my $file = basename($0, '.PL');
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{startperl}
+ eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}'
+ if \$running_under_some_shell;
+!GROK!THIS!
+
+use File::Spec;
+
+my $script = File::Spec->catfile(
+ File::Spec->catdir(
+ File::Spec->updir, qw[ cpan IO-Compress bin ]
+ ), "zipdetails");
+
+if (open(IN, $script)) {
+ print OUT <IN>;
+ close IN;
+} else {
+ die "$0: cannot find '$script'\n";
+}
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;
Modified: trunk/contrib/perl/utils.lst
===================================================================
--- trunk/contrib/perl/utils.lst 2013-12-02 21:26:09 UTC (rev 6439)
+++ trunk/contrib/perl/utils.lst 2013-12-02 21:27:05 UTC (rev 6440)
@@ -1,15 +1,13 @@
-ext/Pod-Html/blib/script/pod2html
cpan/Pod-LaTeX/blib/script/pod2latex
cpan/podlators/blib/script/pod2man
cpan/podlators/blib/script/pod2text
-cpan/Pod-Parser/blib/script/pod2usage
-cpan/Pod-Parser/blib/script/podchecker
+cpan/Pod-Usage/blib/script/pod2usage
+cpan/Pod-Checker/blib/script/podchecker
cpan/Pod-Parser/blib/script/podselect
utils/c2ph # link = utils/pstruct
utils/cpan
utils/config_data
utils/corelist
-utils/dprofpp
utils/enc2xs
utils/h2ph
utils/h2xs
@@ -17,10 +15,11 @@
utils/json_pp
utils/libnetcfg
utils/perlbug # link = utils/perlthanks
-utils/perldoc # pod = pod/perldoc.pod
+utils/perldoc
utils/perlivp
utils/piconv
utils/pl2pm
+utils/pod2html
utils/prove
utils/ptar
utils/ptardiff
@@ -31,6 +30,7 @@
utils/shasum
utils/splain
utils/xsubpp
-x2p/a2p # pod = x2p/a2p.pod
+utils/zipdetails
+x2p/a2p
x2p/find2perl
x2p/s2p # link = x2p/psed
Property changes on: trunk/contrib/perl/utils.lst
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.1.3
\ No newline at end of property
More information about the Midnightbsd-cvs
mailing list