The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
.travis.yml 010
Changes 015
MANIFEST 03
META.yml 813
Makefile.PL 1018
inc/Module/Install/Base.pm 11
inc/Module/Install/Can.pm 11
inc/Module/Install/Fetch.pm 11
inc/Module/Install/Makefile.pm 22
inc/Module/Install/Metadata.pm 33
inc/Module/Install/Win32.pm 11
inc/Module/Install/With.pm 082
inc/Module/Install/WriteAll.pm 11
inc/Module/Install.pm 99
lib/Module/AutoInstall.pm 1822
lib/Module/Install/Admin/Bundle.pm 21
lib/Module/Install/Admin/Compiler.pm 11
lib/Module/Install/Admin/Find.pm 11
lib/Module/Install/Admin/Include.pm 33
lib/Module/Install/Admin/Makefile.pm 11
lib/Module/Install/Admin/Manifest.pm 33
lib/Module/Install/Admin/Metadata.pm 22
lib/Module/Install/Admin/ScanDeps.pm 11
lib/Module/Install/Admin/WriteAll.pm 11
lib/Module/Install/Admin.pm 11
lib/Module/Install/AutoInstall.pm 11
lib/Module/Install/Base.pm 11
lib/Module/Install/Bundle.pm 22
lib/Module/Install/Can.pm 22
lib/Module/Install/Compiler.pm 11
lib/Module/Install/DSL.pm 11
lib/Module/Install/Deprecated.pm 11
lib/Module/Install/External.pm 22
lib/Module/Install/FAQ.pod 11
lib/Module/Install/Fetch.pm 11
lib/Module/Install/Include.pm 11
lib/Module/Install/Inline.pm 11
lib/Module/Install/MakeMaker.pm 11
lib/Module/Install/Makefile.pm 22
lib/Module/Install/Metadata.pm 33
lib/Module/Install/PAR.pm 22
lib/Module/Install/Run.pm 11
lib/Module/Install/Scripts.pm 11
lib/Module/Install/Share.pm 11
lib/Module/Install/Win32.pm 11
lib/Module/Install/With.pm 15
lib/Module/Install/WriteAll.pm 11
lib/Module/Install.pm 99
lib/Module/Install.pod 2122
lib/inc/Module/Install/DSL.pm 11
lib/inc/Module/Install.pm 33
t/03_autoinstall.t 22
t/32_module_name.t 068
t/lib/Test.pm 18
54 files changed (This is a version diff) 137343
@@ -0,0 +1,10 @@
+language: perl
+perl:
+  - '5.20'
+  - '5.18'
+  - '5.16'
+  - '5.14'
+  - '5.12'
+  - '5.10'
+  - '5.8'
+
@@ -1,5 +1,20 @@
 Changes for Perl programming language extension Module-Install
 
+1.12 Fri 29 Aug 2014
+  - Revert license behaviour (TSIBLEY)
+  - Documentation also mentioning metacpan.org (LLAP)
+
+1.10 Fri 11 Jul 2014
+  - Minimum perl version is now v5.6.0 (BOWTIE)
+  - Update license tables (BOWTIE)
+  - Prereqs and recommends adjusted (BOWTIE)
+  - Typo fixes (BOWTIE)
+  - Pod fixes (GREGOA)
+  - Fix make upgradedeps work with bundles (JNWHITLEY)
+  - Fix name_from regex to work with recent package syntax (BOWTIE)
+  - Performance enhancements when running Makefile.PL (GFUJI)
+  - Removed use of sub prototypes (BOWTIE)
+
 1.08 Thu 6 Mar 2014
   - Remove LWP::UserAgent from the prereqs (TOKUHIROM)
   - Require a more recent version of Module::ScanDeps (CHORNY)
@@ -1,3 +1,4 @@
+.travis.yml
 Changes
 inc/Module/Install.pm
 inc/Module/Install/Base.pm
@@ -6,6 +7,7 @@ inc/Module/Install/Fetch.pm
 inc/Module/Install/Makefile.pm
 inc/Module/Install/Metadata.pm
 inc/Module/Install/Win32.pm
+inc/Module/Install/With.pm
 inc/Module/Install/WriteAll.pm
 lib/inc/Module/Install.pm
 lib/inc/Module/Install/DSL.pm
@@ -83,6 +85,7 @@ t/28_makemaker_args.t
 t/29_requires_from.t
 t/30_build_subdirs.t
 t/31_add_metadata.t
