| Содержание | Предисловие | Введение | Ссылки
| Глава 1 | Глава 2 | Глава 3 | Глава 4 | Глава 5 | Глава 6 | Глава 7 | Глава 8 | Глава 9 | Глава 10
| Глава 11 | Глава 12 | Глава 13 | Глава 14 | Глава 15 | Глава 16 | Глава 17 | Глава 18 | Глава 19
| Приложение А | Приложение Б | Приложение В | Приложение Г |

Приложение Б

Библиотеки и модули

Для простых программ вы уже теперь можете свободно писать собственные Perl-подпрограммы. Когда же задачи, для решения которых вы применяете Perl, станут более сложными, вам иногда будет приходить в голову мысль: "Кто-то, должно быть, это уже делал". И в подавляющем большинстве случаев вы окажетесь правы.

Действительно, другие люди уже написали коды для решения большинства распространенных задач. Более того, они поместили их либо в стандартный дистрибутив Perl, либо в бесплатно загружаемый архив CPAN. Чтобы использовать этот код (и сэкономить немного времени), вам придется разобраться в том, как пользоваться Perl-библиотекой. Этот вопрос вкратце освещался в главе 19.

Одно из преимуществ использования модулей из стандартного дистрибутива состоит в том, что потом вы можете предоставлять свою программу другим пользователям, при этом не придется предпринимать никаких специальных мер. Это объясняется тем, что одна и та же стандартная библиотека доступна Perl-программам практически везде.

Если вы решите обратиться к стандартной библиотеке, то в конечном итоге сэкономите свое время. Нет никакого смысла вновь изобретать велосипед. Следует понимать, однако, что эта библиотека содержит очень много материала. Одни модули могут быть исключительно полезны, тогда как другие совершенно не подходят для решения ваших задач. Например, некоторые модули полезны лишь в том случае, если вы создаете дополнения к языку Perl.

Чтобы прочитать документацию, относящуюся к стандартному модулю, воспользуйтесь программой man или perldoc (если они у вас есть) либо своим Web-броузером, если речь идет о HTML-версиях этой документации. Если ничего не получается, поищите в файлах самого модуля: документация включена в состав каждого модуля (в pod-формате). Чтобы найти модуль у себя в системе, попробуйте выполнить из командной строки следующую Perl-программу:

# для (большинства) Unix-подобных shell peri -e 'print "@INC\n"'

# для (некоторых) других интерпретаторов команд

peri -e "print join(' ',"@INC),\n"

Вы должны найти модуль в одном из каталогов, перечисленных этой командой.

Терминология

Перед тем как дать перечень всех стандартных модулей, давайте разберемся в терминах.

Пакет

Пакет это простое устройство управления пространством имен, позволяющее в каждой из двух разных частей Perl-программы иметь свою переменную с именем $fred. Этими пространствами имен управляет объявление package, описанное в главе 5 книги Programming Perl.

Библиотека

Библиотека это набор подпрограмм определенного назначения. Часто библиотека объявляет себя отдельным пакетом; это позволяет держать в одном месте соответствующие переменные и подпрограммы, чтобы они не мешали другим переменным в вашей программе. Как правило, библиотека старого стиля размещалась в отдельном файле, часто под именем с расширением р1. Библиотечные программы включались в основную программу посредством функции require. He так давно этот подход был заменен использованием модулей (см. следующий абзац), и термин библиотека теперь часто обозначает всю систему модулей, которые поставляются с Perl.

Модуль

Модуль это библиотека, соответствующая конкретным соглашениям, которая позволяет включать библиотечные подпрограммы в основную программу во время компиляции с помощью директивы use. Имена файлов модулей имеют расширение рт, потому что это необходимо для корректного использования директивы use. Подробно Perl-модули описаны в главе 5 книги Programming Perl.

Прагма

