Yep. It is often much easier (see UNIX pipes) to break a problem down into steps that can be paused / restarted, not to mention just making the logic of each piece much simpler. I've seen where one class of data (e.g. transactions on contracts) are broken down into subclasses (e.g. commercial, individual) then processed by a different perl program to be recombined into one set that is finished by another perl script.
Its amazing how 5 very simple programs is easier to maintain code-wise and operations-wise than 1 big program sometimes.