Я хочу, чтобы другой разработчик запускал Perl script, который я написал. script использует много модулей CPAN, которые должны быть установлены до запуска script. Можно ли сделать script (или двоичный код perl
) сбросить список всех отсутствующих модулей? Perl печатает имена недостающих модулей при попытке запустить script, но это подробный и не перечисляет сразу все недостающие модули. Id нравится делать что-то вроде:
$ cpan -i `said-script --list-deps`
Или даже:
$ list-deps said-script > required-modules # on my machine
$ cpan -i `cat required-modules` # on his machine
Есть ли простой способ сделать это? Это не шоу-стоппер, но я хотел бы облегчить жизнь другим разработчикам. (Необходимые модули посыпаны несколькими файлами, поэтому мне нелегко составить список вручную, не пропуская ничего. Я знаю о PAR, но это кажется слишком сложным для того, что я хочу.)
Обновление: Спасибо, Манни, что будет. Я не знал о %INC
, я знал только о @INC
. Я решил что-то вроде этого:
print join("\n", map { s|/|::|g; s|\.pm$||; $_ } keys %INC);
Что печатает:
Moose::Meta::TypeConstraint::Registry
Moose::Meta::Role::Application::ToClass
Class::C3
List::Util
Imager::Color
…
Похоже, это сработает.