+t/32_module_name.t
 t/lib/Test.pm
 t/recursive/test.t
 xt/licenses.t
@@ -3,15 +3,15 @@ abstract: 'Standalone, extensible Perl module installer'
 author:
   - 'Adam Kennedy <adamk@cpan.org>'
 build_requires:
-  ExtUtils::MakeMaker: 6.36
+  ExtUtils::MakeMaker: 6.59
   Test::Harness: '3.13'
   Test::More: '0.86'
 configure_requires:
-  ExtUtils::MakeMaker: 6.36
+  ExtUtils::MakeMaker: 6.59
   YAML::Tiny: '1.33'
 distribution_type: module
 dynamic_config: 0
-generated_by: 'Module::Install version 1.08'
+generated_by: 'Module::Install version 1.12'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -22,23 +22,28 @@ no_index:
     - inc
     - t
     - xt
+recommends:
+  Archive::Zip: '1.37'
+  File::HomeDir: '1'
+  JSON: '2.9'
+  LWP::Simple: '6.00'
+  LWP::UserAgent: '6.05'
+  PAR::Dist: '0.29'
 requires:
-  Archive::Tar: '1.44'
   Devel::PPPort: '3.16'
   ExtUtils::Install: '1.52'
   ExtUtils::MakeMaker: '6.59'
   ExtUtils::ParseXS: '2.19'
+  File::Path: 0
   File::Remove: '1.42'
   File::Spec: '3.28'
-  JSON: '2.14'
   Module::Build: '0.29'
   Module::CoreList: '2.17'
   Module::ScanDeps: '1.09'
-  PAR::Dist: '0.29'
   Parse::CPAN::Meta: '1.4413'
   YAML::Tiny: '1.38'
-  perl: '5.005'
+  perl: 5.6.0
 resources:
   license: http://dev.perl.org/licenses/
   repository: https://github.com/Perl-Toolchain-Gang/Module-Install.git
-version: '1.08'
+version: '1.12'
@@ -18,25 +18,33 @@ use inc::Module::Install;
 
 name          'Module-Install';
 author        'Adam Kennedy <adamk@cpan.org>';
-perl_version  '5.005';
+perl_version  '5.006';
 all_from      'lib/Module/Install.pm';
-requires      'Parse::CPAN::Meta'   => '1.4413';
-requires      'File::Spec'          => '3.28';
+
 requires      'Devel::PPPort'       => '3.16';
-requires      'File::Remove'        => '1.42';
-requires      'YAML::Tiny'          => '1.38';
-requires      'JSON'                => '2.14';
-requires      'Module::ScanDeps'    => '1.09'; #detects prereqs better
-requires      'Module::CoreList'    => '2.17';
-requires      'PAR::Dist'           => '0.29';
-requires      'Archive::Tar'        => '1.44';
 requires      'ExtUtils::Install'   => '1.52';
 requires      'ExtUtils::MakeMaker' => '6.59';
 requires      'ExtUtils::ParseXS'   => '2.19';
+requires      'File::Path'          => 0; #needs version
+requires      'File::Remove'        => '1.42';
+requires      'File::Spec'          => '3.28';
 requires      'Module::Build'       => '0.29';
+requires      'Module::CoreList'    => '2.17';
+requires      'Module::ScanDeps'    => '1.09'; #detects prereqs better
+requires      'Parse::CPAN::Meta'   => '1.4413';
+requires      'Win32::UTCFileTime'  => '1.56' if win32;
+requires      'YAML::Tiny'          => '1.38';
+
 test_requires 'Test::Harness'       => '3.13';
 test_requires 'Test::More'          => '0.86';
 
+recommends    'Archive::Zip'        => '1.37';
+recommends    'File::HomeDir'       => '1';
+recommends    'JSON'                => '2.9';
+recommends    'LWP::Simple'         => '6.00';
+recommends    'LWP::UserAgent'      => '6.05';
+recommends    'PAR::Dist'           => '0.29';
+ 
 # Remove some extra test files
 clean_files( qw{ t/Foo } );
 
@@ -4,7 +4,7 @@ package Module::Install::Base;
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 }
 
 # Suspend handler for "redefined" warnings
@@ -8,7 +8,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -8,7 +8,7 @@ use Fcntl qw/:flock :seek/;
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -133,7 +133,7 @@ sub makemaker_args {
 	return $args;
 }
 
