0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Perlのfor文と置換演算子でcase文的なことをする

Posted at

sub foo {
    my $foo = shift;

    for ($foo) {
        s/abc/abc/ and return 1;
        s/def/def/ and return 2;
        s/ghi/ghi/ and return 3;
    }
}

fooサブルーチンは引数の文字列に'abc'が含まれれば1を、
'def'が含まれれば2を、
'ghi'が含まれれば3を返します。

解説

  • for文の()の中の配列の要素が各ループごとに$_に入ります
    • スカラ値をリストコンテキストで評価すると、そのスカラ値を唯一の要素に持つリストになります
  • s///(などの)演算子は指定がなければ$_に対し適用されます
  • s///はマッチングした場合にtruthyを、そうでない場合にfalsyを返します
  • Perlではandは短絡評価します
    • つまり、andの左辺がfalsyならば右辺は評価されません
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?