Apple's Mac OS X update breaks Perl

Never trust a vendor

Apple's latest Mac OS X security update has a knack for breaking Perl, according to Mac users across the web.

"I've just done the update using Software update and just about everything I look at is working, except that perl seems to have gone almost AWOL," says one Mac OS X user, with a post to Apple's support forum.

"I seen it pop up occasionally in the Activity Monitor, but, when I try to run perl scripts from the command line or the cron jobs that ran flawlessly before the update, nothing happens. Period."

Two additional support forum visitors say they've experienced similar problems with the popular programming language following Mac updates, and others have complained of Perl breakage on a public Perl mailing list and an independent blog.

Apple did not immediately respond to a request for comment. The company released its Security Update 2009-001 on Thursday.

According to blogger Tatsuhiko Miyagawa, Perl breakage only occurs if you're running Leopard (Mac OS X 10.5), you're using the Perl distro baked into the OS, and you've updated the distro via CPAN (Comprehensive Perl Archive Network), a widely-used collection of existing Perl modules.

Miyagawa's post says the problem generates error messages that look something like this:

% perl -MIO 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.

Compilation failed in require. BEGIN failed--compilation aborted

This would indicate that Apple's security update reverts Mac Perl to an older IO object incompatible with newer CPAN modules. "The Security Update brings (old) IO.bundle with version 1.22 but your IO.pm has been updated to the latest 1.23 on CPAN shell. (But hey, 1.23 was released in 2006...Why do you bring that ancient version back, Apple!?)," Miyagawa writes.

The blogger claims you can fix the problem if you reload the IO module. But since Perl is broken, this takes a little finesse. "The fix is to update IO.pm to 1.23, but since IO.pm is now broken, you can't even run CPAN shell to do this (Ugh!). You need to go to CPAN and grab IO-1.2301.tar.gz, unpack it and run 'perl Makefile.PL; make; sudo make install' to fix this."

And one support forum poster says the fix is only a partial solution.

"This is another reason why you shouldn't use Perl that comes from vendors," Miyagawa says. "Apple isn't any different from Fedora on this!" ®

Sponsored: Designing and building an open ITOA architecture