Actually just looking for the use, require, and do (??) calls may be sufficient. (You use "do" to load CPAN modules?)
Personally, all of the CPAN code I use is used either via 'use Bare::Word' or 'require Bare::Word'. If I were to grep through all of my code for that, uniq that list, and then remove the in-house modules, that would be something I could feed to CPAN. Even if those modules were to require other modules, the CPAN module would handle that for me.
Sometimes, a simple solution with minor manual steps is sufficient ;-)