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.