+use Term::ANSIColor;
+use Getopt::Long;
+
+my (%uselines, %modules, %supplied, %requires);
+
+# since the information which classes belong to a cpan distribution is not
+# easily obtained, I'll just hard code the bigger ones we use here. the same
+# hash will be filled later with information gathered from the source files.
+%requires = (
+ 'DateTime' => {
+ 'DateTime::Duration' => 1,
+ 'DateTime::Infinite' => 1,
+ },
+ 'Rose::DB::Object' => {
+ 'Rose::DB::Object::ConventionManager' => 1,
+ 'Rose::DB::Object::Manager' => 1,
+ 'Rose::DB::Object::Metadata' => 1,
+ 'Rose::DB::Object::Helpers' => 1,
+ 'Rose::DB::Object::Util' => 1,
+ 'Rose::DB::Object::Constants' => 1,
+ },
+ 'Rose::Object' => {
+ 'Rose::Object::MakeMethods::Generic' => 1,
+ },
+ 'Template' => {
+ 'Template::Constants' => 1,
+ 'Template::Exception' => 1,
+ 'Template::Iterator' => 1,
+ 'Template::Plugin' => 1,
+ 'Template::Plugin::Filter' => 1,
+ 'Template::Plugin::HTML' => 1,
+ 'Template::Stash' => 1,
+ },
+ 'Devel::REPL' => {
+ 'namespace::clean' => 1,
+ },
+ 'Email::MIME' => {
+ 'Email::MIME::Creator' => 1,
+ },
+ 'Test::Harness' => {
+ 'TAP::Parser' => 1,
+ 'TAP::Parser::Aggregator' => 1,
+ },
+ 'Archive::Zip' => {
+ 'Archive::Zip::Member' => 1,
+ },
+ 'HTML::Parser' => {
+ 'HTML::Entities' => 1,
+ },
+ 'URI' => {
+ 'URI::Escape' => 1,
+ },
+ 'File::MimeInfo' => {
+ 'File::MimeInfo::Magic' => 1,
+ },
+);