Use
Синтаксис
use Module LIST use Module use Module VERSION LIST use VERSION
Описание
Импортирует данные из указанного модуля, обычно за счет введения в ваш пакет синонимов переменных и
подпрограмм модуля. В целом функция эквивалентна вызову
BEGIN { require Module; import Module LIST; }
с тем лишь отличием, что Module должен представлять собой одно простое слово.
Если первый аргумент функции представляет собой число, оно интерпретируется не как имя файла,
а как номер версии. Если версия интерпретатора Perl меньше, чем VERSION, выводится сообщение
об ошибке и Perl завершает работу. Этот прием часто используется для проверки версии Perl перед
включением (с помощью той же функции use) библиотечных модулей, которые в старых версиях Perl несовместимы с текущими.
Блок BEGIN принуждает Perl выполнять функцию require и метод import на этапе компиляции.
При этом require обеспечивает загрузку модуля в память, если его до сих пор там не было,
import представляет собой обычный статический вызов метода в пакете «Module», позволяющий передать
в пользовательский метод требование импорта списка объектов в текущий пакет.
В самом модуле реализация метода импорта может осуществляться произвольным образом, хотя в
большинстве случаев разработчики просто наследуют метод импорта у класса Exporter,
определенном в одноименном модуле. Если метод импортирования обнаружить не удается, эта ошибка
просто замалчивается. Впрочем, в будущем она может быть переведена в категорию фатальных.
Если вы не планируете изменять пространство имен вашего пакета, вы должны явно передать
в качестве аргумента пустой список:
use Module ();
Это полностью эквивалентно
BEGIN { require Module; }
Если между именем модуля и списком импорта присутствует аргумент VERSION, то
функция use вызывает метод VERSION в классе Module, аргументом которого является номер текущей версии.
Метод VERSION, используемый по умолчанию, наследуется из класса Universal и завершает работу
программы, если переданный в качестве аргумента номер версии больше, чем значение переменной $Module::VERSION.
Аналогичным образом посредством use реализуется и несколько директив компилятора. В настоящее время вы можете использовать:
use integer;
use diagnostics;
use sigtrap qw(SEGV BUS);
use strict qw(subs vars refs) ;
use subs qw(afunc blurfl);
Отличие этих псевдомодулей от обычных состоит в том, что они предназначены для импорта указанных
семантических конструкций в отдельные блоки с сохранением их в силе в пределах текущей области видимости.
Предусмотрена также команда «no», которая удаляет импортированные с помощью use значения,
то есть осуществляет вызов unimport Module LIST.
no integer;
no strict 'refs';
В случае если методы «разымпортирования» найти не удается, генерируется фатальная ошибка.
Thanks
2023-11-16 22:30:18 Svetlana Thank you very useful information
Оставить комментарий:
|
|