This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Refactor ExtUtils::Embed to work with miniperl.
authorNicholas Clark <nick@ccl4.org>
Sun, 7 Jul 2013 13:12:42 +0000 (15:12 +0200)
committerNicholas Clark <nick@ccl4.org>
Tue, 9 Jul 2013 05:54:26 +0000 (07:54 +0200)
Remove the use of FileHandle, which relies on IO, and XS module.
Only load Getopt::Std if it is needed (in xsinit()), to avoid needing to add
Getopt::Std to lib/buildcustomize.pl
Require File::Spec instead of using it, as it exports nothing, so there is no
benefit to using it (but it costs a BEGIN block).

lib/ExtUtils/Embed.pm

index 9710630..758e241 100644 (file)
@@ -2,10 +2,8 @@ require 5.002;
 
 package ExtUtils::Embed;
 require Exporter;
-require FileHandle;
 use Config;
-use Getopt::Std;
-use File::Spec;
+require File::Spec;
 
 #Only when we need them
 #require ExtUtils::MakeMaker;
@@ -18,7 +16,7 @@ use vars qw(@ISA @EXPORT $VERSION
 use strict;
 
 # This is not a dual-life module, so no need for development version numbers
-$VERSION = '1.30';
+$VERSION = '1.31';
 
 @ISA = qw(Exporter);
 @EXPORT = qw(&xsinit &ldopts 
@@ -54,7 +52,8 @@ sub xsinit {
        @mods = @$mods if $mods;
     }
     else {
-       getopts('o:s:');
+       require Getopt::Std;
+       Getopt::Std::getopts('o:s:');
        $file = $opt_o if defined $opt_o;
        $std  = $opt_s  if defined $opt_s;
        @mods = @ARGV;
@@ -65,7 +64,8 @@ sub xsinit {
        $fh = \*STDOUT;
     }
     else {
-       $fh = new FileHandle "> $file";
+        open $fh, '>', $file
+            or die "Can't open '$file': $!";
     }
 
     push(@mods, static_ext()) if defined $std;