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

The system reacted oddly in not recognizing my logged-in status, so I want to reprint the problem-request
------
Several of our apps relied on MIME::Base64 class. Our hosting admins (outside our control) upgraded modules, and now the 'use' reference, namely
use MIME::Base64;

breaks the process with the following error
-->
MIME::Base64 object version 3.01 does not match bootstrap parameter 3.05 at /usr/lib/perl/5.8/DynaLoader.pm line 245.
-->
A new version of the package does indeed uses version of 3.05, we checked that.
This has broken down two of our major apps on the Web. We are waiting for them to resolve this but meanwhile:

1. Is there anything we as a user can do to correlate these two versions, 3.01 vs 3.05 by overriding these parameters locally?
2. What should they (the admins) do to fix this problem in their installation (some config files), in case "they are not really sure" :>))?
3. If the worst comes to the worst and this impossibility drags on, do you know a pure Perl implementation of Base64.encode_base64 routine. We do have its .XS implementation but it is not reliably portable into Perl which we can add to our code set until this mishap is resolved?

Thanks.

Replies are listed 'Best First'.
Re: MIME::base64
by tlm (Prior) on Mar 27, 2005 at 16:40 UTC

    Looks to me like the wrong arch-dependent file is being found by DynaLoader. My guess is that either the module upgrade is screwed up, or you have something in your @INC that is shadowing the correct search path.

    Do you get the same error if you just try running a simple script like:

    use strict; # BEGIN { $DB::single = 1; } use MIME::Base64; print encode_base64('foo'), "\n";
    ?

    If so, you can uncomment the BEGIN block and use the Perl debugger to follow what DynaLoader is trying to do. The $DB::single = 1 line will cause the debugger to stop right before the use MIME::Base64 statement gets processed. Then you can just step right in with s, follow to the bootstrap statement in MIME::Base64, and step into that; then you can follow DynaLoader's attempt to find a file to load.

    the lowliest monk

Re: MIME::base64
by demerphq (Chancellor) on Mar 28, 2005 at 09:14 UTC

    As Postular says this is a problem because you are loading the wrong DLL (or whater you *nix people call them). It could be because you have weird include paths set up or becuase the hosts misinstalled it. I suggest you investigate your @INC and then proceed from there. Its almost certainly going to be path/@INC related.

    ---
    demerphq