On Aug 13, Darryl Schnell said: >sub ldap_srch { > my $limit = "20"; > my $emailname = shift; > $ldap_con = new Net::LDAPapi($host); > if ($ldap_con == -1) { die "Unable to Open LDAP Connection to $host"; >} > $status = $ldap_con->bind_s("cn=Directory Manager", $passwd); > if ($status != LDAP_SUCCESS) { die $ldap_con->errstring; } > @attrs = (); > $filter = "uid=*$emailname*"; > $status = >$ldap_con->search_s($dn,LDAP_SCOPE_SUBTREE,$filter,\@attrs,0); > if ($status != LDAP_SUCCESS) { die $ldap_con->errstring; } > %ldap_results = %{$ldap_con->get_all_entries}; > $ldap_con ->unbind; > $records = 0; > if ($cnt eq "") { $cnt=0; } > foreach $line (keys %ldap_results) { > foreach $field (sort keys %{$ldap_results{$line}}) { > $value = "@{$ldap_results{$line}{$field}}"; > > if ($field eq "uid") { > $records++; > }
You should start $records at -1, not 0, because this ++ here makes you BEGIN work at $table{$field}[1], not $table{$field}[0]. But you don't need $records anyway. Use push() like you should. push @{ $table{$field} }, $value; There. $records is useless. > chomp $value; > chomp $field; Why are you chomping them? And why AFTER the test? If $field HAPPENED to be "uid\n", you'd have a problem. > $table{$field}[$records] = "$value"; Why the quotes around $value? You didn't put any around $field. There's no need for them here. > } > } > if ($records < $limit) { $limit = $records; } > open (LOG, ">output"); > while ( $cnt <= $limit ) { > print LOG "DEBUG:$table{gecos}[$cnt]:$table{uid}[$cnt]\n"; > $cnt++; > } > close (LOG); >} -- Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/ RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/ ** Look for "Regular Expressions in Perl" published by Manning, in 2002 ** <stu> what does y/// stand for? <tenderpuss> why, yansliterate of course. [ I'm looking for programming work. If you like my work, let me know. ] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]