There is, how surprising ;-), something readymade on CPAN (
MyConText) that does exactly what the above posts suggest:
MyConText is a pure man's solution for indexing contents of documents. It uses the MySQL database to store the information about words and documents and provides Perl interface for indexing new documents, making changes and searching for matches. For MyConText, a document is nearly anything -- Perl scalar, file, Web document, database field.
It's so simple as:
use MyConText;
use DBI;
# connect to database (regular DBI)
my $dbh = DBI->connect('dbi:mysql:database', 'user', 'passwd');
# create a new index
my $ctx = MyConText->create($dbh, 'indexname', 'frontend' => 'file', '
+backend' => 'phrase');
# or open existing one
# my $ctx = MyConText->open($dbh, 'indexname');
# index documents
$ctx->index_document('/path/to/file');
# search for matches, finds documents that contain "anybody", "somebod
+y", "nobody", etc.
my @documents = $ctx->contains('%body');
Alternatives: