Как использовать fork() в Perl?

У меня есть сотни имен файлов в массиве. Я хочу создать дочерний процесс для каждых 4 файлов в массиве, и чтобы этот дочерний процесс выполнял некоторые действия с каждым из этих 4 файлов. (Так что при 100 файлах я создам 25 процессов.)

У меня проблемы с пониманием порядка, в котором обрабатываются строки, когда происходит форк. Я думал, что могу сделать что-то вроде этого, но я застрял:

foreach $file (@files) {
 if ($f++ % 4 == 0) {
  my $pid = fork();

  if ($pid) {
   push(@childs, $pid);
  }
  elsif ($pid == 0) {
    ... do stuff to $file ...
  }
 }

Я не думаю, что это правильно, и я надеюсь, что кто-нибудь сможет направить меня в нужном направлении. Спасибо.

6
задан matthias krull 30 November 2011 в 17:17
поделиться