landonc has asked for the wisdom of the Perl Monks concerning the following question:

Hello, I have been getting the following error:

Can't locate Carp/Heavy.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.0/i686-linux /usr/local/lib/perl5/5.8.0 /usr/local/lib/perl5/site_perl/5.8.0/i686-linux /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl .) at /usr/local/lib/perl5/5.8.0/Carp.pm line 178, <GEN1> line 2.

This only comes up in my program when I go to do the following:
my $db=DBI->connect("DBI:mysql:$database:$ip",$user,$pass);
But I can do that command in other scripts and it works just fine. Any ideas why I'm getting this error when I'm not even using Carp.pm or Heavy.pm directly in my program?

Landon

Replies are listed 'Best First'.
Re: Can't locate Carp/Heavy.pm
by bobn (Chaplain) on Aug 08, 2003 at 04:00 UTC

    # perl -MDBI -e 'print "$_: $INC{$_}\n" for keys %INC' warnings/register.pm: /usr/lib/perl5/5.8.0/warnings/register.pm Carp.pm: /usr/lib/perl5/5.8.0/Carp.pm Exporter/Heavy.pm: /usr/lib/perl5/5.8.0/Exporter/Heavy.pm strict.pm: /usr/lib/perl5/5.8.0/strict.pm vars.pm: /usr/lib/perl5/5.8.0/vars.pm Exporter.pm: /usr/lib/perl5/5.8.0/Exporter.pm warnings.pm: /usr/lib/perl5/5.8.0/warnings.pm DBI.pm: /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/DBI.p +m AutoLoader.pm: /usr/lib/perl5/5.8.0/AutoLoader.pm Config.pm: /usr/lib/perl5/5.8.0/i386-linux-thread-multi/Config.pm DynaLoader.pm: /usr/lib/perl5/5.8.0/i386-linux-thread-multi/DynaLoader +.pm

    So using DBI brings Carp in.

    Examination of Carp.pm shows that it does a require Carp::Heavy in a routine used by confess and croak.

    I expect you have an incpmoplet install of Carp, plus you're hittting an error in DBI->connect that is causing an error that invokes the error handling routies.

    Just my guess, though.

    --Bob Niederman, http://bob-n.com
      Well it turns out nothing was really messed up. Just the fact that I had chrooted my program to a seperate directory in an attempt to daemonize the program with forking processes. I just realized it this morning that it was the problem. I would still like to chroot the program but I don't know if I can and still be able to access the proper perl modules during execution to prevent the error that I had in the original post. Anyone have any ideas?
      I just got the same error, DBI related, eventhough I do have Carp/Heavy.pm. It appears I may have be recursing too deeply and ran out of memory. DBI was trying to complain, but couldn't and died attemping to print an error.

      So this type of an error maybe related to perl finally just keeling over, DBI trying to print an error with Heavy.pm and perl couldn't get to Heavy.pm before it died.