DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

perlintern(1)





NAME

       perlintern - autogenerated documentation of purely internal
       Perl functions


DESCRIPTION

       This file is the autogenerated documentation of functions in the Perl
       interpreter that are documented using Perl's internal documentation
       format but are not marked as part of the Perl API. In other words, they
       are not for use in extensions!


Global Variables

       PL_DBsingle
               When Perl is run in debugging mode, with the -d switch, this SV
               is a boolean which indicates whether subs are being sin-
               gle-stepped.  Single-stepping is automatically turned on after
               every step.  This is the C variable which corresponds to Perl's
               $DB::single variable.  See "PL_DBsub".

                       SV *    PL_DBsingle

       PL_DBsub
               When Perl is run in debugging mode, with the -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 "PL_DBsingle".

                       GV *    PL_DBsub

       PL_DBtrace
               Trace variable used when Perl is run in debugging mode, with
               the -d switch.  This is the C variable which corresponds to
               Perl's $DB::trace variable.  See "PL_DBsingle".

                       SV *    PL_DBtrace

       PL_dowarn
               The C variable which corresponds to Perl's $^W warning vari-
               able.

                       bool    PL_dowarn

       PL_last_in_gv
               The GV which was last used for a filehandle input operation.
               ("<FH>")

                       GV*     PL_last_in_gv

       PL_ofs_sv
               The output field separator - $, in Perl space.

                       SV*     PL_ofs_sv

       PL_rs   The input record separator - $/ in Perl space.

                       SV*     PL_rs


GV Functions

       is_gv_magical
               Returns "TRUE" if given the name of a magical GV.

               Currently only useful internally when determining if a GV
               should be created even in rvalue contexts.

               "flags" is not used at present but available for future exten-
               sion to allow selecting particular classes of magical variable.

                       bool    is_gv_magical(char *name, STRLEN len, U32 flags)


IO Functions

       start_glob
               Function called by "do_readline" to spawn a glob (or do the
               glob inside perl on VMS). This code used to be inline, but now
               perl uses "File::Glob" this glob starter is only used by
               miniperl during the build process.  Moving it away shrinks
               pp_hot.c; shrinking pp_hot.c helps speed perl up.

                       PerlIO* start_glob(SV* pattern, IO *io)


Pad Data Structures

       CvPADLIST
               CV's can have CvPADLIST(cv) set to point to an AV.

               For these purposes "forms" are a kind-of CV, eval""s are too
               (except they're not callable at will and are always thrown away
               after the eval"" is done executing).

               XSUBs don't have CvPADLIST set - dXSTARG fetches values from
               PL_curpad, but that is really the callers pad (a slot of which
               is allocated by every entersub).

               The CvPADLIST AV has does not have AvREAL set, so REFCNT of
               component items is managed "manual" (mostly in op.c) rather
               than normal av.c rules.  The items in the AV are not SVs as for
               a normal AV, but other AVs:

               0'th Entry of the CvPADLIST is an AV which represents the
               "names" or rather the "static type information" for lexicals.

               The CvDEPTH'th entry of CvPADLIST AV is an AV which is the
               stack frame at that depth of recursion into the CV.  The 0'th
               slot of a frame AV is an AV which is @_.  other entries are
               storage for variables and op targets.

               During compilation: "PL_comppad_name" is set the the the names
               AV.  "PL_comppad" is set the the frame AV for the frame CvDEPTH
               == 1.  "PL_curpad" is set the body of the frame AV (i.e. AvAR-
               RAY(PL_comppad)).

               Itterating over the names AV itterates over all possible pad
               items. Pad slots that are SVs_PADTMP (targets/GVs/constants)
               end up having &PL_sv_undef "names" (see pad_alloc()).

               Only my/our variable (SVs_PADMY/SVs_PADOUR) slots get valid
               names.  The rest are op targets/GVs/constants which are stati-
               cally allocated or resolved at compile time.  These don't have
               names by which they can be looked up from Perl code at run time
               through eval"" like my/our variables can be.  Since they can't
               be looked up by "name" but only by their index allocated at
               compile time (which is usually in PL_op->op_targ), wasting a
               name SV for them doesn't make sense.

               The SVs in the names AV have their PV being the name of the
               variable.  NV+1..IV inclusive is a range of cop_seq numbers for
               which the name is valid.  For typed lexicals name SV is
               SVt_PVMG and SvSTASH points at the type.

               If SvFAKE is set on the name SV then slot in the frame AVs are
               a REFCNT'ed references to a lexical from "outside".

               If the 'name' is '&' the the corresponding entry in frame AV is
               a CV representing a possible closure.  (SvFAKE and name of '&'
               is not a meaningful combination currently but could become so
               if "my sub foo {}" is implemented.)

                       AV *    CvPADLIST(CV *cv)


Stack Manipulation Macros

       djSP    Declare Just "SP". This is actually identical to "dSP", and
               declares a local copy of perl's stack pointer, available via
               the "SP" macro.  See "SP".  (Available for backward source code
               compatibility with the old (Perl 5.005) thread model.)

                               djSP;

       LVRET   True if this op will be the return value of an lvalue subrou-
               tine


SV Manipulation Functions

       report_uninit
               Print appropriate "Use of uninitialized variable" warning

                       void    report_uninit()

       sv_add_arena
               Given a chunk of memory, link it to the head of the list of
               arenas, and split it into a list of free SVs.

                       void    sv_add_arena(char* ptr, U32 size, U32 flags)

       sv_clean_all
               Decrement the refcnt of each remaining SV, possibly triggering
               a cleanup. This function may have to be called multiple times
               to free SVs which are in complex self-referential hierarchies.

                       I32     sv_clean_all()

       sv_clean_objs
               Attempt to destroy all objects not yet freed

                       void    sv_clean_objs()

       sv_free_arenas
               Deallocate the memory used by all arenas. Note that all the
               individual SV heads and bodies within the arenas must already
               have been freed.

                       void    sv_free_arenas()


AUTHORS

       The autodocumentation system was originally added to the Perl core by
       Benjamin Stuhl. Documentation is by whoever was kind enough to document
       their functions.


SEE ALSO

       perlguts(1), perlapi(1)

perl v5.8.0                       2002-06-08                     PERLINTERN(1)

Man(1) output converted with man2html