はじめまして。ソーシャルアプリ事業部でエンジニアやってますチューブです。
根っからのTUBE好きなので、そのままあだ名になっちゃいました。
以前はPerlで携帯公式サイトとか、MovableTypeで情報サイトとか作ってました。

入社してまだ間もないですが、今回はボクが担当になりました。
TUBE愛とシステムのどちらを書こうか悩みましたが、
初めましてなので、Perlと正規表現を使った簡単なメールアドレスチェックで遊んでみようと思います。
(※因みに弊社では、サーバーサイドの開発言語はPHPが標準です)

PerlとPHPの簡単な違い

PerlとPHPでは勝手が少し違います。
まず、Perlを軸にPHPと異なる言語仕様を並べてみたいと思います。

  • 変数

Perlでは変数名の先頭にプレフィクスという記号をつけることによって、これが変数であると認識します。
「$~」なんていう変数宣言はPHPでも同じですね。これはスカラ変数です。

スカラ変数 :$
配列変数 :@
連想配列(ハッシュ) :%
サブルーチン :&

  • 関数

Perlでは関数名の前に sub をつけて関数を定義します。
同じプログラムファイル内で関数を呼び出す場合には、先頭に「&」のプレフィクスを付けるとコールできます。

また、引数の受け取り方は、基本的には以下3通りあります。
引数はリストとして、@_ という特殊な配列変数に格納されます。
そこから取り出す方法が3通りあるというわけです。

続きを読む

1. $_[0] を使って、一つ目の引数を取り出す

2. shift を使って、@_ の先頭の要素を切り取って返す

3. @_ をそのまま使って、引数を配列に代入

  • スコープ

Perlでは通常の変数はどこからでもアクセス可能なグローバルなスコープをもっています。
しかし、my演算子を使って変数を宣言すると、宣言した場所が {} で囲まれた部分(ブロック)の中なら、そのブロック内でだけアクセス可能な変数となります。
つまり、スコープが違っていれば、同じ名前の変数名が複数宣言されていても、それぞれ独立したものと扱われます。

以上Perlの簡単な言語仕様でした。
これに正規表現も混ぜて、メールアドレスに不正があったらエラーメッセージを返す処理を書いてみようと思います。

とまぁこんな感じになりました。
もっとスマートに書けよゴルア!と怒られそうですが・・・
個人的には、Perlの真髄は、MovableTypeと連動してプラグインを作ったり、再構築の重さ対策でダイナミックパブリッシングを組み込んだりしたときに出ると思います。
以上でしたー。

あわせて読みたい記事