http://www.perlmonks.org?node_id=456370


in reply to Switch/case as a dispatch table with C-style fall-through

Some of my thoughts:

Not sure if it is useful, but how about calling the coderef with the value it triggerd? (as in, $case->("cat"); runs the coderef of the animal with the argument 'cat')

Here is a suggestion of which I'm really not sure: maybe it would be better to use a different name then 'new'? Pepole might expect a blessed reference and not a coderef... when you use new someone might think he should do something like $case->do_case(), so be really careful with how you name it...

And an identifier for the default code/value might be useful aswell, and/or maybe a continue/finalise block? (I did see some discussion about finalise before (but that was in another language), I leave it up to you to decide wheter or not that is useful)

A suggestion I was planning to make when I first looked at it was to allow a scalar instead a coderef too, but after taking a better look I realised this was not possible, since multiple keys can refer to the same code. (unless when there is a static-element added before the start of every key-block... which would mean you can just look at the one matched before, but this will make it more complex I guess)

update: typo :(