Fixing broken PERL after a software update

Referenced from http://www.abstractwankery.com/.

So, I installed Apple’s Security Update 2009-001 yesterday, and tried to work on one of my Catalyst sites tonight. I got this fantastic error:

IO object version 1.22 does not match bootstrap parameter 1.23 at /System/Library/Perl/5.8.8/darwin-thread-multi-2level/XSLoader.pm line 94. I head over to CPAN to update a few modules, and same error message with a stacktrace of doom. So, turns out, Apple distributed IO.bundle from way the hell back in 2005, which is what broke all of your other modules that you already updated if you use CPAN for anything at all. But hey, now CPAN is broken, so what now? You get to do a manual install, luckily, CPAN is an archive. Head over to the IO distribution over at CPAN, download the archive, and head into ye olde Terminal. Extract the archive if it hasn’t already, enter the directory, and execute:

perl Makefile.PL && make && sudo make install

Ding, everything works again. Write an angry letter to Apple.

Edit: You may find more crap that doesn’t work. For instance:

Weak references are not implemented in the version of perl at /Library/Perl/5.8.8/Catalyst.pm line 24 Well, just head into your now-functional CPAN and execute:

force install Scalar::Util

Bam, you made it spicy.