Все имена модуля хранятся в ассоциативном массиве (хеше) с именем модуля к которому добавлены символы "::
". Таким образом имена головного модуля хранятся в %main:: , модуля 'mod1' в %mod1:: и т.д. Выражение вида *имя указывает значение элемента хеша 'имя' это удобно для определения констант.Например:
*pi = \3.14159;
Здесь переменная $pi
– это константа пи которую уже нельзя изменить.Конструктор – это подпрограмма которая выполняется в момент создания объекта, а деструктор – удаления объекта. Для модуля это подпрограммы с именами BEGIN и END. При определении этих подпрограмм слово sub
можно опускать.Конструктор BEGIN выполняется сразу как только возможно т.е. как только он определен даже не завершая дальнейший разбор программы. Можно указать несколько блоков BEGIN. Они будут выполняться один за другим в порядке определения.
Деструктор END выполняется последним как только возможно т.е. при завершении работы интерпрератора. Можно указать несолько блоков END при этом они будут выполняться в обратном определению порядке.
В Перл нет специального синтаксиса для классов. Но функционально полноценными классами могут быть модули. При этом подпрограммы модуля становятся методами, а с помощью массива @ISA
можно реализовать механизм наследования в классах. Более подробно классы описаны отдельно.Если вы хотоите создать модуль отдельным файлом и использовать как библиотеку подпрограмм, при этом вызывать подпрограммы библиотеки не указывая имени модуля, вам необходимо оформить модуль следующим образом:
package имя_модуля
; # Такое же как и имя этого файла без расширения '.pm'require Exporter;
# Обязательная строка для экспорта имен@ISA = qw(Exporter);
# -//-@EXPORT = qw(func1 func2)
# Перечисляем имена функций. Внимание ! нет запятой!@EXPORT_OK = qw( $переменная @массив );
# Указать публичные переменные, массивы и т.д. если необходимо{ # Начало блока модуля
.....
sub func1
........
sub func2
........
1;
}
Данный файл с расширением ".pm
" должен храниться в одной из библиотечных директорий Перл. Они перечислены в массиве @INC одно из них обычно "/usr/local/lib/perl/".В головной программе вы указываете:
use имя_модуля;
и вам становятся доступны имена подпрограмм данного модуля.
Стандартный набор библиотек обычно поставляется с дистрибутивом Перл они разделяются на pragma
библиотеки (работают как директивы компилятору) и стандартные библиотеки.Данные библиотеки используют как:
use имя;
когда хотят включить действие и
no имя;
когда выключить.
В стандартный набор входят следующие pragma
:diagnostics –
Включить режим расширенной диагностики.integer –
Использовать целочисленную арифметику.less –
Режим минимальной загрузки компилятора.overload -
Режим переопределения операторов.sigtrap -
Режим слежения за прерываниями.strict -
Режим ограниченного использования «опасных» операторов.subs -
Режим обязательного декларирования подпрограмм.AnyDBM_File
Возможность работы с разными типами баз данных.AutoLoader
Загрузка в память функций только во время вызова.AutoSplit
Разделить модуль для автозагрузки.Benchmark
Анализ скорости исполнения программы.Carp
Предупреждения об ошибках.Config
Доступ к конфигурации Перл.Cwd
Получить имя текущей рабочей директории.DB_File
Работа с базой данных формата Berkley DB.Devel::SelfStubber
Режим отладки автозагрузки.DynaLoader
Динамическая загрузка библиотек C.English
Использовать длинные имена встроенных переменных.Env
Импортировать имена переменных окруженияExporter
Обеспечивает экспорт/импорт для модулей.ExtUtils::LibList
Определяет используемые библиотеки.ExtUtils::MakeMaker
Создает файл проекта MakefileExtUtils::Manifest
Программы для создания и проверки файла MANIFESTExtUtils::Mkbootstrap
Применеие файла начальной загрузки для DynaLoader.Fcntl
Определения как и в С Fcntl.hFile::Basename
Синтаксический разбор спецификации файла.File::CheckTree
Быстрый проход по директориям диска.File::Find
Быстрый поиск файлов по директориям.FileHandle
Обеспечивает объектный метод доступа к указателям файлов.File::Path
Создание/удаление директорий.Getopt::Long
Расширенная обработка опций.Getopt::Std
Стандартная обработка опций.I18N::Collate
Сравнение символов локальной кодировки.IPC::Open2
Межпроцессорный обмен по чтению и записи.IPC::Open3
Межпроцессорный обмен по чтению, записи, и обрабоки ошибок.Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT