givenはC言語のswitch文に相当する構文です。givenに与えられた引数をwhenの条件でテストし、マッチしたブロックを実行します。
my ($two, $five); given 5 { when 2 { $two = 1 } when 5 { $five = 1 } # この行が実行される }
文字列を評価する場合は以下のようにします。
my $foo; given "foo" { when "foo" { $foo = 1 } }
whenは入れ子にすることも可能です。
my $foo; given "foo" { when "foo" { when /^f/ { $foo = 1 } } }
whenの条件にマッチしない場合はdefaultが実行されます。
my ($two, $five, $default); given 3 { when 2 { $two = 1 } when 5 { $five = 1 } default { $default = 1 } # この行が実行される }
givenに与えられた引数は特殊変数$_に格納されるので、引数名の省略に使用することができます。
given "Hello" { $_.say; .say; # 同じこと }