NAME

PPM::Make::Search - search for info to make ppm packages

SYNOPSIS

use PPM::Make::Search;
my $search = PPM::Make::Search->new();

my @query = qw(Net::FTP Math::Complex);
$search->search(\@query, mode => 'mod') or $search->search_error();
my $results = $search->{mod_results};
# print results

DESCRIPTION

This module either queries a remote SOAP server (if SOAP::Lite is available), uses CPAN.pm, if configured, or uses LWP::Simple for a connection to http://cpan.uwinnipeg.ca/ to provide information on either modules or distributions needed to make a ppm package. The basic object is created as

my $search = PPM::Make::Search->new();

with searches being performed as

my @query = qw(Net::FTP Math::Complex);
$search->search(\@query, mode => 'mod') or $search->search_error();

The first argument to the search method is either a string containing the name of the module or distribution, or else an array reference containing module or distribution names. The results are contained in $search->{mod_results}, for module queries, or $search->{dist_results}, for distribution queries. Supported values of mode are

mode => 'mod'

This is used to search for modules. The query term must match exactly, in a case sensitive manner. The results are returned as a hash reference, the keys being the module name, and the associated values containing the information in the form:

my @query = qw(Net::FTP Math::Complex);
$search->search(\@query, mode => 'mod') or $search->search_error();
my $results = $search->{mod_results};
foreach my $m(keys %$results) {
  my $info = $results->{$m};
  print <<"END"
For module $m:
 Module: $info->{mod_name}
  Version: $info->{mod_vers}
  Description: $info->{mod_abs}
  Author: $info->{author}
  CPANID: $info->{cpanid}
  CPAN file: $info->{dist_file}
  Distribution: $info->{dist_name}
END
}
mode => 'dist'

This is used to search for distributions. The query term must match exactly, in a case sensitive manner. The results are returned as a hash reference, the keys being the distribution name, and the associated values containing the information in the form:

my @d = qw(Math-Complex libnet);
$search->search(\@d, mode => 'dist') or $search->search_error();
my $results = $search->{dist_results};
foreach my $d(keys %$results) {
  my $info = $results->{$d};
  print <<"END";
 For distribution $d:
  Distribution: $info->{dist_name}
  Version: $info->{dist_vers}
  Description: $info->{dist_abs}
  Author: $info->{author}
  CPAN file: $info->{dist_file}
END
  my @mods = @{$info->{mods}};
  foreach (@mods) {
    print "Contains module $_->{mod_name}: Version: $_->{mod_vers}\n";
  }
}

COPYRIGHT

This program is copyright, 2008 by Randy Kobes <r.kobes@uwinnipeg.ca>. It is distributed under the same terms as Perl itself.

SEE ALSO

PPM.