Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re^6: Searching large files a block at a time

by marioroy (Parson)
on Aug 05, 2017 at 00:23 UTC ( #1196782=note: print w/replies, xml ) Need Help??

in reply to Re^5: Searching large files a block at a time
in thread Searching large files a block at a time

Yet another demonstration to be sure MCE::Hobo and MCE::Shared are not impacted when modifying the record separtor. Not localizing the record separator works too. Workers store the result into a shared array.

#!/usr/bin/perl use strict; use warnings; use MCE::Hobo; use MCE::Shared; my $mbnum = $ARGV[0] or die "usage: $0 mbnum\n"; my @ldif_files = qw( /path/to/file1.ldif.bz2 /path/to/file2.ldif.bz2 /path/to/file3.ldif.bz2 ); my $ret = MCE::Shared->array(); for my $idx (0 .. $#ldif_files) { my $file = $ldif_files[$idx]; mce_async { local $/ = ""; $ret->set($idx, ""); open my $fh, "-|", "/usr/bin/bzcat $file" or warn "open error ($file): $!"; if (defined fileno($fh)) { while (<$fh>) { if (/uid=$mbnum/m) { $ret->append($idx, $_); last; } } close $fh; } }; } $_->join for MCE::Hobo->list; # or MCE::Hobo->waitall; print join('', $ret->values) if $ret->len;

Regards, Mario

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1196782]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2021-12-08 00:50 GMT
Find Nodes?
    Voting Booth?
    R or B?

    Results (34 votes). Check out past polls.