FindBin
СОДЕРЖАНИЕ
ИМЯ
FindBin - Определение каталога исходного perl-скрипта
СИНТАКСИС
use FindBin;
use lib "$FindBin::Bin/../lib";
or
use FindBin qw($Bin);
use lib "$Bin/../lib"; ОПИСАНИЕ
Определяет полный путь к каталогу скриптов bin, чтобы разрешить использование путей, относительных к каталогу bin.
Это позволяет пользователю настроить древовидную структуру каталогов для некоторого программного обеспечения с каталогами <root>/bin и <root>/lib, а затем приведенный выше пример позволит использовать модули в каталоге lib, не зная, где установлена древовидная структура программного обеспечения.
Если perl вызывается с опцией -e или perl-скрипт считывается из STDIN, тогда FindBin устанавливает $Bin и $RealBin в текущий каталог.
ВЫВОЗИМЫЕ ПЕРЕМЕННЫЕ
$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 ИЗВЕСТНЫЕ ПРОБЛЕМЫ
Если два модуля используют FindBin из разных каталогов под одним интерпретатором, это не сработает. Поскольку FindBin использует блок BEGIN, он будет выполнен только один раз, и только первый вызывающий получит правильное значение. Это проблема в mod_perl и других постоянных Perl-средах, где не следует использовать этот модуль. Это также означает, что следует избегать использования FindBin в модулях, которые планируется разместить в CPAN. Чтобы убедиться, что FindBin будет работать, необходимо вызвать функцию again:
use FindBin;
FindBin::again(); # or FindBin->again; В предыдущих версиях FindBin не было функции again. Обходным путем было принудительное повторное выполнение блока BEGIN:
delete $INC{'FindBin.pm'};
require FindBin; АВТОРЫ
FindBin поддерживается в составе основного perl-распространения. Пожалуйста, отправляйте отчеты об ошибках по адресу <perlbug@perl.org> с использованием программы perlbug, включенной в perl.
Graham Barr <gbarr@pobox.com> Nick Ing-Simmons <nik@tiuk.ti.com>
АВТОРСКИЕ ПРАВА
Авторские права (c) 1995 Graham Barr & Nick Ing-Simmons. Все права защищены. Эта программа является свободной программной; вы можете перераспределять её и/или изменять её в соответствии с теми же условиями, что и Perl сам по себе.
© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.28.3/FindBin