|Think about Loose Coupling|
Last night I set about writing a Perl script that would read a Microsoft Project plan and emit an HTML summary of some key info (e.g., who's doing what right now, and which tasks are late1). Later that night, after beating my head against what little MS Project object model documentation I could lay my hands on, I chanced to stumble across something really neat.
In the ActiveState HTML-based on-line documentation, there's a link for Win32::OLE::Browser. I'd never had any reason to try it before, and hadn't noticed anyone else mention that it was interesting. On a desparate whim, I tried it.
The Win32::OLE::Browser page is an OLE Type Library browser. Using PerlScript, that page provides a view of all of the OLE type libraries on a machine, and lets you poke around to see what COM objects they define, and what their public interfaces are. And, if you have the help files for the type libraries installed (e.g., from some SDK), the page also provides an icon that'll launch Microsoft's help viewer and take you right to the section that describes the selected Object, method, or property.
I was in heaven (aside from being in MS hell). In an hour, the problem was all sorted out, saving untold head-banged. Thank you, ActiveState.
The meditation here, such as it is, is that in the Perl world there are some amazing gems that are sometimes lurking right under our noses. Taking the time to stop and look around, be that examining all of the packages in the standard distribution, or looking at the extras that ActiveState ships, can pay huge dividends.