in reply to Finding CPAN modules from module names
Here's how I did it -- I took the suggestion from PodMaster and checked out Parse::CPAN::Packages. This is a package that gets the data file 02packages.details.txt.gz .. so I used anonymous ftp to get to CPAN and found the file in /pub/CPAN/modules.
Then I wrote a quick script to do the table lookup ..
The code works, and it discovered two internal Perl modules that I'd left in, as well as a few Apache sub-modules. The next step is to re-factor that code so that we group together things that came from the same distribution, but that's a refinement that I'll leave till later. Anyway, that answers my original question.#!/usr/bin/perl -w # Which distribution do these modules come from? # # Arguments: # Text file containing data from CPAN # List of modules { my ( $cpanList, $localList ) = @ARGV; my %list; # Load up the CPAN information. open ( CPAN, $cpanList ) or die "Unable to open $cpanList: $!"; # Skip the file header. while(<CPAN>) { next if ( /^\S+:\s+/ ); next if ( /^\s*$/ ); last; } # Load data into a Hash for later retrieval. while(<CPAN>) { my ( $module, undef, $distro ) = split(' ',$_); $distro =~ s#^.+/##; $list{$module} = $distro; } close ( CPAN ); # Look through the list of the modules, outputting which distro # contains that module. open ( LIST, $localList ) or die "Unable to open $localList: $!"; while (<LIST>) { chomp; if ( defined($list{$_} ) ) { printf ( "%30s comes from %s\n", $_, $list{$_} ); } else { print "Not able to find out where $_ came from.\n"; } } close ( LIST ); }
Alex / talexb / Toronto
"Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds
Update: You can find out about the Apache modules here on the mod_perl web site.
|
|---|