perlのgrep関数の使い方|変数とか戻り値とか複数条件とかのまとめ

perlのgrep関数について学んだので、備忘録としてまとめておきます。

grep関数の基本的なことについて

grep関数は、第一引数に条件、第2引数にリスト(配列)を指定して使う関数。説明するよりも、下記のサンプルコードを見た方が早い。

use Data::Printer;
my @array = ( 1, 4, 5, 6 );
my @result = grep( $_ % 2 == 0, @array );
p @result;
=result
[
    [0] 4,
    [1] 6
]
=cut

上記のコードでは、@array配列の要素の内、$_ % 2 == 0の条件に当てはまる要素を取り出して新たなリストを作り、その新たなリストを戻り値として返している。(今回は戻り値の格納場所を配列@resultとしているが、スカラー変数$resultにすると、@resultの要素の数を返してくれる)

(注:コード内に出てくる$_は、リスト(配列)の要素の1つが格納される変数。grepの他にもforとかmap関数等の様に、リストの要素を1つずつ取り出す処理を行う時によく使う)

grepと言う名前の関数だが、必ずしも正規表現である必要はない。

grep関数で複数条件を指定してあげたい場合。

grep関数に複数条件を指定してあげたい場合は、単純に&&演算子を使えばいける。

use Data::Printer;
my @array = ( 1, 4, 5, 6 );
my @result = grep( $_ % 2 == 0 && $_ == 4, @array );
p @result;
=result
[
    [0] 4
]
=cut

上記のコードは例として悪いけど、正常に処理されているのが分かる。

さらに複雑な処理を書きたい場合は、以下の様に書くと良い。

@result = grep {
複雑な条件文
} @array;

上記の様にブロックを渡すことで、ブロック内の条件に該当した要素を集めたリストを返してくれる。

詳しくは、下記の公式ドキュメントを見てね。

参考:Perlの組み込み関数 grep の翻訳 – perldoc.jp

ReratedPosts

perlのコードでよく見かけるrequire、use、BEGINの役割や関係についてまとめる
Mojoliciousで文字化けが起こった時の対処法2つ
Mojoliciousで静的ファイル(html)を読み込ませるための設定法
PerlのDBIで新規レコードを作成(INSERT)した時にレコードのIDを取得する方法
perlでは何がtrueで何がfalseと判定されるのか
perlで「Can't locate Sample/Module.pm in @INC」と言うエラーが起こる原因と対処法3つ