我试图用Net::LDAP使用Net::LDAP::CONTROL::页面,通过一个私有绑定返回许多记录,但到目前为止,我不幸地失败了。我过去曾广泛使用此Net::LDAP,但我从未发现任何文档表明它与Net::LDAP:Control::p兼容。我发现的一切都与Net::LDAP有关。
我得到的错误消息是:在/usr/local/share/perl/5.20.2/Net/LDAP/Search.pm第55行,第755行调用未定义的子例程&main::process_entry。
这是我的代码:
sub Ldap636{
my ($filter) = $_[0];
my $USERNAME = 'username';
my $PASSWORD = 'password';
my $LDAP_SERVER = 'directory.domain.edu';
my $LDAP_SSL_PORT = '636';
my $LDAP_BASE = 'ou=people,dc=domain,dc=edu';
my $userDN = "uid=$USERNAME,ou=identities,ou=special,dc=domain,dc=edu";
my $ldap = Net::LDAPS->new($LDAP_SERVER, port => $LDAP_SSL_PORT) or die "Could not create LDAP object because:\n$!";
my $ldapMsg = $ldap->bind($userDN, password => $PASSWORD);
die $ldapMsg->error if $ldapMsg->is_error;
my $page = Net::LDAP::Control::Paged->new( size => 100 );
@args = (base => "$LDAP_BASE",
callback => \&process_entry,
filter => $filter,
control => [ $page ],
);
my $cookie;
while (1) {
my $result = $ldap->search(@args);
"LDAP error: server says ",$result->error,"\n" if $result->code;
foreach my $entry ($result->entries ) {
my $cn = $entry->get_value('cn');
my $desc = $entry->get_value('description');
print "$cn - $desc\n";
}
# Get cookie from paged control
my($resp) = $result->control( LDAP_CONTROL_PAGED ) or last;
$cookie = $resp->cookie or last;
$page->cookie($cookie);
}
$ldap->unbind;
}发布于 2015-08-26 09:39:30
我得到的错误消息是:在/usr/local/share/perl/5.20.2/Net/LDAP/Search.pm第55行,第755行调用未定义的子例程&main::process_entry。
您已经将process_entry编写为回调,但没有编写该子例程。这就是为什么你要得到上面的错误。
https://stackoverflow.com/questions/32219284
复制相似问题