Apple has apologized for breaking Perl with its latest Mac OS X security update, saying it will distribute a solution to the problem with a future update.
In a note to The Reg and a post to the Apple support forums, Senior Apple programmer Edward Moy apologized for "the unforeseen problems that the 2009-001 security update has caused" with Perl.
After the release of 2009-001 in mid-February, developers from across the web complained that after installing the update, many of their Perl scripts quit running.
"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," said one Mac OS X user, with a post to the support forum.
"I've 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."
One IT consultant even went so far as to say "Because of these kinds of problems, I stopped recommending Apple Servers to my enterprise customers."
According to one blogger, the problem only occurs if you're running Leopard (Mac OS X 10.5), you're using the Perl distro that comes with the OS, and you've updated the distro via CPAN (Comprehensive Perl Archive Network), a widely-used collection of existing Perl modules.
Apple's Moy says the problem is due to the way Perl orders its module directory search path: the system Perl directory comes before site-specific directories (e.g. /System/Library/Perl/5.8.8). "This means that if you try to update a module in the system perl directory by installing it in a site-specific directory like you normally would any other perl module, the search path order would result in the old module being found first," he writes. "So, the only way to do this kind of update is to directly overwrite the module in the system perl directory."
In other words, using CPAN to update Perl modules tweaks the system directory, and if you've installed Apple's latest security update, this could cause a problem.
Some system Perl modules use both a Perl (.pm) file and a binary (.bundle) file. With many of these modules, Moy says, Apple's new security update installs the original versions of .bundle files (complete with security fixes) without updating their matching .pm files (security fixes were required). So, when a newer version .pm file tries to load an older version .bundle file installed by the 2009-001 security update, your get a failure.
At this point, the only solution is to reinstall the affected module. But Moy says Apple is hard at work on a broader fix, and the company intends to include such a fix with a future software update. ®