暗黙の第一引数invocant

すぐ名前を忘れてしまうのでメモ。Perlではオブジェクトのメソッド呼び出しにおいて、暗黙の第一引数として呼び出し元のオブジェクト情報が渡る。これをinvocantと呼ぶ。

sub method {
    my $self = shift;
}

invocantは上記のようにshiftで受け取るのが慣例。クラスから呼び出された場合はパッケージ名が、インスタンスから呼び出された場合はオブジェクトのリファレンスが渡される。

ちょっと調べてみたら、このinvocantというのは英和辞書にもあまり載っていない単語で、「invokeする人」という程度の意味らしい。invokeはメソッドやサブルーチンを呼び出すという意味の動詞だが、原義は「祈祷や儀式により霊的存在を召喚して術者と一体化すること」だそうで、西洋の魔術がルーツらしい。ちなみに、このinvocationにおいて呼び出す対象はイタコが行う口寄せのように先祖の霊などではなく、精霊だとか悪魔だとかだそうな。

プログラムと魔術は意外と関連が深いんです。たぶん。