例えば push。
push @array, $scalar;
と書く。
その心は
「@array」という配列(の末尾)に「$scalar」という変数を追加してね
である。
あるいは bless。
bless $self, $class;
と書く。
その心は
「$self」というオブジェクトに「$class」というクラス名を与えよ
である。
主に、この二つ。良く迷うのは。
push @array, $scalar; なのか push $scalar, @array;
bless $self, $class; なのか bless $class, $self;
という感じに。
日本語的な感覚で言うと、「$scalarを@arrayに追加して」なので
その直感で行くと後者なのだけど、不正解。
英語のSVOO構文を思い出そう。
目的語が二つ。OO(オーオー)。
このとき、「人に〜物を〜」と習ったと思う。
I'll give him a cookie.
とは言うけど、
I'll give a cookie him.
とは言わない。
というわけで、pushやunshiftやblessを使うときに
どっちがどっちだか忘れてしまったら、
SVOO構文の「人に〜物を〜」を思い出しましょうというお話。
ただ、僕はそれがわかっていても、
どっちがどっちだかわからなくなるんですけども。
特にblessの時。(オブジェクト指向プログラミングの理解が曖昧だとそうなる。)