Spec-Zone.ru › Perl 5.38

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. Пожалуйста, отправляйте сообщения об ошибках по адресу https://github.com/Perl/perl5/issues.

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

АВТОРСКИЕ ПРАВА

Авторские права (с) 1995 Graham Barr & Nick Ing-Simmons. Все права защищены. Эта программа является свободной программой; вы можете перераспределять её и/или изменять её на тех же условиях, что и Perl сам по себе.

© 1993–2023 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.38.0/FindBin

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API