プログラミング言語探訪 Perl
もともとは1987年にUNIXでテキスト処理をするために開発されたスクリプト言語で、インターネットが爆発的に普及した1990年代後半頃からCGIスクリプト……主に掲示板作成で大流行?した言語です。まあ、作者も同じくらいのタイミングで掲示板作ってみるかとやってみたクチです。実際作ってしばらく運用していたのですが、諸般の事情によりプロバイダを引っ越すことになり、使える環境がなくなったので、それっきり……
というのは建前で、実際には大学に通っていた頃から少し使ってました。大学ではUNIXワークステーションを使っていたので、Perlが使えるとちょっと便利だったので。ただ、本格的にやり出したのが卒業後、掲示板作ってみようかな、というのは確かです。ちなみにその掲示板、半年程度でしたがちゃんと運用してて、ある程度の書き込みはありました。
まあ、三ヶ月ほどした頃、荒らしというかスパム的な書き込みが殺到したんですが。
さて、言語としてはテキスト処理に強いという特徴がよく出ていて、ファイルの読み書きの他、正規表現――一部拡張されているとか――が使えるので、何かと便利だったりする言語です。
よく使われる例として、ログの処理。大量にはかれたログを読み込ませて「Error」で始まる行だけ出力するなんてのは簡単に書けます。こんな感じ。
my ($infile, $outfile) = @ARGV;
open my $in, "<", $infile or die "Cannot open $infile: $!";
open my $out, ">", $outfile or die "Cannot open $outfile: $!";
while (my $line = <$in>)
{
if ($line =~ /^Error/)
{
print $out $line;
}
}
一部抜粋というか、ファイルを閉じていなかったり、引数が足りなかったときの処理を省略してますけど、テキストファイルを処理すること前提のプログラム言語っぽい、すっきりした感じになりますね。
ちなみに作者も就職してから一部のシステムでログを処理するプログラムを書きました。エラーログじゃなくて課金用の操作ログでしたが。
さて、スクリプト言語ということで、コンパイルという概念はないのですが、実行速度としてはかなり速いのでコンパイルする必要性がないのだとか。作者はそこまで処理速度を求められたことがないのでわかりません。実際、作者が作ったプログラムのログはそれほど大きなものでは無かったので。
さて、そんなPerlですが、現状では大きな機能追加などがされることなく、セキュリティ面の補強がメインとなっているとか。開発コミュニティは活発ですが、スクリプト言語系の主流はPerl以外に移ってしまっているので、新規に何か、というのは少なくなっているそうです。作者もわざわざ今からPerlで何かを作る、と言うつもりはありませんし。
そのうちCOBOLのように廃れていくのかも知れない。ちょっと寂しさを感じる、そんな言語です。




