use strict; use Parallel::ForkManager; my @ary = (1..100); my $count = 1; my $pm = new Parallel::ForkManager(30); $pm->run_on_start( sub { my ($pid,$ident) = @_; open(ARY, ">$count") or die $!; print ARY "$count"; close ARY; $count++; } ); foreach my $val (@ary) { $pm->start and next; print "Working on $val (count: $count)\n"; $pm->finish; };