Для быстрого и грязного, нечастого использования лучше всего выбрать %INC
. Если вам нужно сделать это с помощью непрерывного интеграционного тестирования или чего-то более надежного, вам помогут другие инструменты.
Штеффен уже упомянул Модуль :: ScanDeps.
Код в Test :: Prereq делает это, но имеет дополнительный слой, который гарантирует, что ваш Makefile.PL или Build.PL перечислит их как зависимости. Если вы сделаете ваши скрипты похожими на обычный дистрибутив Perl , это позволит довольно легко проверять наличие новых зависимостей; просто запустите тестовый набор снова.
Кроме этого, вы можете использовать такой инструмент, как Module :: Extract :: Use , который анализирует статический код в поисках использования и требует операторов (хотя он не найдет их в evals-кодах строк). ). Это дает вам только модули, которые вы сказали, чтобы ваш скрипт загружал.
Кроме того, когда вы знаете, какие модули вы загрузили, вы можете объединить это с инструментом CPANdeps Дэвида Кантрелла, который уже создал дерево зависимостей для большинства модулей CPAN.
Обратите внимание, что вам также нужно подумать о дополнительных функциях. Ваш код в этом случае может не иметь их, но иногда вы не загружаете модуль, пока он вам не нужен:
sub foo
{
require Bar; # don't load until we need to use it
....
}
Если вы не задействуете эту функцию в пробном запуске или тестировании, вы не увидите, что вам нужна Bar для этой функции. Аналогичная проблема возникает, когда модуль загружает другой набор модулей зависимостей в другой среде (например, mod_perl или Windows и т. Д.).
Нет хорошего автоматизированного способа тестирования дополнительных функций, подобных этим, чтобы вы могли получить их зависимости. Тем не менее, я думаю, что это должно быть в моем списке дел, поскольку это звучит как интересная проблема.