FindBin(3pm)

FindBin3pm

Locate directory of original perl script

Usage

 use FindBin;
 use lib "$FindBin::Bin/../lib";
 or
 use FindBin qw($Bin);
 use lib "$Bin/../lib";

Overview

Locates the full path to the script bin directory to allow the use of paths relative to the bin directory.

This allows a user to setup a directory tree for some software with directories <root>/bin and <root>/lib and then the above example will allow the use of modules in the lib directory without knowing where the software tree is installed.

If perl is invoked using the -e option or the perl script is read from STDIN then FindBin sets both $Bin and $RealBin to the current directory.

Exportable variables

 $Bin         - path to bin directory from where script was invoked
 $Script      - basename of script from which perl was invoked
 $RealBin     - $Bin with all links resolved
 $RealScript  - $Script with all links resolved

Known bugs

if perl is invoked as

   perl filename

and filename does not have executable rights and a program called filename exists in the users $ENV{PATH} which satisfies both -x and -T then FindBin assumes that it was invoked via the $ENV{PATH}.

Workaround is to invoke perl as

 perl ./filename

Revision

$Revision: 1.4 $

Releases

5 releases since Debian 1.2 (Rex); the text changed 3 times.

  1. 1.2–1.3
  2. 2.0
  3. 2.1
  4. 2.2

Authors

Graham Barr <[email protected]> Nick Ing-Simmons <[email protected]>

From perl-5.004-doc 5.004.05-6 in Debian 2.2 (Potato). Also shipped by perl-5.005-doc. Parsed by carta from the page's man source.