Пространство имен Local::
зарезервировано только для этой цели. Ни один модуль, который начинается с этого префикса, не будет принят в CPAN или ядро. Кроме того, вы можете использовать подчеркивание в имени верхнего уровня (например, My_Corp::Session
или просто My_Session
). Все категории с подчеркиванием также были зарезервированы. (Это упоминается в perlmodlib , в разделе «Выберите имя для модуля».)
Обратите внимание, что оба эти бронирования применяются только к имени верхнего уровня. Например, существуют модули CPAN с именами Time::Local
и Text::CSV_XS
. Но Local::Time
и Text_CSV::XS
являются зарезервированными именами и не будут приняты в CPAN.
Именование модулей после вашей компании тоже хорошо. (Ну, если вы не работаете в какой-то действительно типичной компании.) Использование обратного доменного имени, вероятно, излишне, если вы не собираетесь распространять свои модули среди других. (Но в этом случае вам, вероятно, следует зарегистрировать нормальное имя модуля.)
Как Perl разрешает конфликт:
Perl ищет в каталогах в @INC
модуль с указанным именем. Первый найденный модуль используется. Таким образом, порядок каталогов в @INC
определяет, какой модуль будет использоваться (если у вас установлены модули с одинаковым именем в разных местах).
perl -V
сообщит о содержимом @INC
(каталоги с самым высоким приоритетом указаны первыми). Но есть много способов манипулировать @INC
и во время выполнения.
Кстати, Perl 6 сможет обрабатывать несколько модулей с одинаковым именем разными авторами и даже использовать более одного в одной программе. Но это не решает твою проблему сейчас.