The matcher must return an array of the subroutine names which match the required name by some sort of fuzzy logic. One last feature was the ability to define your own chooser function. This is the function which decides what to do if more than one subroutine match the name of the called subroutine. This function is passed a list of matching subroutine names and should return the name of the one it chooses. This, then, is the current situation.
Variables are trickier than subroutines for two reasons.
Robin is getting round this by tie ing the scalar variables. Most variables in most scripts are lexical variables rather than package variables and therefore don't live in typeglobs. Canonisation would take a subroutine name and return some kind of canonical version. This may include removing underscores or converting all characters to lower case. This introduces the possibility of chained canonisers, each of which carries out one transformation.