@ISA or base or parent ?
親クラスからの継承を指定する際は、次のように @ISA に代入していました。
package SubClass; use ParentClass; use vars qw(@ISA); @ISA = qw(ParentClass);
plagger では継承を base で実現しているようなので、今後は「base を使おうかなぁ...」と考えていました。先程の例を「use base」で書き換えると、次のようにsrcがスッキリします。
package SubClass; use base qw/ParentClass/;
ところが、Catalystでは、parent を使用しているじゃないですか。
use parent qw/Catalyst/;
どうやらparentは、perl ver.5.10.0から加わったそうです。また、perldoc parent や perldoc base によれば、どちらも同じように思えます。
package Baz; BEGIN { require Foo; require Bar; push @ISA, qw(Foo Bar); }
http://perl-users.jp/nowpast.html
use base と use parent に関しては、perl-users.jp でもちょっと触れていたり、perldoc parent の下のほうにも Based on the idea of "base.pm"
と書かれています。
違いは、いったい何だろう...?
baseは標準モジュール
use base と use parent の具体的な動作の違いは別の機会に調べますが、corelistによれは、parentは、まだperlの標準モジュールではないようなので、しばらく use base を使うことにします。
[endo@colinux ~]$ perl -v This is perl, v5.10.0 built for i686-linux <略> [endo@colinux ~]$ corelist base base was first released with perl 5.00405 [endo@colinux ~]$ corelist parent parent was not in CORE (or so I think)