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.
Ниже определены прагмы (и для них есть своя документация).
- атрибуты
-
Получение/установка атрибутов подпрограмм или переменных
- autodie
-
Замена функций на те, которые либо выполняются успешно, либо завершаются с ошибкой с лексическим объёмом
- autodie::exception
-
Исключения от функций autodie.
- autodie::exception::system
-
Исключения от автоумирающей функции system().
- autodie::hints
-
Предоставление подсказок о пользовательских подпрограммах для autodie
- autodie::skip
-
Пропустить пакет при выбросе исключений autodie
- autouse
-
Отложить загрузку модулей до использования функции
- base
-
Установить отношение ISA с базовыми классами во время компиляции
- bigint
-
Поддержка BigInteger для Perl
- bignum
-
Поддержка BigNumber для Perl
- bigrat
-
Поддержка BigNumber/BigRational для Perl
- blib
-
Использование нерасстановленного MakeMaker'а версии пакета
- bytes
-
Отображение отдельных байтов символов
- charnames
-
Доступ к именам символов Unicode и именованным последовательностям символов; также определяет имена символов
- constant
-
Объявление констант
- deprecate
-
Прагма Perl для устаревания включения модуля в ядро
- diagnostics
-
Производство подробной диагностики предупреждений
- encoding
-
Позволяет вам писать свой скрипт в кодировках, отличных от ASCII и UTF-8
- encoding::warnings
-
Предупреждение при неявных преобразованиях кодировок
- experimental
-
Экспериментальные возможности, упрощенные
- feature
-
Включить новые функции
- fields
-
Поля класса во время компиляции
- filetest
-
Управление операторами проверки файлов
- if
-
Включение модуля 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 для объектов версии
- 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
- 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
-
Программный интерфейс к 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
-
Доступ к Berkeley DB версии 1.x из Perl
- Data::Dumper
-
Представление данных Perl в виде строк, подходящее для вывода и
eval - Devel::PPPort
-
Perl/Pollution/Portability
- 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::GSM0338
-
Кодировка ESTI 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 Transformation Formats
- 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
-
Команды для использования в файлах 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
-
Ранее генерировались Makefiles для MacOS Classic
- ExtUtils::MM_NW5
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- ExtUtils::MM_OS2
-
Методы для переопределения поведения UN*X в ExtUtils::MakeMaker
- 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
-
Создание файла bootstrap для использования с DynaLoader
- ExtUtils::Mksymlists
-
Создание файлов опций компоновщика для динамических расширений
- ExtUtils::Packlist
-
Управление файлами .packlist
- ExtUtils::ParseXS
-
Преобразование Perl XS-кода в C-код
- ExtUtils::ParseXS::Constants
-
Начальные значения для некоторых глобальных переменных
- ExtUtils::ParseXS::Eval
-
Чистый пакет для оценки кода
- ExtUtils::ParseXS::Utilities
-
Подпрограммы, используемые с ExtUtils::ParseXS
- ExtUtils::Typemaps
-
Чтение/запись/модификация файлов Perl/XS typemap
- 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 для фильтрации исходного кода
- 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, 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
-
Объектно-ориентированный интерфейс к файлу 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
-
Общий интерфейс к backend'ам компилятора Perl
- ODBM_File
-
Связанный доступ к файлам odbm
- Opcode
-
Отключение именованных opкодов при компиляции кода 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
-
Внутри памяти 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::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 цветовыми escape-последовательностями
- 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 с escape-последовательностями терминала
- 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
-
Набор утилитных подпрограмм для подпрограмм и ссылок на код
- 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::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
-
Тип события Note
- Test2::Event::Ok
-
Тип события Ok
- Test2::Event::Pass
-
Событие для простого пройденного утверждения
- Test2::Event::Plan
-
Событие плана
- Test2::Event::Skip
-
Тип события 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
-
Эффективное вычисление времени из локального и GMT времени
- 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
-
Доступ к системным вызовам Win32 API на низком уровне для файлов/директорий.
- Win32CORE
-
Заглушки функций Win32 CORE
- XS::APItest
-
Тестирование API Perl C
- 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.) Все они должны иметь собственную установленную документацию, доступную через вашу команду 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. Обратите внимание, что порядок сортировки — алфавитный по полям:
Континент | |-->Страна | |-->[штат/провинция] | |-->ftp | |-->[http]
и поэтому североамериканские серверы оказываются расположенными между европейскими и южноамериканскими сайтами.
Зарегистрированные сайты CPAN
Африка
- Южная Африка
-
http://mirror.is.co.za/pub/cpan/ ftp://ftp.is.co.za/pub/cpan/ http://cpan.mirror.ac.za/ ftp://cpan.mirror.ac.za/ http://cpan.saix.net/ ftp://ftp.saix.net/pub/CPAN/ http://ftp.wa.co.za/pub/CPAN/ ftp://ftp.wa.co.za/pub/CPAN/ - Уганда
-
http://mirror.ucu.ac.ug/cpan/ - Зимбабве
-
http://mirror.zol.co.zw/CPAN/ ftp://mirror.zol.co.zw/CPAN/
Азия
- Бангладеш
-
http://mirror.dhakacom.com/CPAN/ ftp://mirror.dhakacom.com/CPAN/ - Китай
-
http://cpan.communilink.net/ http://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/ ftp://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/ http://mirrors.hust.edu.cn/CPAN/ http://mirrors.neusoft.edu.cn/cpan/ http://mirror.lzu.edu.cn/CPAN/ http://mirrors.163.com/cpan/ http://mirrors.sohu.com/CPAN/ http://mirrors.ustc.edu.cn/CPAN/ ftp://mirrors.ustc.edu.cn/CPAN/ http://mirrors.xmu.edu.cn/CPAN/ ftp://mirrors.xmu.edu.cn/CPAN/ http://mirrors.zju.edu.cn/CPAN/ - Индия
-
http://cpan.excellmedia.net/ http://perlmirror.indialinks.com/ - Индонезия
-
http://kambing.ui.ac.id/cpan/ http://cpan.pesat.net.id/ http://mirror.poliwangi.ac.id/CPAN/ http://kartolo.sby.datautama.net.id/CPAN/ http://mirror.wanxp.id/cpan/ - Иран
-
http://mirror.yazd.ac.ir/cpan/ - Израиль
-
http://biocourse.weizmann.ac.il/CPAN/ - Япония
-
http://ftp.jaist.ac.jp/pub/CPAN/ ftp://ftp.jaist.ac.jp/pub/CPAN/ http://mirror.jre655.com/CPAN/ ftp://mirror.jre655.com/CPAN/ ftp://ftp.kddilabs.jp/CPAN/ http://ftp.nara.wide.ad.jp/pub/CPAN/ ftp://ftp.nara.wide.ad.jp/pub/CPAN/ http://ftp.riken.jp/lang/CPAN/ ftp://ftp.riken.jp/lang/CPAN/ ftp://ftp.u-aizu.ac.jp/pub/CPAN/ http://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/ ftp://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/ - Казахстан
-
http://mirror.neolabs.kz/CPAN/ ftp://mirror.neolabs.kz/CPAN/ - Филиппины
-
http://mirror.pregi.net/CPAN/ ftp://mirror.pregi.net/CPAN/ http://mirror.rise.ph/cpan/ ftp://mirror.rise.ph/cpan/ - Катар
-
http://mirror.qnren.qa/CPAN/ ftp://mirror.qnren.qa/CPAN/ - Республика Корея
-
http://cpan.mirror.cdnetworks.com/ ftp://cpan.mirror.cdnetworks.com/CPAN/ http://ftp.kaist.ac.kr/pub/CPAN/ ftp://ftp.kaist.ac.kr/CPAN/ http://ftp.kr.freebsd.org/pub/CPAN/ ftp://ftp.kr.freebsd.org/pub/CPAN/ http://mirror.navercorp.com/CPAN/ http://ftp.neowiz.com/CPAN/ ftp://ftp.neowiz.com/CPAN/ - Сингапур
-
http://cpan.mirror.choon.net/ http://mirror.0x.sg/CPAN/ ftp://mirror.0x.sg/CPAN/ - Тайвань
-
http://cpan.cdpa.nsysu.edu.tw/Unix/Lang/CPAN/ ftp://cpan.cdpa.nsysu.edu.tw/Unix/Lang/CPAN/ http://cpan.stu.edu.tw/ ftp://ftp.stu.edu.tw/CPAN/ http://ftp.yzu.edu.tw/CPAN/ ftp://ftp.yzu.edu.tw/CPAN/ http://cpan.nctu.edu.tw/ ftp://cpan.nctu.edu.tw/ http://ftp.ubuntu-tw.org/mirror/CPAN/ ftp://ftp.ubuntu-tw.org/mirror/CPAN/ - Турция
-
http://cpan.ulak.net.tr/ ftp://ftp.ulak.net.tr/pub/perl/CPAN/ http://mirror.vit.com.tr/mirror/CPAN/ ftp://mirror.vit.com.tr/CPAN/ - Вьетнам
-
http://mirrors.digipower.vn/CPAN/ http://mirror.downloadvn.com/cpan/ http://mirrors.vinahost.vn/CPAN/
Европа
- Австрия
-
http://cpan.inode.at/ ftp://cpan.inode.at/ http://mirror.easyname.at/cpan/ ftp://mirror.easyname.at/cpan/ http://gd.tuwien.ac.at/languages/perl/CPAN/ ftp://gd.tuwien.ac.at/pub/CPAN/ - Беларусь
-
http://ftp.byfly.by/pub/CPAN/ ftp://ftp.byfly.by/pub/CPAN/ http://mirror.datacenter.by/pub/CPAN/ ftp://mirror.datacenter.by/pub/CPAN/ - Бельгия
-
http://ftp.belnet.be/ftp.cpan.org/ ftp://ftp.belnet.be/mirror/ftp.cpan.org/ http://cpan.cu.be/ http://lib.ugent.be/CPAN/ http://cpan.weepeetelecom.be/ - Босния и Герцеговина
-
http://cpan.mirror.ba/ ftp://ftp.mirror.ba/CPAN/ - Болгария
-
http://mirrors.neterra.net/CPAN/ ftp://mirrors.neterra.net/CPAN/ http://mirrors.netix.net/CPAN/ ftp://mirrors.netix.net/CPAN/ - Хорватия
-
http://ftp.carnet.hr/pub/CPAN/ ftp://ftp.carnet.hr/pub/CPAN/ - Чешская Республика
-
http://mirror.dkm.cz/cpan/ ftp://mirror.dkm.cz/cpan/ ftp://ftp.fi.muni.cz/pub/CPAN/ http://mirrors.nic.cz/CPAN/ ftp://mirrors.nic.cz/pub/CPAN/ http://cpan.mirror.vutbr.cz/ ftp://mirror.vutbr.cz/cpan/ - Дания
-
http://www.cpan.dk/ http://mirrors.dotsrc.org/cpan/ ftp://mirrors.dotsrc.org/cpan/ - Финляндия
-
ftp://ftp.funet.fi/pub/languages/perl/CPAN/ - Франция
-
http://ftp.ciril.fr/pub/cpan/ ftp://ftp.ciril.fr/pub/cpan/ http://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/cpan/ ftp://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/cpan/ http://ftp.lip6.fr/pub/perl/CPAN/ ftp://ftp.lip6.fr/pub/perl/CPAN/ http://mirror.ibcp.fr/pub/CPAN/ ftp://ftp.oleane.net/pub/CPAN/ http://cpan.mirrors.ovh.net/ftp.cpan.org/ ftp://cpan.mirrors.ovh.net/ftp.cpan.org/ http://cpan.enstimac.fr/ - Германия
-
http://mirror.23media.de/cpan/ ftp://mirror.23media.de/cpan/ http://artfiles.org/cpan.org/ ftp://artfiles.org/cpan.org/ http://mirror.bibleonline.ru/cpan/ http://mirror.checkdomain.de/CPAN/ ftp://mirror.checkdomain.de/CPAN/ http://cpan.noris.de/ http://mirror.de.leaseweb.net/CPAN/ ftp://mirror.de.leaseweb.net/CPAN/ http://cpan.mirror.euserv.net/ ftp://mirror.euserv.net/cpan/ http://ftp-stud.hs-esslingen.de/pub/Mirrors/CPAN/ ftp://mirror.fraunhofer.de/CPAN/ ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/ http://ftp.hosteurope.de/pub/CPAN/ ftp://ftp.hosteurope.de/pub/CPAN/ ftp://ftp.fu-berlin.de/unix/languages/perl/ http://ftp.gwdg.de/pub/languages/perl/CPAN/ ftp://ftp.gwdg.de/pub/languages/perl/CPAN/ http://ftp.hawo.stw.uni-erlangen.de/CPAN/ ftp://ftp.hawo.stw.uni-erlangen.de/CPAN/ http://cpan.mirror.iphh.net/ ftp://cpan.mirror.iphh.net/pub/CPAN/ ftp://ftp.mpi-inf.mpg.de/pub/perl/CPAN/ http://cpan.netbet.org/ http://mirror.netcologne.de/cpan/ ftp://mirror.netcologne.de/cpan/ ftp://mirror.petamem.com/CPAN/ http://www.planet-elektronik.de/CPAN/ http://ftp.halifax.rwth-aachen.de/cpan/ ftp://ftp.halifax.rwth-aachen.de/cpan/ http://mirror.softaculous.com/cpan/ http://ftp.u-tx.net/CPAN/ ftp://ftp.u-tx.net/CPAN/ http://mirror.reismil.ch/CPAN/ - Греция
-
http://cpan.cc.uoc.gr/mirrors/CPAN/ ftp://ftp.cc.uoc.gr/mirrors/CPAN/ http://ftp.ntua.gr/pub/lang/perl/ ftp://ftp.ntua.gr/pub/lang/perl/ - Венгрия
-
http://mirror.met.hu/CPAN/ - Ирландия
-
http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN/ ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN/ - Италия
-
http://bo.mirror.garr.it/mirrors/CPAN/ ftp://ftp.eutelia.it/CPAN_Mirror/ http://cpan.panu.it/ ftp://ftp.panu.it/pub/mirrors/perl/CPAN/ http://cpan.muzzy.it/ - Латвия
-
http://kvin.lv/pub/CPAN/ - Литва
-
http://ftp.litnet.lt/pub/CPAN/ ftp://ftp.litnet.lt/pub/CPAN/ - Молдавия
-
http://mirror.as43289.net/pub/CPAN/ ftp://mirror.as43289.net/pub/CPAN/ - Нидерланды
-
http://cpan.cs.uu.nl/ ftp://ftp.cs.uu.nl/pub/CPAN/ http://mirror.nl.leaseweb.net/CPAN/ ftp://mirror.nl.leaseweb.net/CPAN/ http://ftp.nluug.nl/languages/perl/CPAN/ ftp://ftp.nluug.nl/pub/languages/perl/CPAN/ http://mirror.transip.net/CPAN/ ftp://mirror.transip.net/CPAN/ http://cpan.mirror.triple-it.nl/ http://ftp.tudelft.nl/cpan/ ftp://ftp.tudelft.nl/pub/CPAN/ ftp://download.xs4all.nl/pub/mirror/CPAN/ - Норвегия
-
http://cpan.uib.no/ ftp://cpan.uib.no/pub/CPAN/ ftp://ftp.uninett.no/pub/languages/perl/CPAN/ http://cpan.vianett.no/ - Польша
-
http://ftp.agh.edu.pl/CPAN/ ftp://ftp.agh.edu.pl/CPAN/ http://ftp.piotrkosoft.net/pub/mirrors/CPAN/ ftp://ftp.piotrkosoft.net/pub/mirrors/CPAN/ ftp://ftp.ps.pl/pub/CPAN/ http://sunsite.icm.edu.pl/pub/CPAN/ ftp://sunsite.icm.edu.pl/pub/CPAN/ - Португалия
-
http://cpan.dcc.fc.up.pt/ http://mirrors.fe.up.pt/pub/CPAN/ http://cpan.perl-hackers.net/ http://cpan.perl.pt/ - Румыния
-
http://mirrors.hostingromania.ro/cpan.org/ ftp://ftp.lug.ro/CPAN/ http://mirrors.m247.ro/CPAN/ http://mirrors.evowise.com/CPAN/ http://mirrors.teentelecom.net/CPAN/ ftp://mirrors.teentelecom.net/CPAN/ http://mirrors.xservers.ro/CPAN/ - Российская Федерация
-
ftp://ftp.aha.ru/CPAN/ http://cpan.rinet.ru/ ftp://cpan.rinet.ru/pub/mirror/CPAN/ http://cpan-mirror.rbc.ru/pub/CPAN/ http://mirror.rol.ru/CPAN/ http://cpan.uni-altai.ru/ http://cpan.webdesk.ru/ ftp://cpan.webdesk.ru/cpan/ http://mirror.yandex.ru/mirrors/cpan/ ftp://mirror.yandex.ru/mirrors/cpan/ - Сербия
-
http://mirror.sbb.rs/CPAN/ ftp://mirror.sbb.rs/CPAN/ - Словакия
-
http://cpan.lnx.sk/ http://tux.rainside.sk/CPAN/ ftp://tux.rainside.sk/CPAN/ - Словения
-
http://ftp.arnes.si/software/perl/CPAN/ ftp://ftp.arnes.si/software/perl/CPAN/ - Испания
-
http://mirrors.evowise.com/CPAN/ http://osl.ugr.es/CPAN/ http://ftp.rediris.es/mirror/CPAN/ ftp://ftp.rediris.es/mirror/CPAN/ - Швеция
-
http://ftp.acc.umu.se/mirror/CPAN/ ftp://ftp.acc.umu.se/mirror/CPAN/ - Швейцария
-
http://www.pirbot.com/mirrors/cpan/ http://mirror.switch.ch/ftp/mirror/CPAN/ ftp://mirror.switch.ch/mirror/CPAN/ - Украина
-
http://cpan.ip-connect.vn.ua/ ftp://cpan.ip-connect.vn.ua/mirror/cpan/ - Соединенное Королевство
-
http://cpan.mirror.anlx.net/ ftp://ftp.mirror.anlx.net/CPAN/ http://mirror.bytemark.co.uk/CPAN/ ftp://mirror.bytemark.co.uk/CPAN/ http://mirrors.coreix.net/CPAN/ http://cpan.etla.org/ ftp://cpan.etla.org/pub/CPAN/ http://cpan.cpantesters.org/ http://mirror.sax.uk.as61049.net/CPAN/ http://mirror.sov.uk.goscomb.net/CPAN/ http://www.mirrorservice.org/sites/cpan.perl.org/CPAN/ ftp://ftp.mirrorservice.org/sites/cpan.perl.org/CPAN/ http://mirror.ox.ac.uk/sites/www.cpan.org/ ftp://mirror.ox.ac.uk/sites/www.cpan.org/ http://ftp.ticklers.org/pub/CPAN/ ftp://ftp.ticklers.org/pub/CPAN/ http://cpan.mirrors.uk2.net/ ftp://mirrors.uk2.net/pub/CPAN/ http://mirror.ukhost4u.com/CPAN/
Северная Америка
- Канада
-
http://CPAN.mirror.rafal.ca/ ftp://CPAN.mirror.rafal.ca/pub/CPAN/ http://mirror.csclub.uwaterloo.ca/CPAN/ ftp://mirror.csclub.uwaterloo.ca/CPAN/ http://mirrors.gossamer-threads.com/CPAN/ http://mirror.its.dal.ca/cpan/ ftp://mirror.its.dal.ca/cpan/ ftp://ftp.ottix.net/pub/CPAN/ - Коста-Рика
-
http://mirrors.ucr.ac.cr/CPAN/ - Мексика
-
http://www.msg.com.mx/CPAN/ ftp://ftp.msg.com.mx/pub/CPAN/ - Соединенные Штаты Америки
-
- Алабама
-
http://mirror.teklinks.com/CPAN/ - Аризона
-
http://mirror.n5tech.com/CPAN/ http://mirrors.namecheap.com/CPAN/ ftp://mirrors.namecheap.com/CPAN/ - Калифорния
-
http://cpan.develooper.com/ http://httpupdate127.cpanel.net/CPAN/ http://mirrors.sonic.net/cpan/ ftp://mirrors.sonic.net/cpan/ http://www.perl.com/CPAN/ http://cpan.yimg.com/ - Айдахо
-
http://mirrors.syringanetworks.net/CPAN/ ftp://mirrors.syringanetworks.net/CPAN/ - Иллинойс
-
http://cpan.mirrors.hoobly.com/ http://mirror.team-cymru.org/CPAN/ ftp://mirror.team-cymru.org/CPAN/ - Индиана
-
http://cpan.netnitco.net/ ftp://cpan.netnitco.net/pub/mirrors/CPAN/ ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/ - Канзас
-
http://mirrors.concertpass.com/cpan/ - Массачусетс
-
http://mirrors.ccs.neu.edu/CPAN/ - Мичиган
-
http://cpan.cse.msu.edu/ ftp://cpan.cse.msu.edu/ http://httpupdate118.cpanel.net/CPAN/ http://mirrors-usa.go-parts.com/cpan/ http://ftp.wayne.edu/CPAN/ ftp://ftp.wayne.edu/CPAN/ - Нью-Гемпшир
-
http://mirror.metrocast.net/cpan/ - Нью-Джерси
-
http://mirror.datapipe.net/CPAN/ ftp://mirror.datapipe.net/pub/CPAN/ http://www.hoovism.com/CPAN/ ftp://ftp.hoovism.com/CPAN/ http://cpan.mirror.nac.net/ - Нью-Йорк
-
http://mirror.cc.columbia.edu/pub/software/cpan/ ftp://mirror.cc.columbia.edu/pub/software/cpan/ http://cpan.belfry.net/ http://cpan.erlbaum.net/ ftp://cpan.erlbaum.net/CPAN/ http://cpan.hexten.net/ ftp://cpan.hexten.net/ http://mirror.nyi.net/CPAN/ ftp://mirror.nyi.net/pub/CPAN/ http://noodle.portalus.net/CPAN/ ftp://noodle.portalus.net/CPAN/ http://mirrors.rit.edu/CPAN/ ftp://mirrors.rit.edu/CPAN/ - Северная Каролина
-
http://httpupdate140.cpanel.net/CPAN/ http://mirrors.ibiblio.org/CPAN/ - Орегон
-
http://ftp.osuosl.org/pub/CPAN/ ftp://ftp.osuosl.org/pub/CPAN/ http://mirror.uoregon.edu/CPAN/ - Пенсильвания
-
http://cpan.pair.com/ ftp://cpan.pair.com/pub/CPAN/ http://cpan.mirrors.ionfish.org/ - Южная Каролина
-
http://cpan.mirror.clemson.edu/ - Техас
-
http://mirror.uta.edu/CPAN/ - Юта
-
http://cpan.cs.utah.edu/ ftp://cpan.cs.utah.edu/CPAN/ ftp://mirror.xmission.com/CPAN/ - Виргиния
-
http://mirror.cogentco.com/pub/CPAN/ ftp://mirror.cogentco.com/pub/CPAN/ http://mirror.jmu.edu/pub/CPAN/ ftp://mirror.jmu.edu/pub/CPAN/ http://mirror.us.leaseweb.net/CPAN/ ftp://mirror.us.leaseweb.net/CPAN/ - Вашингтон
-
http://cpan.llarian.net/ ftp://cpan.llarian.net/pub/CPAN/ - Висконсин
-
http://cpan.mirrors.tds.net/ ftp://cpan.mirrors.tds.net/pub/CPAN/
Океания
- Австралия
-
http://mirror.as24220.net/pub/cpan/ ftp://mirror.as24220.net/pub/cpan/ http://cpan.mirrors.ilisys.com.au/ http://cpan.mirror.digitalpacific.com.au/ ftp://mirror.internode.on.net/pub/cpan/ http://mirror.optusnet.com.au/CPAN/ http://cpan.mirror.serversaustralia.com.au/ http://cpan.uberglobalmirror.com/ http://mirror.waia.asn.au/pub/cpan/ - Новая Каледония
-
http://cpan.lagoon.nc/pub/CPAN/ ftp://cpan.lagoon.nc/pub/CPAN/ http://cpan.nautile.nc/CPAN/ ftp://cpan.nautile.nc/CPAN/ - Новая Зеландия
-
ftp://ftp.auckland.ac.nz/pub/perl/CPAN/ http://cpan.catalyst.net.nz/CPAN/ ftp://cpan.catalyst.net.nz/pub/CPAN/ http://cpan.inspire.net.nz/ ftp://cpan.inspire.net.nz/cpan/ http://mirror.webtastix.net/CPAN/ ftp://mirror.webtastix.net/CPAN/
Южная Америка
- Аргентина
-
http://cpan.mmgdesigns.com.ar/ - Бразилия
-
http://cpan.kinghost.net/ http://linorg.usp.br/CPAN/ http://mirror.nbtelecom.com.br/CPAN/ - Чили
-
http://cpan.dcc.uchile.cl/ ftp://cpan.dcc.uchile.cl/pub/lang/cpan/
Зеркала RSYNC
rsync://ftp.is.co.za/IS-Mirror/ftp.cpan.org/
rsync://mirror.ac.za/CPAN/
rsync://mirror.zol.co.zw/CPAN/
rsync://mirror.dhakacom.com/CPAN/
rsync://mirrors.ustc.edu.cn/CPAN/
rsync://mirrors.xmu.edu.cn/CPAN/
rsync://kambing.ui.ac.id/CPAN/
rsync://ftp.jaist.ac.jp/pub/CPAN/
rsync://mirror.jre655.com/CPAN/
rsync://ftp.kddilabs.jp/cpan/
rsync://ftp.nara.wide.ad.jp/cpan/
rsync://ftp.riken.jp/cpan/
rsync://mirror.neolabs.kz/CPAN/
rsync://mirror.qnren.qa/CPAN/
rsync://ftp.neowiz.com/CPAN/
rsync://mirror.0x.sg/CPAN/
rsync://ftp.yzu.edu.tw/pub/CPAN/
rsync://ftp.ubuntu-tw.org/CPAN/
rsync://mirrors.digipower.vn/CPAN/
rsync://cpan.inode.at/CPAN/
rsync://ftp.byfly.by/CPAN/
rsync://mirror.datacenter.by/CPAN/
rsync://ftp.belnet.be/cpan/
rsync://cpan.mirror.ba/CPAN/
rsync://mirrors.neterra.net/CPAN/
rsync://mirrors.netix.net/CPAN/
rsync://mirror.dkm.cz/cpan/
rsync://mirrors.nic.cz/CPAN/
rsync://cpan.mirror.vutbr.cz/cpan/
rsync://rsync.nic.funet.fi/CPAN/
rsync://ftp.ciril.fr/pub/cpan/
rsync://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/cpan/
rsync://cpan.mirrors.ovh.net/CPAN/
rsync://mirror.de.leaseweb.net/CPAN/
rsync://mirror.euserv.net/cpan/
rsync://ftp-stud.hs-esslingen.de/CPAN/
rsync://ftp.gwdg.de/pub/languages/perl/CPAN/
rsync://ftp.hawo.stw.uni-erlangen.de/CPAN/
rsync://cpan.mirror.iphh.net/CPAN/
rsync://mirror.netcologne.de/cpan/
rsync://ftp.halifax.rwth-aachen.de/cpan/
rsync://ftp.ntua.gr/CPAN/
rsync://mirror.met.hu/CPAN/
rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN/
rsync://rsync.panu.it/CPAN/
rsync://mirror.as43289.net/CPAN/
rsync://rsync.cs.uu.nl/CPAN/
rsync://mirror.nl.leaseweb.net/CPAN/
rsync://ftp.nluug.nl/CPAN/
rsync://mirror.transip.net/CPAN/
rsync://cpan.uib.no/cpan/
rsync://cpan.vianett.no/CPAN/
rsync://cpan.perl-hackers.net/CPAN/
rsync://cpan.perl.pt/cpan/
rsync://mirrors.m247.ro/CPAN/
rsync://mirrors.teentelecom.net/CPAN/
rsync://cpan.webdesk.ru/CPAN/
rsync://mirror.yandex.ru/mirrors/cpan/
rsync://mirror.sbb.rs/CPAN/
rsync://ftp.acc.umu.se/mirror/CPAN/
rsync://rsync.pirbot.com/ftp/cpan/
rsync://cpan.ip-connect.vn.ua/CPAN/
rsync://rsync.mirror.anlx.net/CPAN/
rsync://mirror.bytemark.co.uk/CPAN/
rsync://mirror.sax.uk.as61049.net/CPAN/
rsync://rsync.mirrorservice.org/cpan.perl.org/CPAN/
rsync://ftp.ticklers.org/CPAN/
rsync://mirrors.uk2.net/CPAN/
rsync://CPAN.mirror.rafal.ca/CPAN/
rsync://mirror.csclub.uwaterloo.ca/CPAN/
rsync://mirrors.namecheap.com/CPAN/
rsync://mirrors.syringanetworks.net/CPAN/
rsync://mirror.team-cymru.org/CPAN/
rsync://debian.cse.msu.edu/cpan/
rsync://mirrors-usa.go-parts.com/mirrors/cpan/
rsync://rsync.hoovism.com/CPAN/
rsync://mirror.cc.columbia.edu/cpan/
rsync://noodle.portalus.net/CPAN/
rsync://mirrors.rit.edu/cpan/
rsync://mirrors.ibiblio.org/CPAN/
rsync://cpan.pair.com/CPAN/
rsync://cpan.cs.utah.edu/CPAN/
rsync://mirror.cogentco.com/CPAN/
rsync://mirror.jmu.edu/CPAN/
rsync://mirror.us.leaseweb.net/CPAN/
rsync://cpan.mirror.digitalpacific.com.au/cpan/
rsync://mirror.internode.on.net/cpan/
rsync://uberglobalmirror.com/cpan/
rsync://cpan.lagoon.nc/cpan/
rsync://mirrors.mmgdesigns.com.ar/CPAN/ Для получения актуального списка сайтов CPAN посетите https://www.cpan.org/SITES или ftp://www.cpan.org/SITES.
Модули: Создание, использование и злоупотребления
(Следующий раздел взят непосредственно из файла модулей Тима Банса, доступного на ближайшем сайте 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 at 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–2020 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.32.0/perlmodlib