Lingua::EN::Inflect is a module to adjust single English words with indefinite articles (a/an) or plural and singular. There are various subroutines to turn words into their plurals or add articles. These seem to work well and handle all the usual exceptions like "child/children", "goose/geese", "a university/an upstart" as required, so this module may well be enough for people who want to output correctly formatted text as output from a computer program.
However, I got stuck when I wanted to use this to analyze input. The module does not have an interface to detect if a noun is plural or singular. This seemed very strange since the module's plural comparison functions must have that ability in order to do their work. Internally there is a routine which does this job, called _PL_check_plurals_N, but unfortunately it is not available in the public interface.
The naming and behaviour of the routines is a bit strange. For example "PL" for plural, but the same thing is also used to convert a verb from the third person singular form. For example PL("cat") gives you "cats" as output, but PL("cats") gives you "cat" as output. I don't see when that would be useful, it's a bad idea, and that is not related to plural: "I eat" and "we eat" are singular and plural forms of the same sentence, but the verb doesn't change.
As I said at the top this is probably good enough for the case when you are generating sentences via the computer and want to get your "a/an" and singular and plurals right. So basically it fulfils its purpose. However, that is about all it does, the name "Inflect" is a little pretentious considering this module's functionality.
(Contact me at firstname.lastname@example.org if you have a comment about this review.)
I hate the interface -- but I'm not sure what would be better. It hardly matters: the module is so darn useful that you'll stop caring about the interface really quickly. I don't use it often, but when I do, it keeps me from looking like an idiots.