use threads::shared; use Parallel::Queue; print concatenate_parallel( ['a' .. 'z'], 4 ) . "\n"; sub concatenate_parallel { my $result :shared; my @input = map { my $string = $_; sub { $result .= $string; }; } @{ shift @_ }; my $max_threads = shift @_; my $mgr = Parallel::Queue->construct( 'thread' ); $mgr->runqueue( $max_threads, @input ); return $result; }