switch文
バージョン5.10以降ではgivenを使うとswitch相当のことができます。
use strict; use warnings; use feature ':5.10'; my $val = 'def'; # 文字列 given ($val) { when ('abc') { say "1"; } when ('def') { say "2"; } when ('ghi') { say "3"; } default { say "0"; } } # 正規表現 given ($val) { when (/^abc$/) { say "1"; } when (/^def$/) { say "2"; } when (/^ghi$/) { say "3"; } default { say "0"; } } my $num = 88; # リスト given ($num) { when ([90..100]) { say "A" } when ([80..89]) { say "B" } when ([60..79]) { say "C" } default { say "D" } } # 関数 given ($num) { when (sub { $_[0] >= 90 }) { say "A" } when (sub { $_[0] >= 80 }) { say "B" } when (sub { $_[0] >= 60 }) { say "C" } default { say "D" } } # デフォルト変数 given ($num) { when ($_ >= 90) { say "A" } when ($_ >= 80) { say "B" } when ($_ >= 60) { say "C" } default { say "D" } }モジュールを使わない方法もあります。
use strict; use warnings; my $val = 'def'; $_ = $val; SWITCH: { /^abc$/ && do { print "1\n"; last SWITCH; }; /^def$/ && do { print "2\n"; last SWITCH; }; /^ghi$/ && do { print "3\n"; last SWITCH; }; print "0\n"; }