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?

Да. Модуляризация считается хорошей практикой во всем программировании.

Другие вопросы по тегам