Como esperar que o processo filho defina a variável no processo pai?

 use Parallel::ForkManager;    
 my $number_running = 0;
 my $pm = new Parallel::ForkManager(30); 
 $pm->run_on_start( sub { ++$number_running; } );
 $pm->run_on_finish( sub { --$number_running; } );
 for (my $i=0; $i<=100; $i++)
 {
     if ($number_running == 5) { while ($number_running > 0) {} }  # waits forever
     $pm->start and next;
     print $i;
     $pm->finish;
 }

O código acima usaParallel :: ForkManager para executar código em um loop for usando processos paralelos. Ele está contando quantos processos filhos estão em execução e configurando o$number_running variável de acordo. Depois que 5 processos filhos estiverem em execução, gostaria que esperasse até que 0 processos filhos estivessem em execução antes de continuar.

A primeira linha no loop for foi projetada para conseguir isso, mas espera eternamente nessa linha. É como se a alteração na variável feita pelos processos filhos não estivesse disponível para essa linha de código. O que estou fazendo errado? Nota: Estou ciente dewait_all_children mas eu não quero usá-lo.

questionAnswers(1)

yourAnswerToTheQuestion