use Net::LDAP; use Net::LDAP::Control::PreRead; use Net::LDAP::Constant qw( LDAP_CONTROL_PREREAD LDAP_SUCCESS ); $ldap = Net::LDAP->new( "ldap.mydomain.eg" ); $preread = Net::LDAP::Control::PreRead->new( attrs => [ qw/givenName/ ] ); my $mesg = $ldap->modify( "cn=Barbara Jensen, o=University of Michigan, c=US", replace => { givenName => "Babs" }, control => $preread ); if ($mesg->code eq LDAP_SUCCESS) { my ($previous) = $mesg->control( LDAP_CONTROL_PREREAD ); my $entry = $previous ? $previous->entry() : undef; if ($entry) { print "givenName changed from '" . join("', '", $entry->get_value(givenName") . "' to 'Babs'\n"); } }
In modification operations, the "Pre-Read request control" indicates to the server that a copy of the original entry before the update is to be returned. After the successful completion of the operation, the accompanying "Pre-Read response control" allows one to retrieve the original value from the server's response.
One use case of this control may be to obtain replaced or deleted values of modified attributes or a copy of the entry being deleted.
If absent, all attributes are returned.
Operational attributes may be included in the list by explicitly asking for them or by using special "+" feature (provided the server supports this feature).
In addition to these methods, the control also supports the following method:
The result is either a Net::LDAP::Entry object or undefined.
Please report any bugs, or post any suggestions, to the perl-ldap mailing list <perl-ldap@perl.org>