in reply to Is this a simple, robust, and maintainable design?
Consider using a dispatch table. Read the PerlMonks node Implementing Dispatch Tables by Roy Johnson.