in reply to subroutine refs

Perhaps consider a dispatch table. It would break the direct link between data coming from outside and your code.

Have a look at Implementing Dispatch Tables in the tutorials section.