
Regexp::Match::List - Matches a string to a list of regular expressions

my $re = Regexp::Match::List->new(
DEBUG => 1, # share debugging output (caught by Class::Base)
OPCHECK => 100, # how often to reoptimize regexps
OPSKIP => 0, # Skip optimize()?
OPWEIGHT => 1, # default regexp hit multiplier
OPSORTSUB => sub { ... }, # sorting algorithm used by optimize()
);
$re->add('(?i:(trans)(\w\w\w)(tite))', weight => 1.5, hits => 0, somekey => somevalue );
# $RE contains the configured regular expression that successfully matched
# the string. You have access to $RE->{'weight'}, $RE->{'callback'},
# $RE->{'somekey'}, etc...
# @results contains the m// for paired parentheses. In the example below,
# it would contain ('trans','ves','tite');
my ($RE, @results) = $re->match('transvestite ');
# Callback template:
sub somesub($@)
# This callback is called regardless of whether the regular expression
# matched the string. Returning any true value will tell match() that
# this was a success. Any non-true value will admit failure.
{
my ($RE, @results) = @_;
# ... do something
# here you can add more criteria for a particular match
#
# Here we maintain the same return value that match() would
# return on. Any true value will tell match() this match was
# a smashing success.
return $#results >= 0;
# If we did this, all matches would be considered unsuccessful
# return 0;
}

Regexp::Match::List matches a string to a list of regular expressions
with callbacks and sorting optimization for large datasets.
Think Regexp::Match::Any with optimization (sort on usage trends, most
popular first -- see Data::Sorting) and expanded functionality.
note: all parameters are stored in an RE object and returned on a positive match
note: the callback is called for every regexp test (successful or not)
so it gets the final say as to whether or not there was a match
note: the callback is given the RE object. (see bottom the example above)

This module is currently undergoing rapid development and there is much left to do. This module is beta-quality, although it hasn't been extensively tested or optimized.
It has been tested only on Solaris 8 (SPARC64).

None

Regexp::Match::Any, Regexp::Common, Data::Sorting, Class::Base

Delano Mandelbaum, <horrible<AT>murderer.ca>

Copyright (C) 2004 by Delano Mandelbaum
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.