$handler{$case}->(@args);

Which looks up your $case in a hash %handler to find the anonymous function for your case, and then calls @args with it. When I do this, many of the cases are handled by closures, with full control over the occasional case that doesn't fit a simple pattern.

This seems very convoluted the first time you see it, but with practice it becomes very natural. The only caveat is that it doesn't have a good way to fallback in the event that your case is not in the hash - you have to check that separately.

Cheers,
Ben