Perlで配列に特定の要素が存在することを調べる方法
Perlで、配列に特定の要素が存在することを調べる方法を紹介します。
このエントリーはビギナー向けの内容です。
1.問題点
配列変数fooの要素に"hoge"という文字列があることを調べたいので次のような赤色で示すコードを用意しました。
my @foo = ( "bar", "hoge", "fuga" );
for my $data ( @foo ) {
print "OK" if $data eq "hoge";
}
このコードでは"hoge"が配列fooに複数存在する場合、"OK"が複数回出力されることになります。
1回だけ出力したい場合は、
for my $data ( @foo ) {
if ( $data eq "hoge" ) {
print "OK";
last;
}
}
とlastを追加すればいいのですが、もう少し簡単なコードで実装したいところです。
2.配列に要素が存在することを調べる
配列に要素が存在することを調べるにはgrepを利用します。
my @foo = ( "bar", "hoge", "fuga" );
print "OK" if grep { $_ eq "hoge" } @foo;
この1行で、@fooを繰り返し処理しながら$_に要素を代入し、$_の値と"hoge"が等しいものがある場合は"OK"を出力します。
なおgrepが返却するのは、式(カーリーブレイス"{}"の中)を評価した結果が真になるもので構成されるリストです。
次のように左辺に配列を代入すれば、リストを得ることができます。
my @list = grep { $_ eq "hoge" } @foo;
Posted by yujiro このページの先頭に戻る
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで改行コードがCRのファイルを読み込む方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlプログラムの中でファイルの一部を書き換える方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて
トラックバックURL
コメントする
greeting