package Parallel::MapReduce::Testing; use strict; use warnings; use base 'Parallel::MapReduce'; =pod =head1 NAME Parallel::MapReduce::Testing - MapReduce Infrastructure, single-threaded, local =head1 SYNOPSIS use Parallel::MapReduce::Testing; my $mri = new Parallel::MapReduce::Testing; # rest like in Parallel::MapReduce =head1 DESCRIPTION This subclass of L implements MapReduce, but only as a single thread. Unlike its superclass, there is no need (or use) to provide lists of servers or workers. This is great for testing your algorithm itself. =cut sub new { my $class = shift; return bless {}, $class; } sub mapreduce { my $mri = shift; my $map = shift; my $reduce = shift; my $h1 = shift; my %h3; while (my ($k, $v) = each %$h1) { my %h2 = &$map ($k => $v); map { push @{ $h3{$_} }, $h2{$_} } keys %h2; } my %h4; while (my ($k, $v) = each %h3) { $h4{$k} = &$reduce ($k => $v); } return \%h4; } =pod =head1 SEE ALSO L =head1 COPYRIGHT AND LICENSE Copyright 200[8] by Robert Barta, Edrrho@cpan.orgE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut our $VERSION = 0.03; 1;