use lib::core::only; # now @INC contains only the two core directories
To get only the core directories plus the ones for the local::lib in scope:
$ perl -mlocal::lib -Mlib::core::only -Mlocal::lib=~/perl5 myscript.pl
To attempt to do a self-contained build (but note this will not reliably propagate into subprocesses, see the CAVEATS below):
$ PERL5OPT='-mlocal::lib -Mlib::core::only -Mlocal::lib=~/perl5' cpan
Please note that it is necessary to use "local::lib" twice for this to work. First so that "lib::core::only" doesn't prevent "local::lib" from loading (it's not currently in core) and then again after "lib::core::only" so that the local paths are not removed.
You might want to do this to ensure a local::lib contains only the code you need, or to test an App::FatPacker tree, or to avoid known bad vendor packages.
You might want to use this to try and install a self-contained tree of perl modules. Be warned that that probably won't work (see ``CAVEATS'').
If you want to cascade it across invocations, you can set the PERL5OPT environment variable to '-Mlib::core::only' and it'll sort of work. But be aware that taint mode ignores this, so some modules' build and test code probably will as well.
You also need to be aware that perl's command line options are not processed in order - -I options take effect before -M options, so
perl -Mlib::core::only -Ilib
is unlike to do what you want - it's exactly equivalent to:
If you want to combine a core-only @INC with additional paths, you need to add the additional paths using -M options and the lib module:
perl -Mlib::core::only -Mlib=lib # or if you're trying to test compiled code: perl -Mlib::core::only -Mblib
For more information on the impossibility of sanely propagating this across module builds without help from the build program, see <http://www.shadowcat.co.uk/blog/matt-s-trout/tainted-love> - and for ways to achieve the old --self-contained feature's results, look at App::FatPacker's tree function, and at App::cpanminus's --local-lib-contained feature.