Прагма это модуль, который воздействует не только на фазу выполнения программы, но и на фазу ее компиляции. Считайте, что прагма содержит подсказки компилятору. В отличие от других модулей, прагмы часто (но не всегда) ограничивают сферу своего влияния самым внутренним охватывающим блоком вашей программы (т.е. блоком, охватывающим вызов прагмы). По соглашению имена прагм состоят из символов нижнего регистра.

Стандартные модули

Ниже приведен перечень всех Perl-прагм и модулей, входящих в текущий дистрибутив языка (версия 5.004). Классификация модулей произвольная.

Таблица Б. 1. Общее программирование: разное

Модуль

Функция

autouse

Задерживает загрузку модуля до его использования

constant

Создает константы периода компиляции

Benchmark

Проверяет и сравнивает временные параметры выполне

 

 

ния кода

Config

Позволяет получить информацию о конфигурации Perl

Env

Импортирует переменные среды

English

Для пунктуационных переменных использует английские имена или имена на языке awk

FindBin

Находит путь к выполняемой в данный момент программе

Getopt::Long

Осуществляет расширенную обработку опций командной

 

 

строки

Getopt::Std

Обрабатывает односимвольные ключи и осуществляет их

 

 

кластеризацию

lib

Манипулирует массивом @INC во время компиляции

Shell

Запускает команды shell прозрачно для Perl

strict

Ограничивает использование небезопасных конструкций

Symbol

Генерирует анонимное развертывание (glob); уточняет

 

 

имена переменных

subs

Предопределяет имена подпрограмм

vars

Предопределяет имена глобальных переменных

 

Таблица Б. 2. Общее программирование: обработка ошибок и регистрация

Модуль

Функция

Сагр diagnostics sigtrap

Sys::Syslog

Выдает сообщения об ошибках Включает режим диагностики с выдачей предупреждений

Разрешает обратное прослеживание стека для неожиданных сигналов

Perl-интерфейс к UNIX-вызовам syslog(3)

 

 

 

 

 

Таблица Б.З. Общее программирование: доступ к файлам и их обработка

Модуль

Функция

Cwd DirHandle

Fcnti File::Basename File::CheckTree File:: Copy File::Find File::Path FileCache

FileHandle SelectSaver

Получает путевое имя текущего рабочего каталога

Выдает методы объектов для работы с дескрипторами каталогов

Загружает С-определения Fcntl.h Разбирает спецификации файлов Выполняет всевозможные проверки для набора файлов Копирует файлы или дескрипторы файлов Обеспечивает просмотр дерева файлов Создает и удаляет ряд каталогов

Позволяет одновременно открывать больше файлов, чем разрешает система

Выдает методы объектов для работы с дескрипторами файлов

Сохраняет и восстанавливает выбранный дескриптор файла

Таблица Б. 4. Общее программирование: классы для операций ввода-вывода

Модуль

Функция

10 IO::File IO::Handle IO::Pipe IO::Seekable IO::Select IO::Socket

Интерфейс верхнего уровня к классам 10::* Методы объектов для работы с дескрипторами файлов Методы объектов для дескрипторов ввода-вывода Методы объектов для каналов Методы для объектов ввода-вывода на базе поиска Объектный интерфейс для выбора Объектный интерфейс для портов

Таблица Б. 5. Общее программирование: обработка текста и экранные интерфейсы

Модуль

Функция

locale

Pod::HTML Pod::Text

Search::Dict Term::Cap

Использует локализацию POSIX для встроенных операций

Конвертирует pod-данные в HTML

Конвертирует pod-данные в форматированный ASCII-текст

Ищет ключ в файле словаря Интерфейс termcap

 

Модуль

Функция

Term::Complete Text::Abbrev Text::ParseWords Text::Soundex Text::Tabs Text::Wrap

Модуль завершения слов Создает из списка таблицу сокращений Разбирает текст на лексемы и создает из них массив Реализует алгоритм Soundex, разработанный Кнутом Раскрывает и сворачивает знаки табуляции Выделяет текст в абзац

Таблица Б. 6. Интерфейсы к базам данных

Модуль

Функция

AnyDBMFile DBFile GDBMFile NDBMFile ODBMFile SDBM File

