我想获取调用方法的名称。我尝试调用,在大多数情况下它工作正常。但是当方法从父包继承时,结果不是我所期望的。以下是示例:
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?
答案 0 :(得分:0)
use Carp qw(confess)
让你接近。它会返回
at C:\src_test\perl\TestMost\CallerTest.pl line 11.
Foo::foo('Bar') called at C:\src_test\perl\TestMost\CallerTest.pl line 18
Foo::foo
来自此修改后的脚本
package Caller;
sub output_caller { #output the calling method's name
my @stacks = caller(1);
print $stacks[3];
}
package Foo;
use Carp qw(cluck);
sub foo {
cluck();
Caller::output_caller();
}
package Bar;
use base 'Foo';
Bar->foo();