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

Hi

I had a Perl script that was working fine but now it is not working. I supsect it is something to do with my host provider as I have done nothing to the script or website. Though my host provider claims that everything is fine because they can run another test perl script on my account.

This is the error message I am getting.

perl: relocation error: /usr/lib/perl5/5.6.1/i686-linux/auto/NDBM_File/NDBM_File.so: undefined symbol: dbm_open

Does this mean anything to anybody? (I know nothing about perl).

I have contacted the author of the script and he advised that the error is coming from Perl itself and not the script and to refer back to the host.

At the moment I tend to agree because the script stopped working all of a sudden. My host provider is not being very helpful so any assistance would be greatly appreciated.

Thanks

Wayne

Replies are listed 'Best First'.
Re: Script Stopped Working
by dragonchild (Archbishop) on Oct 02, 2003 at 14:54 UTC
    I'm going to hazard a guess and say that your host provider upgraded the Perl they are using from Perl 5.6.1 to Perl 5.8.x and NDBM_File wasn't recompiled. It's a little odd, seeing as NDBM_File is part of the core distribution, but I'd start checking in that direction.

    You and the author are both right - it seems to be the host provider's fault.

    ------
    We are the carpenters and bricklayers of the Information Age.

    The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

      NDBM_File is not part of the core distribution.

      The dbm that ships with Perl is SDBM_File.

Re: Script Stopped Working
by jonadab (Parson) on Oct 02, 2003 at 15:36 UTC

    With the error happening in a file within /usr/lib/perl5/, the problem is VERY likely to be on the server. Especially since it's an undefined symbol (rather than something like an incorrect argument, which can sometimes happen if a module is invoked incorrectly). When you contacted your hosting provider, did you give them the exact error message? If you did, and they blamed the script, try calling again and see if you can get a different tech support person. The symbol dbm_open should definitely be defined, and your script is NOT where it should be defined.


    $;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/