MirBSD manpage: FindBin(3p)

FindBin(3p)     Perl Programmers Reference Guide      FindBin(3p)


     FindBin - Locate directory of original perl script


      use FindBin;
      use lib "$FindBin::Bin/../lib";


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


     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

     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.


      $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


     If there are two modules using "FindBin" from different
     directories under the same interpreter, this won't work.
     Since "FindBin" uses a "BEGIN" block, it'll be executed only
     once, and only the first caller will get it right. This is a
     problem under mod_perl and other persistent Perl environ-
     ments, where you shouldn't use this module. Which also means
     that you should avoid using "FindBin" in modules that you
     plan to put on CPAN. To make sure that "FindBin" will work
     is to call the "again" function:

       use FindBin;
       FindBin::again(); # or FindBin->again;

     In former versions of FindBin there was no "again" function.
     The workaround was to force the "BEGIN" block to be executed

       delete $INC{'FindBin.pm'};
       require FindBin;

perl v5.8.8                2005-02-05                           1

FindBin(3p)     Perl Programmers Reference Guide      FindBin(3p)


     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 satis-
     fies both -x and -T then FindBin assumes that it was invoked
     via the $ENV{PATH}.

     Workaround is to invoke perl as

      perl ./filename


     FindBin is supported as part of the core perl distribution.
     Please send bug reports to <perlbug@perl.org> using the
     perlbug program included with perl.

     Graham Barr <gbarr@pobox.com> Nick Ing-Simmons


     Copyright (c) 1995 Graham Barr & Nick Ing-Simmons. All
     rights reserved. This program is free software; you can
     redistribute it and/or modify it under the same terms as
     Perl itself.

perl v5.8.8                2005-02-05                           2

Generated on 2022-12-24 01:00:14 by $MirOS: src/scripts/roff2htm,v 1.113 2022/12/21 23:14:31 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2022 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.

Kontakt / Impressum & Datenschutzerklärung