in reply to subroutine refs

I definitely prefer the “dispatch table” idea, because this gives you the very-important ability to know what the actual possibilities are. And, most importantly, to do something intelligent if what you've actually read from your input file is, for whatever reason, “none of the above.” (Hey, 'ka-ka occurs!' and your programs must be ready for that.)

The idea here, as stated elsewhere, is that you create a hash containing all the possible key-values and a reference to the subroutine that is to handle each one. (Be sure to check for 'undef' ... which will occur if the input-value isn't in the table.) This trivializes the inevitable case where two-or-more inputs need to be handled by the same routine. Perhaps the greatest benefit of all is that it very-clearly documents what inputs this program will accept and what it will do with each one.