プラクティカル(実用的)を意味するPerlのP
PerlのPは、プラクティカル(実用的)ということを意味しているということをご存じでしたか。
Perlという名前は、聖書からの引用で「真珠Pearl」のもじりですが、P, e, r, lという頭文字にも、込められた意味があります。
これは、後付けでつけられたものや、由来がはっきりしないものもありますが、Perlユーザーは、ある程度その意味を尊重しますし、楽しくもあります。
プラクティカル(実用的)とはどういう意味か
プラクティカル(実用的)とはどういう意味でしょうか。
ワンライナー
Perlは、実用的な言語です。仕事の中で、実用的に使えます。たとえば、サーバー管理で、シェルスクリプト、sed、awkを普段は使っているけれど、複数行の文字列処理や、少し複雑なテキスト処理を要求される場面で、Perlは、困ったを解決します。
awkやsedの代わりにワンライナーで、複数行文字列処理を、行うことができます。「こうしたいのになぁ、困ったなぁ」という場面で、ちょうど使えるツールとしてPerlが存在します。
理論的でない・説得的でない・権力的ではない
Perlは体感が良いのですが、それがWeb上で理論的に説明されていないので、Web上での評価は、弱かったりする面があります。
無理やり説得しようとか、適切な分野でないのに、Perlを使わせようとか、権力を利用して広めようとか、そういう傾向がPerlには少ないのです。
大きなメディアの権力、大学の権力、ビッグテックの権力、扇動的なマーケティングの力を利用して、Perlは知られるわけではなく、オープンソース文化の一つとして、Linux/Unixのミドルウェアツールのひとつとして、自然に知られるのが特徴です。
現場で、実務を行っているエンジニアが、困った場面で、ちょうど現れて、助けてくれるというところが、Perlの実用的な側面の一つだと思います。
シェルスクリプトの文字列表現との相性
Perlは、理想言語Xではなく、実用的な言語です。たとえば、シェルスクリプトは、文字列の表現として、クォートとダブルクォートを持っています。
Perlも、クォートとダブルクォートです。
つまり、Perlをシェルスクリプトの中で使おうとした場合に、Perlとシェルスクリプトの表現はぶつかるのです。
最初の解決策は、ワンライナーの場合は、シェルの文字列としてシングルクォートで囲って、Perlの文字列をダブルクォートにするという工夫ができます。
文字列を表現する方法として、シングルクォートとダブルクォートがあるので、このように回避できます。
でも、そのどちらも難しい場合があります。この場合、Perlは、シングルクォート演算子とダブルクォート演算子という、謎の演算子を持っています。
q(文字列) qq(文字列)
この演算子の存在理由は、シェルスクリプトの文字を囲む表現との衝突を回避するためです。
さらに、衝突を回避するために、文字囲みまで、変えられます。
q|文字列| qq|文字列{
Perlはいいます。「私はあなたを尊重します。あなたとはぶつからない」。
文字列そのままを、配列にしてくれる文字列リスト演算子
Perlには、文字列そのままを、配列にしてくれる文字列リスト演算子があります。これも、実用的なことを目指したものなのでしょう。
たとえば、複数行の文字列リストがテキストに書かれていたとします。
焼肉 寿司 カレー うどん
こんなのが、200行書かれていたと想像してください。クォートで囲って、カンマで、区切るのめんどうですよねぇ。
「どらえもーん、なんかとからないのー。」「のびた君、また君かぁ。そんなときは、文字列リスト演算子(もじれつ りすと えんざんしー!)」
my @foods = qw( 焼肉 寿司 カレー うどん );
あら不思議、コピー&ペーストした文字列が、一瞬で、Perlの配列に!!!
Perlの実用的な側面いろいろ
テキスト処理で頻繁に使う正規表現が言語に組み込まれている、正規表現の囲み文字を変更できる、プログラムのなかにDATAセクションを記述できる、ダイヤモンド演算子でパイプ処理を簡単に実装できる、など、Perlの実用的な側面を上げていけば、きりがないほどです。
皆さんが、Perlを使って、実用的な側面を、どんどん発見していってください。Perlは、常に、気づきがあるプログラミング言語です。