In the immortal words of Manuel Vacelet:

> 4 my @servers =
> ['ldap://ldap5.example.com','ldap://ldap-fallback-eu.example.com','ldap://ldap.example.com','ldap://ldap2.example.com'];
> 5 my $ldap = Net::LDAP->new(@servers) or die "Unable to connect to
> ldap server: [EMAIL PROTECTED]";
> 
> But, if I change [] by () in the servers array affectation L4, I get an error:
> Unable to connect to ldap server: IO::Socket::INET: Bad hostname ''

When you use the [], what you end up with is a list @servers with a
single element that is itself a reference to the list of ldap URLs:

$servers[0] = ['ldap...',...]

When you change to (), the list @servers is just a plain list:

$servers[0] = 'ldap5...';
$servers[1] = 'ldap-fallback....';
...

To get the multi-server list in Net::LDAP-new, you need to pass in a
list reference.  Using @servers in the first case works because the
list you pass happens to contain a list reference as its first (and
only) element.

What you really want (based on your "what I got from the config" comment):

my @servers = ('ldap5...', 'ldap-fallback...');
my $ldap = Net::LDAP->new([EMAIL PROTECTED]) or die...

The backslash in front of @servers makes a reference to the list.

%%  Christopher A. Bongaarts  %%  [EMAIL PROTECTED]       %%
%%  Internet Services         %%  http://umn.edu/~cab  %%
%%  University of Minnesota   %%  +1 (612) 625-1809    %%

Reply via email to