These are potential changes to Text::Match::FastAlternatives. If you need any of them, let me know; T::M::FA currently meets my needs, so I'm unlikely to change it if there seems to be no other interest in it. - Provide a way of finding which key was found, and its start position in the string - Case-insensitive matching, if it can be done without killing performance - Allow keys to contain any character, if I can find a way of doing it that doesn't kill performance for the simple case I care about. Possibly there should be two implementations: a super-fast, printable-ASCII-only one, and a more flexible but slower one. If so, the implementation should probably be selected automatically at construction time - Record the minimum length of all the keys, and reject a string early if it doesn't have enough characters. For the case I currently care about, doing that would save me only two calls to trie_match() per failed match, so I haven't bothered doing it. But for some data sets, it could be a bigger win. - Add and remove keys post-construction - Tests for keys and target strings that have magic; I suspect that the current code doesn't handle magical or tied SVs at all