The Perl Journal January 2003
It's a software catch-22: If you upgrade, you might break things that now work; but if you don't upgrade, you can't fix the things that are already broken. Take the current dilemma many of us are facing over upgrading to Perl 5.8.0. You would probably like to move to 5.8.0. Certainly, if Unicode means anything to you, you're positively itching to move. With this release, Unicode has become a first-class citizen of the Perl world. You can even use Unicode in regular expressions.
PerlIO, the new layered I/O implementation, is also getting rave reviews for its flexibility and power. It's yet another step toward more portable Perl code, but it's also the main reason that Perl 5.8.0 is binary incompatible with earlier versions. This means a lot of module recompiling, which adds to the potential chaos of an upgrade.
The third major improvement in Perl 5.8.0 are interpreter threads or "ithreads," which replace 5.005 theads. The main improvement here is that data sharing between threads must now be explicit. This is, by all accounts, a far better thread implementation than what we've had before. But the jury is still out on whether Perl threads are really ready for prime time.
So there's some reason to upgrade. But are you going to risk breaking something? Will your carefully tweaked (and increasingly mission-critical) Perl apps come crashing down?
Probably not. From all reports, the move to 5.8.0 is one of the smoothest version transitions Perl has ever had. And we feel like it's the right thing to do.
On the other hand, why fix what isn't broken? Sure, 5.8.0 contains a plethora of bug fixes. But we've come to regard those bugs as cantankerous old friends. Why trade in known bugs (most of which we have workarounds for) for new, unknown bugs? There's no shame in running 5.6.1, or even 5.003. If you don't need the new features, and you don't have a show-stopping bug that 5.8.0 fixes, the conventional wisdom says don't upgrade.
If you do want the features, however, you might be facing a mountain of regression testing. Especially if you work with complex, multimodule Perl environments and support multiple Perl developers within that environment.
But in the end, there's really no escaping upgrades. If not this version, then eventually. Sooner or later, you'll want some juicy new feature. Increasingly, the solution seems to be to have the best of both worlds until you have time to fully test all your existing code. Side-by-side installations of 5.6.1 and 5.8.0 can create a certain amount of confusion, but the complexity can be managed.
Happy upgrading.
Kevin Carlson
Executive Editor
The Perl Journal