私は何百というファイル名を配列に持っています。私は、配列内の4つのファイルごとに子プロセスを作成し、その子プロセスに4つのファイルのそれぞれにいくつかの処理をさせたいと思います。 (100個のファイルがあるので、25個のプロセスを作成します)Perlでfork()を使うには?
フォークがあるときに行が処理される順序を理解するのに問題があります。私はこのような何かを行うことが考えていたが、私は立ち往生しています:
foreach $file (@files) {
if ($f++ % 4 == 0) {
my $pid = fork();
if ($pid) {
push(@childs, $pid);
}
elsif ($pid == 0) {
... do stuff to $file ...
}
}
私はこれが正しいとは思わない、と私は、誰かが正しい方向に私を指すことができます願っています。ありがとう。
'(私の@ files4 =スプライス(@files、0、4)){'(@filesを破壊する、しかし)しながら、 – ysth
'$ i'を4ずつインクリメントしているので、スライスするときに4を掛ける必要はありません。 – itzy
'List :: Gen 'by';を使用してください。私の$ files4のために(4 => @ファイル){@ $ files4で何かする} ' –