List of functional groups in a molecule
Norbert Haider from the University of Vienna has been working on the identification of functional groups for quite a while.
You might want to have a look at his checkmol/matchmol tool, which natively reads from MDL, Alchemy, and Sybyl mol files.
Other input formats may be processed after converting them using Open Babel.