in reply to Re^6: Control Structures
in thread Control Structures

My point was, if you're going to be doing this sort of thing often enough, pick an implementation you like, put it in your own personal library, and use it.

There's only one module that I know of that does switch/case, and it's a source filter, and doesn't do C-style fall-through. Like Perl6, it behaves like multiple ifs, trying every condition, even after one has matched.

Maybe I'll make a module for C-style case, and it will make it into the core module set (hey, a guy can dream), but until then, there is nothing wrong with having your own library of tools that you find handy. Yeah, it's not as nice as having them built-in, but you can't have everything (even in Perl 6!)

Here's a more streamlined version of my case factory. I don't know whether it makes the short-circuiting more clear.

sub case_new { my $matched = 0; return sub { my $check = shift; return $matched ||= (ref $check eq 'Regexp' and /$check/) || $_ eq $check; } }

Caution: Contents may have been coded under pressure.