I needed to something similar recently (using Rational Rose REI).
Win32::OLE is good for making calls to COM objects but not receiving events.
A friend suggested using ActiveState PerlCOM. The basics are you write the
interface in a language that has good COM support then invoke your perl script via COM.
Don't know much more than that, but this article explains in detail
Integrating Perl into Microsoft Office Innards
--
Nic