perl 配列内を文字検索

配列から条件にマッチする要素を取り出す
「配列の要素を検索しある条件にマッチする要素だけ取り出す」こんな時に先ず思い浮かぶのが、配列全ての要素を順に見ていき、条件にマッチする要素を退避しておく等の方法が考えられます。
しかし こんなに煩わしい事をしなくても、perlでは grepという 関数を使用すれば、配列の中からある条件にマッチする要素だけを取得する事が出来ます。 非常に便利なものです。
grep は、第一引数で正規表現を使用して条件を指定し、 第二引数で検索対象となる配列を指定します。 戻り値としてリスト値を指定すればマッチした全ての要素が、スカラ値を指定すればマッチした件数を取得する事が出来ます。
[数値を含む要素のみ取り出す]
@array = ('win95', 'win98', 'win2000', winXP,'mac', 'linux');
@grepedarray = grep(/\d/,@array);
# ('win95', 'win98', 'win2000') が取り出される
@grepedarray = grep(/\d/,@array);
# ('win95', 'win98', 'win2000') が取り出される
[winから始まる要素を取り出す]
@array = ('win95', 'win98', 'win2000', winXP, 'mac', 'linux');
@grepedarray = grep(/^win/,@array);
# ('win95', 'win98', 'win2000', winXP) が取り出される
@grepedarray = grep(/^win/,@array);
# ('win95', 'win98', 'win2000', winXP) が取り出される
[winから始まる要素の件数をカウント]
@array = ('win95', 'win98', 'win2000', winXP, 'mac', 'linux');
$cnt = grep(/^win/,@array);
# 4 が返される
$cnt = grep(/^win/,@array);
# 4 が返される