perl
view release on metacpan or search on metacpan
/* shortcuts to regexp stuff */
PERLVAR(I, replgv, GV *) /* *^R */
/* shortcuts to misc objects */
PERLVAR(I, errgv, GV *) /* *@ */
/* shortcuts to debugging objects */
PERLVAR(I, DBgv, GV *) /* *DB::DB */
PERLVAR(I, DBline, GV *) /* *DB::line */
/*
=for apidoc_section $debugging
=for apidoc mn|GV *|PL_DBsub
When Perl is run in debugging mode, with the B<-d> switch, this GV contains
the SV which holds the name of the sub being debugged. This is the C
variable which corresponds to Perl's $DB::sub variable. See
C<L</PL_DBsingle>>.
On threaded perls, each thread has an independent copy of this variable;
each initialized at creation time with the current value of the creating
thread's copy.
=for apidoc mn|SV *|PL_DBsingle
When Perl is run in debugging mode, with the B<-d> switch, this SV is a
boolean which indicates whether subs are being single-stepped.
Single-stepping is automatically turned on after every step. This is the C
variable which corresponds to Perl's $DB::single variable. See
C<L</PL_DBsub>>.
On threaded perls, each thread has an independent copy of this variable;
each initialized at creation time with the current value of the creating
thread's copy.
=for apidoc mn|SV *|PL_DBtrace
Trace variable used when Perl is run in debugging mode, with the B<-d>
switch. This is the C variable which corresponds to Perl's $DB::trace
variable. See C<L</PL_DBsingle>>.
On threaded perls, each thread has an independent copy of this variable;
each initialized at creation time with the current value of the creating
thread's copy.
=cut
*/
PERLVAR(I, DBsub, GV *) /* *DB::sub */
PERLVAR(I, DBsingle, SV *) /* $DB::single */
PERLVAR(I, DBtrace, SV *) /* $DB::trace */
PERLVAR(I, DBsignal, SV *) /* $DB::signal */
PERLVAR(I, dbargs, AV *) /* args to call listed by caller function */
PERLVARA(I, DBcontrol, DBVARMG_COUNT, IV) /* IV versions of $DB::single, trace, signal */
/* symbol tables */
PERLVAR(I, debstash, HV *) /* symbol table for perldb package */
PERLVAR(I, globalstash, HV *) /* global keyword overrides imported here */
PERLVAR(I, curstname, SV *) /* name of current package */
PERLVAR(I, beginav, AV *) /* names of BEGIN subroutines */
PERLVAR(I, endav, AV *) /* names of END subroutines */
PERLVAR(I, unitcheckav, AV *) /* names of UNITCHECK subroutines */
PERLVAR(I, checkav, AV *) /* names of CHECK subroutines */
PERLVAR(I, initav, AV *) /* names of INIT subroutines */
/* subprocess state */
PERLVAR(I, fdpid, AV *) /* keep fd-to-pid mappings for my_popen */
/* internal state */
PERLVARI(I, op_mask, char *, NULL) /* masked operations for safe evals */
/* current interpreter roots */
PERLVAR(I, main_cv, CV *)
PERLVAR(I, main_root, OP *)
PERLVAR(I, main_start, OP *)
PERLVAR(I, eval_root, OP *)
PERLVAR(I, eval_start, OP *)
/* runtime control stuff */
PERLVARI(I, curcopdb, COP *, NULL)
PERLVAR(I, filemode, int) /* so nextargv() can preserve mode */
PERLVAR(I, lastfd, int) /* what to preserve mode on */
PERLVAR(I, oldname, char *) /* what to preserve mode on */
/* Elements in this array have ';' appended and are injected as a single line
into the tokeniser. You can't put any (literal) newlines into any program
you stuff in into this array, as the point where it's injected is expecting
a single physical line. */
PERLVAR(I, preambleav, AV *)
PERLVAR(I, mess_sv, SV *)
PERLVAR(I, ors_sv, SV *) /* output record separator $\ */
/* funky return mechanisms */
PERLVAR(I, forkprocess, int) /* so do_open |- can return proc# */
/* statics moved here for shared library purposes */
PERLVARI(I, gensym, I32, 0) /* next symbol for getsym() to define */
PERLVARI(I, cv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */
PERLVAR(I, taint_warn, bool) /* taint warns instead of dying */
PERLVARI(I, laststype, U16, OP_STAT)
PERLVARI(I, laststatval, int, -1)
PERLVAR(I, modcount, I32) /* how much op_lvalue()ification in
assignment? */
/* interpreter atexit processing */
PERLVARI(I, exitlistlen, I32, 0) /* length of same */
PERLVARI(I, exitlist, PerlExitListEntry *, NULL)
/* list of exit functions */
/*
=for apidoc_section $HV
=for apidoc Amn|HV*|PL_modglobal
C<PL_modglobal> is a general purpose, interpreter global HV for use by
extensions that need to keep information on a per-interpreter basis.
In a pinch, it can also be used as a symbol table for extensions
to share data among each other. It is a good idea to use keys
prefixed by the package name of the extension that owns the data.
On threaded perls, each thread has an independent copy of this variable;
PERLVARI(I, ctype_name, const char *, NULL) /* Name of current ctype locale */
# endif
/* Array of signal handlers, indexed by signal number, through which the C
signal handler dispatches. */
PERLVAR(I, psig_ptr, SV **)
/* Array of names of signals, indexed by signal number, for (re)use as the first
argument to a signal handler. Only one block of memory is allocated for
both psig_name and psig_ptr. */
PERLVAR(I, psig_name, SV **)
#if defined(PERL_IMPLICIT_SYS)
PERLVAR(I, Mem, const struct IPerlMem **)
PERLVAR(I, MemShared, const struct IPerlMem **)
PERLVAR(I, MemParse, const struct IPerlMem **)
PERLVAR(I, Env, const struct IPerlEnv **)
PERLVAR(I, StdIO, const struct IPerlStdIO **)
PERLVAR(I, LIO, const struct IPerlLIO **)
PERLVAR(I, Dir, const struct IPerlDir **)
PERLVAR(I, Sock, const struct IPerlSock **)
PERLVAR(I, Proc, const struct IPerlProc **)
#endif
PERLVAR(I, ptr_table, PTR_TBL_t *)
PERLVARI(I, beginav_save, AV *, NULL) /* save BEGIN{}s when compiling */
PERLVAR(I, body_arenas, void *) /* pointer to list of body-arenas */
#if defined(USE_ITHREADS)
PERLVAR(I, regex_pad, SV **) /* Shortcut into the array of
regex_padav */
PERLVAR(I, regex_padav, AV *) /* All regex objects, indexed via the
values in op_pmoffset of pmop.
Entry 0 is an SV whose PV is a
"packed" list of IVs listing
the now-free slots in the array */
PERLVAR(I, stashpad, HV **) /* for CopSTASH */
PERLVARI(I, stashpadmax, PADOFFSET, 64)
PERLVARI(I, stashpadix, PADOFFSET, 0)
PERLVARI(I, env_mutex_depth, int, 0) /* Emulate general semaphore */
#endif
#ifdef USE_REENTRANT_API
PERLVAR(I, reentrant_buffer, REENTR *) /* here we store the _r buffers */
#endif
PERLVAR(I, custom_op_names, HV *) /* Names of user defined ops */
PERLVAR(I, custom_op_descs, HV *) /* Descriptions of user defined ops */
#ifdef PERLIO_LAYERS
PERLVARI(I, perlio, PerlIOl *, NULL)
PERLVARI(I, known_layers, PerlIO_list_t *, NULL)
PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL)
#endif
PERLVARI(I, checkav_save, AV *, NULL) /* save CHECK{}s when compiling */
PERLVARI(I, unitcheckav_save, AV *, NULL)
/* save UNITCHECK{}s when compiling */
PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */
/* Hooks to shared SVs and locks. */
PERLVARI(I, sharehook, share_proc_t, Perl_sv_nosharing)
PERLVARI(I, lockhook, share_proc_t, Perl_sv_nosharing)
#if defined(__HP_cc) || defined(__HP_aCC)
#pragma diag_suppress 3215
#endif
GCC_DIAG_IGNORE(-Wdeprecated-declarations)
MSVC_DIAG_IGNORE(4996)
#ifdef NO_MATHOMS
# define PERL_UNLOCK_HOOK Perl_sv_nosharing
#else
/* This reference ensures that the mathoms are linked with perl */
# define PERL_UNLOCK_HOOK Perl_sv_nounlocking
#endif
PERLVARI(I, unlockhook, share_proc_t, PERL_UNLOCK_HOOK)
MSVC_DIAG_RESTORE
GCC_DIAG_RESTORE
#if defined(__HP_cc) || defined(__HP_aCC)
#pragma diag_default 3215
#endif
PERLVARI(I, threadhook, thrhook_proc_t, Perl_nothreadhook)
/* Can shared object be destroyed */
PERLVARI(I, destroyhook, destroyable_proc_t, Perl_sv_destroyable)
PERLVARI(I, signalhook, despatch_signals_proc_t, Perl_despatch_signals)
PERLVARI(I, isarev, HV *, NULL) /* Reverse map of @ISA dependencies */
/* Register of known Method Resolution Orders.
What this actually points to is an implementation detail (it may change to
a structure incorporating a reference count - use mro_get_from_name to
retrieve a C<struct mro_alg *> */
PERLVAR(I, registered_mros, HV *)
/* Compile-time block start/end hooks */
PERLVAR(I, blockhooks, AV *)
PERLVAR(I, custom_ops, HV *) /* custom op registrations */
/* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be
present always, as -DDEBUGGING must be binary compatible with non. */
PERLVARI(I, scopestack_name, const char **, NULL)
PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */
/* Hook for File::Glob */
PERLVARI(I, globhook, globhook_t, NULL)
#if defined(MULTIPLICITY)
/* The last unconditional member of the interpreter structure when 5.18.0 was
released. The offset of the end of this is baked into a global variable in
any shared perl library which will allow a sanity test in future perl
( run in 0.699 second using v1.01-cache-2.11-cpan-5a3173703d6 )