Passing a list as an arg to a subroutine

Discussion in 'Perl' started by Mark Drummond, Mar 7, 2006.

  1. 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 => "$searchbase",
    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 => "$searchbase",
    filter => "$searchfilter",
    attrs => @ARGV;
    )

    my $searchresults = $ldap->search (
    base => "$searchbase",
    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 => "$searchbase",
    filter => "$searchfilter",
    attrs => $attrs;
    )

    That is not working for me either. Something is broken in my understanding.

    Thanks,

    Mark
    Mark Drummond, Mar 7, 2006
    #1
    1. Advertising

  2. Cancel that, finally figured out what I was doing wrong. I was trying to
    pass

    "\@ARGV"

    rather than

    \ARGV

    I was tripping over the "\" which of course has special meaning inside
    the double quotes!

    Mark
    Mark Drummond, Mar 7, 2006
    #2
    1. Advertising

  3. In article <>,
    wrote:
    > Cancel that, finally figured out what I was doing wrong. I was trying to
    > pass
    >
    > "\@ARGV"
    >
    > rather than
    >
    > \ARGV
    >
    > I was tripping over the "\" which of course has special meaning inside
    > the double quotes!


    And that's why you should ceck out

    perldoc -q quoting
    What's wrong with always quoting "$vars"?
    Thomas Wasell, Mar 9, 2006
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. n00m
    Replies:
    5
    Views:
    380
  2. jonnytheclown

    How to tell if a subroutine arg is a constant

    jonnytheclown, Feb 24, 2005, in forum: Perl Misc
    Replies:
    9
    Views:
    133
    Brian McCauley
    Mar 1, 2005
  3. Replies:
    3
    Views:
    114
    Tad J McClellan
    Mar 21, 2009
  4. Replies:
    7
    Views:
    156
  5. Replies:
    21
    Views:
    254
    Barry Schwarz
    Mar 5, 2014
Loading...

Share This Page