Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What's wrong with this code?

53 views
Skip to first unread message

Prentice Bisbal

unread,
Feb 17, 2011, 4:04:20 PM2/17/11
to perl...@perl.org
Okay guys, I need another pair of eyes to try find an error in my code.
Can any of you see anything wrong with this bit of code?

$mesg = $entry->add('objectClass' => 'ntUser',
'ntUserDomainId' => $ntUserDomainId,
'ntUserHomeDir' => "\\\\host.tld\\home\\$ntUserDomainId"
);

.

When I run my program, I get this error:

Use of uninitialized value in concatenation (.) or string at
./add_nt_attribs.pl line 120, <STDIN> line 1.
Use of uninitialized value in length at
/usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
143, <STDIN> line 1.
Use of uninitialized value in concatenation (.) or string at
/usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
144, <STDIN> line 1.
ntUserDomainId: value #0 invalid per syntax at
/usr/local/perl-5.8/lib/site_perl/5.8.8/Net/LDAP/Entry.pm line 268

$entry already exists in LDAP, and I'm just trying to add this new
objectClass and related attributes to the entry. Am I doing this the
wrong way?

Should I be using a function other than entry->add(), like $ldap->modify()?

--
Prentice

Prentice Bisbal

unread,
Feb 17, 2011, 4:12:10 PM2/17/11
to Robert Threet, perl...@perl.org
Robert Threet wrote:
> Just for testing - turn off warnings and strict and see if it runs.
>
> Also - did you see a post from me on this list earlier? I thought you
> got copies of your own posts but I haven't see it nor a response.

>
> On 02/17/2011 03:04 PM, Prentice Bisbal wrote:
>> Use of uninitialized value in concatenation
>
>

No, I did not see your post, but I got a copy of my e-mail that I just
sent. It was the first e-mail I received from this list in a while.

Turning off warning and using strict did not make any difference.

--
Prentice

Prentice Bisbal

unread,
Feb 17, 2011, 4:15:57 PM2/17/11
to John Perkins, perl...@perl.org

John Perkins wrote:
> On 02/17/2011 03:04 PM, Prentice Bisbal wrote:

> You might want to try splitting that into 3 separate $entry->add() calls
> to see if you can narrow down which value it is having issues with.
>
> John
>

John,

I effectively did that by commenting out lines 1 and 2 individually and
simultaneously with no dice. When I comment them both out, I get the
error that objectClass ntUser requires the attribute ntUserDomainId, so
I think at least those two must be added together.


--
Prentice

Prentice Bisbal

unread,
Feb 17, 2011, 4:13:55 PM2/17/11
to perl...@perl.org
I cut off the last line of the errors, which says this, which might be
an additional clue:

ntUserDomainId: value #0 invalid per syntax

This makes me think somewhere an array is being used instead of a string.

--
Prentice Bisbal
Linux Software Support Specialist/System Administrator
School of Natural Sciences
Institute for Advanced Study
Princeton, NJ

Dieter Kluenter

unread,
Feb 17, 2011, 4:34:20 PM2/17/11
to perl...@perl.org
Am Thu, 17 Feb 2011 16:04:20 -0500
schrieb Prentice Bisbal <pren...@ias.edu>:

> Okay guys, I need another pair of eyes to try find an error in my
> code. Can any of you see anything wrong with this bit of code?
>
> $mesg = $entry->add('objectClass' => 'ntUser',
> 'ntUserDomainId' => $ntUserDomainId,
> 'ntUserHomeDir' =>
> "\\\\host.tld\\home\\$ntUserDomainId" );
>
> .
>
> When I run my program, I get this error:
>
> Use of uninitialized value in concatenation (.) or string at
> ./add_nt_attribs.pl line 120, <STDIN> line 1.
> Use of uninitialized value in length at
> /usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
> 143, <STDIN> line 1.
> Use of uninitialized value in concatenation (.) or string at
> /usr/local/perl-5.8/lib/site_perl/5.8.8/Convert/ASN1/_encode.pm line
> 144, <STDIN> line 1.
> ntUserDomainId: value #0 invalid per syntax at
> /usr/local/perl-5.8/lib/site_perl/5.8.8/Net/LDAP/Entry.pm line 268

value #0 is referring to the entry's first attribute type value, please
check this value.

-Dieter

--
Dieter Klünter | Systemberatung
http://dkluenter.de
GPG Key ID:DA147B05
53°37'09,95"N
10°08'02,42"E

Prentice Bisbal

unread,
Feb 17, 2011, 4:48:47 PM2/17/11
to perl...@perl.org
Thanks everyone for all the assistance. I finally found the source of my
error. I was assigning ntUserDomainId inside an if block earlier in the
code like this:

if (something) {
my $ntUserDomainId = something_else;
} else {
.....


}
$mesg = $entry->add('objectClass' => 'ntUser',
'ntUserDomainId' => $ntUserDomainId,
'ntUserHomeDir' => "\\\\host.tld\\home\\$ntUserDomainId"
);


Obviously, this scoped $ntUserDomainId incorrectly, so it was undefined
in my entry->add function. A subtle mistake that I kept overlooking. I
used the debugger, but was checking it's value as soon as it was
defined, and not where the error was actually occuring. D'oh!

Thanks again for all the quick, helpful response.

Prentice

Chris Ridd

unread,
Feb 18, 2011, 2:10:10 AM2/18/11
to Prentice Bisbal, perl...@perl.org

On 17 Feb 2011, at 21:13, Prentice Bisbal wrote:

> I cut off the last line of the errors, which says this, which might be
> an additional clue:
>
> ntUserDomainId: value #0 invalid per syntax

What does your $ntUserDomainId value look like?

If you call $ldap->debug(15) before $entry->add you will get some extra output showing what perl's sent to your server, and that should provide a big clue.

Chris

Prentice Bisbal

unread,
Feb 18, 2011, 8:29:41 AM2/18/11
to perl...@perl.org

Thanks for the tip. I figured out the source of my problem (you probably
are reading your e-mails in order so haven't gotten to that one yet),
but that's a trick that will be very helpful in the future.

--
Prentice

0 new messages