Ответ 1
Это действительно взломать, чтобы скрыть пакет от индексатора PAUSE.
Когда дистрибутив загружается в ПАУЗА, индексщик будет проверять каждый файл в загружаемом файле, ища имена пакетов, которые включены в дистрибутив. Любые индексированные пакеты могут отображаться в результатах поиска CPAN.
Есть много причин не желать, чтобы индексир обнаруживал ваши пакеты. В вашем дистрибутиве может быть много небольших или незначительных пакетов, которые будут загромождать результаты поиска для вашего модуля. У вас могут быть пакеты, определенные в вашем каталоге t
(test) или в другом нестандартном каталоге, которые не предназначены для установки как часть дистрибутива. В вашем дистрибутиве могут быть файлы из совершенно другого дистрибутива (который кто-то еще написал).
Хак работает, потому что индексист строго ищет ключевое слово package
и выражение, которое выглядит как имя пакета в той же строке.
В настоящее время вы можете включить файл META.yml
с вашим дистрибутивом. Индексатор PAUSE будет искать и уважать спецификацию no_index
в этом файле. Но это относительно новая возможность индексатора, поэтому более старые модули и вкладчики CPAN старого таймера будут по-прежнему использовать взломанный разрыв строки.
Вот пример спецификации no_index
из Forks::Super
no_index:
directory:
- t
- inc
package:
- Sys::CpuAffinity
- Signals::XSIG
- Signals::XSIG::Default
- Signals::XSIG::TieArray56
Sys::CpuAffinity
и Signals::XSIG
являются отдельными дистрибутивами, которые также упакованы с помощью Forks::Super
. Некоторые тестовые скрипты содержат объявления package
(например, Arbitrary::Test::Package
), которые не следует индексировать.