2017-11-03 Perlbrew

I wanted a new Perl!

perlbrew install stable

This turned out to be 5.26.1. I also want all the modules:

perlbrew list-modules | perlbrew exec --with perl-5.26.1 cpanm

But that doesn’t work:

ListUtil.c: loadable library and perl binaries are mismatched (got handshake key 0xd600000, needed 0xd880000)

Apparently, something with my `PERL5LIB` is wrong:

alex@sibirocobombus:~$ perl -E 'say for @INC'
/home/alex/perl5/lib/perl5/x86_64-linux
/home/alex/perl5/lib/perl5
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/site_perl/5.26.1/x86_64-linux
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/site_perl/5.26.1
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/x86_64-linux
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1

I checked my `.bashrc` and found this:

# Setup local::lib
eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"

Well, that looks suspicious. I commented this line, logged out, logged in again, and:

alex@sibirocobombus:~$ perl -E 'say for @INC'
/home/alex/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux
/home/alex/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0
/home/alex/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux
/home/alex/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0
.
alex@sibirocobombus:~$ perlbrew use perl-5.26.1
alex@sibirocobombus:~$ perl -E 'say for @INC'
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/site_perl/5.26.1/x86_64-linux
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/site_perl/5.26.1
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/x86_64-linux
/home/alex/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1

This looks good. I’ll have to remember that the current directory is no longer in `@INC` by default.

Oh, and since we’re already here: what is the list of modules?

Algorithm::Diff
Alien::Base
Alien::Hunspell
Alien::patch
App::cpanminus
Archive::Extract
Authen::SASL
B::Hooks::EndOfScope
CGI
CPAN::DistnameInfo
CPAN::Meta::Check
CPAN::SQLite
Captcha::reCAPTCHA
Capture::Tiny
Class::Accessor
Class::Data::Inheritable
Class::Inspector
Class::Load
Class::Load::XS
Class::Singleton
Cpanel::JSON::XS
Crypt::OpenSSL::RSA
Crypt::OpenSSL::Random
Crypt::Random::Seed
Crypt::Random::TESHA2
Crypt::Rijndael
DBD::SQLite
DBI
DB_File
Data::OptList
Date::Parse
Date::Time
DateTime
DateTime::Format::Mail
DateTime::Format::W3CDTF
DateTime::Locale
DateTime::TimeZone
Devel::GlobalDestruction
Devel::OverloadInfo
Devel::StackTrace
Digest::HMAC
Digest::SHA1
Dist::CheckConflicts
Encode::Locale
Eval::Closure
Exception::Class
Exporter::Tiny
ExtUtils::CChecker
ExtUtils::Config
ExtUtils::Helpers
ExtUtils::InstallPaths
FFI::CheckLib
File::HomeDir
File::Listing
File::ShareDir
File::ShareDir::Install
File::Tempdir
File::Which
File::chdir
File::pushd
GD
Geo::IP
HTML::Parser
HTML::Tagset
HTML::Template
HTML::Tiny
HTML::Tree
HTTP::AcceptLanguage
HTTP::BrowserDetect
HTTP::Cookies
HTTP::Daemon
HTTP::Date
HTTP::Message
HTTP::Negotiate
HTTP::Server::Simple
I18N::AcceptLanguage
IO::HTML
IO::Pipely
IO::Socket::SSL
Image::ExifTool
Imager
Import::Into
JSON
LWP
LWP::MediaTypes
LWP::Protocol::https
List::MoreUtils
List::Util
MIME::Tools
MLDBM
MRO::Compat
Mail
Math::Fractal::Noisemaker
Math::Geometry::Voronoi
Modern::Perl
Module::Build
Module::Build::Tiny
Module::Implementation
Module::Load::Conditional
Module::Runtime
Module::Runtime::Conflicts
Mojolicious
Mojolicious::Plugin::AccessLog
Mojolicious::Plugin::Authentication
Mojolicious::Plugin::CGI
Mojolicious::Plugin::RenderFile
Moose
Mozilla::CA
Net::CIDR::Lite
Net::DNS
Net::HTTP
Net::IDN::Encode
Net::Patricia
Net::SMTP::SSL
Net::SMTP::TLS
Net::SSLeay
Net::Whois::IP
Net::Whois::Parser
Net::Whois::Raw
Package::DeprecationManager
Package::Stash
Package::Stash::XS
Params::Util
Params::Validate
Path::Tiny
Perl
PerlIO::utf8_strict
Pod::Strip
Proc::ProcessTable
RPC::XML
Razor2::Client::Agent
Regexp::IPv6
SVG
Shell::Config::Generate
Shell::Guess
Socket6
Sort::Versions
Sub::Exporter
Sub::Exporter::Progressive
Sub::Identify
Sub::Install
Sub::Name
Sub::Uplevel
Test::CChecker
Test::CleanNamespaces
Test::Deep
Test::Differences
Test::Exception
Test::FailWarnings
Test::Fatal
Test::Manifest
Test::Most
Test::Needs
Test::NoWarnings
Test::Requires
Test::RequiresInternet
Test::Simple
Test::Warn
Test::Warnings
Text::Diff
Text::Hunspell
Tie::CArray
Time::ParseDate
Toadfarm
Try::Tiny
URI
Variable::Magic
WWW::RobotRules
XML::Atom
XML::LibXML
XML::NamespaceSupport
XML::Parser
XML::RSS
XML::SAX
XML::SAX::Base
XML::XPath
XSLoader
local::lib
namespace::autoclean
namespace::clean
utf8::all

I wonder which of these I actually need. How will I ever prune this list? I’ll have to find and run all the Perl applications I have on this system.

​#Perl