Методы Mozilla LDAP Entry
Таблица 6.3. Методы Mozilla::LDAP::Entry
Вызов метода | Возвращает |
Sent ry- >exists( $att r name ) | true, если элемент имеет атрибут с таким именем |
$entry->hasValue($attrname,$att rvalue) | true, если элемент имеет названный атрибут с указанным значением |
$entry->matchValue($attrnamet $att rvalue | Так же, как и предыдущий, только ищется соответствие регулярному выражению, определенному в качестве значения атрибута |
$entry->size($attrname) | Количество значений этого атрибута (обычно 1, если только атрибут не обладает несколькими значениями) |
Отдельные методы имеют дополнительные параметры, узнать о которых можно в документации по Mozilla:: LDAP:: Ent ry.
Из программы видно, что методы для доступа к атрибутам элементов в Net:: LDAP несколько отличаются. После проведения поиска все результаты инкапсулируются в один объект. Получить отдельные атрибуты каждого элемента из этого объекта можно, применив один из двух способов.
Во-первых, модуль может преобразовать все полученные элементы в одну большую структуру данных, доступную пользователям. Ssearchobj ->as_struct() возвращает структуру данных, представляющую собой хэш хэшей списков. Метод возвращает ссылку на хэш, ключами которого являются DN-имена полученных элементов. Значения ключей - это ссылки на анонимные хэши, ключами которых являются имена атрибутов. Ключам соответствуют ссылки на анонимные массивы, содержащие значения данных атрибутов (Рисунок 6.1).
Вывести первое значение атрибута сп для всех элементов из структуры данных позволяет такой код:
$searchstruct = $searchobj->as_struct; for (keys %$searchstruct){
print $searchstruet->{$._}{en}[0], "\r";
Можно также сначала использовать один из этих методов и выделить объекты для отдельных элементов из объекта, возвращаемого в результате поиска:
Рисунок 6.1. Структура данных, возвращаемая методом as_struct()
возвращает указанный элемент
Sentry = $searchob]->entry($entrynum);
действует подобно shift() в Perl для списка элементов Sentry = $searchobj->shift_entry;
действет подобно рор() в Perl для списка элементов Sentry = $searchobj->pop_entry;
возвращает все элементы в виде списка ©entries = $searcnobj->entries;
После того как получен объект элемента, можно применить один из указанных методов (табл. 6.4).