perlmodlib
СОДЕРЖАНИЕ
НАЗВАНИЕ
perlmodlib - создание новых модулей Perl и поиск существующих
БИБЛИОТЕКА МОДУЛЕЙ PERL
Во многих дистрибутивах Perl включены модули. Они описаны ниже и все заканчиваются на .pm. Вы можете обнаружить скомпилированные библиотечные файлы (обычно заканчивающиеся на .so) или небольшие фрагменты модулей для автоматической загрузки (заканчивающиеся на .al); они были автоматически сгенерированы процессом установки. Вы также можете обнаружить файлы в каталоге библиотеки, которые заканчиваются на .pl или .ph. Это старые библиотеки, предоставляемые для того, чтобы старые программы, использующие их, по-прежнему работали. Файлы .pl со временем будут преобразованы в стандартные модули, а файлы .ph, созданные h2ph, скорее всего, превратятся в модули расширения, созданные h2xs. (Некоторые значения .ph могут уже быть доступны через модули POSIX, Errno или Fcntl.) Файл pl2pm в дистрибутиве может помочь в преобразовании, но это просто механический процесс и поэтому далёк от идеального.
Прагматические модули
Они работают примерно так же, как директивы компилятора (прагмы), поскольку они влияют на компиляцию вашей программы и, следовательно, обычно хорошо работают только при использовании внутри use, или no. Большинство из них обладают лексической областью действия, поэтому внутренний BLOCK может отменить их, сказав:
no integer;
no strict 'refs';
no warnings; что длится до конца этого BLOCK.
Некоторые прагмы обладают лексической областью действия — обычно те, которые влияют на $^H переменную hints. Другие влияют на текущий пакет, например use vars и use subs, которые позволяют предварительно объявить переменные или подпрограммы в определённом файле, а не только в блоке. Такие объявления действуют для всего файла, для которого они были объявлены. Вы не можете отменить их с помощью no vars или no subs.
Ниже приведены определённые прагмы (и их собственная документация).
- attributes
-
Получение/установка атрибутов подпрограмм или переменных
- autodie
-
Замена функций на функции, которые либо завершаются успешно, либо вызывают ошибку с лексической областью действия
- autodie::exception
-
Исключения из функций autodie.
- autodie::exception::system
-
Исключения из функций autodie system().
- autodie::hints
-
Предоставление подсказок о пользовательских подпрограммах для autodie
- autodie::skip
-
Пропуск пакета при генерации исключений autodie
- autouse
-
Отложить загрузку модулей до использования функции
- base
-
Установление отношений ISA с базовыми классами во время компиляции
- bigfloat
-
Поддержка чисел с плавающей точкой большой разрядности для Perl
- bigint
-
Поддержка целых чисел большой разрядности для Perl
- bignum
-
Поддержка больших чисел для Perl
- bigrat
-
Поддержка рациональных чисел большой разрядности для Perl
- blib
-
Использование неинсталлированной версии пакета MakeMaker
- builtin
-
Импорт встроенных служебных функций
- bytes
-
Доступ к отдельным байтам символов
- charnames
-
Доступ к именам символов Unicode и именованным последовательностям символов; также определяет имена символов
- constant
-
Объявление констант
- deprecate
-
Прагма Perl для отмены включения модуля в ядро
- diagnostics
-
Выдача подробных диагностических сообщений об ошибках
- encoding
-
Позволяет записывать скрипт в кодировках, отличных от ASCII и UTF-8
- encoding::warnings
-
Выдача предупреждений об неявных преобразованиях кодировок
- experimental
-
Экспериментальные функции сделаны простыми
- feature
-
Включение новых функций
- fields
-
Поля класса во время компиляции
- filetest
-
Управление операторами разрешений filetest
- if
-
useмодуль Perl, если выполняется условие - integer
-
Использование целочисленной арифметики вместо арифметики с плавающей точкой
- less
-
Запрос меньшего значения
- lib
-
Управление @INC во время компиляции
- locale
-
Использование или избегание POSIX локалей для встроенных операций
- mro
-
Порядок разрешения методов
- ok
-
Альтернатива Test::More::use_ok
- open
-
Установление стандартных слоёв PerlIO для ввода и вывода
- ops
-
Ограничение небезопасных операций при компиляции
- overload
-
Пакет для перегрузки операций Perl
- overloading
-
Лексическое управление перегрузкой
- parent
-
Установление отношений ISA с базовыми классами во время компиляции
- re
-
Изменение поведения регулярных выражений
- sigtrap
-
Включение простого обработки сигналов
- sort
-
Управление поведением sort()
- strict
-
Ограничение небезопасных конструкций
- subs
-
Предварительное объявление имён подпрограмм
- threads
-
Потоки интерпретатора Perl
-
Расширение Perl для совместного использования структур данных между потоками
- utf8
-
Включение/отключение UTF-8 (или UTF-EBCDIC) в исходном коде
- vars
-
Предварительное объявление имён глобальных переменных
- version
-
Расширение Perl для объектов Version
- vmsish
-
Управление функциями языка, специфичными для VMS
- warnings
-
Управление необязательными предупреждениями
- warnings::register
-
Функция импорта предупреждений
Стандартные модули
Стандартные, включённые модули, должны вести себя предсказуемо по отношению к загрязнению пространства имён, потому что они используют модуль Exporter. Подробности см. в их собственной документации.
Возможно, не все перечисленные ниже модули установлены на вашей системе. Например, модуль GDBM_File не будет установлен, если у вас нет библиотеки gdbm.
- Amiga::ARexx
-
Расширение Perl для поддержки ARexx
- Amiga::Exec
-
Расширение Perl для низкоуровневой поддержки Amiga
- AnyDBM_File
-
Предоставляет основу для работы с несколькими базами данных
- App::Cpan
-
Легко взаимодействуйте с CPAN из командной строки
- App::Prove
-
Реализует команду
prove. - App::Prove::State
-
Хранение состояния для команды
prove. - App::Prove::State::Result
-
Результаты отдельного набора тестов.
- App::Prove::State::Result::Test
-
Результаты отдельных тестов.
- Archive::Tar
-
Модуль для работы с архивами tar
- Archive::Tar::File
-
Подкласс для извлечения файла из памяти из Archive::Tar
- Attribute::Handlers
-
Более простое определение обработчиков атрибутов
- AutoLoader
-
Загрузка подпрограмм только по требованию
- AutoSplit
-
Разделение пакета для автозагрузки
- B
-
Задний конец компилятора Perl
- B::Concise
-
Проход по дереву синтаксиса Perl, вывод краткой информации об операциях
- B::Deparse
-
Задний конец компилятора Perl для создания кода Perl
- B::Op_private
-
Определения флага оператора op_private
- B::Showlex
-
Отображение лексических переменных, используемых в функциях или файлах
- B::Terse
-
Проход по дереву синтаксиса Perl, вывод краткой информации об операциях
- B::Xref
-
Генерирует отчеты о перекрестных ссылках для программ Perl
- Benchmark
-
Измерение времени выполнения кода Perl
-
IO::Socket::IP -
Семейно-нейтральный сокет IP, поддерживающий как IPv4, так и IPv6
Socket-
Сетевые константы и вспомогательные функции
- CORE
-
Имя пространства для основных процедур Perl
- CPAN
-
Запрос, загрузка и построение модулей Perl из сайтов CPAN
- CPAN::API::HOWTO
-
Справочник по программированию с CPAN.pm
- CPAN::Debug
-
Внутренняя отладка для CPAN.pm
- CPAN::Distroprefs
-
Чтение и соответствие distroprefs
- CPAN::FirstTime
-
Утилита для инициализации файла CPAN::Config
- CPAN::HandleConfig
-
Внутреннее управление конфигурацией для CPAN.pm
- CPAN::Kwalify
-
Интерфейс между CPAN.pm и Kwalify.pm
- CPAN::Meta
-
Метаданные о дистрибутиве CPAN
- CPAN::Meta::Converter
-
Преобразование структур метаданных распределения CPAN
- CPAN::Meta::Feature
-
Необязательная функция, предоставляемая дистрибутивом CPAN
- CPAN::Meta::History
-
История изменений спецификации CPAN Meta
- CPAN::Meta::History::Meta_1_0
-
Спецификация метаданных версии 1.0 для META.yml
- CPAN::Meta::History::Meta_1_1
-
Спецификация метаданных версии 1.1 для META.yml
- CPAN::Meta::History::Meta_1_2
-
Спецификация метаданных версии 1.2 для META.yml
- CPAN::Meta::History::Meta_1_3
-
Спецификация метаданных версии 1.3 для META.yml
- CPAN::Meta::History::Meta_1_4
-
Спецификация метаданных версии 1.4 для META.yml
- CPAN::Meta::Merge
-
Слияние фрагментов метаданных CPAN
- CPAN::Meta::Prereqs
-
Набор предварительных требований к дистрибутиву по фазе и типу
- CPAN::Meta::Requirements
-
Набор требований к версии для дистрибутива CPAN
- CPAN::Meta::Spec
-
Спецификация метаданных дистрибутива CPAN
- CPAN::Meta::Validator
-
Проверка структур метаданных распределения CPAN
- CPAN::Meta::YAML
-
Чтение и запись подмножества YAML для файлов CPAN Meta
- CPAN::Nox
-
Обёртка вокруг CPAN.pm без использования модулей XS
- CPAN::Plugin
-
Базовый класс для расширений оболочки CPAN
- CPAN::Plugin::Specfile
-
Пример реализации тривиального CPAN::Plugin
- CPAN::Queue
-
Внутренняя поддержка очереди для CPAN.pm
- CPAN::Tarzip
-
Внутреннее управление архивами tar для CPAN.pm
- CPAN::Version
-
Вспомогательные функции для сравнения версий CPAN
- Carp
-
Альтернативные warn и die для модулей
- Class::Struct
-
Объявлять структуры данных как классы Perl
- Compress::Raw::Bzip2
-
Интерфейс низкого уровня к библиотеке сжатия bzip2
- Compress::Raw::Zlib
-
Интерфейс низкого уровня к библиотеке сжатия zlib
- Compress::Zlib
-
Интерфейс к библиотеке сжатия zlib
- Config
-
Доступ к информации о конфигурации Perl
- Config::Extensions
-
Поиск хэша, какие основные расширения были скомпилированы.
- Config::Perl::V
-
Структурированный доступ к выводу perl -V
- Cwd
-
Получение пути текущего каталога
- DB
-
Программный интерфейс к API отладки Perl
- DBM_Filter
-
Фильтр ключей/значений DBM
- DBM_Filter::compress
-
Фильтр для DBM_Filter
- DBM_Filter::encode
-
Фильтр для DBM_Filter
- DBM_Filter::int32
-
Фильтр для DBM_Filter
- DBM_Filter::null
-
Фильтр для DBM_Filter
- DBM_Filter::utf8
-
Фильтр для DBM_Filter
- DB_File
-
Доступ Perl5 к Berkeley DB версии 1.x
- Data::Dumper
-
Представление структур данных Perl в виде строк, подходящее для вывода и
eval - Devel::PPPort
-
Perl/Загрязнение/Переносимость
- Devel::Peek
-
Инструмент отладки данных для программистов на XS
- Devel::SelfStubber
-
Генерация заглушек для модуля SelfLoading
- Digest
-
Модули, вычисляющие дайджесты сообщений
- Digest::MD5
-
Интерфейс Perl к алгоритму MD5
- Digest::SHA
-
Расширение Perl для SHA-1/224/256/384/512
- Digest::base
-
Базовый класс Digest
- Digest::file
-
Вычисление дайджестов файлов
- DirHandle
-
(устарело) методы объекта для обработчиков каталогов
- Dumpvalue
-
Предоставляет экранный вывод данных Perl.
- DynaLoader
-
Динамическая загрузка библиотек C в код Perl
- Encode
-
Кодировки символов в Perl
- Encode::Alias
-
Определения псевдонимов кодировок
- Encode::Byte
-
Кодировки одного байта
- Encode::CJKConstants
-
Внутреннее использование Encode::??::ISO_2022_*
- Encode::CN
-
Кодировки китайского языка на основе Китая
- Encode::CN::HZ
-
Внутреннее использование Encode::CN
- Encode::Config
-
Внутреннее использование Encode
- Encode::EBCDIC
-
Кодировки EBCDIC
- Encode::Encoder
-
Объектно-ориентированный кодер
- Encode::Encoding
-
Базовый класс реализации Encode
- Encode::GSM0338
-
Кодировка ETSI GSM 03.38
- Encode::Guess
-
Угадывает кодировку из данных
- Encode::JP
-
Японские кодировки
- Encode::JP::H2Z
-
Внутреннее использование Encode::JP::2022_JP*
- Encode::JP::JIS7
-
Внутреннее использование Encode::JP
- Encode::KR
-
Корейские кодировки
- Encode::KR::2022_KR
-
Внутреннее использование Encode::KR
- Encode::MIME::Header
-
MIME кодирование для неструктурированного заголовка электронной почты
- Encode::MIME::Name
-
Внутреннее использование Encode
- Encode::PerlIO
-
Подробный документ о Encode и PerlIO
- Encode::Supported
-
Поддерживаемые Encode кодировки
- Encode::Symbol
-
Кодировки символов
- Encode::TW
-
Кодировки китайского языка на основе Тайваня
- Encode::Unicode
-
Различные форматы преобразования Unicode
- Encode::Unicode::UTF7
-
Кодировка UTF-7
- English
-
Использование понятных английских (или awk) названий для ужасных переменных с пунктуацией
- Env
-
Модуль Perl, который импортирует переменные окружения как скаляры или массивы
- Errno
-
Системные константы errno
- Exporter
-
Реализует метод импорта по умолчанию для модулей
- Exporter::Heavy
-
Внутренности Exporter
- ExtUtils::CBuilder
-
Компиляция и компоновка кода C для модулей Perl
- ExtUtils::CBuilder::Platform::Windows
-
Класс билдера для платформ Windows
- ExtUtils::Command
-
Утилиты для замены общих команд UNIX в файлах Make и т. д.
- ExtUtils::Command::MM
-
Команды для использования MM в файлах Make
- ExtUtils::Constant
-
Генерация кода XS для импорта констант из заголовков C
- ExtUtils::Constant::Base
-
Базовый класс для объектов ExtUtils::Constant
- ExtUtils::Constant::Utils
-
Вспомогательные функции для ExtUtils::Constant
- ExtUtils::Constant::XS
-
Генерировать C-код для констант модулей XS.
- ExtUtils::Embed
-
Утилиты для встраивания Perl в приложения C/C++
- ExtUtils::Install
-
Установка файлов из одной точки в другую
- ExtUtils::Installed
-
Управление инвентарём установленных модулей
- ExtUtils::Liblist
-
Определение библиотек для использования и способа их использования
- ExtUtils::MM
-
Подклас ExtUtils::MakeMaker, адаптированный под операционную систему
- ExtUtils::MM_AIX
-
Подклас ExtUtils::MM_Unix, специфичный для AIX
- ExtUtils::MM_Any
-
Методы ExtUtils::MM, не зависящие от платформы
- ExtUtils::MM_BeOS
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- ExtUtils::MM_Cygwin
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- ExtUtils::MM_DOS
-
Подклас ExtUtils::MM_Unix, специфичный для DOS
- ExtUtils::MM_Darwin
-
Специальное поведение для OS X
- ExtUtils::MM_MacOS
-
Ранее генерировались Makefiles для MacOS Classic
- ExtUtils::MM_NW5
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- ExtUtils::MM_OS2
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- ExtUtils::MM_OS390
-
Подклас ExtUtils::MM_Unix, специфичный для OS390
- ExtUtils::MM_QNX
-
Подклас ExtUtils::MM_Unix, специфичный для QNX
- ExtUtils::MM_UWIN
-
Подклас ExtUtils::MM_Unix, специфичный для U/WIN
- ExtUtils::MM_Unix
-
Методы, используемые ExtUtils::MakeMaker
- ExtUtils::MM_VMS
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- ExtUtils::MM_VOS
-
Подклас ExtUtils::MM_Unix, специфичный для VOS
- ExtUtils::MM_Win32
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- ExtUtils::MM_Win95
-
Метод для настройки MakeMaker для Win9X
- ExtUtils::MY
-
Подклас ExtUtils::MakeMaker для настройки
- ExtUtils::MakeMaker
-
Создать Makefile для модуля
- ExtUtils::MakeMaker::Config
-
Обёртка над Config.pm
- ExtUtils::MakeMaker::FAQ
-
Часто задаваемые вопросы о MakeMaker
- ExtUtils::MakeMaker::Locale
-
Встроенный Encode::Locale
- ExtUtils::MakeMaker::Tutorial
-
Создание модуля с помощью MakeMaker
- ExtUtils::Manifest
-
Утилиты для создания и проверки файла MANIFEST
- ExtUtils::Miniperl
-
Написать C-код для miniperlmain.c и perlmain.c
- ExtUtils::Mkbootstrap
-
Создать файл начальной загрузки для использования DynaLoader
- ExtUtils::Mksymlists
-
Создание файлов опций компоновщика для динамических расширений
- ExtUtils::PL2Bat
-
Создание файла пакетной обработки для запуска скриптов Perl на Windows
- ExtUtils::Packlist
-
Управление файлами .packlist
- ExtUtils::ParseXS
-
Преобразование кода Perl XS в C-код
- ExtUtils::ParseXS::Constants
-
Начальные значения для некоторых глобальных переменных
- ExtUtils::ParseXS::Eval
-
Чистая область для оценки кода
- ExtUtils::ParseXS::Utilities
-
Подпрограммы, используемые с ExtUtils::ParseXS
- ExtUtils::Typemaps
-
Чтение/Запись/Изменение файлов typemap Perl/XS
- ExtUtils::Typemaps::Cmd
-
Быстрые команды для обработки typemap
- ExtUtils::Typemaps::InputMap
-
Элемент в разделе INPUT typemap
- ExtUtils::Typemaps::OutputMap
-
Элемент в разделе OUTPUT typemap
- ExtUtils::Typemaps::Type
-
Элемент в разделе TYPEMAP typemap
- ExtUtils::XSSymSet
-
Поддержание наборов имён символов, подходящих для компоновщика VMS
- ExtUtils::testlib
-
Добавление каталогов blib/* в @INC
- Fatal
-
Замена функций эквивалентами, которые либо завершаются успешно, либо с ошибкой
- Fcntl
-
Загрузка определений C Fcntl.h
- File::Basename
-
Разбор путей к файлам на директорию, имя файла и расширение.
- File::Compare
-
Сравнение файлов или дескрипторов файлов
- File::Copy
-
Копирование файлов или дескрипторов файлов
- File::DosGlob
-
Глоббин как в DOS, а также кое-что ещё
- File::Fetch
-
Общие механизм получения файлов
- File::Find
-
Обход дерева каталогов.
- File::Glob
-
Perl-расширение для BSD glob
- File::GlobMapper
-
Расширение File Glob, позволяющее использовать файлы ввода и вывода
- File::Path
-
Создание или удаление деревьев каталогов
- File::Spec
-
Переносимое выполнение операций с именами файлов
- File::Spec::AmigaOS
-
File::Spec для AmigaOS
- File::Spec::Cygwin
-
Методы для спецификаций файлов Cygwin
- File::Spec::Epoc
-
Методы для спецификаций файлов Epoc
- File::Spec::Functions
-
Переносимое выполнение операций с именами файлов
- File::Spec::Mac
-
File::Spec для Mac OS (Classic)
- File::Spec::OS2
-
Методы для спецификаций файлов OS/2
- File::Spec::Unix
-
File::Spec для Unix, основа для других модулей File::Spec
- File::Spec::VMS
-
Методы для спецификаций файлов VMS
- File::Spec::Win32
-
Методы для спецификаций файлов Win32
- File::Temp
-
Безопасное получение имени и дескриптора временного файла
- File::stat
-
Интерфейс по имени к встроенным функциям Perl stat()
- FileCache
-
Удержание большего количества файлов открытыми, чем позволяет система
- FileHandle
-
Предоставление методов объектов для дескрипторов файлов
- Filter::Simple
-
Упрощённое фильтрация исходного кода
- Filter::Util::Call
-
Утилитарный модуль для Perl Source Filter
- FindBin
-
Определение директории исходного скрипта Perl
- GDBM_File
-
Доступ к библиотеке gdbm из Perl5.
- Getopt::Long
-
Расширенная обработка командных параметров
- Getopt::Std
-
Обработка односимвольных ключей с группировкой
- HTTP::Tiny
-
Небольшой, простой и корректный клиент HTTP/1.1
- Hash::Util
-
Набор общих утилит для хэшей
- Hash::Util::FieldHash
-
Поддержка классов «Inside-Out»
- I18N::Collate
-
Сравнение данных 8-битных скаляров в соответствии с текущей локалью
- I18N::LangTags
-
Функции для работы с тегами языков в формате RFC3066
- I18N::LangTags::Detect
-
Обнаружение предпочтений языка пользователя
- I18N::LangTags::List
-
Теги и имена языков
- I18N::Langinfo
-
Запрос информации о локали
- IO
-
Загрузка различных модулей IO
- IO::Compress::Base
-
Базовый класс для модулей IO::Compress
- IO::Compress::Bzip2
-
Запись файлов/буферов bzip2
- IO::Compress::Deflate
-
Запись файлов/буферов RFC 1950
- IO::Compress::FAQ
-
Часто задаваемые вопросы об IO::Compress
- IO::Compress::Gzip
-
Запись файлов/буферов RFC 1952
- IO::Compress::RawDeflate
-
Запись файлов/буферов RFC 1951
- IO::Compress::Zip
-
Запись файлов/буферов zip
- IO::Dir
-
Предоставление методов объектов для дескрипторов каталогов
- IO::File
-
Предоставление методов объектов для дескрипторов файлов
- IO::Handle
-
Предоставление методов объектов для дескрипторов ввода/вывода
- IO::Pipe
-
Предоставление методов объектов для каналов
- IO::Poll
-
Объектно-ориентированный интерфейс к системному вызову poll
- IO::Seekable
-
Предоставление методов с поддержкой поиска для объектов ввода/вывода
- IO::Select
-
Объектно-ориентированный интерфейс к системному вызову select
- IO::Socket
-
Объектно-ориентированный интерфейс к сокетам
- IO::Socket::INET
-
Объектно-ориентированный интерфейс для сокетов AF_INET
- IO::Socket::UNIX
-
Объектно-ориентированный интерфейс для сокетов AF_UNIX
- IO::Uncompress::AnyInflate
-
Разархивирование файлов/буферов на основе zlib (zip, gzip)
- IO::Uncompress::AnyUncompress
-
Разархивирование файлов/буферов gzip, zip, bzip2, zstd, xz, lzma, lzip, lzf или lzop
- IO::Uncompress::Base
-
Базовый класс для модулей IO::Uncompress
- IO::Uncompress::Bunzip2
-
Чтение файлов/буферов bzip2
- IO::Uncompress::Gunzip
-
Чтение файлов/буферов RFC 1952
- IO::Uncompress::Inflate
-
Чтение файлов/буферов RFC 1950
- IO::Uncompress::RawInflate
-
Чтение файлов/буферов RFC 1951
- IO::Uncompress::Unzip
-
Чтение zip-файлов/буферов
- IO::Zlib
-
Интерфейс в стиле IO:: к Compress::Zlib
- IPC::Cmd
-
Упрощение поиска и запуска системных команд
- IPC::Msg
-
Класс объекта IPC SysV Msg
- IPC::Open2
-
Открытие процесса для чтения и записи с использованием open2()
- IPC::Open3
-
Открытие процесса для чтения, записи и обработки ошибок с использованием open3()
- IPC::Semaphore
-
Класс объекта IPC SysV Semaphore
-
Класс объекта IPC SysV Shared Memory
- IPC::SysV
-
Константы и системные вызовы IPC System V
- Internals
-
Зарезервированное специальное пространство имен для внутренних функций, связанных с ...
- JSON::PP
-
Чисто-Perl модуль, совместимый с JSON::XS.
- JSON::PP::Boolean
-
Модуль-заглушка, предоставляющий JSON::PP::Boolean
- List::Util
-
Набор общих подпрограмм для работы со списками
- List::Util::XS
-
Указывает, был ли List::Util скомпилирован с компилятором C
- Locale::Maketext
-
Фреймворк для локализации
- Locale::Maketext::Cookbook
-
Рецепты для использования Locale::Maketext
- Locale::Maketext::Guts
-
Устаревший модуль для загрузки кода Locale::Maketext utf8
- Locale::Maketext::GutsLoader
-
Устаревший модуль для загрузки кода Locale::Maketext utf8
- Locale::Maketext::Simple
-
Простой интерфейс к Locale::Maketext::Lexicon
- Locale::Maketext::TPJ13
-
Статья о локализации программного обеспечения
- MIME::Base64
-
Кодирование и декодирование строк base64
- MIME::QuotedPrint
-
Кодирование и декодирование строк quoted-printable
- Math::BigFloat
-
Пакет для работы с числами с плавающей точкой произвольной длины
- Math::BigInt
-
Пакет для работы с целыми числами произвольной длины
- Math::BigInt::Calc
-
Чисто-Perl модуль для поддержки Math::BigInt
- Math::BigInt::FastCalc
-
Math::BigInt::Calc с некоторыми XS для большей скорости
- Math::BigInt::Lib
-
Виртуальный базовый класс для библиотек Math::BigInt
- Math::BigRat
-
Пакет для работы с рациональными числами произвольной длины
- Math::Complex
-
Комплексные числа и связанные с ними математические функции
- Math::Trig
-
Тригонометрические функции
- Memoize
-
Ускорение функций за счет обмена памяти на время
- Memoize::AnyDBM_File
-
Модуль-связующее звено, обеспечивающее EXISTS для AnyDBM_File для использования с Storable
- Memoize::Expire
-
Модуль-вставка для автоматического истечения срока действия кэшированных значений
- Memoize::ExpireFile
-
Тест семантики истечения срока действия Memoize
- Memoize::ExpireTest
-
Тест семантики истечения срока действия Memoize
- Memoize::NDBM_File
-
Модуль-связующее звено, обеспечивающее EXISTS для NDBM_File для использования с Storable
- Memoize::SDBM_File
-
Модуль-связующее звено, обеспечивающее EXISTS для SDBM_File для использования с Storable
- Memoize::Storable
-
Хранение кэшированных данных в базе данных Storable
- Module::CoreList
-
Какие модули поставлялись с версиями perl
- Module::CoreList::Utils
-
Какие утилиты поставлялись с версиями perl
- Module::Load
-
Динамическая загрузка модулей и файлов
- Module::Load::Conditional
-
Поиск информации о модулях/загрузка во время выполнения
- Module::Loaded
-
Пометка модулей как загруженных или разгруженных
- Module::Metadata
-
Сбор информации о пакете и POD из файлов perl-модулей
- NDBM_File
-
Связанный доступ к файлам ndbm
- NEXT
-
Предоставление псевдо-класса NEXT (и др.), что позволяет перенаправлять методы
- Net::Cmd
-
Класс сетевой команды (используемый FTP, SMTP и т.д.)
- Net::Config
-
Локальные данные конфигурации для libnet
- Net::Domain
-
Попытка определить имя и домен текущего хоста в интернете
- Net::FTP
-
Класс клиента FTP
- Net::FTP::dataconn
-
Класс подключения к данным клиента FTP
- Net::NNTP
-
Класс клиента NNTP
- Net::Netrc
-
Интерфейс OO к файлу netrc пользователя
- Net::POP3
-
Класс клиента Post Office Protocol 3 (RFC1939)
- Net::Ping
-
Проверка доступности удаленного хоста
- Net::SMTP
-
Клиент Simple Mail Transfer Protocol
- Net::Time
-
Интерфейс сетевого клиента для времени и времени суток
- Net::hostent
-
Интерфейс по имени к встроенным функциям Perl gethost*()
- Net::libnetFAQ
-
Часто задаваемые вопросы о libnet
- Net::netent
-
Интерфейс по имени к встроенным функциям Perl getnet*()
- Net::protoent
-
Интерфейс по имени к встроенным функциям Perl getproto*()
- Net::servent
-
Интерфейс по имени к встроенным функциям Perl getserv*()
- O
-
Общий интерфейс к backends компилятора Perl
- ODBM_File
-
Связанный доступ к файлам odbm
- Opcode
-
Отключение именованных opcodes при компиляции кода perl
- POSIX
-
Perl-интерфейс к IEEE Std 1003.1
- Params::Check
-
Общий механизм разбора и проверки входных данных.
- Parse::CPAN::Meta
-
Разбор файлов метаданных CPAN META.yml и META.json
- Perl::OSType
-
Сопоставление имен операционных систем Perl к общим типам
- PerlIO
-
Загрузчик по требованию для слоев PerlIO и корень пространства имен PerlIO::*
- PerlIO::encoding
-
Слой кодирования
- PerlIO::mmap
-
IO с отображением в памяти
- PerlIO::scalar
-
IO в памяти, скалярное IO
- PerlIO::via
-
Вспомогательный класс для слоев PerlIO, реализованных в Perl
- PerlIO::via::QuotedPrint
-
Слой PerlIO для строк quoted-printable
- Pod::Checker
-
Проверка документов pod на синтаксические ошибки
- Pod::Escapes
-
Для обработки последовательностей Pod E<...>
- Pod::Functions
-
Группировка функций Perl по типу perlfunc.pod
- Pod::Html
-
Модуль для преобразования файлов pod в HTML
- Pod::Html::Util
-
Вспомогательные функции для Pod-Html
- Pod::Man
-
Преобразование данных POD в отформатированный ввод *roff
- Pod::ParseLink
-
Разбор кода форматирования L<> в тексте POD
- Pod::Perldoc
-
Поиск документации Perl в формате POD.
- Pod::Perldoc::BaseTo
-
Базовый класс для форматировщиков Pod::Perldoc
- Pod::Perldoc::GetOptsOO
-
Настраиваемый анализатор опций для Pod::Perldoc
- Pod::Perldoc::ToANSI
-
Вывод Pod с ANSI цветовыми кодами
- Pod::Perldoc::ToChecker
-
Позволяет Perldoc проверять Pod на ошибки
- Pod::Perldoc::ToMan
-
Позволяет Perldoc выводить Pod как man-страницы
- Pod::Perldoc::ToNroff
-
Позволяет Perldoc преобразовать Pod в nroff
- Pod::Perldoc::ToPod
-
Позволяет Perldoc выводить Pod как ... Pod!
- Pod::Perldoc::ToRtf
-
Позволяет Perldoc выводить Pod как RTF
- Pod::Perldoc::ToTerm
-
Вывод Pod с кодами терминала
- Pod::Perldoc::ToText
-
Позволяет Perldoc выводить Pod как обычный текст
- Pod::Perldoc::ToTk
-
Позволяет Perldoc использовать Tk::Pod для вывода Pod
- Pod::Perldoc::ToXml
-
Позволяет Perldoc выводить Pod как XML
- Pod::Simple
-
Фреймворк для разбора Pod
- Pod::Simple::Checker
-
Проверка синтаксиса документа Pod
- Pod::Simple::Debug
-
Переключить Pod::Simple в режим трассировки/отладки
- Pod::Simple::DumpAsText
-
Вывод событий парсинга Pod как текста
- Pod::Simple::DumpAsXML
-
Преобразование Pod в XML
- Pod::Simple::HTML
-
Преобразование Pod в HTML
- Pod::Simple::HTMLBatch
-
Преобразование нескольких файлов Pod в несколько HTML-файлов
- Pod::Simple::JustPod
-
Только Pod, весь Pod и ничего кроме Pod
- Pod::Simple::LinkSection
-
Представление атрибутов "раздел" кодов L
- Pod::Simple::Methody
-
Преобразование событий Pod::Simple в вызовы методов
- Pod::Simple::PullParser
-
Интерфейс pull-парсера для парсинга Pod
- Pod::Simple::PullParserEndToken
-
Конечные токены из Pod::Simple::PullParser
- Pod::Simple::PullParserStartToken
-
Начальные токены из Pod::Simple::PullParser
- Pod::Simple::PullParserTextToken
-
Текстовые токены из Pod::Simple::PullParser
- Pod::Simple::PullParserToken
-
Токены из Pod::Simple::PullParser
- Pod::Simple::RTF
-
Форматирование Pod как RTF
- Pod::Simple::Search
-
Поиск документов POD в дереве каталогов
- Pod::Simple::SimpleTree
-
Разбор Pod в простое дерево разбора
- Pod::Simple::Subclassing
-
Написать форматер как подкласс Pod::Simple
- Pod::Simple::Text
-
Форматирование Pod как обычного текста
- Pod::Simple::TextContent
-
Получение текстового содержимого Pod
- Pod::Simple::XHTML
-
Форматирование Pod как валидного XHTML
- Pod::Simple::XMLOutStream
-
Преобразование Pod в XML
- Pod::Text
-
Преобразование данных POD в форматированный текст
- Pod::Text::Color
-
Преобразование данных POD в форматированный цветной текст ASCII
- Pod::Text::Overstrike
-
Преобразование данных POD в форматированный текст с перечеркиванием
- Pod::Text::Termcap
-
Преобразование данных POD в текст ASCII с экранированием формата
- Pod::Usage
-
Извлечение документации POD и отображение информации о применении
- SDBM_File
-
Связанный доступ к файлам sdbm
- Safe
-
Компиляция и выполнение кода в ограниченных отсеках
- Scalar::Util
-
Выборка общих подпрограмм для скалярных переменных
- Search::Dict
-
Поиск ключа в словаре файлов
- SelectSaver
-
Сохранение и восстановление выбранного файлового дескриптора
- SelfLoader
-
Загрузка функций только по мере необходимости
- Storable
-
Сохранение данных структур Perl
- Sub::Util
-
Выборка служебных подпрограмм для подпрограмм и ссылок CODE
- Symbol
-
Работа с символами Perl и их именами
- Sys::Hostname
-
Попытка получить имя хоста всеми возможными способами
- Sys::Syslog
-
Интерфейс Perl к вызовам UNIX syslog(3)
- Sys::Syslog::Win32
-
Поддержка Win32 для Sys::Syslog
- TAP::Base
-
Базовый класс, предоставляющий общие функции для TAP::Parser
- TAP::Formatter::Base
-
Базовый класс для делегатов вывода гарнесса
- TAP::Formatter::Color
-
Запуск скриптов тестов Perl с цветом
- TAP::Formatter::Console
-
Делегат вывода гарнесса для стандартного консольного вывода
- TAP::Formatter::Console::ParallelSession
-
Делегат вывода гарнесса для параллельного консольного вывода
- TAP::Formatter::Console::Session
-
Делегат вывода гарнесса для стандартного консольного вывода
- TAP::Formatter::File
-
Делегат вывода гарнесса для вывода в файл
- TAP::Formatter::File::Session
-
Делегат вывода гарнесса для вывода в файл
- TAP::Formatter::Session
-
Абстрактный базовый класс для делегатов вывода гарнесса
- TAP::Harness
-
Запуск скриптов тестов со статистикой
- TAP::Harness::Env
-
Парсинг переменных среды, относящихся к гарнессу, где это уместно
- TAP::Object
-
Базовый класс, предоставляющий общие функции для всех
TAP::*модулей - TAP::Parser
-
Разбор выходных данных TAP
- TAP::Parser::Aggregator
-
Агрегирование результатов TAP::Parser
- TAP::Parser::Grammar
-
Грамматика для Протокола тестирования чего угодно.
- TAP::Parser::Iterator
-
Базовый класс для итераторов источников TAP
- TAP::Parser::Iterator::Array
-
Итератор для массивно-ориентированных источников TAP
- TAP::Parser::Iterator::Process
-
Итератор для источников TAP на основе процессов
- TAP::Parser::Iterator::Stream
-
Итератор для источников TAP на основе файлового дескриптора
- TAP::Parser::IteratorFactory
-
Определяет, какие объекты SourceHandler использовать для данного источника Source
- TAP::Parser::Multiplexer
-
Мультиплексирование нескольких TAP::Parsers
- TAP::Parser::Result
-
Базовый класс для выходных объектов TAP::Parser
- TAP::Parser::Result::Bailout
-
Токен результата выхода.
- TAP::Parser::Result::Comment
-
Токен результата комментария.
- TAP::Parser::Result::Plan
-
Токен результата плана.
- TAP::Parser::Result::Pragma
-
Токен результата прагмы TAP.
- TAP::Parser::Result::Test
-
Токен результата теста.
- TAP::Parser::Result::Unknown
-
Токен результата неизвестного типа.
- TAP::Parser::Result::Version
-
Токен результата версии синтаксиса TAP.
- TAP::Parser::Result::YAML
-
Токен результата YAML.
- TAP::Parser::ResultFactory
-
Фабрика для создания выходных объектов TAP::Parser
- TAP::Parser::Scheduler
-
Планирование тестов во время параллельного тестирования
- TAP::Parser::Scheduler::Job
-
Одиночная задача тестирования.
- TAP::Parser::Scheduler::Spinner
-
Задача бездействия.
- TAP::Parser::Source
-
Источник TAP и метаданные о нем
- TAP::Parser::SourceHandler
-
Базовый класс для различных обработчиков источников TAP
- TAP::Parser::SourceHandler::Executable
-
Поток вывода из исполняемого источника TAP
- TAP::Parser::SourceHandler::File
-
Поток TAP из текстового файла.
- TAP::Parser::SourceHandler::Handle
-
Поток TAP из IO::Handle или GLOB.
- TAP::Parser::SourceHandler::Perl
-
Поток TAP из исполняемого файла Perl
- TAP::Parser::SourceHandler::RawTAP
-
Поток вывода из исходного TAP в скалярной/массиве ссылок.
- TAP::Parser::YAMLish::Reader
-
Чтение YAMLish данных из итератора
- TAP::Parser::YAMLish::Writer
-
Запись YAMLish данных
- Term::ANSIColor
-
Вывод на цветной экран с помощью последовательностей ANSI
- Term::Cap
-
Интерфейс Perl termcap
- Term::Complete
-
Модуль Perl для завершения слов
- Term::ReadLine
-
Интерфейс Perl к различным пакетам
readline. - Test
-
Предоставляет простую структуру для написания скриптов тестов
- Test2
-
Структура для написания инструментов тестирования, которые работают вместе.
- Test2::API
-
Основной интерфейс для написания инструментов тестирования на основе Test2.
- Test2::API::Breakage
-
Что ломается на какой версии
- Test2::API::Context
-
Объект для представления контекста тестирования.
- Test2::API::Instance
-
Объект, используемый Test2::API внутри
- Test2::API::InterceptResult
-
Представление списка событий.
- Test2::API::InterceptResult::Event
-
Представление события для использования в
- Test2::API::InterceptResult::Hub
-
Центральный узел, используемый InterceptResult.
- Test2::API::InterceptResult::Squasher
-
Инкапсуляция алгоритма, который
- Test2::API::Stack
-
Объект для управления стеком Test2::Hub
- Test2::Event
-
Базовый класс для событий
- Test2::Event::Bail
-
Выход!
- Test2::Event::Diag
-
Тип события Diag
- Test2::Event::Encoding
-
Установить кодировку для потока вывода
- Test2::Event::Exception
-
Событие исключения
- Test2::Event::Fail
-
Событие для простого проваленного утверждения
- Test2::Event::Generic
-
Тип события общего назначения.
- Test2::Event::Note
-
Тип события примечания
- Test2::Event::Ok
-
Тип события Ok
- Test2::Event::Pass
-
Событие для простого пройденного утверждения
- Test2::Event::Plan
-
Событие плана
- Test2::Event::Skip
-
Тип события пропуска
- Test2::Event::Subtest
-
Событие для типов подтестов
- Test2::Event::TAP::Version
-
Событие для версии TAP.
- Test2::Event::V2
-
Событие второго поколения.
- Test2::Event::Waiting
-
Сообщить всем процессам/потокам, что пришло время закончить
- Test2::EventFacet
-
Базовый класс для всех аспектов событий.
- Test2::EventFacet::About
-
Аспект с деталями события.
- Test2::EventFacet::Amnesty
-
Аспект для помилования утверждений.
- Test2::EventFacet::Assert
-
Аспект, представляющий утверждение.
- Test2::EventFacet::Control
-
Аспект для действий и поведения узлов.
- Test2::EventFacet::Error
-
Аспект для ошибок, которые необходимо показать.
- Test2::EventFacet::Hub
-
Аспект для узлов, через которые проходит событие.
- Test2::EventFacet::Info
-
Аспект для информации, которая может интересовать разработчика.
- Test2::EventFacet::Info::Table
-
Промежуточное представление таблицы.
- Test2::EventFacet::Meta
-
Модуль для метаданных
- Test2::EventFacet::Parent
-
Модуль для событий, содержащих другие события
- Test2::EventFacet::Plan
-
Модуль для настройки плана
- Test2::EventFacet::Render
-
Модуль, определяющий, как отобразить событие.
- Test2::EventFacet::Trace
-
Данные отладки для событий
- Test2::Formatter
-
Пространство имён для форматеров.
- Test2::Formatter::TAP
-
Стандартный форматер TAP
- Test2::Hub
-
Канал, через который проходят все события.
- Test2::Hub::Interceptor
-
Центральный узел, используемый перехватчиком для получения результатов.
- Test2::Hub::Interceptor::Terminator
-
Класс исключений, используемый
- Test2::Hub::Subtest
-
Центральный узел, используемый подтестами
- Test2::IPC
-
Включить IPC для поддержки потоков или форков.
- Test2::IPC::Driver
-
Базовый класс для драйверов IPC Test2.
- Test2::IPC::Driver::Files
-
Модель конкуренции временной директории + файлы.
- Test2::Tools::Tiny
-
Небольшой набор инструментов для несчастных душ, которые не могут использовать
- Test2::Transition
-
Примечания перехода при обновлении до Test2
- Test2::Util
-
Инструменты, используемые Test2 и его друзьями.
- Test2::Util::ExternalMeta
-
Позволяет сторонним инструментам безопасно прикреплять метаданные
- Test2::Util::Facets2Legacy
-
Преобразовать данные фасетов в устаревший API событий.
- Test2::Util::HashBase
-
Построение классов на основе хешей.
- Test2::Util::Trace
-
Устаревшая обертка для Test2::EventFacet::Trace.
- Test::Builder
-
Бэкенд для построения библиотек тестов
- Test::Builder::Formatter
-
Подкласс Test::Builder от Test2::Formatter::TAP
- Test::Builder::IO::Scalar
-
Копия IO::Scalar для Test::Builder
- Test::Builder::Module
-
Базовый класс для модулей тестов
- Test::Builder::Tester
-
Тестирование наборов тестов, созданных с помощью
- Test::Builder::Tester::Color
-
Включение цвета в Test::Builder::Tester
- Test::Builder::TodoDiag
-
Подкласс Test::Builder от Test2::Event::Diag
- Test::Harness
-
Запуск стандартных скриптов тестов Perl со статистикой
- Test::Harness::Beyond
-
За пределами make test
- Test::More
-
Ещё одна структура для написания скриптов тестов
- Test::Simple
-
Базовые утилиты для написания тестов.
- Test::Tester
-
Упрощение тестирования модулей тестов, созданных с помощью Test::Builder
- Test::Tester::Capture
-
Помощь в тестировании модулей тестов, созданных с помощью Test::Builder
- Test::Tester::CaptureRunner
-
Помощь в тестировании модулей тестов, созданных с помощью Test::Builder
- Test::Tutorial
-
Учебник по написанию очень простых тестов
- Test::use::ok
-
Альтернатива Test::More::use_ok
- Text::Abbrev
-
Abbrev - создание таблицы сокращений из списка
- Text::Balanced
-
Извлечение текстовых последовательностей с разделителями из строк.
- Text::ParseWords
-
Разбор текста на массив токенов или массив массивов
- Text::Tabs
-
Расширение и свертывание табуляций, как expand(1) и unexpand(1) в Unix
- Text::Wrap
-
Перенос строк для формирования простых абзацев
- Thread
-
Управление потоками в Perl (только для старого кода)
- Thread::Queue
-
Потокобезопасные очереди
- Thread::Semaphore
-
Потокобезопасные семафоры
- Tie::Array
-
Базовый класс для связанных массивов
- Tie::File
-
Доступ к строкам файла на диске через массив Perl
- Tie::Handle
-
Базовые определения классов для связанных дескрипторов файлов
- Tie::Hash
-
Базовые определения классов для связанных хешей
- Tie::Hash::NamedCapture
-
Буферы именованных регулярных выражений
- Tie::Memoize
-
Добавление данных в хеш при необходимости
- Tie::RefHash
-
Использование ссылок в качестве ключей хешей
- Tie::Scalar
-
Базовые определения классов для связанных скаляров
- Tie::StdHandle
-
Базовые определения классов для связанных дескрипторов файлов
- Tie::SubstrHash
-
Хэширование с фиксированным размером таблицы и длиной ключа
- Time::HiRes
-
Высокочастотные будильники, приостановки, gettimeofday, таймеры интервалов
- Time::Local
-
Эффективное вычисление времени из местного и Гринвичского времени
- Time::Piece
-
Объекты времени с ориентацией на объекты
- Time::Seconds
-
Простой API для преобразования секунд в другие значения дат
- Time::gmtime
-
Интерфейс по именам к встроенной функции gmtime() Perl
- Time::localtime
-
Интерфейс по именам к встроенной функции localtime() Perl
- Time::tm
-
Внутренний объект, используемый Time::gmtime и Time::localtime
- UNIVERSAL
-
Базовый класс для ВСЕХ классов (объектов с ссылками)
- Unicode::Collate
-
Алгоритм сортировки Unicode
- Unicode::Collate::CJK::Big5
-
Установление весов для CJK Unified Ideographs
- Unicode::Collate::CJK::GB2312
-
Установление весов для CJK Unified Ideographs
- Unicode::Collate::CJK::JISX0208
-
Установление весов JIS KANJI для Unicode::Collate
- Unicode::Collate::CJK::Korean
-
Установление весов для CJK Unified Ideographs
- Unicode::Collate::CJK::Pinyin
-
Установление весов для CJK Unified Ideographs
- Unicode::Collate::CJK::Stroke
-
Установление весов для CJK Unified Ideographs
- Unicode::Collate::CJK::Zhuyin
-
Установление весов для CJK Unified Ideographs
- Unicode::Collate::Locale
-
Лингвистическая настройка для DUCET через Unicode::Collate
- Unicode::Normalize
-
Нормальные формы Unicode
- Unicode::UCD
-
База данных символов Unicode
- User::grent
-
Интерфейс по именам к встроенным функциям getgr*() Perl
- User::pwent
-
Интерфейс по именам к встроенным функциям getpw*() Perl
- VMS::DCLsym
-
Расширение Perl для работы со символами DCL
- VMS::Filespec
-
Преобразование между VMS и Unix синтаксисом спецификаций файлов
- VMS::Stdio
-
Стандартные функции ввода/вывода через расширения VMS
- Win32
-
Интерфейсы к некоторым функциям Win32 API
- Win32API::File
-
Доступ к низкоуровневым вызовам Win32 API для файлов/каталогов.
- Win32CORE
-
Заглушки функций Win32 CORE
- XS::APItest
-
Тестирование Perl C API
- XS::Typemap
-
Модуль для тестирования XS typemaps, поставляемых с Perl
- XSLoader
-
Динамическая загрузка C библиотек в код Perl
- autodie::Scope::Guard
-
Обёртка для вызова подпрограмм в конце области видимости
- autodie::Scope::GuardStack
-
Стек хуков для управления областями видимости через %^H
- autodie::Util
-
Внутренние утилитарные подпрограммы для autodie и Fatal
- version::Internals
-
Расширение Perl для объектов версии
Чтобы узнать все установленные на вашей системе модули, включая те, у которых нет документации или которые находятся вне стандартного релиза, просто используйте следующую команду (в стандартной оболочке win32 двойные кавычки должны использоваться вместо одинарных).
% perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
no_chdir => 1 }, @INC' (Флаг -T необходим для предотвращения заполнения @INC значениями PERL5LIB, PERLLIB, и PERL_USE_UNSAFE_INC.) Все они должны иметь свою собственную документацию, установленную и доступную через вашу систему команду man(1). Если у вас нет программы find, вы можете использовать программу Perl find2perl вместо неё, которая генерирует Perl-код для запуска через perl. Если у вас есть программа man, но она не находит ваши модули, вам нужно исправить путь к man. См. perl для получения подробностей. Если у вас нет команды системы man, вы можете попробовать программу perldoc.
Обратите также внимание, что команда perldoc perllocal даёт вам (возможно, неполный) список модулей, которые были дополнительно установлены на вашей системе. (Файл perllocal.pod обновляется стандартным процессом установки MakeMaker.)
Модули расширений
Модули расширений написаны на C (или в сочетании Perl и C). Обычно они динамически загружаются в Perl при необходимости, но также могут быть статически связаны. Поддерживаемые модули расширений включают Socket, Fcntl и POSIX.
Многие популярные модули расширений на C не входят в комплект поставки (по крайней мере, не полностью) из-за их размера, изменчивости или просто недостатка времени для надлежащего тестирования и настройки на множестве платформ, на которых Perl проходил бета-тестирование. Рекомендуется искать их на CPAN (описанном ниже) или с помощью поисковых систем в Интернете, таких как Google или DuckDuckGo.
CPAN
CPAN означает Comprehensive Perl Archive Network; это глобально дублируемый архив Perl-материалов, включая документацию, руководства по стилю, рекомендации по написанию кода, альтернативные порты для систем, отличных от Unix, и время от времени двоичные дистрибутивы для этих систем. Поисковые системы для CPAN можно найти по адресу https://www.cpan.org/
Самое главное, CPAN включает около тысячи нескомпилированных модулей, некоторые из которых требуют компилятора C для построения. Основные категории модулей:
-
Расширения языка и инструменты документации
-
Поддержка разработки
-
Интерфейсы операционной системы
-
Сеть, управление устройствами (модемы) и межпроцессное взаимодействие
-
Типы данных и утилиты типов данных
-
Интерфейсы баз данных
-
Пользовательские интерфейсы
-
Интерфейсы с другими языками программирования / Эмуляция других языков программирования
-
Имена файлов, файловые системы и блокировка файлов (см. также дескрипторы файлов)
-
Обработка строк, обработка текста языка, парсинг и поиск
-
Обработка опций, аргументов, параметров и файлов конфигурации
-
Международные настройки и языковые локали
-
Аутентификация, безопасность и шифрование
-
Всемирная паутина, HTML, HTTP, CGI, MIME
-
Утилиты сервера и демона
-
Архивирование и сжатие
-
Обработка изображений, растровых и битмап-изображений, рисование и построение графиков
-
Почта и новости Usenet
-
Утилиты управления потоком выполнения (обратные вызовы и исключения и т. д.)
-
Утилиты дескрипторов файлов и потоков ввода/вывода
-
Разные модули
Вы можете найти CPAN в интернете по адресу https://www.cpan.org/
Модули: Создание, использование и злоупотребление
(Следующий раздел заимствован непосредственно из файла модулей Тима Банса, доступного на ближайшем сайте CPAN.)
Perl реализует класс с помощью пакета, но наличие пакета не подразумевает наличие класса. Пакет — это просто пространство имён. Класс — это пакет, предоставляющий подпрограммы, которые могут использоваться как методы. Метод — это просто подпрограмма, которая ожидает в качестве первого аргумента имя пакета (для «статических» методов) или ссылку на что-либо (для «виртуальных» методов).
Модуль — это файл, который (по соглашению) предоставляет класс с таким же именем (без .pm), а также метод импорта в этом классе, который можно вызывать для извлечения экспортированных символов. Этот модуль может реализовывать некоторые свои методы загрузкой динамических объектов C или C++, но это должно быть совершенно прозрачно для пользователя модуля. Точно так же модуль может настроить функцию AUTOLOAD для поглощения определений подпрограмм по требованию, но и это прозрачно. Для существования требуется только файл .pm. Подробную информацию об механизме AUTOLOAD см. в perlsub, perlobj и AutoLoader.
Руководство по созданию модулей
-
Существуют ли аналогичные модули в какой-либо форме?
Если да, то попробуйте повторно использовать существующие модули целиком или путем наследования полезных функций в новый класс. Если это непрактично, попробуйте связаться с авторами модуля, чтобы разработать расширение или улучшение функциональности существующих модулей. Прекрасным примером является обилие пакетов в perl4 для работы с командной строкой.
Если вы пишете модуль для расширения уже существующего набора модулей, согласуйте свои действия с автором пакета. Это помогает, если вы следуете той же схеме именования и взаимодействия модулей, что и исходный автор.
-
Постарайтесь разработать новый модуль, который легко расширять и повторно использовать.
Попробуйте
use warnings;(илиuse warnings qw(...);). Помните, что вы можете добавитьno warnings qw(...);к отдельным блокам кода, которые требуют меньше предупреждений.Используйте освященные ссылки. Используйте форму с двумя аргументами bless для освящения в класс, имя которого указано в качестве первого параметра конструктора, например:
sub new { my $class = shift; return bless {}, $class; }или даже так, если вы хотите, чтобы его использовали как статический или виртуальный метод.
sub new { my $self = shift; my $class = ref($self) || $self; return bless {}, $class; }Передавайте массивы как ссылки, чтобы позже можно было добавить больше параметров (это также быстрее). Преобразуйте функции в методы, где это уместно. Разбейте большие методы на более мелкие и гибкие. Наследуйте методы из других модулей, если это уместно.
Избегайте тестов имен класса, таких как:
die "Invalid" unless ref $ref eq 'FOO'. Как правило, вы можете удалить частьeq 'FOO'без каких-либо проблем. Позвольте объектам заботиться о себе! В целом, избегайте жестко заданных имен классов по возможности.Избегайте
$r->Class::func()при использовании@ISA=qw(... Class ...)и$r->func().Используйте авторазделение, чтобы мало используемые или недавно добавленные функции не были бременем для программ, которые их не используют. Добавьте тестовые функции в модуль после __END__ либо с помощью AutoSplit, либо сказав:
eval join('',<main::DATA>) || die $@ unless caller();Проходит ли ваш модуль тест «пустой подкласс»? Если вы говорите
@SUBCLASS::ISA = qw(YOURCLASS);, ваши приложения должны иметь возможность использовать SUBCLASS точно так же, как YOURCLASS. Например, работает ли ваше приложение, если вы меняете:$obj = YOURCLASS->new();на:$obj = SUBCLASS->new();?Избегайте хранения каких-либо данных состояния в ваших пакетах. Это затрудняет использование вашего пакета несколькими другими пакетами. Храните данные состояния в объектах.
Всегда используйте -w.
Попробуйте
use strict;(илиuse strict qw(...);). Помните, что вы можете добавитьno strict qw(...);к отдельным блокам кода, которые требуют меньше строгости.Всегда используйте -w.
Следуйте рекомендациям в perlstyle.
Всегда используйте -w.
-
Некоторые простые рекомендации по стилю
В руководстве perlstyle, поставляемом с Perl, содержится много полезных пунктов.
Стиль кодирования — это вопрос личного вкуса. Многие люди развивают свой стиль в течение нескольких лет, узнавая, что помогает им писать и поддерживать качественный код. Вот один набор различных рекомендаций, которые, как представляется, широко используются опытными разработчиками:
Используйте нижние подчеркивания для разделения слов. В целом, $var_names_like_this легче читать, чем $VarNamesLikeThis, особенно для неносителей английского языка. Это также простое правило, которое последовательно работает с VAR_NAMES_LIKE_THIS.
Имена пакетов/модулей — исключение из этого правила. Perl неофициально зарезервировал имена модулей с маленькой буквы для модулей «pragma», таких как integer и strict. Другие модули обычно начинаются с большой буквы и используют смешанный регистр без нижних подчеркиваний (должны быть короткими и портативными).
Вам может быть полезно использовать регистр букв для обозначения области или характера переменной. Например:
$ALL_CAPS_HERE constants only (beware clashes with Perl vars) $Some_Caps_Here package-wide global/static $no_caps_here function scope my() or local() variablesИмена функций и методов, по-видимому, лучше всего работают в нижнем регистре. Например,
$obj->as_string().Вы можете использовать ведущий символ подчеркивания, чтобы указать, что переменная или функция не должны использоваться за пределами пакета, который ее определил.
-
Выберите, что экспортировать.
НЕ экспортируйте имена методов!
НЕ экспортируйте ничего по умолчанию без достаточной причины!
Экспорт загрязняет пространство имен пользователя модуля. Если вам необходимо экспортировать, попробуйте использовать @EXPORT_OK вместо @EXPORT и избегайте коротких или общих имен, чтобы уменьшить риск конфликтов имен.
В целом, все, что не экспортировано, по-прежнему доступно снаружи модуля с использованием синтаксиса ModuleName::item_name (или
$blessed_ref->method). По соглашению, вы можете использовать ведущий подчеркивание для имен, чтобы неофициально указать, что они являются «внутренними» и не предназначены для публичного использования.(На самом деле можно получить закрытые функции, сказав:
my $subref = sub { ... }; &$subref;. Но нет способа вызвать это непосредственно как метод, потому что метод должен иметь имя в таблице символов.)В качестве общего правила, если модуль пытается быть объектно-ориентированным, не экспортируйте ничего. Если это просто набор функций, то экспортируйте @EXPORT_OK все, кроме как @EXPORT, с осторожностью.
-
Выберите имя для модуля.
Это имя должно быть максимально описательным, точным и полным. Избегайте любых рисков неоднозначности. Всегда старайтесь использовать два или более целых слова. В целом, имя должно отражать то, что особенного делает модуль, а не то, как он это делает. Используйте вложенные имена модулей для неофициальной группировки или категоризации модуля. Должна быть очень веская причина, чтобы модуль не имел вложенного имени. Имена модулей должны начинаться с большой буквы.
Наличие 57 модулей, все называемых Sort, не облегчит жизнь никому (хотя наличие 23, называемых Sort::Quick, только немного лучше :-). Представьте себе, кто-то пытается установить ваш модуль вместе со многими другими.
Если вы разрабатываете набор связанных модулей/классов, хорошей практикой является использование вложенных классов с общим префиксом, так как это позволит избежать конфликтов имен. Например: Xyz::Control, Xyz::View, Xyz::Model и т. д. Используйте модули в этом списке как руководство по именованию.
Если добавляется новый модуль в набор, следуйте стандартам именования модулей и интерфейса к методам в этих модулях, установленным исходным автором.
Если разрабатываются модули для частного внутреннего или проекта, которые никогда не будут выпущены публично, убедитесь, что их имена не будут конфликтовать с будущими общедоступными модулями. Вы можете сделать это, используя зарезервированную категорию Local::* или используя имя категории, включающее нижнее подчеркивание, например, Foo_Corp::*.
Для обеспечения портативности каждый компонент имени модуля должен быть ограничен 11 символами. Если он может быть использован в MS-DOS, постарайтесь обеспечить уникальность каждого в первых 8 символах. Вложенные модули облегчают это.
Дополнительные рекомендации по именованию модулей см. в:
https://pause.perl.org/pause/query?ACTION=pause_namingmodulesили отправьте сообщение на список рассылки <module-authors@perl.org>.
-
Вы все сделали правильно?
Как вы можете узнать, что вы сделали правильный выбор? Вы выбрали дизайн интерфейса, который вызовет проблемы позже? Вы выбрали наиболее подходящее имя? У вас есть какие-либо вопросы?
Лучший способ узнать наверняка и получить много полезных предложений — спросить у кого-нибудь, кто разбирается в этом. Список рассылки <module-authors@perl.org> полезен для этой цели; он также доступен через интерфейс новостей как perl.module-authors на nntp.perl.org.
Все, что вам нужно сделать, это написать краткое изложение модуля, его назначение и интерфейсы. Несколько строк о каждом главном методе, вероятно, достаточно. (Если вы опубликуете весь модуль, это, вероятно, проигнорируют занятые люди — в основном те, кому вы хотите, чтобы они это прочли!)
Не беспокойтесь о публикации, если не можете сказать, когда модуль будет готов — просто укажите это в сообщении. Возможно, стоит пригласить других помочь вам; они могут завершить его за вас!
-
README и другие дополнительные файлы.
Известно, что разработчики программного обеспечения обычно полностью документируют написанное ими программное обеспечение. Однако, если мир остро нуждается в вашем программном обеспечении, и времени недостаточно для написания полной документации, по крайней мере, предоставьте файл README, содержащий:
-
Описание модуля/пакета/расширения и т. д.
-
Авторское право — см. ниже.
-
Предварительные требования — что еще вам может понадобиться.
-
Как его собрать — возможные изменения в Makefile.PL и т. д.
-
Как его установить.
-
Недавние изменения в этом выпуске, особенно несовместимости
-
Изменения/улучшения, которые вы планируете внести в будущем.
Если файл README кажется слишком большим, вы можете разбить некоторые разделы на отдельные файлы: INSTALL, Copying, ToDo и т. д.
-
Добавление авторских прав.
Как вы решите лицензировать свою работу, — личное решение. Общий механизм заключается в утверждении авторских прав, а затем в заявлении о том, как другие могут копировать/использовать/изменять вашу работу.
Например, Perl поставляется с двумя типами лицензий: GNU GPL и Artistic Licence (см. файлы README, Copying и Artistic, или perlgpl и perlartistic). У Ларри есть веские причины для НЕ использования только GNU GPL.
Моя личная рекомендация, из уважения к Ларри, Perl и сообществу Perl, заключается в простом заявлении, подобном:
Copyright (c) 1995 Your Name. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.Это утверждение должно, по крайней мере, присутствовать в файле README. Вы также можете включить его в файл Copying и в ваши исходные файлы. Помните, что необходимо включить и другие слова помимо авторских прав.
-
Присвойте модулю номер версии/выпуска.
Для полной совместимости с модулями Exporter и MakeMaker вы должны хранить номер версии вашего модуля в переменной, не являющейся частью моего пакета, с именем $VERSION. Это должно быть положительное число с плавающей точкой с по крайней мере двумя цифрами после десятичной точки (т. е. сотыми, например,
$VERSION = "0.01"). Не используйте версию типа «1.3.2». См. Exporter для получения подробной информации.Полезно добавить функцию или метод для получения числа. Используйте это число в объявлениях и именах файлов архивов при выпуске модуля (ModuleName-1.02.tar.Z). См. perldoc ExtUtils::MakeMaker.pm для получения подробной информации.
-
Как выпустить и распространить модуль.
При возможности зарегистрируйте модуль в CPAN. Следуйте инструкциям и ссылкам на:
https://www.cpan.org/modules/04pause.htmlи загрузите на:
https://pause.perl.org/и уведомите <modules@perl.org>. Это позволит любому установить ваш модуль с помощью инструмента
cpan, поставляемого с Perl.Используя веб-интерфейс, вы можете попросить сервер загрузки создать зеркала ваших модулей из вашего FTP- или веб-сайта в свой каталог в CPAN!
-
Обращайте внимание при изменении уже выпущенного модуля.
Всегда стремитесь к сохранению совместимости с предыдущими выпусками. В противном случае попробуйте добавить механизм для возврата к старому поведению, если на него полагаются пользователи. Документируйте несовместимые изменения.
-
Рекомендации по преобразованию скриптов библиотек Perl 4 в модули
-
Нет необходимости в преобразовании чего-либо.
Если всё работает, не нужно его исправлять! Скрипты библиотеки Perl 4 должны продолжать работать без проблем. Возможно, потребуется внести некоторые незначительные изменения (например, экранирование не-массивов @ в строках с двойными кавычками), но нет необходимости преобразовывать файл .pl в модуль только для этого.
-
Рассмотрите последствия.
Все приложения Perl, которые используют этот скрипт, потребуют изменения (незначительные), если скрипт преобразован в модуль. Стоит ли это делать, если вы не планируете внести другие изменения одновременно?
-
Максимально используйте возможность.
Если вы собираетесь преобразовать скрипт в модуль, вы можете воспользоваться возможностью переработать интерфейс. Руководящие принципы создания модулей выше включают в себя многие вопросы, которые вы должны рассмотреть.
-
Утилита pl2pm поможет вам начать работу.
Эта утилита будет читать файлы *.pl (указанные в качестве параметров) и записывать соответствующие файлы *.pm. Утилита pl2pm выполняет следующие действия:
-
Добавляет стандартные строки пролога модуля
-
Преобразует спецификаторы пакетов из ' в ::
-
Преобразует die(...) в croak(...)
-
Несколько других незначительных изменений
Будучи механическим процессом, pl2pm не является безупречным. Преобразованный код потребует тщательной проверки, особенно любые операторы пакетов. Не удаляйте исходный файл .pl, пока новый файл .pm не будет работать!
-
Руководства по повторному использованию кода приложения
-
Полные приложения редко подходят для библиотеки модулей Perl.
-
Многие приложения содержат некоторые фрагменты кода Perl, которые могут быть повторно использованы.
Помогите спасти мир! Поделитесь своим кодом в форме, которая упрощает его повторное использование.
-
Выделите повторно используемый код в один или несколько отдельных файлов модулей.
-
Используйте эту возможность для пересмотра и переработки интерфейсов.
-
В некоторых случаях «приложение» может быть уменьшено до небольшого
фрагмента кода, построенного поверх повторно используемых модулей. В этих случаях приложение может быть вызвано как:
% perl -e 'use Module::Name; method(@ARGV)' ... or % perl -mModule::Name ... (in perl5.002 or higher)
ПРИМЕЧАНИЕ
Perl не навязывает разделение на частные и публичные части модулей, как вы могли быть привыкли в других языках, таких как C++, Ada или Modula-17. Perl не увлечён навязыванием приватности. Он бы предпочел, чтобы вы не заходили в его гостиную, поскольку вас не пригласили, а не потому, что у него есть ружьё.
Модуль и его пользователь имеют договор, часть которого основана на обычном праве, а часть — «письменная». Часть договора по обычному праву состоит в том, что модуль не загрязняет пространство имён, которое ему не было предоставлено. Письменная часть договора для модуля (т.е. документация) может содержать другие положения. Но тогда вы знаете, когда use RedefineTheWorld вы переопределяете мир и готовы принять последствия.
© 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/perlmodlib