in reply to Re: 5.16 vs Date::Manip
in thread 5.16 vs Date::Manip

Thanks for your reply. Your suggested tweak to Date/Manip.pm didn't make any difference.

But after some other hacking, and making sure my Arch Linux system is fully up to date, I now get:

Perl API version v5.14.0 of Storable does not match v5.16.0 at /usr/sh +are/perl5/core_perl/XSLoader.pm line 92. Compilation failed in require at /usr/share/perl5/vendor_perl/Date/Man +ip/Obj.pm line 13. BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/Date +/Manip/Obj.pm line 13. Compilation failed in require at /usr/share/perl5/vendor_perl/Date/Man +ip/Date.pm line 14. BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/Date +/Manip/Date.pm line 14. Compilation failed in require at ./brandysnap line 41. BEGIN failed--compilation aborted at ./brandysnap line 41.

A bit of Googling reveals that 'Storable' ought to be part of core 5.16, so I don't know how to start fixing that.

Replies are listed 'Best First'.
Re^3: 5.16 vs Date::Manip (sharing--)
by tye (Sage) on Jun 18, 2012 at 19:02 UTC
    Perl API version v5.14.0 of Storable does not match v5.16.0 at /usr/sh +are/perl5/core_perl/XSLoader.pm line 92.

    It is kinda sad that this particular error gives you details about the full paths to a bunch of files but doesn't bother to include the two full paths that actually would be useful for diagnosing the problem. That is, it should tell you the full path to Storable.pm and to Storable.so (or whatever dynamic library it found to load).

    But, since the paths that it reports include

    /usr/share/perl5/core_perl/XSLoader.pm /usr/share­/perl5/ven­dor_perl/D­ate/Manip/­Obj.pm

    It seems clear that the instance of Perl you installed puts module files into a directory structure that is not specific to one version of Perl. That is a very old idea that I find, these days, is just never worth the headaches it causes.

    Likely, the version of Storable.pm that you wanted either got overwritten when a different version of Perl was installed (that stupidly shared the same /usr/share/perl5 directory structure) or (seems less likely) just gets ignored because the version of Storable.pm that you don't want gets found first due to the order of directories listed in @INC.

    My suggestion is to uninstall all versions of Perl except the one included with the operating system, force a re-install of the Perl included in the operating system, and make sure that any other versions of Perl that you install don't touch nor look at any of the directories where the system Perl stores modules.

    - tye        

      I haven't installed any versions of Perl except what Arch Linux gives me -- i.e. the latest.

      I've tried uninstalling and reinstalling the main Perl package, but that didn't help.

      I haven't found any reports of similar issue with Arch, so I've now asked on the Arch Linux forum too. cheers Chris

        Sounds like you could benefit from some basic debugging:

        % locate /Storable.pm | xargs grep -w VERSION % locate /Storable. % perl -del > use XSLoader > l XSLoader::load > b 92 > use Storable > x $INC{'Storable.pm'} > x $file > x @INC > q

        - tye