Введение

Модуль Perl — это дискретный компонент программного обеспечения для языка программирования Perl. Технически, это определённый набор соглашений для использования механизма пакетов Perl, который получил всеобщее распространение. Модуль определяет свой исходный код в пакете (по аналогии с Java-пакетом) — механизме Perl для определения пространств имён, например, CGI, Net::FTP или XML::Parser; структура файлов отражает структуру пространства имён (например, исходный код Net::FTP находится в каталоге Net/FTP.pm). Кроме того, модуль является эквивалентом класса в Perl при использовании объектно-ориентированного программирования. Коллекция модулей, сопровождаемая документацией, скриптами сборки и, как правило, набором тестов, составляет дистрибутив. Сообщество Perl располагает обширной библиотекой дистрибутивов, доступных для поиска и загрузки через CPAN. Perl — это язык, допускающий различные стили программирования. Разработчик с одинаковой вероятностью может найти модуль, написанный в процедурном стиле (например, Test::Simple), как и объектно-ориентированный (например, XML::Parser); оба подхода считаются равноправными, в зависимости от задач модуля. Модули также могут использоваться для добавления методов (DBIx::Class) или быть прагмой (strict.pm), которая начинает действовать сразу после загрузки. Модули могут даже использоваться для изменения синтаксиса языка. Эффект модулей Perl обычно ограничен областью видимости, в которой они были загружены. В модулях Perl обычно встроена документация в формате Perl's Plain Old Documentation (POD). POD не накладывает жёстких ограничений на автора и достаточно гибок для написания статей, веб-страниц и даже целых книг, таких как "Programming Perl". В отличие от javadoc, который специализируется на документировании классов Java, документация модуля обычно следует структуре страницы руководства Unix (man page). Язык Perl определяется единственной реализацией (именуемой "perl") и расширяется (а в редких случаях — лишается функциональности) с каждым новым релизом. Поэтому важно, чтобы автор модуля знал, какие функции он использует и какая минимальная версия Perl требуется для его работы. Код на этой странице требует Perl версии 5.6.0, которая на данный момент считается устаревшей.

Процедуральный пример

Вот пример реализации "Hello, World" в виде процедурного модуля с настраиваемым адресатом приветствия, для придания интереса. Также включен короткий скрипт для демонстрации использования модуля.