Finally, I find it very odd that you evaluate at compile time. For example, in
if cond then action1 else action2 endif
you unconditionally evaluate action1 first, then you unconditionally evaluate action2, then you decide which value to return based on cond. That is dangerous.
My task is to reduce a whole bunch of SPICE equations from static files to parameter values. None of these have side-effects, so the 'danger' seems minimal. I built a monster hash with local and non-local variables and their values, and my goal is to recursively reduce them until I hit a variable which is undefined by the fab process team or resolves to divide-by-zero. The grammar is very ill-defined, but P::RD is actually handling it quite well.
I wish I'd had an easier task than this for my first P::RD work, but, well, "Needs must when the customer drives." Thanks for all your patience and examples! I will peruse to grok further!
:D