前回のNet::LDAP Addオペレーションに続いて、Deleteオペレーションの例を挙げます。
Net::LDAP->delete( dn ) を使用します。
bindし、uid=test*で検索し、検索されたエントリのDNを@dns配列にプッシュし、それをdeleteメソッドに渡し、削除・・・という流れです。
test-ldap2.pl
use Net::LDAP;
#
# bind as priviledged user for delete.
#
$ldap = Net::LDAP->new( "localhost" );
$message = $ldap->bind( "cn=Directory Manager", password=>"password" );
if( $message->code == 0 ) {
print "bind success\n";
} else {
warn "error with bind: " . $message->error;
exit( 1 );
}
#
# search with uid=test* and found entry push to array named @dns.
#
$result=$ldap->search( base=>"dc=example,dc=com", filter=>"uid=test*" );
@dns = ();
if( $result->code == 0 ) {
foreach $entry ($result->entries){
push @dns, $entry->dn;
}
} else {
$ldap->unbind;
warn "error with search: " . $message->error;
exit( 1 );
}
#
# delete found entry in @dns
#
$counter=0;
foreach $dn ( @dns ) {
$result = $ldap->delete( $dn );
if( $result != 0 ) {
$counter++;
print "deleted :" . $dn . "\n";
} else {
warn $result->error . "\n";
}
}
print $counter." entries deleted.\n";
$ldap->unbind;
実行結果
# perl test-ldap2.pl
bind success
deleted :uid=test.0,ou=People,dc=example,dc=com
deleted :uid=test.1,ou=People,dc=example,dc=com
deleted :uid=test.2,ou=People,dc=example,dc=com
deleted :uid=test.3,ou=People,dc=example,dc=com
deleted :uid=test.4,ou=People,dc=example,dc=com
5 entries deleted.
#
#気持ちよくかけました。