use strict; use warnings; use MCE::Flow; ## Make gzip file { open my $fh, '|-', 'gzip > test.txt.gz'; foreach (1..100000) { print {$fh} sprintf('%04d',$_).('abc123' x 10)."\n"; } close $fh; } ## Read gzip file open my $fh, '-|', 'gzip -cd test.txt.gz' or die "open error: $!\n"; STDOUT->autoflush(1); # important MCE::Flow->init( max_workers => 3, init_relay => 0 ); sub test { my ($mce, $chunkref, $chunkid) = @_; my ($buf, $wid) = ('', MCE->wid()); for my $i (0 .. $#{ $chunkref }) { $buf .= $chunkref->[$i]; } MCE::relay { print "## worker: $wid, chunkid: $chunkid\n".$buf; }; } MCE::Flow->run_file(\&test, $fh); MCE::Flow->finish(); close($fh);