Аналоги Switch в Perl программах на удивление мало распространены. Хотя есть аж два его варианта, доступные уже лет ддесять — switch и given. B обе всё ещё экспериментальные.
Начиная с perl 5.10.1, появился оператор(?) switch
#!perl
use feature "switch";
Он не очень прямой, имеет ограничения. Политически грамотно использовать given/when:
#!perl
use v5.10.1;
for ($var) {
when (/^abc/) { $abc = 1 }
when (/^def/) { $def = 1 }
when (/^xyz/) { $xyz = 1 }
default { $nothing = 1 }
}
given ($var) {
when (/^abc/) { $abc = 1 }
when (/^def/) { $def = 1 }
when (/^xyz/) { $xyz = 1 }
default { $nothing = 1 }
}
use v5.14;
for ($var) {
$abc = 1 when /^abc/;
$def = 1 when /^def/;
$xyz = 1 when /^xyz/;
default { $nothing = 1 }
}
use v5.14;
given ($var) {
$abc = 1 when /^abc/;
$def = 1 when /^def/;
$xyz = 1 when /^xyz/;
when ([1,3,5,7,9]) {...}
default { $nothing = 1 }
}
when может использоваться в for() или given() — там, где есть $_. $_ и используется в неявном случае.
Раздел Experimental Details on given and when описывает всякие ужасы, и, согласно этому описанию, использовать их нельзя 🙂
Если надоест всё же видеть предупреждения о экспериментальности этих конструкций, просто напишите:
#!perl
use experimental qw(switch);
Leave a Reply
You must be logged in to post a comment.