Hi all. I've been using Perl for many years now, but I am a "use it and
learn it as you need it" type. I having some trouble passing a list to
the "search" subroutine from Net::LDAP.
I am trying to pass a list of attributes to be returned by search. The
basic method call is:
my $searchresults = $ldap->search(OPTIONS )
One of the options is "attrs =>" which the documentation describes as "A
list of attributes to be returned for each entry that matches the search
filter.".
I am able to do something like this no problem:
my $searchresults = $ldap->search (
base => "$searchbas e",
filter => "$searchfilter" ,
attrs => [ 'uid', 'cn' ];
)
That works just fine.
But what I now want to do is provide the list of attributes to be
returned on the command line much like the way ldapsearch works. @ARGV
is the list of attributes to be returned. I am not sure how to pass
@ARGV to search. I've tried just passing the array, references to the
array, but nothing is working for me. The search completes, but, looking
at the directory logs, the search is requesting ALL attributes rather
than just the ones I want.
my $searchresults = $ldap->search (
base => "$searchbas e",
filter => "$searchfilter" ,
attrs => @ARGV;
)
my $searchresults = $ldap->search (
base => "$searchbas e",
filter => "$searchfilter" ,
attrs => \@ARGV;
)
I am sure I am just using a ref when I shouldn't be, or not using a ref
when I should, or simply referencing the array incorrectly but I am not
sure which one it is!
I actually have the same problem if I try to define the attributes
outside the subroutine call. e.g., if I do this:
my $attrs = [ 'cn', 'uid' ];
my $searchresults = $ldap->search (
base => "$searchbas e",
filter => "$searchfilter" ,
attrs => $attrs;
)
That is not working for me either. Something is broken in my understanding.
Thanks,
Mark