From a code-review standpoint:
- There's far too much cut-n-paste-n-slightly-modified code in this program. Any time the same sequence of three or four lines of code appears amidst some other code that varies only slightly, it should be a big warning sign. For example, suppose you wanted to change "Processing..." to "Working...". You'd have to edit that in half a dozen places. Factor it out!
- Your chain of "if"-tests should be replaced by a simple hash pointing at the right subroutine to call.
That strategy would probably help in the rest as well.
-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.