Why are you using metaprogramming stuff instead of a dict or an array? It's not what creates the problem, but at least with a dict, it should be easier for you to keep everything perfectly clear in your head.
So instead of generating symbols on the fly to @eval them, create a dict with "p2" and the likes as keys.
