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.