in reply to Running perl threads in loop

Here is sample working code showing how your work could be implemented (based on my understanding of your text):
#!/usr/bin/perl use strict; use warnings; use threads; #use threads::shared; print "Starting main program\n"; my $MAXTHREADS=5; my @work= map{int(rand()*1000)} 1..rand()*200; print "Work to do: " , scalar(@work) , " entries:\n\t@work\n\n"; my (@threads); my $workstart= 0; my $workincrement = int((scalar(@work) + $MAXTHREADS - 1) / $MAXTHREA +DS ); for my $CurrentThreadNumber (1..$MAXTHREADS) { my $t = threads->new(\&sub1, $CurrentThreadNumber, $workstart, + $workstart+$workincrement); $workstart +=$workincrement+1; push(@threads,$t); } foreach (@threads) { $_->join; } print "End of main program\n"; sub sub1 { my ($thn,$workstart, $workend)=@_; $workend =$#work if $workend > $#work; print "in Thread $thn starting $workstart Till $workend\n"; print "($thn: $work[$_]) " for $workstart..$workend; print "\n"; sleep rand() * 10; print "Exiting Thread $thn\n"; }
Update: Handling the edge case where scalar(@work) <= $MAXTHREADS is left as an exercise.

             My goal ... to kill off the slow brain cells that are holding me back from synergizing my knowledge of vertically integrated mobile platforms in local cloud-based content management system datafication.