Finalize change #4232.
[p5sagit/p5-mst-13.2.git] / lib / File / Basename.pm
index e21af92..d1c8666 100644 (file)
@@ -122,11 +122,23 @@ directory name to be F<.>).
 
 =cut
 
-require 5.002;
+
+## use strict;
+# A bit of juggling to insure that C<use re 'taint';> always 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);
 @EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
-#use strict;
 use vars qw($VERSION $Fileparse_fstype $Fileparse_igncase);
 $VERSION = "2.6";
 
@@ -160,23 +172,23 @@ sub fileparse {
   if ($fstype =~ /^VMS/i) {
     if ($fullname =~ m#/#) { $fstype = '' }  # We're doing Unix emulation
     else {
-      ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/t);
+      ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/);
       $dirpath ||= '';  # should always be defined
     }
   }
   if ($fstype =~ /^MS(DOS|Win32)/i) {
-    ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/t);
+    ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/);
     $dirpath .= '.\\' unless $dirpath =~ /[\\\/]$/;
   }
   elsif ($fstype =~ /^MacOS/i) {
-    ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/t);
+    ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/);
   }
   elsif ($fstype =~ /^AmigaOS/i) {
-    ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/t);
+    ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/);
     $dirpath = './' unless $dirpath;
   }
   elsif ($fstype !~ /^VMS/i) {  # default to Unix
-    ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#t);
+    ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#);
     if ($^O eq 'VMS' and $fullname =~ m:/[^/]+/000000/?:) {
       # dev:[000000] is top of VMS tree, similar to Unix '/'
       ($basename,$dirpath) = ('',$fullname);
@@ -188,7 +200,7 @@ sub fileparse {
     $tail = '';
     foreach $suffix (@suffices) {
       my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$";
-      if ($basename =~ s/$pat//t) {
+      if ($basename =~ s/$pat//) {
         $taint .= substr($suffix,0,0);
         $tail = $1 . $tail;
       }
@@ -226,30 +238,30 @@ sub dirname {
     }
     if ($fstype =~ /MacOS/i) { return $dirname }
     elsif ($fstype =~ /MSDOS/i) { 
-        $dirname =~ s/([^:])[\\\/]*$/$1/t;
+        $dirname =~ s/([^:])[\\\/]*$/$1/;
         unless( length($basename) ) {
            ($basename,$dirname) = fileparse $dirname;
-           $dirname =~ s/([^:])[\\\/]*$/$1/t;
+           $dirname =~ s/([^:])[\\\/]*$/$1/;
        }
     }
     elsif ($fstype =~ /MSWin32/i) { 
-        $dirname =~ s/([^:])[\\\/]*$/$1/t;
+        $dirname =~ s/([^:])[\\\/]*$/$1/;
         unless( length($basename) ) {
            ($basename,$dirname) = fileparse $dirname;
-           $dirname =~ s/([^:])[\\\/]*$/$1/t;
+           $dirname =~ s/([^:])[\\\/]*$/$1/;
        }
     }
     elsif ($fstype =~ /AmigaOS/i) {
         if ( $dirname =~ /:$/) { return $dirname }
         chop $dirname;
-        $dirname =~ s#[^:/]+$##t unless length($basename);
+        $dirname =~ s#[^:/]+$## unless length($basename);
     }
     else { 
         $dirname =~ s:(.)/*$:$1:;
         unless( length($basename) ) {
            local($File::Basename::Fileparse_fstype) = $fstype;
            ($basename,$dirname) = fileparse $dirname;
-           $dirname =~ s:(.)/*$:$1:t;
+           $dirname =~ s:(.)/*$:$1:;
        }
     }