Switch uses source filters, which are generally considered a poor and buggy solution. To quote from the perl 5.10.1 perldelta:
Switch is buggy and should be avoided. From perl 5.11.0 onwards, it is intended that any use of the core version of this module will emit a warning, and that the module will eventually be removed from the core (probably in perl 5.14.0). See Switch statements in the perlsyn manpage for its replacement.