-# For mm args that take multiple space-seperated args,
+# For mm args that take multiple space-separated args,
 # append an argument to the current list.
 sub makemaker_append {
 	my $self = shift;
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -347,7 +347,7 @@ sub name_from {
 		^ \s*
 		package \s*
 		([\w:]+)
-		\s* ;
+		[\s|;]*
 		/ixms
 	) {
 		my ($name, $module_name) = ($1, $1);
@@ -705,7 +705,7 @@ sub _write_mymeta_data {
 	my @yaml = Parse::CPAN::Meta::LoadFile('META.yml');
 	my $meta = $yaml[0];
 
-	# Overwrite the non-configure dependency hashs
+	# Overwrite the non-configure dependency hashes
 	delete $meta->{requires};
 	delete $meta->{build_requires};
 	delete $meta->{recommends};
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -0,0 +1,82 @@
+#line 1
+package Module::Install::With;
+
+# See POD at end for docs
+
+use strict;
+use Module::Install::Base ();
+
+use vars qw{$VERSION @ISA $ISCORE};
+BEGIN {
+	$VERSION = '1.12';
+	@ISA     = 'Module::Install::Base';
+	$ISCORE  = 1;
+}
+
+#line 21
+
+#####################################################################
+# Installer Target
+
+# Are we targeting ExtUtils::MakeMaker (running as Makefile.PL)
+sub eumm {
+	!! ($0 =~ /Makefile.PL$/i);
+}
+
+# You should not be using this, but we'll keep the hook anyways
+sub mb {
+	!! ($0 =~ /Build.PL$/i);
+}
+
+
+
+
+
+#####################################################################
+# Testing and Configuration Contexts
+
+#line 53
+
+sub interactive {
+	# Treat things interactively ONLY based on input
+	!! (-t STDIN and ! automated_testing());
+}
+
+#line 71
+
+sub automated_testing {
+	!! $ENV{AUTOMATED_TESTING};
+}
+
+#line 90
+
+sub release_testing {
+	!! $ENV{RELEASE_TESTING};
+}
+
+sub author_context {
+	!! $Module::Install::AUTHOR;
+}
+
+
+
+
+
+#####################################################################
+# Operating System Convenience
+
+#line 118
+
+sub win32 {
+	!! ($^O eq 'MSWin32');
+}
+
+#line 135
+
+sub winlike {
+	!! ($^O eq 'MSWin32' or $^O eq 'cygwin');
+}
+
+1;
+
+#line 163
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 	$ISCORE  = 1;
 }
@@ -17,7 +17,7 @@ package Module::Install;
 #     3. The ./inc/ version of Module::Install loads
 # }
 
-use 5.005;
+use 5.006;
 use strict 'vars';
 use Cwd        ();
 use File::Find ();
@@ -31,7 +31,7 @@ BEGIN {
 	# This is not enforced yet, but will be some time in the next few
 	# releases once we can make sure it won't clash with custom
 	# Module::Install extensions.
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 
 	# Storage for the pseudo-singleton
 	$MAIN    = undef;
@@ -156,10 +156,10 @@ END_DIE
 sub autoload {
 	my $self = shift;
 	my $who  = $self->_caller;
-	my $cwd  = Cwd::cwd();
+	my $cwd  = Cwd::getcwd();
 	my $sym  = "${who}::AUTOLOAD";
 	$sym->{$cwd} = sub {
-		my $pwd = Cwd::cwd();
+		my $pwd = Cwd::getcwd();
 		if ( my $code = $sym->{$pwd} ) {
 			# Delegate back to parent dirs
 			goto &$code unless $cwd eq $pwd;
@@ -239,7 +239,7 @@ sub new {
 
 	# ignore the prefix on extension modules built from top level.
 	my $base_path = Cwd::abs_path($FindBin::Bin);
-	unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) {
+	unless ( Cwd::abs_path(Cwd::getcwd()) eq $base_path ) {
 		delete $args{prefix};
 	}
 	return $args{_self} if $args{_self};
@@ -338,7 +338,7 @@ sub find_extensions {
 		if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
 			my $content = Module::Install::_read($subpath . '.pm');
 			my $in_pod  = 0;
-			foreach ( split //, $content ) {
+			foreach ( split /\n/, $content ) {
 				$in_pod = 1 if /^=\w/;
 				$in_pod = 0 if /^=cut/;
 				next if ($in_pod || /^=cut/);  # skip pod text
@@ -434,7 +434,7 @@ END_OLD
 
 # _version is for processing module versions (eg, 1.03_05) not
 # Perl versions (eg, 5.8.1).
-sub _version ($) {
+sub _version {
 	my $s = shift || 0;
 	my $d =()= $s =~ /(\.)/g;
 	if ( $d >= 2 ) {
@@ -450,12 +450,12 @@ sub _version ($) {
 	return $l + 0;
 }
 
-sub _cmp ($$) {
+sub _cmp {
 	_version($_[1]) <=> _version($_[2]);
 }
 
 # Cloned from Params::Util::_CLASS
-sub _CLASS ($) {
+sub _CLASS {
 	(
 		defined $_[0]
 		and
@@ -7,7 +7,7 @@ use ExtUtils::MakeMaker ();
 
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 }
 
 # special map on pre-defined feature sets
@@ -114,7 +114,7 @@ sub import {
     print "*** $class version " . $class->VERSION . "\n";
     print "*** Checking for Perl dependencies...\n";
 
-    my $cwd = Cwd::cwd();
+    my $cwd = Cwd::getcwd();
 
     $Config = [];
 
@@ -165,7 +165,7 @@ sub import {
         $modules = [ %{$modules} ] if UNIVERSAL::isa( $modules, 'HASH' );
 
         unshift @$modules, -default => &{ shift(@$modules) }
-          if ( ref( $modules->[0] ) eq 'CODE' );    # XXX: bugward combatability
+          if ( ref( $modules->[0] ) eq 'CODE' );    # XXX: bugward compatibility
 
         while ( my ( $mod, $arg ) = splice( @$modules, 0, 2 ) ) {
             if ( $mod =~ m/^-(\w+)$/ ) {
@@ -344,22 +344,26 @@ sub install {
     my $i;    # used below to strip leading '-' from config keys
     my @config = ( map { s/^-// if ++$i; $_ } @{ +shift } );
 
-    my ( @modules, @installed );
-    while ( my ( $pkg, $ver ) = splice( @_, 0, 2 ) ) {
+	my ( @modules, @installed, @modules_to_upgrade );
+	while (my ($pkg, $ver) = splice(@_, 0, 2)) {
 
-        # grep out those already installed
-        if ( _version_cmp( _version_of($pkg), $ver ) >= 0 ) {
-            push @installed, $pkg;
-        }
-        else {
-            push @modules, $pkg, $ver;
-        }
-    }
+		# grep out those already installed
+		if (_version_cmp(_version_of($pkg), $ver) >= 0) {
+			push @installed, $pkg;
+			if ($UpgradeDeps) {
+				push @modules_to_upgrade, $pkg, $ver;
+			}
+		}
+		else {
+			push @modules, $pkg, $ver;
+		}
+	}
 
-    if ($UpgradeDeps) {
-        push @modules, @installed;
-        @installed = ();
-    }
+	if ($UpgradeDeps) {
+		push @modules, @modules_to_upgrade;
+		@installed          = ();
+		@modules_to_upgrade = ();
+	}
 
     return @installed unless @modules;  # nothing to do
     return @installed if _check_lock(); # defer to the CPAN shell
@@ -610,7 +614,7 @@ sub _under_cpan {
     require Cwd;
     require File::Spec;
 
-    my $cwd  = File::Spec->canonpath( Cwd::cwd() );
+    my $cwd  = File::Spec->canonpath( Cwd::getcwd() );
     my $cpan = File::Spec->canonpath( $CPAN::Config->{cpan_home} );
 
     return ( index( $cwd, $cpan ) > -1 );
@@ -2,11 +2,10 @@ package Module::Install::Admin::Bundle;
 
 use strict;
 use Module::Install::Base;
-use Module::CoreList;
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 }
 
@@ -7,7 +7,7 @@ use Devel::PPPort ();
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 }
 
@@ -5,7 +5,7 @@ use File::Find ();
 use Module::Install::Base ();
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA = qw(Module::Install::Base);
 }
 
@@ -5,7 +5,7 @@ use Module::Install::Base;
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 }
 
@@ -59,7 +59,7 @@ sub auto_include_deps {
 
 =head1 NAME
 
-Module::Install::Admin::Include
+Module::Install::Admin::Include - include methods for Module::Install
 
 =head2 auto_include_dependent_dists
 
@@ -149,7 +149,7 @@ sub _pkg_to_dist {
 =for private _dist_to_mods $distname
 
 Takes the output of CPAN::Module->cpan_file and return all the modules
-that CPAN.pm knows are in that dist. There's probably a beter way using CPANPLUS
+that CPAN.pm knows are in that dist. There's probably a better way using CPANPLUS
 
 =cut
 
@@ -6,7 +6,7 @@ use ExtUtils::MakeMaker ();
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 }
 
@@ -5,11 +5,11 @@ use Module::Install::Base;
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 }
 
-use Cwd;
+use Cwd ();
 use File::Spec;
 
 # XXX I really want this method in Module::Install::Admin::Makefile
@@ -93,7 +93,7 @@ sub _read_manifest {
 	my $manifest_path = '';
 	my $relative_path = '';
 	my @relative_dirs = ();
-	my $cwd = Cwd::cwd();
+	my $cwd = Cwd::getcwd();
 	my @cwd_dirs = File::Spec->splitdir($cwd);
 	while ( @cwd_dirs ) {
 		last unless -f File::Spec->catfile(@cwd_dirs, 'Makefile.PL');
@@ -6,7 +6,7 @@ use Module::Install::Base;
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 }
 
@@ -60,7 +60,7 @@ sub dump_meta {
 	delete $val->{sign};
 
 	# Dependencies MUST be assumed to be dynamic unless indicated
-	# otherwise, otherwise a negligant author who accidentally forgets
+	# otherwise, otherwise a negligent author who accidentally forgets
 	# to say which will release modules that break on some platforms.
 	unless ( defined $val->{dynamic_config} ) {
 		$val->{dynamic_config} = 1;
@@ -4,7 +4,7 @@ use strict;
 use Module::Install::Base ();
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA = qw(Module::Install::Base);
 }
 
@@ -5,7 +5,7 @@ use Module::Install::Base;
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 }
 
@@ -6,7 +6,7 @@ use inc::Module::Install ();
 
 use vars qw{$VERSION @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install';
 }
 
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -3,7 +3,7 @@ package Module::Install::Base;
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 }
 
 # Suspend handler for "redefined" warnings
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -137,7 +137,7 @@ benefits:
 
 Bundling differs from auto-installation in that when it comes time to
 install, a bundled distribution will be installed based on the distribution
-bundled with your distribution, whereas with auto-installation the distibution
+bundled with your distribution, whereas with auto-installation the distribution
 to be installed will be acquired from CPAN and then installed.
 
 =head1 METHODS
@@ -7,7 +7,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -212,7 +212,7 @@ Currently, the use of a C<can_foo> command in a single problem domain
 functionality from different problem domains (for example C<can_run>).
 
 This module should ultimately be broken up, and the individual
-functions redestributed to different domain-specific extensions.
+functions redistributed to different domain-specific extensions.
 
 =head1 AUTHORS
 
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -3,7 +3,7 @@ package Module::Install::DSL;
 use strict;
 use vars qw{$VERSION $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	$ISCORE  = 1;
 	*inc::Module::Install::DSL::VERSION = *VERSION;
 	@inc::Module::Install::DSL::ISA     = __PACKAGE__;
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -7,7 +7,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION $ISCORE @ISA};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	$ISCORE  = 1;
 	@ISA     = qw{Module::Install::Base};
 }
@@ -124,7 +124,7 @@ It does not take any params, and aborts the F<Makefile.PL> execution
 in a way that an automated installation or testing system will interpret
 as a C<NA> ("not applicable to this platform") result.
 
-This may be be changed to an alternative abort result at a later time.
+This may be changed to an alternative abort result at a later time.
 
 Returns true as a convenience.
 
@@ -34,7 +34,7 @@ write better, but also a tool to encourage you to help others.
 
 Not at all, B<using C<auto_install()> is just fine>. While it indeed
 behaved erratically in older L<Module::Install> versions, there have
-been no reported issues since mid-2009. As far as compatbility with
+been no reported issues since mid-2009. As far as compatibility with
 various CPAN clients: several rather large projects on CPAN (including
 L<Catalyst> and L<DBIx::Class>), are using C<auto_install> without any
 issues reported by their substantial userbases.
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -7,7 +7,7 @@ use Fcntl qw/:flock :seek/;
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -132,7 +132,7 @@ sub makemaker_args {
 	return $args;
 }
 
-# For mm args that take multiple space-seperated args,
+# For mm args that take multiple space-separated args,
 # append an argument to the current list.
 sub makemaker_append {
 	my $self = shift;
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -346,7 +346,7 @@ sub name_from {
 		^ \s*
 		package \s*
 		([\w:]+)
-		\s* ;
+		[\s|;]*
 		/ixms
 	) {
 		my ($name, $module_name) = ($1, $1);
@@ -704,7 +704,7 @@ sub _write_mymeta_data {
 	my @yaml = Parse::CPAN::Meta::LoadFile('META.yml');
 	my $meta = $yaml[0];
 
-	# Overwrite the non-configure dependency hashs
+	# Overwrite the non-configure dependency hashes
 	delete $meta->{requires};
 	delete $meta->{build_requires};
 	delete $meta->{recommends};
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -246,7 +246,7 @@ sub make_par {
     my ($self, $file) = @_;
     unlink $file if -f $file;
 
-    unless ( eval { require PAR::Dist; PAR::Dist->VERSION >= 0.03 } ) {
+    unless ( eval { require PAR::Dist; PAR::Dist->VERSION(0.03) } ) {
         warn "Please install PAR::Dist 0.03 or above first.";
         return;
     }
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -7,7 +7,7 @@ use ExtUtils::Manifest ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -7,14 +7,18 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
 
+=pod
 
+=head1 NAME
 
+Module::Install::With - find environnement for Module::Install
 
+=cut
 
 #####################################################################
 # Installer Target
@@ -5,7 +5,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 	$ISCORE  = 1;
 }
@@ -16,7 +16,7 @@ package Module::Install;
 #     3. The ./inc/ version of Module::Install loads
 # }
 
-use 5.005;
+use 5.006;
 use strict 'vars';
 use Cwd        ();
 use File::Find ();
@@ -30,7 +30,7 @@ BEGIN {
 	# This is not enforced yet, but will be some time in the next few
 	# releases once we can make sure it won't clash with custom
 	# Module::Install extensions.
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 
 	# Storage for the pseudo-singleton
 	$MAIN    = undef;
@@ -155,10 +155,10 @@ END_DIE
 sub autoload {
 	my $self = shift;
 	my $who  = $self->_caller;
-	my $cwd  = Cwd::cwd();
+	my $cwd  = Cwd::getcwd();
 	my $sym  = "${who}::AUTOLOAD";
 	$sym->{$cwd} = sub {
-		my $pwd = Cwd::cwd();
+		my $pwd = Cwd::getcwd();
 		if ( my $code = $sym->{$pwd} ) {
 			# Delegate back to parent dirs
 			goto &$code unless $cwd eq $pwd;
@@ -238,7 +238,7 @@ sub new {
 
 	# ignore the prefix on extension modules built from top level.
 	my $base_path = Cwd::abs_path($FindBin::Bin);
-	unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) {
+	unless ( Cwd::abs_path(Cwd::getcwd()) eq $base_path ) {
 		delete $args{prefix};
 	}
 	return $args{_self} if $args{_self};
@@ -337,7 +337,7 @@ sub find_extensions {
 		if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
 			my $content = Module::Install::_read($subpath . '.pm');
 			my $in_pod  = 0;
-			foreach ( split //, $content ) {
+			foreach ( split /\n/, $content ) {
 				$in_pod = 1 if /^=\w/;
 				$in_pod = 0 if /^=cut/;
 				next if ($in_pod || /^=cut/);  # skip pod text
@@ -433,7 +433,7 @@ END_OLD
 
 # _version is for processing module versions (eg, 1.03_05) not
 # Perl versions (eg, 5.8.1).
-sub _version ($) {
+sub _version {
 	my $s = shift || 0;
 	my $d =()= $s =~ /(\.)/g;
 	if ( $d >= 2 ) {
@@ -449,12 +449,12 @@ sub _version ($) {
 	return $l + 0;
 }
 
-sub _cmp ($$) {
+sub _cmp {
 	_version($_[1]) <=> _version($_[2]);
 }
 
 # Cloned from Params::Util::_CLASS
-sub _CLASS ($) {
+sub _CLASS {
 	(
 		defined $_[0]
 		and
@@ -9,18 +9,18 @@ Module::Install - Standalone, extensible Perl module installer
 In your F<Makefile.PL>: (Recommended Usage)
 
   use inc::Module::Install;
-  
+
   # Define metadata
   name           'Your-Module';
   all_from       'lib/Your/Module.pm';
-  
+
   # Specific dependencies
   requires       'File::Spec'  => '0.80';
   test_requires  'Test::More'  => '0.42';
   recommends     'Text::CSV_XS'=> '0.50';
   no_index       'directory'   => 'demos';
   install_script 'myscript';
-  
+
   WriteAll;
 
 Quickly upgrade a legacy L<ExtUtil::MakeMaker> installer:
@@ -60,7 +60,7 @@ L<ExtUtils::MakeMaker> and L<Module::Build>.
 
 These have accumulated B<greatly> varying feature and bug profiles over
 the years, and it is now very difficult to write an installer that will
-work properly using only the installed versions of these modules, 
+work properly using only the installed versions of these modules,
 
 For example, the L<CPAN.pm> version shipped with Perl 5.005 is now 5+
 years old and considered highly buggy, yet it still exists on quite a
@@ -279,7 +279,7 @@ and use this distribution, you must first install these modules first">.
 
 Note that the dependency is on a B<module> and not a distribution. This
 is to ensure that your dependency stays correct, even if the module is
-moved or merged into a different distribtion, as is occasionally the
+moved or merged into a different distribution, as is occasionally the
 case.
 
 A dependency on version zero indicates B<any> version of module is
@@ -328,7 +328,7 @@ The C<configure_requires> command creates an entry in the special
 configure_requires: key in the distribution's F<META.yml> file.
 
 Although most of F<META.yml> is considered advisory only, a L<CPAN>
-client will treat the contents of configure_requires: as authorative,
+client will treat the contents of configure_requires: as authoritive,
 and install the listed modules B<before> it executes the F<Makefile.PL>
 (from which it then determines the other dependencies).
 
@@ -375,8 +375,8 @@ the installation just by doing the following.
 
   > scriptname
   Running scriptname 0.01...
-  
-  > 
+
+  >
 
 By convention, scripts should be placed in a /script directory within your
 distribution. To support less typing, if a script is located in the script
@@ -391,18 +391,18 @@ directory, you need refer to it by name only.
   no_index directory => 'examples';
   no_index package   => 'DB';
 
-Quite often a distrubition will provide example scripts or testing
+Quite often a distribition will provide example scripts or testing
 modules (.pm files) as well as the actual library modules.
 
 In almost all situations, you do B<not> want these indexed in the CPAN
-index, the master Perl packages list, or displayed on the
-L<http://search.cpan.org/> website, you just want them along for the
+index, the master Perl packages list, or displayed on L<https://metacpan.org/>
+or L<http://search.cpan.org/> websites, you just want them along for the
 ride.
 
 The C<no_index> command is used to indicate directories or files where
 there might be non-library .pm files or other files that the CPAN
-indexer and websites such as L<http://search.cpan.org/> should
-explicitly ignore.
+indexer and websites such as L<https://metacpan.org/>
+or L<http://search.cpan.org/> should explicitly ignore.
 
 The most common situation is to ignore example or demo directories,
 but a variety of different situations may require a C<no_index> entry.
@@ -418,8 +418,9 @@ The F<inc>, F<t> and F<share> (if C<install_share> is used) directories
 are automatically C<no_index>'ed for you if found and do not require
 an explicit command.
 
-To summarize, if you can see it on L<http://search.cpan.org/> and you
-shouldn't be able to, you need a C<no_index> entry to remove it.
+To summarize, if you can see it on L<https://metacpan.org/>
+or L<http://search.cpan.org/> and you shouldn't be able to, you need
+a C<no_index> entry to remove it.
 
 =head2 installdirs, install_as_*
 
@@ -688,7 +689,7 @@ L<Method::Alias> is a trivially-small utility module, with almost the
 smallest possible F<Makefile.PL>.
 
   use inc::Module::Install;
-  
+
   name          'Method-Alias';
   all_from      'lib/Method/Alias.pm';
   test_requires 'Test::More' => '0.42';
@@ -699,22 +700,22 @@ L<File::HomeDir> locates your home directory on any platform. It needs
 an installer that can handle different dependencies on different platforms.
 
   use inc::Module::Install;
-  
+
   name          'File-HomeDir';
   all_from      'lib/File/HomeDir.pm';
   requires      'File::Spec' => '0.80';
   test_requires 'Test::More' => '0.47';
-  
+
   if ( $MacPerl::Version ) {
       # Needed on legacy Mac OS 9
       requires 'Mac::Files' => 0;
   }
-  
+
   if ( $^O eq 'MXWin32' ) {
       # Needed on Windows platforms
       requires 'Win32::TieRegistry' => 0;
   }
-  
+
   WriteAll;
 
 =head1 TO DO
@@ -730,7 +731,7 @@ Go over POD docs in detail.
 Test recursive Makefile directories
 
 The test suite needs a great deal more test scripts.
-    
+
 Dependencies on shared libraries (libxml/libxml.dll etc) and binary files
 so that debian/Win32/etc autopackaging applications can create the
 appropriate package-level dependencies there.
@@ -18,7 +18,7 @@ BEGIN {
 	# version an author currently has installed.
 	# This allows it to implement any back-compatibility features
 	# it may want or need to.
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 }
 
 if ( -d './inc' ) {
@@ -18,7 +18,7 @@ BEGIN {
 	# version an author currently has installed.
 	# This allows it to implement any back-compatibility features
 	# it may want or need to.
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 }
 
 if ( -d './inc' ) {
@@ -127,9 +127,9 @@ sub _require_myconfig_or_config {
 }
 
 # adapted from CPAN::HandleConfig
-sub _home () {
+sub _home {
 	my $home;
-	if (eval "require File:HomeDir; 1") {
+	if (eval {require File::HomeDir; 1}) {
 		$home = File::HomeDir->can('my_dot_config')
 			? File::HomeDir->my_dot_config
 			: File::HomeDir->my_data;
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 use strict;
 BEGIN {
@@ -22,7 +22,7 @@ my @prompts = qw/y n n y y/;
 
 use ExtUtils::MakeMaker;
 sub ExtUtils::MakeMaker::WriteMakefile { $mm_args = {@_} }
-sub ExtUtils::MakeMaker::prompt ($;$) { return 'n' }
+sub ExtUtils::MakeMaker::prompt { return 'n' }
 
 # tiehandle trick to intercept STDOUT.
 sub PRINT     { my $self = shift; $$self .= join '', @_; }
@@ -0,0 +1,68 @@
+#!perl
+
+use strict;
+
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+use Test::More tests => 8;
+
+my @package_name = (
+	'package Foo::Bar;',
+	'package Foo::Bar 1.23;',
+	'package Foo::Bar { ... }',
+	'package Foo::Bar 1.23 { ... }',
+);
+
+foreach (@package_name) {
+	if (
+		$_ =~ m/
+		^ \s*
+		package \s*
+		([\w:]+)
+		[\s|;]*
+		/ixms
+		)
+	{
+		my ($name, $module_name) = ($1, $1);
+		$name =~ s{::}{-}g;
+		is($module_name, 'Foo::Bar', "found module_name Foo::Bar in $_");
+		is($name,        'Foo-Bar',  "found name Foo-Bar in $_");
+	}
+}
+
+
+__END__
+
+Perl 5.12 introduced:
+
+	package Foo::Bar 1.23;
+	...;
+
+Perl 5.14 introduced:
+
+	package Foo::Bar { ... }
+
+and they can be combined as:
+
+	package Foo::Bar 1.23 { ... }
+
+The name_from regex doesn't support any of the above. It expects the package name to be followed by optional whitespace then a semicolon.
+
+###
+
+approx line 342 in package Module::Install::Metadata::name_from;
+
+
+
+
+
+
+
+
+
+
+
+
@@ -9,7 +9,7 @@ use Config;
 
 use vars qw{$VERSION @ISA @EXPORT $DIST};
 BEGIN {
-	$VERSION = '1.08';
+	$VERSION = '1.12';
 	@ISA     = 'Exporter';
 	@EXPORT  = qw{
 		create_dist
@@ -189,10 +189,17 @@ sub run_makefile_pl {
 sub kill_dist {
 	my $dir = dir();
 	return 1 unless -d $dir;
+	windows_delay();
 	File::Remove::remove( \1, $dir );
+	windows_delay();
 	return -d $dir ? 0 : 1;
 }
 
+sub windows_delay {
+	return if $^O ne 'MSWin32';
+	select undef, undef, undef, 0.1;
+}
+
 sub supports_capture {
 	# stolen from ExtUtils::MakeMaker's test
 	use ExtUtils::MM;