perlmodlib
СОДЕРЖАНИЕ
ИМЯ
perlmodlib - создание новых модулей Perl и поиск существующих
БИБЛИОТЕКА МОДУЛЕЙ PERL
Во многих дистрибутивах Perl включены модули. Они описаны ниже, и все заканчиваются .pm. Вы можете обнаружить скомпилированные файлы библиотеки (обычно заканчивающиеся .so) или небольшие фрагменты модулей для автоматической загрузки (заканчивающиеся .al); они были автоматически сгенерированы процессом установки. Вы также можете обнаружить файлы в каталоге библиотеки, заканчивающиеся либо .pl, либо .ph. Это старые библиотеки, чтобы старые программы, которые их используют, по-прежнему работали. Файлы .pl в конечном итоге будут преобразованы в стандартные модули, а файлы .ph, созданные h2ph, вероятно, станут модулями расширений, созданными h2xs. (Некоторые значения .ph могут уже быть доступны через модули POSIX, Errno или Fcntl.) Файл pl2pm в дистрибутиве может помочь в преобразовании, но это просто механический процесс и поэтому далек от безупречности.
Практические модули
Они работают примерно как директивы компилятора (прагмы), поскольку они, как правило, влияют на компиляцию вашей программы, и поэтому обычно хорошо работают только при использовании в use, или no. Большинство из них имеют лексический охват, поэтому внутренний БЛОК может отменить их, сказав:
no integer;
no strict 'refs';
no warnings; что действует до конца этого БЛОКА.
Некоторые прагмы имеют лексический охват — обычно те, которые влияют на $^H переменные подсказок. Другие влияют на текущий пакет, например 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
-
Управление операторами проверки прав доступа к файлам
- 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()
- stable
-
Упрощенное использование экспериментальных функций, когда известно, что они стабильны
- strict
-
Ограничение небезопасных конструкций
- subs
-
Предварительное объявление имен подпрограмм
- threads
-
Потоки Perl, основанные на интерпретаторе
-
Расширение Perl для совместного использования структур данных между потоками
- utf8
-
Включение/выключение UTF-8 (или UTF-EBCDIC) в исходном коде
- vars
-
Предварительное объявление имен глобальных переменных
- version
-
Расширение Perl для объектов версии
- vmsish
-
Управление функциями языка, специфичными для VMS
- warnings
-
Управление необязательными предупреждениями
- warnings::register
-
Функция импорта предупреждений
Стандартные модули
Ожидается, что стандартные, включённые модули будут вести себя определенным образом относительно загрязнения пространства имён, поскольку они используют модуль Exporter. Подробности см. в их собственной документации.
Возможно, что не все перечисленные ниже модули установлены на вашей системе. Например, модуль GDBM_File не будет установлен, если у вас нет библиотеки gdbm.
- Amiga::ARexx
-
Расширение Perl для поддержки ARexx
- Amiga::Exec
-
Расширение Perl для низкоуровневой поддержки Amiga
- AnyDBM_File
-
Обеспечивает фреймворк для множественных DBM
- 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 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
- 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 или zlib-ng
- 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/Pollution/Переносимость
- 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
-
Методы 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
-
Создание Makefile для 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
-
Чтение/запись/модификация файлов типамапов Perl/XS
- ExtUtils::Typemaps::Cmd
-
Быстрые команды для работы с типамапами
- ExtUtils::Typemaps::InputMap
-
Элемент раздела INPUT в файле типамапа
- ExtUtils::Typemaps::OutputMap
-
Элемент раздела OUTPUT в файле типамапа
- ExtUtils::Typemaps::Type
-
Элемент раздела 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-фильтра исходного кода
- FindBin
-
Нахождение директории исходного perl-скрипта
- GDBM_File
-
Доступ к библиотеке gdbm с помощью Perl5.
- Getopt::Long
-
Расширенная обработка командных опций
- Getopt::Std
-
Обработка односимвольных переключателей с группировкой
- HTTP::Tiny
-
Маленький, простой и корректный клиент HTTP/1.1
- Hash::Util
-
Набор общеупотребительных подпрограмм для хешей
- Hash::Util::FieldHash
-
Поддержка классов «снутри-снаружи»
- 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::NDBM_File
-
Интерфейс для обеспечения EXISTS для NDBM_File для Storable
- Memoize::SDBM_File
-
УСТРАНЕНО совместимый шлюз
- 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
-
Интерфейс ООП к файлу netrc пользователя
- Net::POP3
-
Класс клиента почтового протокола 3 (RFC1939)
- Net::Ping
-
Проверка доступности удалённого хоста
- Net::SMTP
-
Простой клиент протокола передачи почты
- Net::Time
-
Интерфейс клиента сетевых служб времени и времени суток
- Net::hostent
-
Интерфейс по имени к встроенным функциям Perl gethost*()
- Net::libnetFAQ
-
Часто задаваемые вопросы по libnet
- Net::netent
-
Интерфейс по имени к встроенным функциям Perl getnet*()
- Net::protoent
-
Интерфейс по имени к встроенным функциям Perl getproto*()
- Net::servent
-
Интерфейс по имени к встроенным функциям Perl getserv*()
- O
-
Общий интерфейс к бэкендам компилятора Perl
- ODBM_File
-
Привязанный доступ к файлам odbm
- Opcode
-
Отключение именованных операторов при компиляции кода 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
-
Картирование памяти для ввода-вывода
- PerlIO::scalar
-
Внутрипроцессорное ввод-вывод, ввод-вывод скаляров
- 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
-
Интерфейс для разбора Pod с помощью парсера "pull"
- 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::Parser
- 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
-
Базовый класс для драйверов Test2 IPC.
- 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
-
Расширение и сокращение табуляции, как unix expand(1) и unexpand(1)
- 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
-
Интерфейс по имени к встроенной функции Perl gmtime()
- Time::localtime
-
Интерфейс по имени к встроенной функции Perl localtime()
- Time::tm
-
Внутренний объект, используемый Time::gmtime и Time::localtime
- UNIVERSAL
-
Базовый класс для ВСЕХ классов (благословенные ссылки)
- Unicode::Collate
-
Алгоритм сортировки Юникода
- Unicode::Collate::CJK::Big5
-
Приоритет CJK Объединенных иероглифов
- Unicode::Collate::CJK::GB2312
-
Приоритет CJK Объединенных иероглифов
- Unicode::Collate::CJK::JISX0208
-
Приоритет JIS KANJI для Unicode::Collate
- Unicode::Collate::CJK::Korean
-
Приоритет CJK Объединенных иероглифов
- Unicode::Collate::CJK::Pinyin
-
Приоритет CJK Объединенных иероглифов
- Unicode::Collate::CJK::Stroke
-
Приоритет CJK Объединенных иероглифов
- Unicode::Collate::CJK::Zhuyin
-
Приоритет CJK Объединенных иероглифов
- Unicode::Collate::Locale
-
Языковая адаптация для DUCET через Unicode::Collate
- Unicode::Normalize
-
Формы нормализации Юникода
- Unicode::UCD
-
База данных символов Юникода
- User::grent
-
Интерфейс по имени к встроенным функциям Perl getgr*
- User::pwent
-
Интерфейс по имени к встроенным функциям Perl getpw*
- VMS::DCLsym
-
Perl-расширение для работы с символами DCL
- VMS::Filespec
-
Преобразование между VMS и Unix синтаксисом спецификации файлов
- VMS::Stdio
-
Стандартные функции ввода-вывода через расширения VMS
- Win32
-
Интерфейсы к некоторым функциям Win32 API
- Win32API::File
-
Доступ на низком уровне к системным API Win32 для файлов/каталогов.
- Win32CORE
-
Плацехолдеры функций Win32 CORE
- XS::APItest
-
Тестирование Perl C API
- XS::Typemap
-
Модуль для тестирования XS-типовых преобразований, поставляемых с 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.) У всех них должна быть своя собственная документация, доступная через команду system man(1). Если у вас нет программы find, вы можете использовать Perl-программу find2perl вместо неё, которая генерирует Perl-код, который можно запустить через perl. Если у вас есть программа man, но она не находит ваши модули, вам нужно исправить manpath. Смотрите 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(...);к отдельным блокам кода, которые требуют меньше предупреждений.Используйте благословенные ссылки. Используйте двухаргументную форму благословения для благословения в имя класса, указанное в качестве первого параметра конструктора, например:
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 неформально резервирует имена модулей в нижнем регистре для модулей «пренеймов», таких как 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–2023 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.38.0/perlmodlib