Can you have the module keep track of the NAME's so that a getNAMEs() just returns the list? If the routines are static in there, this could just be a hardcoded list (or maybe one that's populated in BEGIN by one of the above methods). If these (as i assume they are from OP) subroutines are created at runtime, the creation code could just push the NAME onto an internal list, which is what your new getNAMEs() subroutine would return.