Perl - Parallel::FileRead

Parallell::FileRead というのを書いた。

例えば10GBの大きいログファイルを処理しようとしているとき

use Parallel::FileRead;

Parallel::FileRead->run(
    file      => '10GB.log',
    worker    => 5, # how many workers
    on_worker => sub {
        my ($fh, $index) = @_;
        while (my $line = <$fh>) {
            # do something with $line
        }
    },
);

と書けば、2GBずつの処理に分解できる。まずまず便利だと思ってる :-)