Это команда perlnewmod, которую можно запустить в провайдере бесплатного хостинга OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
perlnewmod - подготовка нового модуля к распространению
ОПИСАНИЕ
Этот документ дает вам несколько советов о том, как писать модули Perl,
подготовить их к распространению и сделать доступными через CPAN.
Одна из вещей, которая делает Perl действительно мощным, - это то, что хакеры Perl склонны
хотят поделиться решениями проблем, с которыми они столкнулись, чтобы мы с тобой не ссорились
снова с той же проблемой.
Основной способ, которым они это делают, - это абстрагирование решения в модуль Perl. Если вы этого не сделаете
знаете, что это за один из них, остальная часть этого документа не принесет вам особой пользы.
Вы также упускаете очень много полезного кода; подумайте о том, чтобы взглянуть на perlmod,
perlmodlib и perlmodinstall, прежде чем вернуться сюда.
Когда вы обнаружите, что не существует модуля для того, что вы пытаетесь сделать, и
вам приходилось писать код самостоятельно, подумайте о том, чтобы упаковать решение в модуль
и загрузив его в CPAN, чтобы другие могли извлечь из этого пользу.
Вам также следует взглянуть на perlmodstyle, чтобы узнать о лучших методах создания модуля.
Предупреждение
Мы собираемся в первую очередь сосредоточиться здесь на модулях только для Perl, а не на модулях XS. XS
модули служат совсем другой цели, и вам следует подумать о другом, прежде чем
их раздача - популярность склеиваемой библиотеки, переносимость на другие
операционные системы и так далее. Однако примечания по подготовке Perl-части модуля
его упаковка и распространение будут одинаково хорошо применяться к модулю XS, как и к чистому Perl.
вариант.
Что должен I сделать в a модуль?
Вы должны сделать модуль из любого кода, который, по вашему мнению, будет полезен другим.
Все, что может заполнить брешь в общей библиотеке и что может
слот прямо в их программу. Любая часть вашего кода, которую вы можете изолировать и извлечь
и подключиться к чему-то еще - вероятный кандидат.
Возьмем пример. Предположим, вы читаете данные из локального формата в хеш-код.
хешей в Perl, превращая это в дерево, обходя дерево и затем соединяя каждый узел с
Сервер трансмогрификатора Acme.
Теперь у довольно многих людей есть Acme Transmogrifier, и вам нужно было что-то написать для
говорите о протоколе с нуля - вы почти наверняка захотите превратить его в модуль.
Уровень, на котором вы его продвигаете, зависит от вас: вам могут понадобиться модули уровня протокола
аналогично Net :: SMTP, которые затем взаимодействуют с модулями более высокого уровня, аналогичными Mail :: Send.
Выбор за вами, но вы действительно хотите получить модуль для этого серверного протокола.
Никто на планете не будет говорить о вашем местном формате данных, поэтому мы можем это игнорировать.
Но как насчет того, что посередине? Построение древовидных структур из переменных Perl и
то их обход - хорошая общая проблема, и если никто еще не написал модуль
что делает это, вы можете также захотеть модулировать этот код.
Надеюсь, теперь у вас есть несколько идей о том, что хорошо делать по модулям. Давай теперь посмотрим
как это сделано.
Шаг за шагом: Подготовка земля
Прежде чем мы даже начнем соскабливать код, есть несколько вещей, которые мы хотим сделать в
авансовый.
Смотреть по сторонам
Изучите кучу модулей, чтобы увидеть, как они написаны. Я бы предложил начать с
Text :: Tabs, так как он находится в стандартной библиотеке и красив и прост, а потом ищет
в чем-то более сложном, например File :: Copy. Для объектно-ориентированного кода
Модули «WWW :: Mechanize» или «Email :: *» предоставляют несколько хороших примеров.
Это должно дать вам общее представление о том, как модули построены и написаны.
Проверить это новое
На CPAN много модулей, и легко пропустить один, похожий на тот, что
вы планируете внести свой вклад. Хорошего плуга через
<http://search.cpan.org> И убедитесь, что не вы изобретаете велосипед заново!
Обсуди необходимость
Тебе это может понравиться. Вы можете почувствовать, что это нужно всем. Но не могло быть
на самом деле будет реальный спрос на это там. Если вы не уверены в спросе, ваш
модуль будет иметь, рассмотрите возможность отправки щупов на "comp.lang.perl.modules"
группы новостей или, в крайнем случае, спросите список модулей по адресу "[электронная почта защищена]". Помнить
что это закрытый список с очень долгим сроком рассмотрения - будьте готовы ждать
хорошее время для ответа от них.
Выберите имя
Модули Perl, включенные в CPAN, имеют иерархию именования, которой вы должны попытаться соответствовать.
См. Perlmodlib для получения более подробной информации о том, как это работает, и просмотрите CPAN и
список модулей, чтобы прочувствовать это. По крайней мере, помните: модули должны быть
название с заглавной буквы, (This :: Thing) вписывается в категорию и объясняет их назначение
лаконично.
Проверьте еще раз,
Пока вы это делаете, убедитесь, что вы не пропустили модуль, похожий на
тот, который вы собираетесь написать.
Когда вы разобрались со своим именем и уверены, что ваш модуль нужен, а не
в настоящее время доступно, пора приступить к кодированию.
Шаг за шагом: Создание модуль
Начинать с модуль-стартер or h2xs
Команда модуль-стартер Утилита распространяется как часть пакета Module :: Starter CPAN.
Создает каталог с заглушками всех файлов, необходимых для запуска нового модуля,
согласно последним "передовым методам" разработки модулей и вызывается из
командная строка, таким образом:
модуль-стартер --module = Foo :: Bar \
--author = "Ваше имя" --email =[электронная почта защищена]
Если вы не хотите устанавливать пакет Module :: Starter из CPAN, h2xs старше
инструмент, изначально предназначенный для разработки модулей XS, который поставляется в комплекте с
дистрибутив Perl.
Типичный вызов h2xs для чистого модуля Perl:
h2xs -AX --skip-exporter --use-new-tests -n Foo :: Bar
«-A» опускает код автозагрузчика, «-X» опускает элементы XS, «--skip-exporter» опускает
Код экспортера, «--use-new-tests» настраивает современную среду тестирования, а «-n»
указывает имя модуля.
Используйте строгие правила и предупреждения
Код модуля должен быть предупреждающим и строго чистым, поскольку вы не можете гарантировать
условия, при которых он будет использоваться. Кроме того, вы не захотите распространять код, который
в любом случае не было предупреждением или строгой чистотой, верно?
Используйте карпа
Модуль Carp позволяет отображать сообщения об ошибках от вызывающего абонента.
перспектива; это дает вам возможность сигнализировать о проблеме с вызывающим абонентом, а не с вашим
модуль. Например, если вы скажете это:
предупреждать «Имя хоста не указано»;
пользователь увидит что-то вроде этого:
Имя хоста не указано в /usr/local/lib/perl5/site_perl/5.6.0/Net/Acme.pm
линия 123.
похоже, что ваш модуль делает что-то не так. Вместо этого вы хотите поставить
обвинить пользователя и сказать следующее:
Имя хоста не указано в bad_code, строка 10.
Вы делаете это, используя Carp и заменяя ваши «warn» на «carp». Если вам нужно
«умереть», вместо этого произнесите «карканье». Тем не менее, для вашего здравомыслия не забывайте «предупреждать» и «умереть».
проверяет - где действительно виноват ваш модуль.
Используйте Exporter - с умом!
Exporter предоставляет стандартный способ экспорта символов и подпрограмм из вашего модуля.
в пространство имен вызывающего. Например, если вы скажете "использовать Net :: Acme qw (& frob)",
импортировать подпрограмму "frob".
Переменная пакета @EXPORT будет определять, какие символы будут экспортированы, когда
вызывающий просто говорит "используйте Net :: Acme" - вы вряд ли когда-нибудь захотите что-нибудь вставлять
там. @EXPORT_OK, с другой стороны, указывает, какие символы вы хотите экспортировать.
Если вы хотите экспортировать набор символов, используйте% EXPORT_TAGS и определите стандартный
набор для экспорта - подробности см. в Exporter.
Используйте простую старую документацию
Работа не закончена, пока не будут оформлены документы, и вам нужно будет вставить
некоторое время пишу документацию для вашего модуля. "модуль-стартер" или "h2xs" будет
предоставить вам корешок для заполнения; если вы не уверены в формате, посмотрите perlpod
для введения. Кратко опишите, как ваш модуль используется в коде,
описание, а затем примечания к синтаксису и функциям отдельных подпрограмм или
методы. Используйте комментарии Perl для заметок разработчика и POD для заметок конечного пользователя.
Напишите тесты
Вам предлагается создать самотестирование для вашего модуля, чтобы убедиться, что он работает как
предназначен для множества платформ, поддерживаемых Perl; если вы загрузите свой модуль в CPAN,
множество тестеров соберут ваш модуль и отправят вам результаты тестов. Опять таки,
"module-starter" и "h2xs" предоставляют тестовую среду, которую вы можете расширить - вам следует
сделайте что-то большее, чем просто проверьте, будет ли ваш модуль компилироваться. Test :: Simple и
Test :: More - хорошие места для начала при написании набора тестов.
Напишите README
Если вы загружаете в CPAN, автоматические гремлины извлекут файл README и
поместите это в свой каталог CPAN. Он также появится в главном по модулю и по-
Каталог каталоги, если вы внесете его в список модулей. Это хорошая идея разместить здесь
что на самом деле модуль делает в деталях, и видимые пользователем изменения с момента последнего
отпустить.
Шаг за шагом: Распределительная модуль
Получите идентификатор пользователя CPAN
Каждому разработчику, публикующему модули на CPAN, нужен CPAN ID. Визит
"http://pause.perl.org/", выберите" Запросить аккаунт ПАУЗЫ "и дождитесь вашего запроса на
быть одобренными администраторами ПАУЗЫ.
"perl Makefile.PL; make test; make dist"
И снова "модуль-стартер" или "h2xs" сделали всю работу за вас. Они производят
стандартный "Makefile.PL", который вы видите при загрузке и установке модулей, и это производит
Make-файл с целью "dist".
Как только вы убедитесь, что ваш модуль прошел собственные тесты - всегда полезно сделать
конечно - вы можете "сделать dist", и Makefile, надеюсь, создаст вам хороший tarball
вашего модуля, готового к загрузке.
Загрузите архив
В электронном письме, которое вы получили, когда вы получили свой CPAN ID, будет указано, как войти в систему PAUSE,
Авторы Perl загружают сервер. Из меню вы можете загрузить свой модуль в
КПАН.
Объявить в список модулей
После загрузки он останется незамеченным в каталоге вашего автора. Если вы хотите, чтобы он был подключен
для остальной части CPAN вам нужно будет перейти в «Register Namespace» на PAUSE. Один раз
зарегистрирован, ваш модуль появится в списках по модулям и по категориям на CPAN.
Объявить clpa
Если у вас есть горячее желание рассказать миру о своем релизе, опубликуйте объявление
в модерируемую группу новостей comp.lang.perl.announce.
Исправьте ошибки!
Как только вы начнете накапливать пользователей, они будут присылать вам отчеты об ошибках. Если вам повезет,
они даже пришлют вам патчи. Добро пожаловать в радость поддержки программного проекта ...
Используйте perlnewmod онлайн с помощью сервисов onworks.net