Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

"Storable object version 1.012 does not match $Storable::VERSION 2.04" moving script from PC to laptop

by stu96art (Scribe)
on Apr 13, 2004 at 17:45 UTC ( [id://344809]=perlquestion: print w/replies, xml ) Need Help??

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

My question is what do I need to do? My situation is, I have a PC and a laptop. I have script written and working on my PC that uses packages GD and Storable. I loaded package GD onto my laptop successfully, which was the only thing I needed to do on my PC. I am pretty sure that both versions of perl are identical, 5.6.1 multi-thread. When I run my script on my laptop I get Storable object version 1.012 does not match $Storable::VERSION 2.04 at C:/Perl/lib/DynaLoader.pm line 225.    Compilation failed in require at ... line 4. which is use Storable;
It has been suggested that I may have multiple versions on my laptop. If so, I would like to know what to do to fix this. Otherwise, could someone help me and give me easy to follow instructions on what I need to do to fix this problem. Thank you and any type of help is greatly appreciated.

Title edit by tye

  • Comment on "Storable object version 1.012 does not match $Storable::VERSION 2.04" moving script from PC to laptop
  • Select or Download Code

Replies are listed 'Best First'.
Re: Problem with script from PC to laptop
by Jouke (Curate) on Apr 13, 2004 at 18:03 UTC
    The solution is simple: you have different versions of Perl installed on the two machines. You moved the script from the PC, which probably runs an old Perl version, which had a storable datafile which was moved to the laptop too.
    The Perl version (actually Storable version) on the laptop can't read that datafile, because it was created with an incompatible Storable version.

    When you install the Perl version you had on the PC on the laptop, you can read the file again on the laptop, and the script will most likely run.

    update: Most important of this is that the version of the Storable module on both machines *must* be different


    Jouke Visser, Perl 'Adept'
    Using Perl to help the disabled: pVoice and pStory
      If you need to migrate existing Storable data from one machine to another, use something like dumpsto (documentation here) to first transform the data into Data::Dumper format:
      dumpsto storable-file >data.dump
      Then, transfer data.dump over to the new machine, and run dumpsto there:
      dumpsto -u data.dump >storable-file
      After that, storable-file will have your data in a format readable by the new perl installation.
      A reply falls below the community's threshold of quality. You may see it by logging in.
      When I ran perl -v and perl -V I got the same results on both machines. I am still a little confused on what I need to do. I do really appreciate all of your help, but I am wondering whether I need to put that code into my script? or just from the command prompt? I apologize, but I am not at all familiar with any of this.
      What I believe that I did what possibly download one version of perl, initially on my laptop, then downloaded this current version, which is the same as my PC version. Thus I expected for Storable to be included the same as it was on my PC. I think that I am missing something. Could someone please explain this to me??
        Your Storable install is fubared. The solution is to reinstall Storable.
Re: Problem with script from PC to laptop
by Plankton (Vicar) on Apr 13, 2004 at 18:01 UTC
    Why are you only "pretty sure" your Perl version are the same? Why not be 100% sure by executing perl -v on both your PC and laptop?

    Plankton: 1% Evil, 99% Hot Gas.
Re: "Storable object version 1.012 does not match $Storable::VERSION 2.04" (misinstalled)
by tye (Sage) on Apr 13, 2004 at 21:13 UTC

    That error message means that you have Storable installed incorrectly. Some modules contain C code that must be compile for the module to be installed.

    When such a module is installed, the Perl code part of the module (Storable.pm) gets installed in a subdirectory that could be shared by multiple client systems of different types using the same version of Perl (even though you aren't doing any sharing of your Perl installation via a networked file system).

    Meanwhile, the compiled C code for the module (Storable.dll or Storable.so) gets installed in a different subdirecty that is specific to the system for which the code was compiled.

    The error message you recieved is telling you that one copy of Storable.pm asked Dynaloader.pm to search the standard places for a Storable.dll (or Storable.so) file and the one it found was one built to work with a different version of Storable.pm.

    This means that an upgrade to the Storable module was installed incorrectly or that two versions of the Storable module had been installed and one of them got removed incorrectly or you've changed what gets loaded into @INC in such a way that Perl is finding the new Storable.pm but the old Storable.dll (or Storable.so).

    You could just try reinstalling the Storable module and see if that resolves the problem. Otherwise, you'll probably need to do some searching:

    find2perl / -name "Storable.*" -print | perl

    (and perhaps studying of how Perl modules are installed) and figure out what is going on.

    The worst case would probably be removing any "perl" directories you have and reinstall Perl (and any extra modules you added).

    - tye        

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://344809]
Approved by kvale
Front-paged by broquaint
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2024-04-24 01:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found