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

プラクティカル(実用的)を意味するPerlのP

PerlのPは、プラクティカル(実用的)ということを意味しているということをご存じでしたか。

Perlという名前は、聖書からの引用で「真珠Pearl」のもじりですが、P, e, r, lという頭文字にも、込められた意味があります。

これは、後付けでつけられたものや、由来がはっきりしないものもありますが、Perlユーザーは、ある程度その意味を尊重しますし、楽しくもあります。

プラクティカル(実用的)とはどういう意味か

プラクティカル(実用的)とはどういう意味でしょうか。

ワンライナー

Perlは、実用的な言語です。仕事の中で、実用的に使えます。たとえば、サーバー管理で、シェルスクリプトsedawkを普段は使っているけれど、複数行の文字列処理や、少し複雑なテキスト処理を要求される場面で、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は、常に、気づきがあるプログラミング言語です。