Hi all,

Just started using perl-ldap (long time perldap user). The examples in
the docs generally deal with processing multiple entries returned by a
search, using various loops and such. What if I know a search will
only return a single entry (search keyed on unique attribute)?

What I am looking for is examples of referencing the various
hashes/arrays returned in the search without looping through $entries,
$attrs etc.

I just did something like this but it looks real ugly to me (NOTE: I
am a long time perl and perldap user, but not an expert, especially
when dealing with references):

#!/usr/bin/perl -w
# Creates a series of NIS+ accounts based on data int LDAP

use Net::LDAP;

$ldap = Net::LDAP->new("foo.com") or die "$@";

open(ACCTS,"accts.txt") or die "$@";

$mesg = $ldap->bind(blah,blah,version=>3);

while (<ACCTS>) {

        $result = $ldap->search (
                base    => "o=foo",
                scope   => "one",
                filter  => "uid=$_",
                attrs   =>
['uid','uidnumber','gidnumber','userpassword',
                                'gecos','homedirectory','loginshell']
                );

        next unless defined($result->entry(0));

        $entry = $result->entry(0);

        #
        # This bit seems real ugly to me!
        #
        $uid = $entry->get_value('uid',asref=>1);
        $userpassword = $entry->get_value('userpassword',asref=>1);
        $$userpassword[0] =~ s/{crypt}//;
        $uidnumber = $entry->get_value('uidnumber',asref=>1);
        $gidnumber = $entry->get_value('gidnumber',asref=>1);
        $gecos = $entry->get_value('gecos',asref=>1);
        $homedirectory = $entry->get_value('homedirectory',asref=>1);
        $loginshell = $entry->get_value('loginshell',asref=>1);

        print "/usr/bin/nistbladm -a ",
                "name=$$uid[0] passwd=$$userpassword[0] ",
                "uid=$$uidnumber[0] gid=$$gidnumber[0] ",
                "gcos=\"$$gecos[0]\" home=$$homedirectory[0] ",
                "shell=$$loginshell[0] passwd.org_dir.foo.com.\n";

}

-- 
Mark E. Drummond <[EMAIL PROTECTED]>                http://www.klug.on.ca
icq: 19153754   jabber: [EMAIL PROTECTED]   pgp: 0x095F6183
          F834 7A42 2E68 3FA2 A1BD  27BF 163D 892C 095F 6183

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to