callerСинтаксисcaller EXPR Описание($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, в котором содержатся аргументы, использовавшиеся при вызове подпрограммы.
|