Los links que haz puesto usan un modulo (Parse::RecDescent) que hace de procesador sintactico, el segundo usa expresiones regulares con "codigo embebido".
Lo mejor es que ignores esos codigos ya que, al menos el segundo, incluye variables especiales (como $^N) y tiene una forma de trabajar que es dificil (parece sacado de un Perl Golf) lo mejor es que lo hagas todo desde cero.
La pregunta es... tienes que calcular valores o analizar expresiones?
Si solo tienes que calcular valores, te basta la funcion
eval