呼び出しメソッドの名前を取得したい。私はcallerを試してみましたが、ほとんどの場合うまくいきます。しかし、メソッドが親パッケージから継承された場合、結果は期待したものではありません。次に例を示します。
package Caller;
sub output_caller { #output the calling method's name
my @stacks = caller(1);
print $stacks[3];
}
package Foo;
sub foo {
Caller::output_caller();
}
package Bar;
use base 'Foo';
Bar->foo();
出力は
Foo::foo
私が期待したのは
Bar::foo
Bar::foo を取得することは可能ですか?