sub processWF { my @lines = ( 'perl -wle "print q(storeplaceholder stage 1);sleep(rand(10));print q(storeplaceholder stage 1 done)" ', 'perl -wle "print q(storeplaceholder stage 2);sleep(rand(10));print q(storeplaceholder stage 2 done)" ', ); while (defined (my $item = $jobs->dequeue)) { writeLog("Launching $item"); foreach my $line (@lines) { print "replacing $line with $item\n"; $line =~ s/storeplaceholder/$item/g; #print "running: $line\n"; system($line) == 0 or warn "Couldn't launch $line: $!"; } } }