in reply to Re^3: Learning to use fork()
in thread Learning to use fork()

It's more clear to me now, buy it will work only if the subs does not get any arguments, right? What if they does?
If the module you suggested can help us on solving this problem, I would love to see an example

Replies are listed 'Best First'.
Re^5: Learning to use fork()
by kroach (Pilgrim) on Jan 15, 2019 at 14:09 UTC

    Parallel::ForkManager doesn't help with the code you want to parallelize. However, it can keep track of the number of forks, which you mentioned you wanted to do in the original question.

    Passing arguments is not a problem when using code references, if the aguments are determined beforehand, you can wrap them in anonymous subroutines:

    sub sub1 { print "sub1 ran, got args: [@_]\n" } sub sub2 { print "sub2 ran, got args: [@_]\n" } my @refs = ( sub { sub1(1, 2, 3) }, sub { sub1('foo', 'bar') }, sub { sub2(4, 5, 6) }, sub { sub2('some', 'string') }, ); $_->() foreach @refs;

    If you want to pass different sets of arguments to a single subroutine, you could just make an array of arguments:

    sub foo { print "Got args: [@_]\n" } my @args = ( [ 'A', 'B', 1 ], [ 'C', 'D', 2 ], ); foreach my $arg_ref (@args) { foo(@$arg_ref) }