2011/11/06

ここ数日 Perl を学んで分かった事 #Perl

 最近、会社では Perl を使います。Perl は中学生〜高校生の時にちょろっとやっただけで、しかもその時は独学だったのでものすっごいガラパゴスなコードを書いていました。しかし、仕事で使うとなるとそういう訳にはいかないので今勉強しているのですが、会社でコードを読んでいて「なんじゃこりゃ??」と思って勉強して分かった事をちょっと書いてみようかと。

 Perl を今さら始める人ってのもかなり奇特だとは思いますが、まぁ何かの役に立てば。

  • +{ } って?
    • 結論から言えばただの無名ハッシュです。
    • 何故プラスを付けるのかと言えば、それがブロックではなく無名ハッシュなんだと明示するため、ただそれだけです。
    • 逆に、ブロックである事を明示したければ {; hogehoge} の様に、ブレースの中に ; を書きます。
  • 関数呼び出しには & がいるんじゃないの?付いてないやつはなんなの?
    • 関数呼び出しは「基本的には & を付けます」。ただ、それがコンテキスト上関数と分かるもの(例えば、それ以前に既に sub によって関数が定義されている時)に関しては、& を付けなくても動作します。
    • なんか定義があいまいなので、個人的にはあくまで & を付けた方がいいだろうな、と思ってます。その方が単純に分かりやすい。
  • リファレンスを参照しているはずなのに、中身が取れてしまう?
    • 矢印記法(->)は、添字的なモノの間に挟まっている場合は省略できます。
    • 添字的なモノとは、[] とか {} だと理解していますが、ちょっと怪しいので間違ってたらごめんなさい。
    • 例えば、$a[0]->[0] は $a[0][0] と書く事もできます。
    • なので、こちらのコードも動作します。
    • 詳しくは「続・初めてのPerl」など参照の事…。

 Perl Mongers の方からすれば当たり前すぎる事かもしれないんですが、イチから学んでる人にとっては、この辺すら理解不能だったりするのでメモがてら書いてみました。