caller
Gražina einamosios paprogrames iškvietimo konteksta. Skaliariniame kontekste gražina caller paketo pavadinima, jei yra caller, tuo atveju, jei esame paprogramej arba eval
, arba require
, o kitu atveju - neapibrežta reikšmæ. Sarašo kontekste, gražina
($package, $filename, $line) = caller;
Su EXPR, gražina daugiau informacijos, kuria naudoja debugeris pažymeti stack'o kelia. EXPR reikšme parodo, per kiek freimų eiti atgal nuo dabartinio.
($package, $filename, $line, $subroutine, $hasargs,
$wantarray, $evaltext, $is_require, $hints, $bitmask) = caller($i);
Čia $subroutine gali būti (eval)
, jei freimas nera paprogrames kvietimas, bet eval
. Tokiu atveju, dar reikalingi $evaltext ir $is_require
reikalingi užsetinti: $is_require
yra true, jei freimas sukurtas require
ar
use
,
$evaltext yra eval EXPR
sakinio tekstas. Iš tikrūjų, tai eval BLOCK
sakinyje, $filename yra (eval)
, bet pats $evaltext yra neapibrežtas. (Taip pat pažymetina, kad kiekvienas
use
sukuria require
freima eval EXPR
freimo viduje
.) $subroutine gali būti ir (unknown)
, jei būtent ši paprograme buvo ištrinta iš sibolių lenteles. $hasargs
yra true, jei naujas
@_
atvejis buvo freimui nustatytas.
$hints
ir $bitmask
savy turi pragmatiškas užuominas, su kuriomis buvo sukompiliuotas caller'is. $hints
ir $bitmask
reikšmes keičiasi tarp Perl versijų ir nera patartinos naudojimui išoriškai.
Be to, kai iškvestas iš DB paketo, caller'is gražina detalesnæ informacija: užsetina saraša kintamųjų @DB::args
, kad šie būtų argumentai, su kuriais iškviečiama paprograme.
Reiktų pasisaugoti, nes po optimizer'is gali tureti pagerinta freimų iškvietima dar prieš
caller
tures šansų gauti informacija. Tai reiškia, kad caller(N)
gali negražinti norimos informacijos apie iškvietimo freima, kurios tikimasi iš N > 1
. Konkrečiai, @DB::args
gali tureti informacija iš anksčiau, kai caller
buvo iškviestas.