2010-12-08 25 views
5

CN'leri LDAP ile ayıklamak?

aaaa 
bbbb 
cccc 
... 

Dumper kullanarak

$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', 
yapısını görebilir miyim? Normal ifadeleri kullanmak yerine, bu CN'leri çıkarmak için "LDAP" yolu?

Güncelleme:

Javs tabanlı cevap bu çözüm.

my $ref = $mesg->entry->get_value("member", asref => 1); 

foreach my $string (@{$ref}) { 
    print ldap_explode_dn($string)->[0]{CN} . "\n"; 
} 

cevap

6

Şunları yapabilirsiniz: ve bunun gibi Ayrıntınız üzerinde kullanmak

use Net::LDAP::Util qw(ldap_explode_dn); 

: Sen farkında mısın

$VAR1 = [ 
     { 
     'CN' => 'aaaa' 
     }, 
     { 
     'OU' => 'test' 
     }, 
     { 
     'DC' => 'test' 
     }, 
     { 
     'DC' => 'example' 
     }, 
     { 
     'DC' => 'com' 
     } 
    ]; 
+0

Bunu yaparsam ve 'Damper $ cn;' yazıyorsa, $ VAR1 = 'LIST'; '. –

+0

@Sandra Schlichting Oh, pardon, şimdi istediğini aldım. Düzenlememi kontrol et. – javs

+2

Eğer ldap sunucunuz döndürdüğü ile tutarlıysa, o zaman $ dn -> [0] {CN} '($ dn ldap_explode_dn sonucudur) kadar basitse, sonuçta oluşan diziyi kontrol etmek isteyebilirsiniz. sağlamalarının. – javs

0

:

ldap_explode_dn($mesg->entry->get_value('member')); 

sağlamalarının bu diziyi almak için CN genellikle LDAP direktöründe bir özelliktir s?

Neden tüm döndürülen nesneler için özniteliği CN sorgulamıyorsunuz? Sonra ayrıştırma gerekli değildir.

+0

Bunu nasıl yapacağımı bilmiyorum = (Bir örnek verebilir misin? –

+0

Bunu başarmak için her üye için yeni sorgular yapman gerekirdi, oysa daha önce aldığın şeyi ayrıştırabilirsin. – javs

+1

@javs Good point Örnekte bir grup üyesini sıraya koyduğunu özledim. – geoffc