Perlによるプログラミングに関する世界観(戯言)です。Perlも参照のこと。
Perlの特徴として、Perlの作者のラリー・ウォールの遊び心がいっぱいである、ということが言えます。
各所に面白くするための工夫が見られて、省略など多くの「多様なやり方」があります。
UNIXとも親和性が高く、処理速度もスクリプト言語の中では高速なので、Perlの愛好家は今でもたくさんいます。
最近はPythonやRubyなど新しい言語がどんどん増えていますが、彼らは「多様性よりも自然さ」を好み、「自然でない記述は書きづらくする」といったことを行っています。それが悪いわけでは全くありませんが、Perlの遊び心がPythonやRubyでは失われているように感じます。
Perlは、UNIXでは古くから、あるプログラムとあるプログラムの間をノリのようにくっつけて取り持つ「グルー言語」として使われます。
Perlは正規表現やファイル処理などを簡単に記述することができ、省略構文やデフォルト変数などを上手く使うことで、強力なテキスト処理・ファイル処理を行うことができます。
こうした理由のため、grep, sed, awkなどでは簡単にできないような、決まりきった定型処理を巨大なテキストや膨大なファイルにバッチ処理のように行う時、シェルスクリプトなどの代わりにPerlを使って柔軟な自動処理を実現できます。
また、Perlの正規表現は「ある決まりをもった構造的なデータの処理」を得意としており、そのためログファイル、メールヘッダ、設定ファイルなどを処理・加工することに適しています。
要するに、「UNIXアドミニストレータが楽をするための言語」です。
また、Perlは、Webサーバ上で動的なHTMLを自動生成するCGIと呼ばれる仕組みを開拓した存在です。CGIは昔はPerlで書かれたものが一般的でした。今ではHTMLの中にスクリプトを埋め込めるPHPが登場し、プロセス単位でプログラムを実行するPerl/CGIよりもサーバーの中でスレッドを作成するPHPやJavaサーブレットが登場したこともあり、Perlで新しく作られることは少なくなっていますが、インターネット上ではPerlで作られたフリーの配布スクリプトなどが今でも配布されています。こうしたPerl/CGIで書かれたCGIでWebプログラマへの道を志した人も多いと思います。
しかしながら、Perlには欠点があります。それは、記号が多く、記述の自由度が高く、省略構文や他の言語にはない仕様が多いため、難読化されたような「他人には絶対に分からないような分かりづらい(そして醜い)コード」になることが多いのです。
また、Perlのオブジェクト指向は後から追加されたものであり、PythonやRubyのオブジェクト指向に比べてエレガントでありません。
また、今やWebサービスはWebフレームワークで開発することが一般的になっており、LaravelやRuby on RailsやDjangoなどが一般的です。特に、人工知能やデータサイエンスのためのライブラリが豊富なPythonを、Djangoと組み合わせてWebサービスを構築することが最近は増えています。クライアントサイドで使われていたJavaScriptを、Node.jsなどを用いてサーバーサイドで使うことも増えています。JavaScriptには欠点もありますが(数値型の種類が少なくクラスベースのオブジェクト指向でないなど)、TypeScriptなどを使うことで補うことができます。
そのような理由で、Perlは既に旧来の言語になろうとしています。
しかしながら、Perlには「言語仕様として面白い要素」がたくさんあります。また、昔はPythonではなくPerlがプログラミング初学者にとっておすすめの言語でした。そのため、プログラマを目指すのであれば、一度学んでおいて損はない言語です。古くからの言語であるため、書籍も多く、ラクダ本のような決定的バイブルもあり、入門的な書籍もたくさんあるため、初心者にとっては学びやすいでしょう。
Perlを「もう終わった言語」だとする人は多いですが、Perlは今でも、テキストやファイル処理を手軽にしたい場合に便利です。
Perlは、昔からテキストやファイルを簡単に編集するための手軽な言語として愛用されてきました。
確かに、昔はCGI向けに猛威を振るっていて、掲示板やチャットはPerl/CGIで作っていましたが、今ではPHP, Python, Rubyのようなもっと新しい言語ができたので、Web向けであればPerlを使う理由はありません。
ですが、テキスト処理やファイル処理を手軽にしたい場合には、Perlは今でも使われている現役の言語のひとつです。
なので、プログラミング初心者がPerlを学ぶこと自体は間違っていません。どんなに古いと言われても、時代遅れではありません。Perlは「プログラミングをする楽しさ」がある言語です。この特徴はRubyなどに引き継がれていますが、元祖はPerlであると言えます。
ラリー・ウォールは今でこそプログラミング言語Perlの設計者として有名ですが、専門は言語学です。プログラミング言語のことではなく、人間の自然言語の言語学です。なので、Perl 6をRakuという名前にしたのは、日本語にも精通しているということが伺えます。
2026.07.07
sedやawkライクなスクリプト言語として、簡単な処理スクリプトに良く使われる。
正規表現を手軽に使うために良く使われる。
サーバーサイドのPerl/CGIによるブラウザアプリケーションや、ネットで配布されている掲示板などのスクリプトの実行環境として良く使われる。
Perlでは、グローバル変数を多用することで、オブジェクト指向を行わなくても、容易にデータの共有ができる。
これは、RubyやJavaScriptにおける、クロージャと良く似ている。僕は、これを「グローバル変数による準クロージャ機能」と呼んで良いと思う。
Perlでは、グローバルスコープに変数や関数の宣言が置かれるため、どの関数からも同じ変数を参照することができて、簡単かつ、プログラミング初心者が自分のコードを書く上で、分かりやすい。
だが、これは小規模なスクリプト言語だからなせる業である。もっと大規模なプログラミングを行う上では、どの関数群がどの変数の宣言を共有するのか、きちんと分けて考えないといけない。そのためには、JavaやC++のような、名前空間やパッケージ、そしてオブジェクト指向のクラスとそのメンバとインスタンスの考え方の導入が必要である。
これは、CとC++の関係にも言える。Cでは、さまざまな関数で同じ変数を共有するためには、グローバル変数を使うか、あるいは構造体のポインタを使う。プロトタイプ宣言はヘッダファイルに書かれている。だが、この方法では、開発者やその保守をする人が、プログラミングの実装の詳細について詳しく分かっていなければならない。JavaやC++のオブジェクト指向を使えば、それを隠蔽し、カプセル化することができる。
Perlはプログラミング初心者に有用である。Perl作者のラリー・ウォールが書いた「プログラミングPerl」というラクダ本(オライリーの表紙がラクダなのでそのように呼ばれている)は、今でもプログラミング言語のバイブル的存在である。
新しいPerl。Perlの作者ラリー・ウォールが15年の歳月を経てリリースした伝説の新バージョン。
ラリー・ウォールは、Perl 6と呼ばれるPerlの後継バージョンを15年考えて開発した。最近リリースはされたが、本質的なところはPerl 5の雰囲気が残っている。Parrotと呼ばれる「軽量プログラミング言語のための共通仮想マシン」も作られていたが、それはどうなったのか定かではない。だが、Perl陣営は今でも頑張っている、ということは言えるだろう。
Perl 6の正式名称はRakuに決定した。これにより、Perl 6がPerl 5の後継バージョンではなく別の言語であることが明確になった。名称の由来は日本語の「楽」からである。僕の憶測だが、おそらく「ラクダ」からつけたかったのではないかと思う。ラクダは楽だ。
僕は、UNIXとPerlの組み合わせがなぜ優れていたのか、それほど多くのファンを作り出したのか、ということが分かります。
それは、「共有と多様性の原則」です。
この世界においては、「共有」と「多様性」ということは、正反対の考え方に見えて、実際は同じ理想を信じています。
共有とは、システムの一番大切な部分を、ひとつ正しいものを作った上で、常にそれを共有するということです。
そして、多様性とは、そのシステムをどのように使うこともできて、それぞれが異なる使い方で、異なるシステムを作ることができる、ということです。
そして、共有は堅牢さを、手軽さは多様性を作り出します。
システムのもっとも大切な部分をみんなで共有することで、みんなで多くの目でそのシステムが正しく実装されているかを確認できます。
そして、手軽に使えるシステム、単純に使えるシステムは、それぞれの人間がそれぞれ違った方法で使い、それによってシステムを構築するために、多様性を生み出します。
そして、この「共有による堅牢さ」が、すなわちUNIXカーネルであり、「手軽さによる多様性」が、すなわちPerlだったのです。
そのように、UNIXとPerlは、まさにベストマッチングなOSと言語処理系だったのです。
これこそが、UNIXとPerlが、CGIやサーバーの開発で、多くのファンを勝ち得た理由だと思います。
UNIXのカーネルが、フリーかつオープンソースであったことで、どのようなシステムに使われても安定して動く「堅牢さ」を得ることができました。すべて、「ソースコードの公開と共有」が為した業です。
同時に、Perlがあまりに手軽かつ単純で、多様性のあるプログラムの記述方法を許したことで、多くの人が自分なりにPerlを使い、自分なりのWebサイトやWebアプリケーションを作り出しました。
そう、UNIXとPerlがCGIとWebサーバーの世界で猛威を振るっていたのは、偶然ではなく、きちんとした必然的な原因があったのだと、僕は思います。
2023.04.26
Perlについて言えば、Perlは極めて文字列処理が得意です。
たとえば、正規表現によるパターンマッチや、UNIXライクなファイル処理など、文字列だけで行えることはどんなほかの言語よりも得意に行えます。
また、CGIを用いることで、WebサーバーにサクセスするとWebブラウザが表示するHTMLを自動的に吐き出すような、ネットワークで実現するWeb技術も得意です。
なので、掲示板やチャット、あるいはテキストやHTMLだけで実現できるブラウザゲームなどの開発に、Perlは極めて向いています。
不得意な点があるとしたら、大規模な開発には向いていないことです。
Perlでは、変数はデフォルトではグローバル変数ですし、オブジェクト指向なども後付けのやり方で行います。また、動的型付けであり、特殊な記号を用いたソースコードの記述を行うことから、言語やスクリプトについて分かっていない人が読むと、理解しづらかったり、直感に反した動きをすることがあります。
このことは、Perlでは「やり方はひとつじゃない」という哲学があるのに対して、Pythonでは「正しいやり方はひとつしかないべきだ」という哲学があることからも明らかです。
また、Web技術として使う際には、Perl/CGIはプロセスベースの並列処理を行いますが、PHPやJavaサーブレットなどはスレッドベースの並列処理を行うため、プロセスのほうがスレッドよりもオーバーヘッドが大きく、PHPなどに比べて速度が遅くなる傾向にあります。
最近のWeb技術は昔と比べて進歩しています。Ruby on RailsのようなMVCフレームワークを使うのが当たり前になりつつあり、HTMLやJavaScriptを中心とするフロントエンドと、データベースやアプリケーションサーバーを中心とするバックエンドは分けて開発されることが多くなってきています。
それでも、Perlの得意分野が文字列処理とネットワーク処理にあることは変わらず、UNIXと親和性が高いということも変わらないため、UNIXでテキストデータの解析を行う場合、grep/sed/awkでできないことはPerlを使うことが多くあります。UNIXerにとっては、Perlは今でも現役の言語です。
2026.04.20
Perlの全盛期については、以下の動画が参考になります。
そうそう、昔はPerlがCGIにおける主役だった。PHPはPerlの兄弟みたいなもの。あの時代はWebがビジネス色が薄くて、「個人のホームページを動的にするもの」という個人ホームページ感が満載で、本当に良かった時代だったね~。今の金儲けやビジネスやプロの専門家ばかりのネットは、正直多すぎて、個性もなく、面白くなくて、要らないです。
昔のオンラインゲームもDirectXみたいな高度なゲームでなければ、Perl/CGIで作られた単純なインターネット上の交流ゲームが多かった。掲示板やチャットも、ほとんどPerl/CGIだった。懐かしい。Ruby on Railsくらいから、フレームワークのような枠組みを覚えなきゃいけなくなった。昔はPerl/PHPができる人がそのままWebエンジニアだった。Webアプリケーションと言えばPerlかPHPが当たり前でした。
ただし、PythonやRubyがなかったわけではなく、当時からPythonやRubyを知っている人は通だった。今でいうRustやGolangの位置が、PythonやRubyだった。今でいうPythonやRubyが、C++やJavaだった。
当時のRubyは今のような生産性のある(あるいは初心者に推奨しない)言語ではなく、ほかの言語よりも賢くて書きやすい言語で、今でいうScalaとかErlangみたいなRubyistが多かった。Pythonは今のような人工知能とか初心者に推奨される言語でなく、ハッカーから推奨されるハッカー向け言語だった。両者はまったく同じ分野に重なるため、よくRubyとPythonの間で喧嘩が起こってました。
当時の有力なプログラミング言語は、C/C++、Java、Perl、PHP、C#、Python、Ruby、Lisp、Haskellといった感じ。LispとHaskellは関数型で硬派だが、ほかの手続き型言語はどれも大差ない。C/C++が実行速度は高速だが、コンパイル速度はObject PascalやDelphiのほうが高速。Visual Basicは馬鹿だったが、.NETで巻き返した。FORTRANとCOBOLは生き残っていたが、PL/Iが異彩を放っていた。そんな時代でした。
Perl 6については、ちょっとネット界がラリー・ウォールに期待しすぎた。「全面的に新しくなった究極のPerl 6と、スクリプト言語の共通インタープリタのParrotに期待しよう」と、人々があまりにPerl 6に期待しすぎた。実際に15年もの歳月を経て登場したPerl 6は、本当にそんな素晴らしい言語じゃなくて、イマイチ。その間にPythonやRubyが登場して、いいところ全部持っていかれた。ネットのエンジニアコミュニティが期待しすぎた分、期待外れ感がとても強かったと思う。それでも僕はPerl 6 (Raku)を終わったと思いたくないし、ラリー・ウォールによるこれからの(伝説的な)言語だと今でも期待している。
Perlのほかにも、Linuxカーネルの台頭や、Mozilla.orgからFirefoxへと繋がるオープンソースの系譜など、当時はオープンソース界がとても盛り上がっていて、Webではスラッシュドットとかはてなとか、CGIの延長線上でどう面白いWebアプリケーションを作れるかというところを、みんなで実験していた感じだった。
当時はニコニコ動画とかYouTubeとかはなくて、SNSもなく掲示板が主流で、Webが金儲けのための場所ではなく、みんなで「どんな面白いものが作れるか工夫しよう」という、大実験場のような場所だった。
今でこそ、WebはSNSを中心とした友達付き合いのような特殊な世界になっているが、昔はWebアプリケーションはGUIアプリケーションの延長線上でありながら、インターネットの不特定多数の力をどのように集めるかということを工夫していて、SNSのようなフォロー集めという発想はなかった。オープンソースはそのようなインターネットとものすごく相性が良かった。生成AIもなかった。著作権も性的なコンテンツに対する表現規制も、今ほど厳しくなかった。だから、画像掲示板のふたばちゃんねるのような、今では成り立たないようなサイトが成り立っていた。本当に、あの時代はよかったです。僕の青春の舞台でした。
2026.07.06-07