FYI, I found it very useful to define a module of utility subroutines to do various things to the result variables (for instance) which I "use" within the grammar (generated...) code. If I always want a list, for example, but the parser might in some cases hand me undef or a scalar, an appropriate utility sub can easily make that a non-issue and always do the right thing. "Using" them provides consistency and avoids repetition of source code.