Как я могу напечатать вызывающую программу / модуль внутри метода в Perl? - PullRequest
0 голосов
/ 07 апреля 2010

Я написал Perl API, и он используется многими программами в разных командах. Я хочу отслеживать все программы, вызывающие мой метод API. Я хочу иметь что-то вроде ниже

 debug("The calling method is ",  $XXXX); 

Как получить $ XXXX?

Ответы [ 2 ]

10 голосов
/ 07 апреля 2010

perldoc -f caller .

print "The calling function is", (caller 1)[3], "\n";
2 голосов
/ 07 апреля 2010

Также см. Функции в модуле Carp, которые обертывают функцию caller и могут служить своего рода функцией предупреждения с информацией о вызывающем абоненте.

use Carp qw(carp cluck);

carp "This function was called from ";  # caller info will be appended to output

cluck "The full stack trace up to this point is ";
...