Tie::RegexpHash3pm
Use regular expressions as hash keys
Usage
use Tie::RegexpHash;my %hash;tie %hash, 'Tie::RegexpHash';$hash{ qr/^5(\s+|-)?gal(\.|lons?)?/i } = '5-GAL';$hash{'5 gal'}; # returns "5-GAL"$hash{'5GAL'}; # returns "5-GAL"$hash{'5 gallon'}; # also returns "5-GAL"my $rehash = Tie::RegexpHash->new();$rehash->add( qr/\d+(\.\d+)?/, "contains a number" );$rehash->add( qr/s$/, "ends with an \`s\'" );$rehash->match( "foo 123" ); # returns "contains a number"$rehash->match( "examples" ); # returns "ends with an `s'"
Overview
This module allows one to use regular expressions for hash keys, so that values can be associated with anything that matches the key.
Hashes can be operated on using the standard tied hash interface in Perl, or using an object-oriented interface described below.
Methods
- new
-
my $obj = Tie::RegexpHash->new()Creates a new "RegexpHash" (Regular Expression Hash) object.
- add
-
$obj->add( $key, $value );Adds a new key/value pair to the hash. $key can be a Regexp or a string (which is compiled into a Regexp).
If $key is already defined, the value will be changed. If
$keymatches an existing key (but is not the same), a warning will be shown if warnings are enabled.
- match
-
$value = $obj->match( $quasikey );Returns the value associated with $quasikey. ($quasikey can be a string which matches an existing Regexp or an actual Regexp.) Returns 'undef' if there is no match.
Regexps are matched in the order they are defined.
- match_exists
-
if ($obj->match_exists( $quasikey )) ...Returns a true value if there exists a matching key.
- remove
-
$value = $obj->remove( $quasikey );Deletes the key associated with $quasikey. If $quasikey matches an existing key (but is not the same), a warning will be shown.
Returns the value associated with the key.
- clear
-
$obj->clear();Removes all key/value pairs.
Releases
4 releases since Debian 3.1 (Sarge); the text changed 2 times.