PerlOO
- ref:メニスカス@翠婚 - つまりあれ
Perl のオブジェクトって一言で言ってしまえば package に bless されたリファレンスで、
$obj->method
の形式でパッケージのサブルーチンを呼べるというだけなんでは。
あと、実は
method $obj
と
$obj->method
は同じことだとか(method が定義済みサブルーチンと同名ならそちらが呼ばれるけど)、$obj が Foo に bless されたリファレンスの場合、以下の2つが等価とか。
<追記>
Foo::method が直接定義されている場合。 method がスーパークラスから継承していて、Foo::method を定義していない場合はエラーになる。(Thanks ySas さん)
</追記>
$obj->method(@args); Foo::method($obj, @args);
同様に以下の2つも同じ意味だと思っていると理解が早いのかも。
Foo->method;
Foo::method("Foo");
Python や JavScript みたいなオブジェクトにメソッドが直接関連づいているようなモデルではないんだよなぁ。AUTOLOAD を使えばそういう仕組みもできなくはないと思うけど。