小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlのよいところ

本格的にPerlをやり始めた2007/4から3年間が経ちました。
その間に感じたPerlのよいところを書きたいと思います。


その前に、私のPerl歴をちょっと…。
1996年頃からC言語によりCGIのプログラムを作る仕事をしてきました。
1998年に趣味でインターネットをはじめた時に、プロバイダでC言語がサポートされていなく、サポートのあるPerlを勉強しました。
この頃は、仕事ではPerlを使っていなかったので、リファレンス正規表現も良く知りませんでした。
単にPerlでBBSの掲示板CGIとページカウンタCGIを作るレベルでした。


その1998年から約10年経った2007/4に、縁あって、Perlでの仕事をやり始め、本格的にPerlの勉強をはじめました。
その軌跡がPerlノートになりました。


で、その間に私が感じたPerlのよいところは、以下の9点です。

  1. 正規表現が言語と一体化されているところ
  2. リファレンスにより多次元配列が自由自在なところ
  3. 処理するデータが文字列やバイナリ値で区別がないところ
  4. コンパイルする必要がないところ
  5. 文字列の中で変数展開ができるところ
  6. 記述が省略できるところ
  7. CPANがあるところ
  8. 色々な方法でコーディングができるところ
  9. マジシャンのようなところ

1. 正規表現が言語と一体化されているところ

正規表現を使うのに、いちいち正規表現オブジェクトや関数等の必要がなく、正規表現が言語と一体化されていて、テキストの検索処理や置換処理が非常にラクなところ。

2. リファレンスにより多次元配列が自由自在なところ

前もってエリアの確保とかの必要がなく、インデックスを付けてアクセスするだけで、多次元配列が自由自在にできるところ。
特にハッシュと配列の組み合わせは、他言語でいう構造体配列を簡単に表現ができて、すばらしい!

3. 処理するデータが文字列やバイナリ値で区別がないところ

他言語では、文字列とバイナリ値で区別して処理をしないとなりませんが、Perlでは、その区別がありません。
区別がないので、処理が非常にシンプルに書けるのです。

4. コンパイルする必要がないところ

ご存知のようにPerlは、インタープリタなのでコンパイルする必要がありません。
なので、ソースを修正するだけで簡単に動くわけで、これになれるとコンパイルが必要な言語には戻りたくなくなります。

5. 文字列の中で変数展開ができるところ

他言語では普通、文字列に変数を含めたい時は、文字列連結で行います。
Perlでは、文字列の中で変数展開が普通にできますね。
実は、文字列の中で関数コールもできるのです。

use strict;
print "aaaaaaa @{[&test()]} bbbbbbb";
sub test {
    return "ABCDEF";
}

6. 記述が省略できるところ

ループ系での当たり前の代入処理等は、デフォルトで『$_』という特殊変数を用いるようになっていて、代入文等を記述しなくてもよく、尚且つ『$_』そのものも記述しないでいいところ(実は、わるいところでもあるかも)

while ($_ = <DATA>) {
    if ($_ =~ /^h.*e$/) {
        print $_;   # hogeを表示する
    }
}

# 上と同じ
while (<DATA>) {
    if (/^h.*e$/) {
        print;   # hogeを表示する
    }
}
__END__
hoge
foo

7. CPANがあるところ

実は、私は、CPANのモジュールをあまり使ったことがないので、ここにあげる資格はないのですが、やはり、PerlといえばCPANなのですかね。とりあえず、あげときます。

8. 色々な方法でコーディングができるところ

普通の言語では、大体同じようなコーディングになりますが、Perlでは十人十色です。
結城 浩先生のPerlクイズなど、まさに十人十色の回答がありましたね。

9. マジシャンのようなところ

他の言語だとえらく大変な処理を、Perlだとあっという間に出来てしまい。
マジシャンになった気分になれるとか!
とにかく、Perlのラクさを体験したら、もう2度と他の言語には戻れませんね!


えーと、ここまで読んで頂いたのも何かのご縁です。
皆さまが思った、Perlのよいところをコメントで教えて頂ければ幸いです。