This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
rename &warnings::register to avoid ambiguity
[perl5.git] / lib / FindBin.pm
index 0dbe550..892d6e5 100644 (file)
@@ -96,7 +96,6 @@ use Carp;
 require 5.000;
 require Exporter;
 use Cwd qw(getcwd cwd abs_path);
-use Config;
 use File::Basename;
 use File::Spec;
 
@@ -104,7 +103,14 @@ use File::Spec;
 %EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]);
 @ISA = qw(Exporter);
 
-$VERSION = "1.47";
+$VERSION = "1.50";
+
+
+# needed for VMS-specific filename translation
+if( $^O eq 'VMS' ) {
+    require VMS::Filespec;
+    VMS::Filespec->import;
+}
 
 sub cwd2 {
    my $cwd = getcwd();
@@ -124,6 +130,7 @@ sub init
    # perl invoked with -e or script is on C<STDIN>
    $Script = $RealScript = $0;
    $Bin    = $RealBin    = cwd2();
+   $Bin = VMS::Filespec::unixify($Bin) if $^O eq 'VMS';
   }
  else
   {
@@ -131,7 +138,9 @@ sub init
 
    if ($^O eq 'VMS')
     {
-     ($Bin,$Script) = VMS::Filespec::rmsexpand($0) =~ /(.*\])(.*)/s;
+     ($Bin,$Script) = VMS::Filespec::rmsexpand($0) =~ /(.*[\]>\/]+)(.*)/s;
+     # C<use disk:[dev]/lib> isn't going to work, so unixify first
+     ($Bin = VMS::Filespec::unixify($Bin)) =~ s/\/\z//;
      ($RealBin,$RealScript) = ($Bin,$Script);
     }
    else
@@ -142,24 +151,19 @@ sub init
       {
        my $dir;
        foreach $dir (File::Spec->path)
-       {
+        {
         my $scr = File::Spec->catfile($dir, $script);
-       if(-r $scr && (!$dosish || -x _))
+
+        # $script can been found via PATH but perl could have
+        # been invoked as 'perl file'. Do a dumb check to see
+        # if $script is a perl program, if not then keep $script = $0
+        #
+        # well we actually only check that it is an ASCII file
+        # we know its executable so it is probably a script
+        # of some sort.
+        if(-f $scr && -r _ && ($dosish || -x _) && -s _ && -T _)
          {
           $script = $scr;
-
-         if (-f $0)
-           {
-           # $script has been found via PATH but perl could have
-           # been invoked as 'perl file'. Do a dumb check to see
-           # if $script is a perl program, if not then $script = $0
-            #
-            # well we actually only check that it is an ASCII file
-            # we know its executable so it is probably a script
-            # of some sort.
-
-            $script = $0 unless(-T $script);
-           }
           last;
          }
        }