Создает основу для множества DBM Доступ к Berkeley DB Связанный доступ к библиотеке GDBM Связанный доступ к файлам NDBM Связанный доступ к файлам ODBM Связанный доступ к файлам SDBM

Таблица Б. 7. Математика

Модуль

Функция

Integer Math::BigFloat Math::BigInt Math::Complex

Выполняет арифметические операции в целочисленном формате, а не в формате с двойной точностью

Пакет математических операций для чисел с плавающей запятой произвольной длины

Пакет математических операций для целых чисел произвольной длины

Пакет для комплексных чисел

Таблица Б. 8. World Wide Web

Модуль

Функция

CGI

CGI::Apache CGI::Carp CGI::Fast CGI::Push CGI:: Switch

Интерфейс Web-сервера (Common Gateway Interface) Поддержка Perl-модуля сервера Apache Ошибки сервера регистрации с полезной информацией Поддержка FastCGI (устойчивый серверный процесс) Поддержка "выталкивания" со стороны сервера Простой интерфейс для многих типов серверов

Таблица Б. 9. Сети и межпроцессное взаимодействие

Модуль

Функция

1РС::Ореп2

Открывает процесс для чтения и записи

IPC::Open3

Открывает процесс для чтения, записи и обработки ошибок

Net::Ping

Проверяет, есть ли данный хост в сети

Socket

Загружает С-определения socket.h и манипуляторы структур

Sys::Hostname

Пытается получить хост-имя всеми возможными способами

Таблица Б. 10. Автоматизированный доступ к Comprehensive Perl Archive Network

Модуль

Функция

CPAN

Простой интерфейс к CPAN

CPAN::FirstTime

Утилита для создания файла конфигурации CPAN

CPAN::Nox

Запускает CPAN, избегая компилированных расширений

Таблица Б. 11. Время и локализация

Модуль

Функция

Time:: Local

Эффективно определяет местное и среднее гринвичское

 

 

время

I18N::Collate

Сравнивает восьмибитовые скалярные данные

Таблица Б. 12. Объектные интерфейсы к встроенным функциям

Модуль

Функция

Class::Struct

Объявляет struct-подобные типы данных как Perl-классы

File::stat

Объектный интерфейс к функции stat

Net::hostent

Объектный интерфейс к функциям gethost*

Net::netent

Объектный интерфейс к функциям getnet*

Net::protoent

Объектный интерфейс к функциям getproto*

Net::servent

Объектный интерфейс к функциям getserv*

Time::gmtime

Объектный интерфейс к функции gmtime

Time::localtime

Объектный интерфейс к функции localtime

Time::tm

Внутренний объект для Time::{gm,local}time

User::grent

Объектный интерфейс к функциям getgr*

User::pwent

Объектный интерфейс к функциям getpw*

Таблица Б. 13. Для разработчиков: автозагрузка и динамическая загрузка

Модуль

Функция

Autoloader

Загружает функции только по требованию

AutoSplit

Разбивает пакет для автозагрузки

Devel::SelfStubber

Генерирует заглушки для модуля SelfLoading

DynaLoader

Автоматическая динамическая загрузка Perl-модулей

SelfLoader

Загружает функции только по требованию

Таблица Б. 14. Для разработчиков: расширения языка и поддержка разработки платформ

Модуль

Функция

blib

Определяет структуру каталогов blib во время построения модулей

ExtUtils::Embed

Утилиты для встраивания Perl в С-программы

ExtUtils::Install

Инсталлирует файлы

ExtUtils::Liblist

Определяет библиотеки для использования и по

 

 

рядок их использования

ExtUtils:: MakeMaker

Создает Makefile для расширения Perl

ExtUtils: '.Manifest

Утилиты для написания и проверки файла MANIFEST

ExtUtils::Miniperl

Создает С-код для perlmain.c

ExtUtils: :Mkbootstrap

Создает файл самозагрузки для использования модулем DynaLoader

ExtUtils: :Mksymlists

