summaryrefslogtreecommitdiff
path: root/lib/FindBin.pm
diff options
context:
space:
mode:
authorMoritz Lenz <moritz@faui2k3.org>2011-04-29 19:44:52 +0200
committerFather Chrysostomos <sprout@cpan.org>2011-05-18 21:35:43 -0700
commitce6c0f31778913bcbf7ccd245ab390dddd8a1361 (patch)
treec1def5e0d75c0c7085457a82bec28b06cb554b83 /lib/FindBin.pm
parent15cf0830e4143a05328e27be76fb4144090ccbb4 (diff)
downloadperl-ce6c0f31778913bcbf7ccd245ab390dddd8a1361.tar.gz
Remove long-stading limitation from FindBin
The FindBin documentation states as a known bug that it will return a wrong result if a script of the same name as the current one exists in $PATH, and is executable. This patch removes the functionality of searching through $PATH. According to Graham Barr it was only necessary because the SysV shell on Sun4OS4 was broken - a system where I can't imagine anybody wanting (and successfully compiling) a modern perl. On Linux this part wasn't necessary in the case of `perl -S scriptname', tests on other platforms are very welcome. As a side effect, this patch also removes some IO operations, speeding up FindBin slightly. This patch is based on discussions with Tina Müller. Further "discussion": http://www.perlmonks.org/?node_id=41213
Diffstat (limited to 'lib/FindBin.pm')
-rw-r--r--lib/FindBin.pm41
1 files changed, 1 insertions, 40 deletions
diff --git a/lib/FindBin.pm b/lib/FindBin.pm
index 892d6e5d93..cf6ecf2904 100644
--- a/lib/FindBin.pm
+++ b/lib/FindBin.pm
@@ -59,21 +59,6 @@ workaround was to force the C<BEGIN> block to be executed again:
delete $INC{'FindBin.pm'};
require FindBin;
-=head1 KNOWN BUGS
-
-If perl is invoked as
-
- perl filename
-
-and I<filename> does not have executable rights and a program called
-I<filename> exists in the users C<$ENV{PATH}> which satisfies both B<-x>
-and B<-T> then FindBin assumes that it was invoked via the
-C<$ENV{PATH}>.
-
-Workaround is to invoke perl as
-
- perl ./filename
-
=head1 AUTHORS
FindBin is supported as part of the core perl distribution. Please send bug
@@ -103,7 +88,7 @@ use File::Spec;
%EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]);
@ISA = qw(Exporter);
-$VERSION = "1.50";
+$VERSION = "1.51";
# needed for VMS-specific filename translation
@@ -145,30 +130,6 @@ sub init
}
else
{
- my $dosish = ($^O eq 'MSWin32' or $^O eq 'os2');
- unless(($script =~ m#/# || ($dosish && $script =~ m#\\#))
- && -f $script)
- {
- my $dir;
- foreach $dir (File::Spec->path)
- {
- my $scr = File::Spec->catfile($dir, $script);
-
- # $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;
- last;
- }
- }
- }
-
croak("Cannot find current script '$0'") unless(-f $script);
# Ensure $script contains the complete path in case we C<chdir>