I was looking for a way to search CPAN from the command line in the same way that going to search.cpan.org does. This script will take a word to search for and find everything on CPAN that has that word in it. To use the script, just do
perl script.pl /undefined/
It'll find all all modules with undefined in its name. Note that it is case insensitive.
#!/usr/bin/perl use strict; use warnings; use CPAN; use Module::CoreList; my $d = shift @ARGV; my @d = Module::CoreList->find_modules(qr/^$d$/); my(@matches) = grep(($_ eq $d), @d); if (@matches) { for $d (CPAN::Shell->expand("Module", "$d")) { print "\n\tmodule: ", $d->id, "\n", "\tauthor: ", $d->cpan_userid, "\n", "\tcurrent version: ", $d->cpan_version, "\n", "\tinstalled version: ", $d->inst_version, "\n"; } } else { for $d (CPAN::Shell->expand("Module", $d)) { print "\n\tmodule: ", $d->id, "\n", "\tauthor: ", $d->cpan_userid, "\n", "\tThe current version is: ", $d->cpan_version, "\n", "\tinstalled version: ", $d->inst_version, "\n"; } }
It'll also take a module name like CGI and find eveything on CPAN that has CGI in its name.
perl script.pl /CGI/

Replies are listed 'Best First'.
Re: Quick CPAN Search
by repellent (Priest) on Jul 21, 2010 at 03:44 UTC
    Khen1950fx:

    Your if and else blocks look very similar. Perhaps you meant to do something different in one of the cases?

    Here's an interactive way of searching:
    $ perl -MCPAN -e shell cpan shell -- CPAN exploration and modules installation (v1.9402) Enter 'h' for help. cpan[1]> m CGI CPAN: Storable loaded ok (v2.21) Going to read '/home/vmuser/.cpan/Metadata' Database was generated on Wed, 21 Jul 2010 02:29:05 GMT Module id = CGI DESCRIPTION Simple Common Gateway Interface Class CPAN_USERID LDS (Lincoln D. Stein <lincoln.stein@gmail.com>) CPAN_VERSION 3.49 CPAN_FILE L/LD/LDS/CGI.pm-3.49.tar.gz DSLIP_STATUS RdpOp (released,developer,perl,object-oriented,Standa +rd-Perl) MANPAGE CGI - Handle Common Gateway Interface requests and re +sponses INST_FILE /usr/local/lib/perl5/5.10.1/CGI.pm INST_VERSION 3.43