-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
28 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"; | ||
|
||
|
@@ -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]`> | ||
|