Разве вы не можете вызывать встроенные в Perl XS?Признаюсь, я не знаю.
Если нет, вы всегда можете сделать что-то вроде этого:
sub logger { _real_logger(caller, @_) }
при условии, что logger
- это то, что называется вашей функцией (и вы переименовываете свой C ++Функция XS для _real_logger
. Вы также можете сделать это, предположительно, если вам нужно спрятаться в дереве вызовов:
sub logger {
unshift @_, caller;
goto &_real_logger;
}
, что, конечно, является обычной формой goto, используемой в AUTOLOAD
.
Это, конечно, увеличит накладные расходы, но, вероятно, не имеет большого значения для функции ведения журнала.