in reply to Re^8: search a large text file
in thread search a large text file
yes, this is what I talked about in "1)" above. Your hash is permanent, you have to fill it only once, ever. You need two scripts:
This is the script you call once whenever your source file changes:
#!/usr/bin/perl #script 1. Fills the hash use warnings; use strict; use DBM::Deep; my $file_in_en=shift; my %hash_en=to_hash($file_in_en); sub to_hash { my $file = shift; my $db = DBM::Deep->new( "$file.db" ); $db->clear(); open(FILE, "<$file"); foreach $l (<FILE>) { my ($ngram,$line) = split /\t/, $l; push(@{ $db->{$ngram} }, $line); } close FILE; return $db; }
And this is your search script:
#!/usr/bin/perl #script 2. Search item in hash use warnings; use strict; use DBM::Deep; my $file=shift; my $hash_en= DBM::Deep->new( "$file.db" ); print @{$hash_en->{'despite'}};
UDPATE: corrected the search script
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^10: search a large text file
by perl_lover_always (Acolyte) on Feb 10, 2011 at 13:47 UTC | |
by jethro (Monsignor) on Feb 10, 2011 at 15:37 UTC |