Properties
• does not require sudo
• perl installation are isolated
• site_lib, bin, lib
• install a new version ≠ upgrade
• @INC does not include old site_lib
Benefits
• Easier-to-clean perl environments
• Nuke the whole thing to clean the
mess
• Old @INC does not accumulate with
old perls
Benefits
• per-app isolated perl environments
setup.
• avoid, in advance, any possible
incompatible issues with other
apps.
• know your site_libs
• ‘sudo cpan’ is no more.
Why?
• Don’t mess up vendor perl too
much.
• Learn new stuffs in the dev version
of perl.
• keep up with the fashion
← perlbrew
• perl is so backward compatible
• Ideal for developing and production
• keep upgrading perl is generally OK
← perlbrew
• Upgrading CPAN modules isn’t
necessarily OK.
• Errors happens at runtime, when it’s
not binary-compatible.
• Developers must correctly specify
module dependencies.
← perlbrew
• In CPAN Distribution you do that in
Makefile.PL / META.yml
• Same tool for App
Simple is Hard
• support for legacy code and
decisions.
• perl, cpan
• cpanm, perlbrew: new tools for the
current fashion
Hates
• CPAN dependency list for
$framework is too long
• CPAN $modules takes too long to
install / tests takes very long time
to finish
• $software is too fat (eats too much
memory space) and slow
Less Hateful
• bundle cpan dists with your
distribution
• PAR / Shipwright / %INC hack
• Avoid long dependency list
Less Hateful
• smaller, single-purpose
• less memory consumption
• less sub-commands to be
memorized
• less memory consumption in your
brain
• easier to maintain / be faster