Perl - использовать все модули из указанного подкаталога и автоматически решать его зависимости
У меня есть два модуля:
./My/Module1
./My/Module2
Module1
использует подпрограммы из Module2
, Итак, в моем сценарии я набрал следующее:
use My::Module1
use My::Module2
Но это не сработало, и Perl пожаловался, что подпрограммы, которые используются из Module2
от Module1
не существует Поэтому я добавил следующую строку в Module1
:
use My::Module2
Наконец это сработало, как и ожидалось.
Мне интересно, есть ли какое-нибудь решение, которое будет включать все модули из указанного дерева подкаталогов и автоматически решать зависимости. Я не хочу печатать use
ключевое слово в модулях, которое зависит от других модулей. Следующие команды были опробованы, но они не работали (из-за синтаксических ошибок или из-за неправильных модулей):
use My::;
use My::*;
use My;
Также я хотел бы спросить, считается ли этот кросс-использование модулей и вызова их подпрограмм хорошей практикой в программировании на Perl?
PS: @INC
содержит текущий каталог, поэтому загрузка модулей работает.
PPS: используемые модули Exporter
1 ответ
Я не хочу печатать
use
ключевое слово в модулях, которое зависит от других модулей.
Затем введите BEGIN
, require
, а также import
ключевые слова вместо?
Серьезно, нет хорошего способа, чтобы это сработало. Просто используйте use
в каждом модуле, чтобы он мог загружать то, что ему нужно.
Также я хотел бы спросить, считается ли этот кросс-использование модулей и вызова их подпрограмм хорошей практикой в программировании на Perl?
Да. Модуляризация считается хорошей практикой во всем программировании.