Если это просто классы (т. Е. Они не экспортируют какие-либо функции или переменные, когда вы use
их), тогда все, что действительно имеет значение, это то, что они были загружены.
Просто создайте Component.pm
:
package Component;
our $VERSION = '1.00';
use Component::Root;
use Component::Foo;
use Component::Bar;
use Component::Baz;
use Component::Flib;
use Component::Zen;
use Component::Zen::Foo;
use Component::Zen::Bar;
use Component::Zen::Baz;
... # 15 more of these...
use Component::Last;
1; # Package return value
Вам не нужно Exporter
или что-то в этом роде.
Однако вместо использования модуля, который представляет собой не что иное, как операторы use
, это, вероятно, имеет больше смыслапоместить эти операторы use
в класс корневого узла или в модуль, который создает структуру данных.То есть люди захотят сказать:
use Component::Root;
my $root = Component::Root->new(...);
или
use Component qw(build_structure);
my $root = build_structure(...);
в зависимости от того, как обычно создается ваша структура данных.Люди могут немного запутаться, написав:
use Component;
my $root = Component::Root->new(...);
, но это действительно зависит от того, как выглядит ваш API.Если есть несколько классов, на которые люди могут звонить new
, то use Component
может быть подходящим вариантом.