Perlを使ってみた


一度使ってみたいなあと思っていたPerlでプログラミングをしてみました。
最近はRubyとかPythonみたいなスクリプト言語ばっかり使っていたのでちょっととっつきやすいです。

Perlのバージョンはv5.16.1。まずは環境設定。さすがにaptana studioにPerlの環境までは入っていなかったので、評判のよさげなEPICを使うことに。しかしどんどんEclipseが重くなっていくなー。
デバッグとかは出来ないものの、動的なエラーの発見は初心者にはとても便利。

試しにAutumn Fest 2012A問題を解いてみました。
ソースコード


気付いたこと・感じたことをメモしておきます。


・動的型付けで、RubyとかPythonに近い。でもコロンが文末に必要など、若干使い心地は悪い??

・変数宣言は$VariableNameと「$」をつける。配列宣言は@ArrayNameと「@」をつける。それぞれRubyグローバル変数インスタンス変数みたいな見た目です。
ローカル変数はmy $LocalNameのように「my」をつける。出来る限りmyを付けておいた方が安全そうです。

コメントアウトは#。複数行は「=comment」と「=cut」で囲む。

・当然for文とかある。ただ、CとかJavaみたいに

 for($i = 0; $i < 100; $i++) print "hoge";

みたいにブロックの省略が出来ないっぽい。残念。
ループ脱出はbreakではなくlastを使う。

・配列の扱いは他の言語に比べてかなり難しい。まず、二次元配列は

@ary = ();

@a1 = (1,2,3);
@a2 = (4,5,6);

$ary[0] = \@a1; # $ary[0] = @a1だとa1の配列長が入る
$ary[1] = \@a2;

のように作れます。配列の各要素へアクセスする場合は@ではなく$を使います。ここがかなりややこしい。
詳しくはこことかここがおすすめです。
二次元配列のソートもかなりの難易度でした。こちらが非常に分かりやすいです。

・標準入力から1行取ってくるのは。さすが動的型付けというべきか、始めは戻り値の型はString(?)っぽい型なのに、四則演算をするとInt(?)っぽい型になる。

PerlもコンソールでPythonとかRubyirbみたいにintaractiveに実行出来る。コンソールで「perl -de 1」(最後は1でなくてもいいっぽい)と入力する。「q」で終了。


始めは配列の使い方に心が折れかけたけど、慣れればなかなか普通に使えそうです。今のところRubyPythonに勝る点を見つけられていないのですが、正規表現とかにかなり強いと聞いたので、そこら辺に期待して、しばらくPerlも使ってみようと思います。