Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Switch - "case" may clash with future reserved word

by erroneousBollock (Curate)
on Nov 29, 2007 at 01:46 UTC ( #653741=note: print w/ replies, xml ) Need Help??


in reply to Re: Switch - "case" may clash with future reserved word
in thread Switch - "case" may clash with future reserved word

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:

given $data { when /^\d+$/ { return %var{""} = $_ } when 'previous' { return %var{""} // fail NoData } when %var { return %var{""} = %var{$_} } default { die Err::BadData : msg=>"Don't understand $_" } }
I know I'll be using it with abandon as soon as 5.10 comes out :-)

-David


Comment on Re^2: Switch - "case" may clash with future reserved word
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://653741]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (18)
As of 2015-07-02 18:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (44 votes), past polls