|Pathologically Eclectic Rubbish Lister|
Re^2: Switch - "case" may clash with future reserved wordby erroneousBollock (Curate)
|on Nov 29, 2007 at 01:46 UTC||Need Help??|
I wouldn't say Switch.pm is buggy (update: in this specific case).
It is a very simplistic source-filter, which gives you plenty of warning in its documentation on the risks and limits of its use.
A "dispatch table" (as the hash of subs is usually called) is indeed a very useful construct, but sometimes a real switch/case-like construct is better.
For example, if your algorithm calls for falling through from one case to another, it's hard to achieve that cleanly with a dispatch table (without additional external machinery).
As mentioned above, Perl 5.10 (and 6) will introduce the given/when construct, which works like switch/case but is more powerful. The switch/case construct in most languages allows only integer or scalar values in case expressions, but given/when will allow many more possibilities (by using the "smart match" operator). Example:
I know I'll be using it with abandon as soon as 5.10 comes out :-)