Spec-Zone.ru › Perl 5.36

FindBin

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
  • ЭКСПОРТИРУЕМЫЕ ПЕРЕМЕННЫЕ
  • ИЗВЕСТНЫЕ ПРОБЛЕМЫ
  • АВТОРЫ
  • АВТОРСКИЕ ПРАВА

ИМЯ

FindBin - Определение директории исходного скрипта Perl

СИНТАКСИС

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

or

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

ОПИСАНИЕ

Определяет полный путь к директории скрипта 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>

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

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

© 1993–2021 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.36.0/FindBin

Spec-Zone.ru

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