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";
}

関連項目

if文