firstly, try the above parse::recdescent optimizations, if those still do not help, then you might want to use another recursive descent parser, one as flexible and easy to use as Parse::recdescent, just faster.
for me the C/C++ version of antlr, by terrence parr, is the best example of this. instead of wrestling with perlcc, take it for a spin. it's still available, it's fast & well documented, easy to build.
...wufnik
-- in the world of the mules there are no rules --