POE::Component::SmokeBox::Dists is a POE component and Perl module that provides non-blocking CPAN distribution searches. It is a wrapper around File::Fetch for 02packages.details.txt.gz file retrieval, IO::Zlib for extraction and CPAN::DistnameInfo for parsing the packages data.
Given either author ( ie. CPAN ID ) or distribution search criteria, expressed as a regular expression, it will return to a requesting session all the CPAN distributions that match that pattern.
The component will retrieve the 02packages.details.txt.gz file to the .smokebox directory. If that file already exists, a newer version will only be retrieved if the file is older than 6 hours. Specifying the force parameter overrides this behaviour.
The 02packages.details.txt.gz is extracted and a CPAN::DistnameInfo object built in order to run the search criteria. This process can take a little bit of time.
SYNOPSIS
use strict;
use warnings;
use POE;
use POE::Component::SmokeBox::Dists;
my $search = '^BINGOS$';
POE::Session->create(
package_states => [
'main' => [qw(_start _results)],
],
);
$poe_kernel->run();
exit 0;
sub _start {
POE::Component::SmokeBox::Dists->author(
event => '_results',
search => $search,
);
return;
}
sub _results {
my $ref = $_[ARG0];
return if $ref->{error}; # Oh dear there was an error
print $_, "\n" for @{ $ref->{dists} };
return;
}
Product's homepage
Requirements:
· Perl