caller

Синтаксис

caller EXPR
caller

Описание

Функция возвращает контекст вызова текущей подпрограммы. В скалярном контексте возвращается имя вызвавшего функцию (подпрограмму) пакета, если таковой был, в том случае, если в данный момент времени мы находимся в подпрограмме, блоке eval или require. Во всех остальных случаях результатом вызова является undef. В списочном контексте функция возвращает
($package, $filename, $line) = caller;
Если при вызове использовался формат с аргументом EXPR, функция возвращает также дополнительную информацию, которая используется отладчиком для трассировки стека вызовов подпрограмм. Значение EXPR определяет глубину стека, на которую нужно проследить последовательность вызовов.
($package, $filename, $line, $subroutine,
$hasargs, $wantarray, $evaltext, $is_require) = caller($i);
Здесь $subroutine может иметь значение "", если данный кадр не является вызовом подпрограммы, но в случае eval устанавливаются дополнительные элементы $evaltext и $is_require. При этом $is_require истинно (TRUE), если кадр стека вызова был создан с помощью require или use, a $evaltext содержит текст, переданный оператору eval.
ПРИМЕЧАНИЕ
В частном случае использования конструкции eval BLOCK переменная $filename становится равной “”, a $evaltext не определено. Заметьте также, что оператор use создает внутри кадра eval EXPR дополнительный кадр require.

Далее, в случае вызова функции caller из пакета отладчика DB, возвращается более детальная информация — устанавливаются значения списка @DB::args, в котором содержатся аргументы, использовавшиеся при вызове подпрограммы.



2011-04-26 00:53:16 lykich

Thanks




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: