in reply to Parallel::ForkManager loop in array
#!/usr/bin/perl # http://perlmonks.org/?node_id=1169958 use Time::HiRes 'sleep'; use strict; use warnings; my @fruits = 'fruit001' .. 'fruit020'; my $max = 5; my $active = 0; while(my $fruit = shift @fruits ) { while( $active >= $max ) { wait; $active--; } if( my $pid = fork ) { $active++ } elsif( defined $pid ) { sleep 3 + rand 7; print "completed $fruit\n"; exit; } else { die "fork failed $!"; } } 1 while wait > 0;
|
|---|