У меня есть этот код
#!/usr/bin/perl
use warnings;
use strict;
use Net::LDAP;
use Data::Dumper;
my $dn="CN=...";
my $password="xxx";
my $ldap = Net::LDAP->new('example.com') or die "$@";
my $mesg = $ldap->bind($dn, password=>$password);
if ($mesg->code) { die "uuuu $mesg"; }
$mesg = $ldap->search(base => "dc=test,dc=example,dc=com", filter => "(name=LIST)",);
my $ref = $mesg->entry->get_value("member", asref => 1);
print Dumper $ref;
foreach my $string (@{$ref}) {
$string =~ /CN=(.+?),.*/;
print $1 . "\n";
}
, который выводит CN с помощью регулярных выражений:
aaaa
bbbb
cccc
...
Используя Dumper
можно ли увидеть структуру
$VAR1 = [
'CN=aaaa,OU=test,DC=test,DC=example,DC=com',
'CN=bbbb,OU=test,DC=test,DC=example,DC=com',
'CN=cccc,OU=test,DC=test,DC=example,DC=com',
Так что мне интересно, есть ли более "LDAP" способ извлечь эти CN, вместо использования регулярных выражений?
Обновление:
На основе Javs ответить на этотэто решение.
my $ref = $mesg->entry->get_value("member", asref => 1);
foreach my $string (@{$ref}) {
print ldap_explode_dn($string)->[0]{CN} . "\n";
}