http://www.perlmonks.org?node_id=1020311


in reply to Which takes priority site\lib or lib?

On newish perls (I'd guess since perl 5.12, but I could be wrong), site/lib takes precedence over lib, to allow "overwriting"/shadowing/updating of core modules without touching the core package.

And why has it suddenly started installing itself in a different place?

The idea is that package managers (like activestate's ppm, or debian's dpkg) install into lib/, and CPAN installers into site/lib. Since the "Reveal this spoiler" link doesn't work for me (says "No such parent node"), I can't tell whether it worked as expected.

  • Comment on Re: Which takes priority site\lib or lib?

Replies are listed 'Best First'.
Re^2: Which takes priority site\lib or lib?
by BrowserUk (Patriarch) on Feb 23, 2013 at 14:58 UTC
    On newish perls (I'd guess since perl 5.12, but I could be wrong), site/lib takes precedence over lib

    So they silently broke older installs without a by, leave or warning. Perfect. (No wonder Perl5's dying. :( )


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      So they silently broke older installs

      Well, old installations usually don't magically get a new perl. When installing a new major version of perl 5, it's a good idea to re-install all dependent modules anyway.

      And it wasn't without warning either. To quote perl5120delta:

      In @INC, ARCHLIB and PRIVLIB now occur after after the current version's site_perl and vendor_perl. Modules installed into site_perl>and vendor_perl will now be loaded in preference to those installed in ARCHLIB and PRIVLIB.
        Well, old installations usually don't magically get a new perl. When installing a new major version of perl 5,

        But I wasn't installing a new version of Perl -- major or minor.

        I was upgrading to a newer version of Test::More (from cpan) that is a (required) dependency of the module from cpan that I wanted to install; namely Inline::CPP.

        And it wasn't without warning either.

        I meant at install time. I'm using 5.10, why would I read the delta for 5.12?

        Essentially, these new semantics means that even though I had an existing installation of Test::More in site\lib (which it could easily detect), it went ahead and silently installed the new version in lib; with the predictable result.

        At least a heads up at install time would be nice. Better yet, the possibility to chose where it installed it. Better yet, detect the version of perl into which it is installing and chose the old semantics for pre-5.12 builds.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.