Пишет файлы опций компоновщика для динами

 

 

ческого расширения

ExtUtils: :MMOS2

Методы для отмены UNIX-режима в ExtUtils::MakeMaker

ExtUtils: :MMUnix

Методы, используемые модулем ExtUtils::MakeMaker

ExtUtils::MMVMS

Методы для отмены UNIX-режима в ExtUtils::MakeMaker

ExtUtils: :testlib

Исправляет @INC для использования только что

 

 

созданного расширения

Opcode

Блокирует коды операций при компиляции Perl-

 

кода

ops

Прагма для использования с модулем Opcode

POSIX

Интерфейс к стандарту IEEE 1003.1

Safe

Создает защищенные пространства имен для оценки Perl-кода

Test:: Harness

Выполняет стандартные тестовые Perl-сценарии со сбором статистических данных

vmsish

Обеспечивает возможности, характерные для VMS

Таблица Б. 15. Для разработчиков: поддержка объектно-ориентированного программирования

Модуль

Функция

Exporter

Стандартный метод импорта для модулей

overload

Перегружает математические операции Perl

Tie::RefHash

Базовый класс для связанных хешей со ссылками в

 

 

качестве ключей

Tie:: Hash

Содержит определения базового класса для связанных хешей

Tie:: Scalar

Содержит определения базового класса для связанных

 

 

скаляров

Tie::StdHash

Содержит определения базового класса для связанных хешей

Tie::StdScalar

Содержит определения базового класса для связанных

 

 

скаляров

Tie::SubstrHash

Обеспечивает хеширование с фиксированным размером таблицы и фиксированной длиной ключей

UNIVERSAL

Базовый класс для всех классов

 

CPAN: не только стандартная библиотека

Если вы не можете найти в стандартной библиотеке модуль, соответствующий вашим потребностям, все равно существует вероятность, что кто-то уже написал код, который будет вам полезен. Есть много превосходных библиотечных модулей, которые не включены в стандартный дистрибутив по различным причинам практического, политического и вздорного характера. Чтобы выяснить, что есть в наличии, можно заглянуть в Comprehensive Perl Archive Network (CPAN). 0 CPAN мы говорили в предисловии.

Вот основные категории модулей, которые можно получить из CPAN:

Модуль формата листинга.

Базовые модули Perl, расширения языка и средства документирования.

Модули, обеспечивающие поддержку разработки.

Интерфейсы операционных систем.

Организация сетей, управление устройствами (модемами) и межпроцес-сное взаимодействие.

Типы данных и утилиты для типов данных.

Интерфейсы баз данных.

Пользовательские интерфейсы.

Интерфейсы к другим языкам программирования и средства эмуляции этих языков.

Имена файлов, файловые системы и блокировки файлов (см. также дескрипторы файлов).

Обработка строк, обработка текстов, синтаксический анализ и поиск.

Обработка опций, аргументов, параметров и файлов конфигурации.

Интернационализация и локализация.

Аутентификация, защита и шифрование.

World Wide Web, HTML, HTTP, CGI, MIME.

Серверные утилиты и демоны.

Архивирование, сжатие и преобразование.

Изображения, манипулирование картами пикселей и растрами, рисование и построение графиков.

Электронная почта и телеконференции Usenet.

Утилиты управления потоком (обратные вызовы и исключительные ситуации).

Утилиты для работы с дескрипторами файлов, дескрипторами каталогов и потоками ввода-вывода.

Модули для Microsoft Windows.

Прочие модули.




|     Назад     |     Вперед     |


| Содержание | Предисловие | Введение | Ссылки
| Глава 1 | Глава 2 | Глава 3 | Глава 4 | Глава 5 | Глава 6 | Глава 7 | Глава 8 | Глава 9 | Глава 10
| Глава 11 | Глава 12 | Глава 13 | Глава 14 | Глава 15 | Глава 16 | Глава 17 | Глава 18 | Глава 19
| Приложение А | Приложение Б | Приложение В | Приложение Г |