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 <
[email protected]>
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.