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.
See http://www.perl.com/perl/misc/Artistic.html
To install Regexp::Match::List, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Regexp::Match::List
CPAN shell
perl -MCPAN -e shell install Regexp::Match::List
For more information on module installation, please visit the detailed CPAN module installation guide.