Recently somebody was asking for help in the chatterbox, tearing his hair out over some strange bug. It turned out that the sole cause of the problem was the fact that he had a "use Switch;" statement in his code. He wasn't actually using anything from
Switch, he had just neglected to remove the use statement after a failed attempt to get it to DWHW.
I wholeheartedly second your other suggestion for implementing a C-style switch. :-)
FWIW I don't understand why Switch.pm is included in core. It's such an attractive nuisance for those who come from a C/C++ background and miss having a switch construct. The little disclaimer in the "Bugs" section of Switch's pod isn't really enough of a warning.