in reply to how to build a transaction?

May I suggest to use DBD::LDAP ?
It has builtin support for transactions (actually, pseudo, but someone else has already done it :)
Michalis