まくまくPerlノート
grep 演算子によるリスト要素のフィルタリング
2008-02-28

grep 演算子を使うと、リスト要素の中から特定の条件に一致するものだけを抜き出すことができます。grep に指定するブロックの中で最後に評価された値が真になる要素だけが抜き出されます。

# 奇数のみを抜き出す
my @odd_numbers = grep { $_ % 2 } 1..100;

# コメント行(# で始まる行)以外を抜き出す
my @lines = grep { !/^#/ } <FILE>;

# 数字で始まる文字列を抜き出す
my @lines = grep { /^[0-9]/ } @arr;

grep に渡すブロック内の式が、単純な 1 つの式であれば、次のようにカンマで区切って簡単に記述することができます。

my @odd_numbers = grep $_ % 2, 1..100;
my @foo = grep !/^#/, <FILE>;

ちなみに、map 演算子も同様の構文です。

2008-02-28