Switch galimybės Perle
Kaip žinia, Perlo kalboje nėra switch
konstrukcijos. Gal
kam ir keista, bet yra keletas (kaip visada Perle yra keletas būdų
atlikti tam pačiam daiktui ;) būdų kaip apsieiti be to.
Pirmas būdas gana man bjaurokas, nes naudoja goto
(nors
šiaip tai labai primena įprastą switch
:
SWITCH:{ # switch($option)
$_='CASE_'.$option; eval("goto $_"); $_= 'DEFAULT' if ($@); goto $_;
CASE_1: print "Case 1\n";
last SWITCH;
CASE_4: print "Case 4:\n";
last SWITCH;
CASE_FOUR: print "Case FOUR\n";
last SWITCH;
CASE_9: print "Case 9\n";
return "Because I can";
CASE_WHAT: ;
CASE_STR: print "Case STRING on $option\n";
last SWITCH;
DEFAULT: print qq|Undefined Case "$option"\n|;
}
Dažniausiai naudojama nuorodų lentelė (dispatch table):
my %switch = (
default => \&list_ads,
submit_payment => \&save_payment,
set_duration => \&set_duration,
go_here => sub {print 'hi'},
);
$switch{$value} ?
$switch{$value}->() :
$switch{'default'})->();
Dar vienas būdas:
for ($val)
{
/^1$/ && do { do_something };
/^abc$/ && do { do_something_else };
/^d{2,4}$/ && do { do_something_further };
}
Arba galima naudotis Switch
moduliu. There is more than one way to do it.