[prev in list] [next in list] [prev in thread] [next in thread] 

List:       perl-ldap-dev
Subject:    Re: How to replace multiple values of an attribute
From:       Oliver_Dörr <oliver () doerr-privat ! de>
Date:       2009-04-14 18:55:18
Message-ID: 49E4DC16.4040605 () doerr-privat ! de
[Download RAW message or body]

Hi Graham,

thanks for your hint. I found it. The correct syntax was

my $mesg1=$backendConn->modify($dn, replace => [$attr, $values]);

The problem was, that $values was iso-8859-1 encoded. After decoding it, 
it works.

Thanks again

Oliver

Graham Barr schrieb:
>
> On Apr 13, 2009, at 3:50 PM, Oliver Dörr wrote:
>
>> Hmmm,
>>
>> that does also not work.  $mesg1->error shows "Protocol error " and 
>> $mesg1->code = 2
>>
>> No hint, in LDAP server log
>
> Hm, it should have worked. can you turn on debug with 
> $backendConn->debug(15); just before you call ->modify so we can see 
> what it being sent to the server
>
> Graham.
>
>>
>>
>> Another idea?
>> Oliver
>>
>>
>> Steiner, Ross schrieb:
>>> Oliver,
>>>
>>> I think the following should work (pass a reference to an array, not 
>>> an array):
>>>
>>> my $mesg1=$backendConn->modify($dn,
>>>                               replace => { $attr, $values }
>>>                              );
>>> Regards,
>>> Ross
>>>
>>> -----Original Message-----
>>> From: Oliver Dörr [mailto:oliver@doerr-privat.de] Sent: Monday, 
>>> April 13, 2009 2:41 PM
>>> To: perl-ldap@perl.org
>>> Subject: How to replace multiple values of an attribute
>>>
>>> Hi,
>>>
>>> I spent my whole afternoon searching for a solution for replacing 
>>> all values of an attrbute by an array.
>>>
>>> So what i got is basicly an reference $values to an array of my new 
>>> values. I could iterate through the array using foreach my $value 
>>> (@$values) {...}
>>>
>>> The code that works is:
>>> my $mesg1=$backendConn->modify($dn,
>>>                                        replace => [$attr, ["Hello", 
>>> "Test"]]
>>>                                         );
>>>
>>> But i need to be more flexible and tried today a lot of variations 
>>> of...
>>> my $mesg1=$backendConn->modify($dn,
>>>                                        replace => [$attr, @{$values}]
>>>                                         );
>>>
>>> This gave me the error...
>>> Attribute <one of the values in my array> was not found in the 
>>> schema definition.
>>> inside the LDAP Server
>>>
>>> $attr is a string that contains the name of the attribut.
>>>
>>> Could somebody help me?
>>> Oliver
>>>
>>>
>>>
>>
>
>
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic