sub connect { if (eval { require Net::LDAPS; } and ! $@) { $ldap = Net::LDAPS->new($_[0]); } else { $ldap = Net::LDAP->new($_[0]); } return $ldap; } sub auth { $ldap = connect($_[2]); $ldap->bind($_[0],$_[1]) and return $ldap; } ($dn,$pass,$host) = @ARGV; auth($dn,$pass,$host) or die "auth failed\n"; $ldap = connect($host); $ldap->bind($dn,password=>$pass) ...