(my $s=[caller(undef)]->[3])=~s/(??{ __PACKAGE__ }):://;
Или:
my $s=[caller(undef)]->[3];
substr($s,0,rindex($s,"::")+2)="";
Есть подспудное ощущение, что оба способа немного ужасны.
Собственно, вопроса даже 2:
1) Почему caller с параметром, например, «4» (циферкой) - возвращает пустую строку, хотя тут http://perldoc.perl.org/functions/caller.html говорят, что так быть не должно
2) Нельзя ли как-то сразу получить имя функции, очищенное от имени пакета?