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.