I prefer using "as_struct" method to place all search results in one perl structure. Like this
#!/usr/bin/perl -w
use strict;
use English;
use Data::Dumper;
use Net::LDAP;
my $ldap = Net::LDAP->new("ldap://ldapserver.company.com") or die "$EV
+AL_ERROR";
my $mesg = $ldap->search(
base => "ou=people,dc=company,dc=com",
scope => "sub",
filter => "cn=oracle*",
);
my $struct = $mesg->as_struct;
print Dumper( $struct );
So the output will be something like:
$VAR1 = {
'uid=oracle8,ou=people,dc=fresenius,dc=de' => {
'gidnumber' => [
'4019'
],
'objectclass' => [
'shadowAccount',
'posixAccount',
'account',
'top'
],
'loginshell' => [
'/bin/sh'
],
'uid' => [
'oracle8'
],
'homedirectory' => [
'/home/oracle8'
],
'cn' => [
'oracle8'
],
'uidnumber' => [
'3355'
],
'gecos' => [
'Oracle8 user account'
]
},
'uid=oracle7,ou=people,dc=fresenius,dc=de' => {
'gidnumber' => [
'4019'
],
'objectclass' => [
'shadowAccount',
'posixAccount',
'account',
'top'
],
'loginshell' => [
'/bin/sh'
],
'uid' => [
'oracle7'
],
'homedirectory' => [
'/home/oracle7'
],
'cn' => [
'oracle7'
],
'uidnumber' => [
'4022'
],
'gecos' => [
'Oracle7 user account'
]
},
'uid=oracle,ou=people,dc=fresenius,dc=de' => {
'gidnumber' => [
'206'
],
'loginshell' => [
'/bin/bash'
],
'objectclass' => [
'shadowAccount',
'posixAccount',
'account',
'top'
],
'uid' => [
'oracle'
],
'homedirectory' => [
'/home/oracle'
],
'cn' => [
'oracle'
],
'uidnumber' => [
'4267'
],
'gecos' => [
'oracle db admin'
]
}
};
Note that attribute values in this perl structure are always represented as ARRAY references, even though that most have only single value assigned.