なんでcan使ってるんだっけ??at perl

更新が無かったので、疑問を垂れ流してみる。

package a;

sub new {
  my $class = shift;
  bless {},$class;
};
sub foo {
  print "foo";
}

てのがあったとして。

my $sub = "foo";

my $a = a->new;
my $code = $a->can($sub);
$code->();

みたいにcanを使ったりするけれども。
動かす分には下のでもいけるわけで。

my $a = a->new;
$a->$sub();

だので、canの目的というのは、使えるかどうかを判定する。
(code_ref か undef)を返す。

ってことなのよね??っていう。

でも、

$a->$sub();

って気持ち悪い。

で、動かすだけでcanを使う理由ってあるんだっけ?
と、気持ち悪さから疑問に思った次第であります。