Как сообщить CPAN (Perl) о пакетах, созданных с помощью метапрограммирования?

У меня есть несколько модулей CPAN, которые широко используют метапрограммирование, чтобы сократить количество шаблонов и облегчить рефакторинг.

Следствие однако существует множество пакетов, которые создаются программно, поэтому в исходном коде никогда не бывает строки package X :: Y :: Z; , которую CPAN может найти (и затем использовать для добавления пространства имен в ваш список зарезервированных пространств имен в порядке очереди).

Итак, мой вопрос в том, есть ли предпочтительный способ сообщить CPAN об этих пакетах, созданных во время выполнения. Вот варианты, которые я сейчас рассматриваю:

  • Вручную найдите все пакеты и создайте фиктивный файл pm для индексации CPAN.
  • Выполните поиск вручную и затем обновите Build.PL, чтобы включить их. в предоставляет список .
  • Добавьте код в подпрограммы метапрограммирования, чтобы отслеживать, какие пакеты используются, и добавьте ловушку в build dist для обновления предоставляет или какой-либо другой раздел META.yaml

Последний вариант - это то, к чему я склоняюсь. Я хотел бы знать, есть ли какие-либо проблемы с этим подходом или какие-либо более эффективные способы обновления CPAN с полным списком пакетов.

7
задан Eric Strom 30 November 2010 в 19:33
поделиться