use strict; use warnings; use MCE::Loop qw( ); use Time::HiRes qw( time ); my @testLists = qw( sun moon wind air ); my $opts = 'foo'; my $status = 0; sub regressions { my ($opts, $list) = @_; print "$$: $list\n"; sleep 1; # simulate processing return 1; } my $start = time(); MCE->new( max_workers => 2, chunk_size => 1, input_data => \@testLists, gather => sub { $status += $_[0] }, user_func => sub { my $list = $_; my $status = regressions( $opts, $list ); MCE->gather( $status ); }, )->run(); print "status: $status\n"; printf "duration: %0.3f seconds\n", time() - $start; __END__ 27562: sun 27563: moon 27562: wind 27563: air status: 4 duration: 2.005 seconds