Perlで継承したメソッドがoverrideされるかどうか的な

投げやりなタイトル(笑)

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が呼び出される。
・・・のかどうか知らないけど、そういうざっくりとした理解をしておく。だいたいあってるでしょ、多分。