投げやりなタイトル(笑)
package A; use strict; use warnings; sub new{ my $class = shift; $class = ref $class || $class; return bless({}, $class); } sub f1{ my $self = shift; f2(); $self->f2(); } sub f2{ print "package A\n"; } package A::Sub; use strict; use warnings; use base qw(A); sub f2{ print "package A::Sub\n"; } package main; use strict; use warnings; my $obj = A::Sub->new; $obj->f1();
$ perl a.pl package A package A::Sub
ただのf2()だとpacakge A::f2が呼び出されるけど、$self->f2 だと $self にバインドされた名前空間の f2() が動的に呼び出されるから、この場合はpackage A::Sub::f2が呼び出される。
・・・のかどうか知らないけど、そういうざっくりとした理解をしておく。だいたいあってるでしょ、多分。