in reply to Symbolic reference to a subroutine

I'll second sauoq's recommendation that you redesign this. You are hitting the kind of maintainance problems that will make this a nightmare, and it's not even written yet.

Wherever you want to use a symbolic reference (sub foo;$bar="foo"; &$bar), use a real one instead (sub foo;$bar=\&foo;). That solves the problem of not finding the sub from a name. If you want to select them with strings, put them into a hash keyed by the name.

If you want to change your program logic by changing the meaning of subroutines, there are formal methods to help you. OO has you do it by calling generic methods of an object and relying on the object to know its own implementations. State machines would have you carefully define the allowed combinations of function and make transitions between function sets all at once, with guarantees that intermediate and invalid states are not accessible.

Some procedural logic may be the best way to simplify this code, too. I confess that I have no firm idea what your code is supposed to do. Am I right that you want a subroutine to know what what the invoking references to it used to point to? That threw me.

After Compline,
Zaxo