Советы по разработке набора модулей Perl - PullRequest
2 голосов
/ 15 марта 2012

У меня есть требование разработать группу модулей Perl для внутренней работы. Я хотел бы, чтобы все они были объединены в один семейство или набор модулей , а не были отдельными.

Например, набор будет выглядеть примерно так:

MySuite::App::Module1
            ::Module2
MySuite::Env
MySuite::Utils::Logger
              ::Util2

Я прошел через perlmodstyle , perlnewmod и т. Д., Но все они, похоже, сосредоточены на советах по разработке отдельных модулей. Каковы советы / лучшие практики при разработке / распространении такого пакета, как этот? (отдельные модули в наборе могут быть написаны разными разработчиками)

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Это не сильно отличается от одномодульных дистрибутивов.Два дополнительных установленных соглашения:

  1. Поместите модули иерархически в каталог lib.

    MySuite::App::Module1       →   lib/MySuite/App/Module1.pm
    MySuite::App::Module2       →   lib/MySuite/App/Module2.pm
    MySuite::Env                →   lib/MySuite/Env.pm
    MySuite::Utils::Logger      →   lib/MySuite/Utils/Logger.pm
    MySuite::Utils::Util2       →   lib/MySuite/Utils/Utils2.pm
    
  2. Выберите основной модуль, который становитсяНазвание дистрибутива.Ваш пример выглядит так, как будто у него должен быть дополнительный lib/MySuite.pm с оператором пакета MySuite и не так много кода и некоторой документации для точки входа.Присвойте этому модулю module_name в файле Build.PL.


Для получения дополнительной информации об упаковке в целом см .:

Отзывы / критические замечания о вашем прогрессе доступны с:

1 голос
/ 30 марта 2012

Используйте инструмент командной строки h2xs, поставляемый с perl.Это создаст очень полезный скелет модуля Perl (который особенно подходит для распространения в CPAN).Введите в своей оболочке:

$ h2xs -X MySuite

Это создаст один дистрибутив с конкретным скелетом модуля, помещенным в lib.Изучите его и создайте другие .pm-файлы, как требуется ниже lib.Изучите строку «package» в источнике и найдите путь к файлу;Вы должны получить основную идею.Например:

  $ cd MySuite
  $ touch -p lib/MySuite/App/Module.pm
  $ touch -p lib/MySuite/Env.pm
  $ ...

будет основным шагом для добавления дополнительных модулей в ваш дистрибутив.Каждый раз, когда вы добавляете другой файл .pm или меняете имена файлов, введите

  $ perl Makefile.PL  (only first time or "Makefile" not present)
  $ make manifest

для синхронизации вашего файла MANIFEST;он добавит все файлы в дистрибутив модуля.Это позволяет вам использовать

  $ make dist

для создания архива MySuite-0.1.tar.gz.Наконец, вы можете протестировать ваш пакет с:

  $ make test

Вместе h2xs очень удобен для авторов модулей и берет на себя бремя подготовки базовой инфраструктуры распространения модулей.Он создает заполнители для заполнения конкретной документации и создает Makefile для управления вашим дистрибутивом - по мере того, как он становится больше, вы это оцените.Отправьте ваш модуль в CPAN, и вы будете рады, насколько хорошо он будет проиндексирован.

...