You will have to recompile every single module you're using as 5.005 and 5.8 are not binary compatible. In addition, some Perl modules will modify themselves depending on the installing Perl version.
These are the steps I see, in order:
- Get your boss's buyin that this will be a 6-month process.
- Get your code into source control. Subversion is probably best, here. This is non-negotiable failure point.
- Get some sort of one-step deployment/build process. This may involve adding configuration files, writing scripts, and the like. This is non-negotiable failure point.
- Get a machine that you and only you control. Since you're running Linux, converting your desktop should be plenty powerful. The goal is isolation, not power. (I did this at my last job and my desktop was the production webserver/dbserver for a few months.) Ideally, not even the sysadmin has root on your box. This is a non-negotiable failure point.
- Build your ideal system on your isolated machine. Once you have it built (Perl / DBD modules / apache / mod_perl / mod_ssl / database / etc), take a snapshot. Ghost is good for this, but any backup/restore will do. Remember - you have to deploy this configuration a few times. You will want to be able to do this without having to remember to install foo before bar but after floober. This is non-negotiable failure point.
- Write down a series of acceptance tests. Focus on the critical systems. For example, if you were developing Quicken, you'd start your tests with the lineitem entry stuff and worry about the pretty graphs later.
Note - none of the above have anything to do with Perl, specifically. They're good practices for any kind of major infrastructure upgrade.
Oh - those failure points? If you don't do them, you fail. Period.
Once you have done all that (about 3-6 weeks work), then you can start the actual work of migrating your codebase from 5.005 to 5.8.x by doing a build from source control to your isolated box, then running your acceptance tests against it.
Have fun - this is a wonderful project that will give you amazing kudos when you get it done.
- In general, if you think something isn't in Perl, try it out, because it usually is. :-)
- "What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?"