+# Do not remove the following line; MakeMaker relies on it to identify
+# this file as a template for defsubs.h
+# Extracting defsubs.h (with variable substitutions)
#!perl
my ($out) = __FILE__ =~ /(^.*)[._]PL/i;
if ($^O eq 'VMS') { $out =~ s/(^.*)[._](.*$)/$1.$2/;}
open(OUT,">$out") || die "Cannot open $file:$!";
+print "Extracting $out . . .\n";
foreach my $const (qw(AVf_REAL
HEf_SVKEY
SVf_IOK SVf_NOK SVf_POK SVf_ROK SVp_IOK SVp_POK ))
=cut
+# N.B. File::Basename contains a literal for 'taint' as a fallback. If
+# taint is changed here, File::Basename must be updated as well.
my %bitmask = (
taint => 0x00100000,
eval => 0x00200000,
$h{$name} = 1;
} elsif ($name =~ /\.PL$/) {
($pl_files{$name} = $name) =~ s/\.PL$// ;
- } elsif ($Is_VMS && $name =~ /\.pl$/) { # case-insensitive filesystem
+ } elsif ($Is_VMS && $name =~ /[._]pl$/i) {
+ # case-insensitive filesystem, one dot per name, so foo.h.PL
+ # under Unix appears as foo.h_pl under VMS
local($/); open(PL,$name); my $txt = <PL>; close PL;
if ($txt =~ /Extracting \S+ \(with variable substitutions/) {
- ($pl_files{$name} = $name) =~ s/\.pl$// ;
+ ($pl_files{$name} = $name) =~ s/[._]pl$//i ;
}
else { $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name); }
} elsif ($name =~ /\.(p[ml]|pod)$/){
## use strict;
-use re 'taint';
+# A bit of juggling to insure that C<use re 'taint';> awlays works, since
+# File::Basename is used during the Perl build, when the re extension may
+# not be available.
+BEGIN {
+ unless (eval { require re; })
+ { eval ' sub re::import { $^H |= 0x00100000; } ' }
+ import re 'taint';
+}
+
+
+
require Exporter;
@ISA = qw(Exporter);