NAME
Hash::Dispatch - Find CODE in a hash (hashlike)
VERSION
version 0.0010
SYNOPSIS
$dispatch = Hash::Dispatch->dispatch(
'xyzzy' => sub {
return 'xyzzy';
},
qr/.../ => 'xyzzy',
...
);
$result = $dispatch->dispatch( 'xyzzy' );
$result->value->( ... );
DESCRIPTION
Hash::Dispatch is a tool for creating a hash-like lookup for returning a CODE reference
It is hash-like because a query against the dispatcher will only return once a CODE reference a found. If a key (a string or regular expression) maps to a string, then that will cause the lookup to begin again with the new value, recursing until a CODE reference is found or a deadend is reached:
a => CODE0
b => CODE1
c => CODE2
d => a
qr/z/ => c
query( a ) => CODE0
query( b ) => CODE1
query( d ) => CODE0
query( xyzzy ) => CODE2
query( j ) => undef
Hash::Dispatch will throw an exception if it is cycling:
a => b
b => a
query( a ) => {{{ Exception! }}}
USAGE
$dispatcher = Hash::Dispatch->dispatch( ... )
Returns a new $dispatcher
with the given mapping
$result = $dispatcher->dispatch( <query> )
Search $dispatcher
with <query>
Returns an object with a ->value
method that contains the CODE reference
Returns undef is nothing is found
AUTHOR
Robert Krimen <robertkrimen@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Robert Krimen.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.