Модуль предоставляет всего одну функцию list_packages(), которая ищет все вложенные пакеты в указанном пакете и возвращает их названия в виде списка.
Синтаксис
|
1 2 3 4 |
use Foo::Bar; use Devel::InnerPackage qw(list_packages); my @inner_packages = list_packages('Foo::Bar'); |
Пример
Допустим, есть пакет MyPackage, который содержит внутри еще несколько пакетов:
|
1 2 3 4 5 6 7 8 9 10 |
package MyPackage; sub func {} package MyPackage::MyBasket; sub func1 {} package MyPackage::MyService; sub func2 {} 1; |
В отдельном скрипте выполняем вызов функции list_packages():
|
1 2 3 4 5 6 |
use MyPackage; use Devel::InnerPackage qw(list_packages); my @list = list_packages("MyPackage"); print join(', ', @list); |
Результат выполнения:
|
1 2 |
$ perl Devel_InnerPackage.pl MyPackage::MyService, MyPackage::MyBasket |
Поиск входящих пакетов осуществляется только в указанном пакете, в файле этого пакета. В других файлах поиск не выполняется. Функция выполняет поиск с помощью grep(), substr() и регулярных выражений.