Perlの哲学 - Perlに対する誤解を解く

PerlのgrepはUnix/Linuxコマンドのgrepから着想を得ている

Perlにはgrepと呼ばれる関数がありますが、これは、PerlのgrepはUnix/Linuxコマンドのgrepから着想を得ています。

Unix/Linuxコマンドのgrep

Unix/Linuxコマンドのgrepの基本的な機能は、ファイルの中にある文字列を検索して、該当する行があれば、それを取り出して表示するというものです。

grep ケーキ food.txt

footd.txtの中に、ケーキが含まれる行があれば、それが、表示されます。

Perlのgrep関数

Perlのgrep関数は、Unix/Linuxコマンドのgrepから着想を得ています。

Perlのgrep関数の機能は、配列の要素で、条件に該当する要素があれば、それだけ取り出すというものです。

grepコマンドの対象が、ファイルの各行であるのに対して、Perlのgrep関数は、配列の各要素となっています。

grep関数のサンプルを書いてみます。偶数だけを取り出すサンプルです。

# grep関数で偶数のみ取り出す
my @nums = (1, 2, 3, 4);
my @even_nums = grep { $_ % 2 == 0 } @nums;

配列の各要素は、デフォルト変数「$_」に入ってきます。そして、偶数という条件にマッチしたものだけが、取り出された新しい配列が返されます。

Perlのgrep関数は、Unix/Linuxのgrepコマンドと、とても近い感覚で利用できます。

Perlの正規表現をgrepコマンドでも使える

Perlの正規表現は、よくある問題を簡単に解決できる機能を実装した、実用的な正規表現です。

実験的ではありますが、最近のLinuxでは「-P」オプションを使うと、Perlの正規表現をgrepコマンドでも使うことができます。

grep -P '(\.txt|\.html)$' food.txt

Perlで活用され、広く利用されるようになった、Perlの正規表現をgrepコマンド側でも使うことができます。