run your program with the perl debugger...and check that you're realy getting a condition that eventually exits out of the recursive subs. if it loops recursively without end, it will crash. comment out the regexes and put in their place some valid static value, to see that the regexes are indeed not causing the crash...i doubt they are.
Thanks for the suggestions. My script successfully executes all of my code. I can break on the exit statement in the debugger and get there with no problems. The recursion is over by this point.
As for the regexes, they can't be easily replaced with static values, because this will break other code. I might have to go that route anyway if I can't figure out the problem, though.
When's the last time you used duct tape on a duct? --Larry Wall