2

呼び出しメソッドの名前を取得したい。私は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 を取得することは可能ですか?

4

1 に答える 1