Модулі (packages)
У Perl реалізований механізм модулів. Модуль це група підпрограм і змінних зазвичай включених в один файл. Всередині одного модуля можна визначити інший модуль. Початок модуля визначається директивою:- packages імя_модуля;
Кінець модуля це кінець блоку або файлу. Головний модуль має за замовчуванням ім'я main. На ім'я всередині модуля можна посилатися, додаючи '::' після імені модуля.
Тільки ідентифікатори, що починаються з букви або символу '_', зберігаються в просторі імен поточного модуля. Решта зберігаються в просторі головного модуля main. Крім цього імена STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC і SIG так само зберігаються в головному модулі.
Всі імена модуля зберігаються в асоціативному масиві (хеше) з ім'ям модуля, до якого додані символи "::". Таким чином імена головного модуля зберігаються в% main. модуля 'mod1' в% mod1. і т.д. Вираз вигляду * ім'я вказує значення елементу хеш-кодування 'ім'я', це зручно для визначення констант.
Наприклад: Тут змінна $ pi - це константа пі, яку вже не можна змінити.
Конструктори і деструктори.
Конструктор - це підпрограма, яка виконується в момент створення об'єкту, а деструкція - видалення об'єкта. Для модуля це підпрограми з іменами BEGIN і END. При визначенні цих підпрограм слово sub можна опускати.
Конструктор BEGIN виконується відразу як тільки можливо, тобто як тільки він визначений, навіть не завершуючи подальший розбір програми. Можна вказати кілька блоків BEGIN. Вони будуть виконуватися один за іншим в порядку визначення.
Деструкція END виконується останнім як тільки можливо, тобто при завершенні роботи інтерпретатора. Можна вказати кілька блоків END, при цьому вони будуть виконуватися в зворотному визначенню порядку.
У Perl немає спеціального синтаксису для класів. Але функціонально повноцінними класами можуть бути модулі. При цьому підпрограми модуля стають методами, а за допомогою масиву @ISA можна реалізувати механізм успадкування в класах. Більш докладно класи описані окремо.
Якщо ви хочете створити модуль окремим файлом і використовувати як бібліотеку підпрограм, при цьому викликати підпрограми бібліотеки, які не вказуючи імені модуля, вам необхідно оформити модуль таким чином:
Даний файл з розширенням ".pm" повинен зберігатися в одній з бібліотечних директорій Perl. Вони перераховані в масиві @INC, одна з них зазвичай "/ usr / local / lib / perl /".
У головній програмі ви вказуєте:- use імя_модуля;
Стандартний набір бібліотек зазвичай поставляється з дистрибутивом Perl, вони поділяються на pragma бібліотеки (працюють як директиви компілятору) і стандартні бібліотеки.
Дані бібліотеки використовують як:- use ім'я;
- no ім'я;
У стандартний набір входять наступні pragma:
diagnostics
Включити режим розширеної діагностики.
integer
Використовувати целочисленную арифметику.
less
Режим мінімального завантаження компілятора.
overload
Режим перевизначення операторів.
sigtrap
Режим стеження за перериваннями.
strict
Режим обмеженого використання "небезпечних" операторів.
subs
Режим обов'язкового декларування підпрограм.
AnyDBM_File
Можливість роботи з різними типами баз даних.
AutoLoader
Завантаження в пам'ять функцій тільки під час виклику.
AutoSplit
Розділити модуль для автозавантаження.
Benchmark
Аналіз швидкості виконання програми.
Carp
Попередження про помилки.
Config
Доступ до конфігурації Perl.
Cwd
Отримати ім'я поточної робочої директорії.
DB_File
Робота з базою даних формату Berkley DB.
Devel :: SelfStubber
Режим налагодження автозавантаження.
DynaLoader
Динамічне завантаження бібліотек C.
English
Використовувати довгі імена вбудованих змінних.
Env
Імпортувати імена змінних оточення
Exporter
Забезпечує експорт / імпорт для модулів.
ExtUtils :: LibList
Визначає використовувані бібліотеки.
ExtUtils :: MakeMaker
Створює файл проекту Makefile
ExtUtils :: Manifest
Програми для створення і перевірки файлу MANIFEST
ExtUtils :: Mkbootstrap
Застосування файлу початкового завантаження для DynaLoader.
Fcntl
Визначення як і в С Fcntl.h
File :: Basename
Синтаксичний розбір специфікації файлу.
File :: CheckTree
Швидкий прохід по директоріях диска.
File :: Find
Швидкий пошук файлів по директоріях.
FileHandle
Забезпечує об'єктний метод доступу до покажчиків файлів.
File :: Path
Створення / видалення директорій.
Getopt :: Long
Розширена обробка опцій.
Getopt :: Std
Стандартна обробка опцій.
I18N :: Collate
Порівняння символів локальної кодування.
IPC :: Open2
Міжпроцесорний обмін з читання та запису.
IPC :: Open3
Міжпроцесорний обмін з читання, записи, і обробки помилок.
Net :: Ping
Тест доступу до хосту.
POSIX
Стандартний інтерфейс по IEEE Std 1003.1
SelfLoader
Завантаження функцій тільки за викликом.
Socket
Визначення структур і констант як і в С socket.h
Test :: Harness
Стандартний тест з статистикою.
Text :: Abbrev
Створення таблиці скорочень за списком.
Детальний опис кожної бібліотеки записано в самому файлі.
Програмісти всього світу, що працюють з Perl, створили загальнодоступну бібліотеку модулів CPAN. Вона доступна через Інтернет і містить величезну кількість різних за призначенням модулів. До них відносяться документатори, системні інтерфейси, інтерфейси роботи з базами даних, робота в мережі, з файлами, Інтернет-браузери, системи пошуку, величезна кількість CGI скриптів для Web серверів і багато-багато іншого. Список деяких CPAN серверів ви можете знайти в додатку.