Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
toddr committed Dec 29, 2023
1 parent a13caee commit f3ea628
Showing 1 changed file with 28 additions and 17 deletions.
45 changes: 28 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
# NAME

FindBin - Locate directory of original perl script
FindBin - Locate directory of original Perl script

# SYNOPSIS

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

or

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

Expand All @@ -22,42 +20,55 @@ 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
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
- `$Bin` or `$Dir`

Path to the bin **directory** from where script was invoked

- `$Script`

**Basename** of the script from which `perl` was invoked

- `$RealBin` or `$RealDir`

`$Bin` with all links resolved

- `$RealScript`

`$Script` with all links resolved

You can also use the `ALL` tag to export all of the above variables together:

use FindBin ':ALL';

# KNOWN ISSUES

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
will get it right. This is a problem under `mod_perl` and other persistent
Perl environments, 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:
on CPAN. Call the `again` function to make sure that `FindBin` will work:

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 again:
In former versions of `FindBin` there was no `again` function.
The workaround was to force the `BEGIN` block to be executed again:

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

# AUTHORS

FindBin is supported as part of the core perl distribution. Please send bug
reports to <`[email protected]`> using the perlbug program
included with perl.
`FindBin` is supported as part of the core perl distribution. Please submit bug
reports at [https://github.com/Perl/perl5/issues](https://github.com/Perl/perl5/issues).

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

0 comments on commit f3ea628

Please sign in to comment.