Как показывают документы, данные передаются от родительского к дочернему, поэтому вы хотите что-то, имеющее следующую форму:
for (;;) {
... get a chunk ...
my $pid = $pm->start and next;
... process chunk ...
$pm->finish;
}
So
use constant CHUNK_SIZE => 1000;
CHUNK:
for (my $eof = 0; !$eof;) {
my @chunk;
while (@chunk < CHUNK_SIZE) {
my $line = <>;
if (!$line) {
if (@chunk) {
$eof = 1; # Can't rely on a handle returning EOF twice.
last; # so we have to make a note of it.
} else {
last CHUNK;
}
}
push @chunk, $line;
}
my $pid = $pm->start and next;
... process chunk ...
$pm->finish;
}