On Dec 12, 2006, at 12:58 AM, Glenn Lamb wrote:
@members = $entry->get_value("member");

if (@members == 0) {
    $first = 0;

    while(1) {
        $last = $first + $size - 1;

        @tmp = $entry->get_value("member;range=${first}-${last}");
@tmp = $entry->get_value("member;range=${first}-*") if @tmp == 0;

        last if @tmp == 0;
        push @members, @tmp;

        $first += $size;
    }
}

If I understand right, the server has returned multiple member attributes, each with an option like 'range=0-*'. If not, then ignore the rest of this message :-)

If so, then why not use

  my @attr_names = grep { /^member(;range=.*)?$/i } $entry->attributes;

The get the value for each of those, or even

  my $href = $entry->get_values('member', alloptions => 1);

This will return a hash reference which will contain all the member attributes. The keys will be the options (the bit after the ;)

So if you are not bothered about order then

  my @members;
  if (my $href = $entry->get_values('member', alloptions => 1)) {
    foreach my $value (values %$href) {
      push @members, ref($value) ? @$value, $value;
    }
  }

Should work

Graham.

Reply via email to