Peter,

Thanks so much for your super-fast reply, which made me realize that
entry->get_value($attr)
returns a list which can be iterated :)

This definitely did the trick.

-Mehmet



On Thu, Aug 11, 2011 at 12:42 PM, Peter Karman <pe...@peknet.com> wrote:

> Mehmet wrote on 08/11/2011 10:54 AM:
> > Hi everyone,
> >
> > I am new to perl-ldap and like it very much, however I have a problem I
> > cannot solve by myself (or using google).
> >
> > I have some attributes with multiple values in the same entry, such as:
> >
> > description: abc
> > description: def
> > description: ghi
> > ...
> >
> > I perform a search using a base & filter, then try to list all attributes
> > and their values in a foreach loop:
> >
> > foreach my $entry ($searchResults->entries) {
> >     foreach my $attr ($entry->attributes) {
> >          for ($attr) {  if    (/^description$/) { printf ("%s -> %s \n",
> > $attr, $entry->get_value($attr) ); }
> >     }
> > }
> >
> > the reason I am using for ($attr) is that I have several checks in the
> loop,
> > which I omit here for readability.
> >
> > Now the problem: I noticed that $entry->attributes lists each attribute
> only
> > once! Therefore, I can only print a single value, which happens to be on
> the
> > top of the list (only "abc" in the above example).
> >
>
> You probably want instead something like:
>
>  for my $entry ($searchResults->entries) {
>     for my $attr ($entry->attributes) {
>         if ($attr eq 'description') {
>              printf("%s -> %s\n", $attr,
>                join(", ", $entry->get_value($attr))
>             );
>         }
>      }
>  }
>
>
>
>
> --
> Peter Karman  .  http://peknet.com/  .  pe...@peknet.com
>



-- 
=========================================
Mehmet Belgin, Ph.D. (mehmet.bel...@oit.gatech.edu)
Scientific Computing Consultant | OIT - Academic and Research Technologies
Georgia Institute of Technology
258 Fourth Street, Rich Building, Room 326
Atlanta, GA  30332-0700
Office: (404) 385-0665

Reply via email to