NAME
Regexp::Match::List - Matches a string to a list of regular expressions
SYNOPSIS 1 (short)
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;
}
DESCRIPTION
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)
STABILITY
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).
KNOWN BUGS
None
SEE ALSO
Regexp::Match::Any, Regexp::Common, Data::Sorting, Class::Base
AUTHOR
Delano Mandelbaum, <horrible<AT>murderer.ca>
COPYRIGHT AND LICENSE
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.
See http://www.perl.com/perl/misc/Artistic.html