Carl Sajjan wrote:

From: Rob Dixon

Carl Sajjan wrote:

I am chaged with setting up LDAP monitoring using some tool. I came across
this Look.pl utility. But when I try to run this file I got the error...
I am a newbie to PERL.

perl look.pl

/usr/perl5/5.6.1/lib//sun4-solaris-64int
/usr/perl5/5.6.1/lib/
/usr/iplanet/perl5/lib/site/Mozilla/LDAP/
/usr/ds/v5.2/nsPerl5.005_03/lib/site/Mozilla/LDAP/
/usr/ds/v5.2/nsPerl5.006_01/lib/site/Mozilla/LDAP/
/usr/perl5/5.6.1/lib/sun4-solaris-64int
/usr/perl5/5.6.1/lib
/usr/perl5/site_perl/5.6.1/sun4-solaris-64int
/usr/perl5/site_perl/5.6.1
/usr/perl5/site_perl
/usr/perl5/vendor_perl/5.6.1/sun4-solaris-64int
/usr/perl5/vendor_perl/5.6.1
/usr/perl5/vendor_perl.

Can't locate object method "new" via package "Mozilla::LDAP::Conn"
(perhaps you forgot to load "Mozilla::LDAP::Conn"?) at look.pl line 767.


Thing is I have this Conn.pm in these many locations.

/usr/perl5/5.6.1/lib/Conn.pm

/usr/iplanet/perl5/lib/site/Mozilla/LDAP/Conn.pm

/usr/ds/v5.2/nsPerl5.005_03/lib/site/Mozilla/LDAP/Conn.pm

/usr/ds/v5.2/nsPerl5.006_01/lib/site/Mozilla/LDAP/Conn.pm


Where am I going wrong I tried adding the path in Use lib ...

If you have the line

use Mozilla::LDAP::Conn;

in your program, Perl will look in all the paths in @INC for a file with
the
relative path

Mozilla/LDAP/Conn.pm

so the first of these is no use at all as it doesn't have directories Mozilla
and LDAP in the path. The rest are fine, except that none of the locations are
in @INC. If you add any of

/usr/iplanet/perl5/lib/site
/usr/ds/v5.2/nsPerl5.005_03/lib/site
/usr/ds/v5.2/nsPerl5.006_01/lib/site

to @INC then Perl will find the module correctly. Which is the best place to
use depends on the way your system is set up and where other modules are
kept.

Thanks a lot for your reply.
I modified my perl file as follows , but still I get the same error.

use lib qw(/usr/perl5/5.6.1/lib/
   130   /usr/iplanet/perl5/lib/site/Mozilla/LDAP/
   131   /usr/ds/v5.2/nsPerl5.005_03/lib/site/Mozilla/LDAP/
   132   /usr/ds/v5.2/nsPerl5.006_01/lib/site/Mozilla/LDAP/
   133  /usr/ds/v5.2/nsPerl5.005_03/lib/site
   134  );
   135
   136  #use Mozilla::LDAP::Conn;
   137  print (@INC, "\n\n");
   138


Output:

(carl)(113): perl look.pl
/usr/perl5/5.6.1/lib//sun4-solaris-64int/usr/perl5/5.6.1/lib//usr/iplane
t/perl5/lib/site/Mozilla/LDAP//usr/ds/v5.2/nsPerl5.005_03/lib/site/Mozil
la/LDAP//usr/ds/v5.2/nsPerl5.006_01/lib/site/Mozilla/LDAP//usr/ds/v5.2/n
sPerl5.005_03/lib/site/usr/perl5/5.6.1/lib/sun4-solaris-64int/usr/perl5/
5.6.1/lib/usr/perl5/site_perl/5.6.1/sun4-solaris-64int/usr/perl5/site_pe
rl/5.6.1/usr/perl5/site_perl/usr/perl5/vendor_perl/5.6.1/sun4-solaris-64
int/usr/perl5/vendor_perl/5.6.1/usr/perl5/vendor_perl.

Can't locate object method "new" via package "Mozilla::LDAP::Conn"
(perhaps you forgot to load "Mozilla::LDAP::Conn"?) at look.pl line 768.


Line 768 reads as follows

else
   767 {
   768   $ldap_conn = new Mozilla::LDAP::Conn("$parm{'ldaphost'}", 
"$parm{'ldapport'}");
   769 }

Hi Carl

(Please bottom-post your replies so that long threads like this one remain
comprehensible. Thanks.)

First of all, display the contents of @INC using

print "$_\n" foreach @INC;

then each element will appear on a separate line and the output will be more
readable.

Now you haven't understood what I wrote. Perl is looking for a file

 Mozilla/LDAP/Conn.pm

in any of the paths in @INC. So with the 'use lib' line you have it will look
for

 /usr/perl5/5.6.1/lib/Mozilla/LDAP/Conn.pm
 /usr/iplanet/perl5/lib/site/Mozilla/LDAP/Mozilla/LDAP/Conn.pm
 /usr/ds/v5.2/nsPerl5.005_03/lib/site/Mozilla/LDAP/Mozilla/LDAP/Conn.pm
 /usr/ds/v5.2/nsPerl5.006_01/lib/site/Mozilla/LDAP/Mozilla/LDAP/Conn.pm
* /usr/ds/v5.2/nsPerl5.005_03/lib/site/Mozilla/LDAP/Conn.pm

yet according to your original post, Conn.pm exists at all of

 /usr/perl5/5.6.1/lib/Conn.pm
 /usr/iplanet/perl5/lib/site/Mozilla/LDAP/Conn.pm
* /usr/ds/v5.2/nsPerl5.005_03/lib/site/Mozilla/LDAP/Conn.pm
 /usr/ds/v5.2/nsPerl5.006_01/lib/site/Mozilla/LDAP/Conn.pm

none of which exist except the one I've marked, which Perl should find if your
program and the locations of the module are as you say, so please check them.

The first of these is useless because it doesn't have Mozilla/LDAP in the path.
But the others are fine as long as you have ONE of

use lib qw(/usr/iplanet/perl5/lib/site);
use lib qw(/usr/ds/v5.2/nsPerl5.005_03/lib/site);
use lib qw(/usr/ds/v5.2/nsPerl5.006_01/lib/site);

As I said before, which one you choose depends on how your system is put
together and where other similar libraries are held.

I hope this helps.

Rob

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to