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.30.3/FindBin