NAME Text::Scan - Fast search for very large numbers of keys in a body of text. SYNOPSIS use Text::Scan; $dict = new Text::Scan; %terms = ( dog => 'canine', bear => 'ursine', pig => 'porcine' ); # load the dictionary with keys and values # (values can be any scalar, keys must be strings) while ($key, $val) = each %terms ){ $dict->insert( $key, $val ); } # Scan a document for matches %found = $dict->scan( $document ); # Or, if you need to count number of occurrences of any given # key, use an array. This will give you a countable flat list # of key => value pairs. @found = $dict->scan( $document ); # Check for membership ($val is true) $val = $dict->has('pig'); # Retrieve all keys @keys = $dict->keys(); DESCRIPTION This module provides facilities for fast searching on arbitrarily long texts with arbitrarily many search keys. The basic object behaves somewhat like a perl hash, except that you can retrieve based on a superstring of any keys stored. Simply scan a string as shown above and you will get back a perl hash (or list) of all keys found in the string (along with associated values). Longest-first order is observed (as in perl regular expressions). CREDITS Except for the actual scanning part, plus the node-rotation for self-adjusting optimization, this code is heavily borrowed from both Bentley & Sedgwick and Leon Brocard's additions to it for `Tree::Ternary_XS'. The C code interface was created using Ingerson's `Inline'. Many test scripts come directly from Rogaski's `Tree::Ternary' module. SEE ALSO `Bentley & Sedgwick "Fast Algorithms for Sorting and Searching Strings", Proceedings ACM-SIAM (1997)' `Bentley & Sedgewick "Ternary Search Trees", Dr Dobbs Journal (1998)' `Sleator & Tarjan "Self-Adjusting Binary Search Trees", Journal of the ACM (1985)' `Tree::Ternary' `Tree::Ternary_XS' COPYRIGHT Copyright 2001 Ira Woodhead, H5 Technologies. All rights reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself AUTHOR Ira Woodhead, bunghole@pobox.com