{
    "mode": "man",
    "parameter": "PERLINTERN",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/PERLINTERN/1/json",
    "generated": "2026-10-04T13:51:06Z",
    "sections": {
        "NAME": {
            "content": "perlintern - autogenerated documentation of purely internal Perl functions\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This file is the autogenerated documentation of functions in the Perl interpreter that are\ndocumented using Perl's internal documentation format but are not marked as part of the Perl\nAPI.  In other words, they are not for use in extensions!\n\nIt has the same sections as perlapi, though some may be empty.\n\nAV Handling\n\"avfetchsimple\"\nThis   is   a  cut-down  version  of  avfetch  that  assumes  that  the  array  is  very\nstraightforward - no magic, not readonly, and AvREAL - and that \"key\"  is  not  negative.\nThis function MUST NOT be used in situations where any of those assumptions may not hold.\n\nReturns  the SV at the specified index in the array.  The \"key\" is the index.  If lval is\ntrue, you are guaranteed to get a real SV back (in case it wasn't real before), which you\ncan then modify.  Check that the return value is non-null before dereferencing  it  to  a\n\"SV*\".\n\nThe rough perl equivalent is $myarray[$key].\n\nSV   avfetchsimple(AV *av, SSizet key, I32 lval)\n\n\"AvFILLp\"\nIf  the  array  \"av\" is empty, this returns -1; otherwise it returns the maximum value of\nthe indices of all the array elements which are currently defined in \"av\".  It  does  not\nhandle magic, hence the \"p\" private indication in its name.\n\nSSizet  AvFILLp(AV* av)\n\n\"avnewalloc\"\nThis implements \"\"newAVallocx\"\" in perlapi and \"\"newAVallocxz\"\" in perlapi, which are\nthe public API for this functionality.\n\nCreates a new AV and allocates its SV* array.\n\nThis is similar to, but more efficient than doing:\n\nAV *av = newAV();\navextend(av, key);\n\nThe  size  parameter  is  used  to pre-allocate a SV* array large enough to hold at least\nelements \"0..(size-1)\".  \"size\" must be at least 1.\n\nThe \"zeroflag\" parameter controls whether or not the array is NULL initialized.\n\nAV *  avnewalloc(SSizet size, bool zeroflag)\n\n\"avstoresimple\"\nThis  is  a  cut-down  version  of  avstore  that  assumes  that  the  array   is   very\nstraightforward  -  no  magic, not readonly, and AvREAL - and that \"key\" is not negative.\nThis function MUST NOT be used in situations where any of those assumptions may not hold.\n\nStores an SV in an array.  The array index is specified as \"key\". It can be  dereferenced\nto get the \"SV*\" that was stored there (= \"val\")).\n\nNote  that  the  caller  is  responsible for suitably incrementing the reference count of\n\"val\" before the call.\n\nApproximate Perl equivalent: \"splice(@myarray, $key, 1, $val)\".\n\nSV   avstoresimple(AV *av, SSizet key, SV *val)\n",
            "subsections": []
        },
        "Callback Functions": {
            "content": "\"dowantarray\"\n\"DEPRECATED!\"  It is planned to remove \"dowantarray\" from a future release of  Perl.   Do\nnot use it for new code; remove it from existing code.\n\nImplements the deprecated \"\"GIMME\"\" in perlapi.\n\nU8  dowantarray()\n\n\"leavescope\"\nImplements \"LEAVESCOPE\" which you should use instead.\n\nvoid  leavescope(I32 base)\n\n\"magicfreedestruct\"\nThis   function   is  called  via  magic  to  implement  the  mortaldestructorsv()  and\nmortaldestructorx() functions. It should  not  be  called  directly  and  has  no  user\nservicable parts.\n\nint  magicfreedestruct(SV *sv, MAGIC *mg)\n\n\"mortalsvfuncx\"\nThis  function arranges for a C function reference to be called at the end of the current\nstatement with the arguments provided. It  is  a  wrapper  around  mortaldestructorsv()\nwhich ensures that the latter function is called appropriately.\n\nBe  aware  that there is a signficant difference in timing between the end of the current\nstatement and the end of the current pseudo block. If you are looking for a mechanism  to\ntrigger  a  function  at  the  end  of  the  current  pseudo  block  you  should  look at\nSAVEDESTRUCTORX() instead of this function.\n\nvoid  mortalsvfuncx(SVFUNCt f, SV *p)\n\n\"popscope\"\nImplements \"\"LEAVE\"\" in perlapi\n\nvoid  popscope()\n\n\"pushscope\"\nImplements \"\"ENTER\"\" in perlapi\n\nvoid  pushscope()\n\n\"saveadelete\"\nImplements \"SAVEADELETE\".\n\nvoid  saveadelete(AV *av, SSizet key)\n\n\"savefreercpv\"\nImplements \"SAVEFREERCPV\".\n\nSaves and frees a refcounted string. Calls rcpvfree() on the argument when  the  current\npseudo block is finished.\n\nvoid  savefreercpv(char *rcpv)\n\n\"savegenericpvref\"\nImplements \"SAVEGENERICPV\".\n\nLike savepptr(), but also Safefree()s the new value if it is different from the old one.\nCan be used to restore a global char* to its prior contents, freeing new value.\n\nvoid  savegenericpvref(char str)\n\n\"savegenericsvref\"\nImplements \"SAVEGENERICSV\".\n\nLike  savesptr(),  but  also  SvREFCNTdec()s  the  new value.  Can be used to restore a\nglobal SV to its prior contents, freeing new value.\n\nvoid  savegenericsvref(SV sptr)\n\n\"savehdelete\"\nImplements \"SAVEHDELETE\".\n\nvoid  savehdelete(HV *hv, SV *keysv)\n\n\"savehints\"\nImplements \"SAVEHINTS\".\n\nvoid  savehints()\n\n\"saveop\"\nImplements \"SAVEOP\".\n\nvoid  saveop()\n\n\"savepadsvandmortalize\"\nImplements \"SAVEPADSVANDMORTALIZE\".\n\nvoid  savepadsvandmortalize(PADOFFSET off)\n\n\"savepushptr\"\nThe refcnt of object \"ptr\" will be decremented at the end of  the  current  pseudo-block.\n\"type\"  gives  the type of \"ptr\", expressed as one of the constants in scope.h whose name\nbegins with \"SAVEt\".\n\nThis is the underlying implementation of several macros, like \"SAVEFREESV\".\n\nvoid  savepushptr(void * const ptr, const int type)\n\n\"savercpv\"\nImplements \"SAVERCPV\".\n\nSaves and restores a refcounted string, similar to what savegenericsvref would do for a\nSV*. Can be used to restore a refcounted string  to  its  previous  state.  Performs  the\nappropriate refcount counting so that nothing should leak or be prematurely freed.\n\nvoid  savercpv(char prcpv)\n\n\"savescalarat\"\nA helper function for localizing the SV referenced by *sptr.\n\nIf  \"SAVEfKEEPOLDELEM\"  is  set  in  in  \"flags\",  the function returns the input scalar\nuntouched.\n\nOtherwise it replaces *sptr with a new \"undef\" scalar, and returns that.  The new  scalar\nwill  have  the  old  one's  magic  (if  any)  copied to it.  If there is such magic, and\n\"SAVEfSETMAGIC\" is set in in \"flags\", 'set' magic will be processed on the  new  scalar.\nIf  unset,  'set' magic will be skipped.  The latter typically means that assignment will\nsoon follow (e.g., 'local $x = $y'), and that will handle the magic.\n\nSV *  savescalarat(SV sptr, const U32 flags)\n\n\"savesetsvflags\"\nImplements \"SAVESETSVFLAGS\".\n\nSet the SvFLAGS specified by mask to the values in val\n\nvoid  savesetsvflags(SV *sv, U32 mask, U32 val)\n\n\"savesharedpvref\"\nImplements \"SAVESHAREDPV\".\n\nLike savegenericpvref(), but uses PerlMemSharedfree() rather than Safefree().  Can  be\nused to restore a shared global char* to its prior contents, freeing new value.\n\nvoid  savesharedpvref(char str)\n\n\"savevptr\"\nImplements \"SAVEVPTR\".\n\nvoid  savevptr(void *ptr)\n",
            "subsections": []
        },
        "Casting": {
            "content": "There are currently no internal API items in Casting\n",
            "subsections": []
        },
        "Character case changing": {
            "content": "There are currently no internal API items in Character case changing\n",
            "subsections": []
        },
        "Character classification": {
            "content": "There are currently no internal API items in Character classification\n",
            "subsections": []
        },
        "Compiler and Preprocessor information": {
            "content": "There are currently no internal API items in Compiler and Preprocessor information\n",
            "subsections": []
        },
        "Compiler directives": {
            "content": "There are currently no internal API items in Compiler directives\n",
            "subsections": []
        },
        "Compile-time scope hooks": {
            "content": "\"BhkENTRY\"\nNOTE: \"BhkENTRY\" is experimental and may change or be removed without notice.\n\nReturn an entry from the BHK structure.  \"which\" is a preprocessor token indicating which\nentry  to  return.  If the appropriate flag is not set this will return \"NULL\".  The type\nof the return value depends on which entry you ask for.\n\nvoid *  BhkENTRY(BHK *hk, token which)\n\n\"BhkFLAGS\"\nNOTE: \"BhkFLAGS\" is experimental and may change or be removed without notice.\n\nReturn the BHK's flags.\n\nU32  BhkFLAGS(BHK *hk)\n\n\"CALLBLOCKHOOKS\"\nNOTE: \"CALLBLOCKHOOKS\" is experimental and may change or be removed without notice.\n\nCall all the registered block hooks for type \"which\".  \"which\" is a preprocessing  token;\nthe type of \"arg\" depends on \"which\".\n\nvoid  CALLBLOCKHOOKS(token which, arg)\n",
            "subsections": []
        },
        "Concurrency": {
            "content": "\"CVfSLABBED\"\n\"CvROOT\"\n\"CvSTART\"\nDescribed in perlguts.\n\n\"CXCUR\"\nDescribed in perlguts.\n\nCXCUR()\n\n\"CXINC\"\nDescribed in perlguts.\n\n\"CXLEAVESCOPE\"\nDescribed in perlguts.\n\nvoid  CXLEAVESCOPE(PERLCONTEXT* cx)\n\n\"CXPOP\"\nDescribed in perlguts.\n\nvoid  CXPOP(PERLCONTEXT* cx)\n\n\"cxstack\"\nDescribed in perlguts.\n\n\"cxstackix\"\nDescribed in perlguts.\n\n\"CXtBLOCK\"\n\"CXtEVAL\"\n\"CXtFORMAT\"\n\"CXtGIVEN\"\n\"CXtLOOPARY\"\n\"CXtLOOPLAZYIV\"\n\"CXtLOOPLAZYSV\"\n\"CXtLOOPLIST\"\n\"CXtLOOPPLAIN\"\n\"CXtNULL\"\n\"CXtSUB\"\n\"CXtSUBST\"\n\"CXtWHEN\"\nDescribed in perlguts.\n\n\"cxtype\"\nDescribed in perlguts.\n\n\"dounwind\"\nDescribed in perlguts.\n\nvoid  dounwind(I32 cxix)\n\n\"myfork\"\nThis  is  for  the  use of \"PerlProcfork\" as a wrapper for the C library fork(2) on some\nplatforms  to  hide  some  platform  quirks.   It  should  not  be  used  except  through\n\"PerlProcfork\".\n\nPidt  myfork()\n\n\"PERLCONTEXT\"\nDescribed in perlguts.\n\nCOPs and Hint Hashes\nThere are currently no internal API items in COPs and Hint Hashes\n",
            "subsections": []
        },
        "Custom Operators": {
            "content": "\"coreprototype\"\nThis  function  assigns  the  prototype  of  the named core function to \"sv\", or to a new\nmortal SV if \"sv\" is \"NULL\".  It returns  the  modified  \"sv\",  or  \"NULL\"  if  the  core\nfunction  has  no  prototype.  \"code\" is a code as returned by keyword().  It must not be\nequal to 0.\n\nSV *  coreprototype(SV *sv, const char *name, const int code,\nint * const opnum)\n\nCV Handling\n\"CvREFCOUNTEDANYSV\"\nIf true, indicates that the \"CvXSUBANY(cv).anysv\" member contains an  SV  pointer  whose\nreference  count  should  be  decremented  when  the  CV  itself  is freed.  In addition,\ncvclone() will increment the reference count, and svdup()  will  duplicate  the  entire\npointed-to SV if this flag is set.\n\nAny  CV  that  wraps an XSUB has an \"ANY\" union that the XSUB function is free to use for\nits own purposes.  It may be the case that the code wishes to store an SV in the \"anysv\"\nmember of this union.  By setting this flag, this SV reference will be properly reclaimed\nor duplicated when the CV itself is.\n\nbool  CvREFCOUNTEDANYSV(CV *cv)\n\n\"CvREFCOUNTEDANYSVoff\"\nHelper macro to turn off the \"CvREFCOUNTEDANYSV\" flag.\n\nvoid  CvREFCOUNTEDANYSVoff(CV *cv)\n\n\"CvREFCOUNTEDANYSVon\"\nHelper macro to turn on the \"CvREFCOUNTEDANYSV\" flag.\n\nvoid  CvREFCOUNTEDANYSVon(CV *cv)\n\n\"CvWEAKOUTSIDE\"\nEach CV has a pointer, CvOUTSIDE(), to its lexically  enclosing  CV  (if  any).   Because\npointers to anonymous sub prototypes are stored in \"&\" pad slots, it is a possible to get\na circular reference, with the parent pointing to the child and vice-versa.  To avoid the\nensuing  memory  leak,  we  do  not increment the reference count of the CV pointed to by\n\"CvOUTSIDE\" in the one specific instance that the parent has a \"&\" pad slot pointing back\nto us.  In this case, we set the \"CvWEAKOUTSIDE\" flag in the child.  This  allows  us  to\ndetermine  under  what  circumstances we should decrement the refcount of the parent when\nfreeing the child.\n\nThere is a further complication with non-closure anonymous subs (i.e. those that  do  not\nrefer to any lexicals outside that sub).  In this case, the anonymous prototype is shared\nrather  than  being  cloned.  This has the consequence that the parent may be freed while\nthere are still active children, e.g.,\n\nBEGIN { $a = sub { eval '$x' } }\n\nIn this case, the BEGIN is freed immediately after execution since there  are  no  active\nreferences  to  it:  the  anon  sub  prototype  has  \"CvWEAKOUTSIDE\" set since it's not a\nclosure, and $a points to the same CV, so  it  doesn't  contribute  to  BEGIN's  refcount\neither.   When  $a  is  executed,  the \"eval '$x'\" causes the chain of \"CvOUTSIDE\"s to be\nfollowed, and the freed BEGIN is accessed.\n\nTo avoid this, whenever a CV and its associated pad is freed, any \"&\" entries in the  pad\nare  explicitly  removed  from the pad, and if the refcount of the pointed-to anon sub is\nstill positive, then that child's \"CvOUTSIDE\" is set to point to its  grandparent.   This\nwill only occur in the single specific case of a non-closure anon prototype having one or\nmore active references (such as $a above).\n\nOne  other  thing  to consider is that a CV may be merely undefined rather than freed, eg\n\"undef &foo\".  In this case, its refcount may not have reached zero, but we still  delete\nits  pad  and  its \"CvROOT\" etc.  Since various children may still have their \"CvOUTSIDE\"\npointing at this undefined CV, we keep its own \"CvOUTSIDE\" for the time  being,  so  that\nthe chain of lexical scopes is unbroken.  For example, the following should print 123:\n\nmy $x = 123;\nsub tmp { sub { eval '$x' } }\nmy $a = tmp();\nundef &tmp;\nprint  $a->();\n\nbool  CvWEAKOUTSIDE(CV *cv)\n\n\"docatch\"\nInterpose, for the current op and RUNOPS loop,\n\n- a new JMPENV stack catch frame, and\n- an inner RUNOPS loop to run all the remaining ops following the\ncurrent PLop.\n\nThen  handle  any exceptions raised while in that loop.  For a caught eval at this level,\nre-enter the loop with the specified restart op (i.e. the op  following  the  OPLEAVETRY\netc); otherwise re-throw the exception.\n\ndocatch() is intended to be used like this:\n\nPP(ppentertry)\n{\nif (CATCHGET)\nreturn docatch(Perlppentertry);\n\n... rest of function ...\nreturn PLop->opnext;\n}\n\nIf a new catch frame isn't needed, the op behaves normally. Otherwise it calls docatch(),\nwhich  recursively  calls ppentertry(), this time with CATCHGET() false, so the rest of\nthe body of the entertry is run. Then docatch() calls CALLRUNOPS() which executes all the\nops following the entertry. When the loop finally finishes, control returns to docatch(),\nwhich pops the JMPENV and returns to the parent ppentertry(), which  itself  immediately\nreturns.  Note  that  *all* subsequent ops are run within the inner RUNOPS loop, not just\nthe body of the eval. For example, in\n\nsub TIEARRAY { eval {1}; my $x }\ntie @a, \"main\";\n\nat the point the 'my' is executed, the C stack will look something like:\n\n#10 main()\n#9  perlrun()              # JMPENVPUSH level 1 here\n#8  Srunbody()\n#7  Perlrunopsstandard()  # main RUNOPS loop\n#6  Perlpptie()\n#5  Perlcallsv()\n#4  Perlrunopsstandard()  # unguarded RUNOPS loop: no new JMPENV\n#3  Perlppentertry()\n#2  Sdocatch()             # JMPENVPUSH level 2 here\n#1  Perlrunopsstandard()  # docatch()'s RUNOPs loop\n#0  Perlpppadsv()\n\nBasically, any section of the perl core which starts a RUNOPS loop  may  make  a  promise\nthat it will catch any exceptions and restart the loop if necessary. If it's not prepared\nto  do  that  (like callsv() isn't), then it sets CATCHGET() to true, so that any later\neval-like code knows to set up a new handler and loop (via docatch()).\n\nSee \"Exception handing\" in perlinterp for further details.\n\nOP *  docatch(Perlppaddrt firstpp)\n",
            "subsections": []
        },
        "Debugging": {
            "content": "\"commaaDEPTH\"\nSome functions when compiled under DEBUGGING take an extra final argument named  \"depth\",\nindicating the C stack depth.  This argument is omitted otherwise.  This macro expands to\neither \", depth\" under DEBUGGING, or to nothing at all when not under DEBUGGING, reducing\nthe number of \"#ifdef\"'s in the code.\n\nThe program is responsible for maintaining the correct value for \"depth\".\n\ncommaaDEPTH\n\n\"commapDEPTH\"\nThis  is  used  in  the prototype declarations for functions that take a \"\"commaaDEPTH\"\"\nfinal parameter, much like \"pTHX\" is used  in  functions  that  take  a  thread  context\ninitial parameter.\n\n\"debop\"\nImplements -Dt perl command line option on OP \"o\".\n\nI32  debop(const OP *o)\n\n\"debprof\"\nCalled  to indicate that \"o\" was executed, for profiling purposes under the \"-DP\" command\nline option.\n\nvoid  debprof(const OP *o)\n\n\"debprofdump\"\nDumps the contents of the data collected by the \"-DP\" perl command line option.\n\nvoid  debprofdump()\n\n\"debugaDEPTH\"\nSame as \"\"commaaDEPTH\"\" but with no leading argument. Intended  for  functions  with  no\nnormal arguments, and used by \"\"commaaDEPTH\"\" itself.\n\ndebugaDEPTH\n\n\"debugpDEPTH\"\nSame  as  \"\"commapDEPTH\"\"  but  with no leading argument. Intended for functions with no\nnormal arguments, and used by \"\"commapDEPTH\"\" itself.\n\ndebugpDEPTH\n\n\"freecbacktrace\"\nDeallocates a backtrace received from getcbacktrace.\n\nvoid  freecbacktrace(Perlcbacktrace *bt)\n\n\"getcbacktrace\"\nCollects the backtrace (aka \"stacktrace\") into a single linear malloced buffer, which the\ncaller must Perlfreecbacktrace().\n\nScans the frames back by \"depth + skip\", then drops the \"skip\"  innermost,  returning  at\nmost \"depth\" frames.\n\nPerlcbacktrace *  getcbacktrace(int maxdepth, int skip)\n\n\"PLDBsingle\"\nWhen  Perl  is  run  in  debugging  mode,  with the -d switch, this SV is a boolean which\nindicates whether subs are being single-stepped.  Single-stepping is automatically turned\non after every step.  This is the C variable  which  corresponds  to  Perl's  $DB::single\nvariable.  See \"PLDBsub\".\n\nOn threaded perls, each thread has an independent copy of this variable; each initialized\nat creation time with the current value of the creating thread's copy.\n\nSV *  PLDBsingle\n\n\"PLDBsub\"\nWhen  Perl  is  run  in debugging mode, with the -d switch, this GV contains the SV which\nholds the name of the sub being debugged.  This is the C variable  which  corresponds  to\nPerl's $DB::sub variable.  See \"PLDBsingle\".\n\nOn threaded perls, each thread has an independent copy of this variable; each initialized\nat creation time with the current value of the creating thread's copy.\n\nGV *  PLDBsub\n\n\"PLDBtrace\"\nTrace  variable used when Perl is run in debugging mode, with the -d switch.  This is the\nC variable which corresponds to Perl's $DB::trace variable.  See \"PLDBsingle\".\n\nOn threaded perls, each thread has an independent copy of this variable; each initialized\nat creation time with the current value of the creating thread's copy.\n\nSV *  PLDBtrace\n\n\"runopsdebug\"\nDescribed in perlguts.\n\nint  runopsdebug()\n\n\"runopsstandard\"\nDescribed in perlguts.\n\nint  runopsstandard()\n",
            "subsections": []
        },
        "Display functions": {
            "content": "\"svpeek\"\nImplements \"SvPEEK\"\n\nchar *  svpeek(SV *sv)\n",
            "subsections": []
        },
        "Embedding, Threads, and Interpreter Cloning": {
            "content": "\"cvdump\"\ndump the contents of a CV\n\nvoid  cvdump(const CV *cv, const char *title)\n\n\"cvforgetslab\"\nWhen a CV has a reference count on its slab (\"CvSLABBED\"), it is responsible  for  making\nsure  it  is  freed.   (Hence,  no two CVs should ever have a reference count on the same\nslab.)  The CV only needs to reference the slab during compilation.  Once it is  compiled\nand \"CvROOT\" attached, it has finished its job, so it can forget the slab.\n\nvoid  cvforgetslab(CV *cv)\n\n\"dodumppad\"\nDump the contents of a padlist\n\nvoid  dodumppad(I32 level, PerlIO *file, PADLIST *padlist,\nint full)\n\n\"getcontext\"\nImplements \"\"PERLGETCONTEXT\"\" in perlapi, which you should use instead.\n\nvoid *  getcontext()\n\n\"padallocname\"\nAllocates  a  place  in the currently-compiling pad (via \"padalloc\" in perlapi) and then\nstores a name for that entry.  \"name\" is adopted and becomes  the  name  entry;  it  must\nalready  contain the name string.  \"typestash\" and \"ourstash\" and the \"padaddSTATE\" flag\nget added to \"name\".  None of the other processing of \"padaddnamepvn\"  in  perlapi  is\ndone.  Returns the offset of the allocated pad slot.\n\nPADOFFSET  padallocname(PADNAME *name, U32 flags, HV *typestash,\nHV *ourstash)\n\n\"padblockstart\"\nUpdate the pad compilation state variables on entry to a new block.\n\nvoid  padblockstart(int full)\n\n\"padcheckdup\"\nCheck for duplicate declarations: report any of:\n\n* a 'my' in the current scope with the same name;\n* an 'our' (anywhere in the pad) with the same name and the\nsame stash as 'ourstash'\n\n\"isour\" indicates that the name to check is an \"our\" declaration.\n\nvoid  padcheckdup(PADNAME *name, U32 flags, const HV *ourstash)\n\n\"padfindlex\"\nFind  a  named lexical anywhere in a chain of nested pads.  Add fake entries in the inner\npads if it's found in an outer one.\n\nReturns the offset in the bottom pad of the lex or the fake lex.  \"cv\" is the CV in which\nto start the search, and seq is the current \"copseq\" to match  against.   If  \"warn\"  is\ntrue, print appropriate warnings.  The \"out\"* vars return values, and so are pointers to\nwhere  the  returned  values should be stored.  \"outcapture\", if non-null, requests that\nthe innermost instance of the lexical is captured; \"outname\" is  set  to  the  innermost\nmatched pad name or fake pad name; \"outflags\" returns the flags normally associated with\nthe \"PARENTFAKELEXFLAGS\" field of a fake pad name.\n\nNote  that  padfindlex()  is recursive; it recurses up the chain of CVs, then comes back\ndown, adding fake entries as it goes.  It has to be this way because fake names  in  anon\nprototypes have to store in \"xpadnlow\" the index into the parent pad.\n\nPADOFFSET  padfindlex(const char *namepv, STRLEN namelen,\nU32 flags, const CV *cv, U32 seq, int warn,\nSV outcapture, PADNAME outname,\nint *outflags)\n\n\"padfixupinneranons\"\nFor  any  anon CVs in the pad, change \"CvOUTSIDE\" of that CV from \"oldcv\" to \"newcv\" if\nnecessary.  Needed when a newly-compiled CV has to be moved to a pre-existing CV struct.\n\nvoid  padfixupinneranons(PADLIST *padlist, CV *oldcv,\nCV *newcv)\n\n\"padfree\"\nFree the SV at offset po in the current pad.\n\nvoid  padfree(PADOFFSET po)\n\n\"padleavemy\"\nCleanup at end of scope during compilation: set the max seq number for lexicals  in  this\nscope and warn of any lexicals that never got introduced.\n\nOP *  padleavemy()\n\n\"padlistdup\"\nDuplicates a pad.\n\nPADLIST *  padlistdup(PADLIST *srcpad, CLONEPARAMS *param)\n\n\"padnamedup\"\nDuplicates a pad name.\n\nPADNAME *  padnamedup(PADNAME *src, CLONEPARAMS *param)\n\n\"padnamelistdup\"\nDuplicates a pad name list.\n\nPADNAMELIST *  padnamelistdup(PADNAMELIST *srcpad,\nCLONEPARAMS *param)\n\n\"padpush\"\nPush  a  new  pad  frame onto the padlist, unless there's already a pad at this depth, in\nwhich case don't bother creating a new one.  Then give the new pad an @ in slot zero.\n\nvoid  padpush(PADLIST *padlist, int depth)\n\n\"padreset\"\nMark all the current temporaries for reuse\n\nvoid  padreset()\n\n\"padsetsv\"\nSet the value at offset \"po\" in the current (compiling or executing) pad.  Use the  macro\nPADSETSV() rather than calling this function directly.\n\nvoid  padsetsv(PADOFFSET po, SV *sv)\n\n\"padsv\"\nGet  the  value  at  offset  \"po\" in the current (compiling or executing) pad.  Use macro\n\"PADSV\" instead of calling this function directly.\n\nSV *  padsv(PADOFFSET po)\n\n\"padswipe\"\nAbandon the tmp in the current pad at offset \"po\" and replace with a new one.\n\nvoid  padswipe(PADOFFSET po, bool refadjust)\n\n\"setcontext\"\nImplements \"\"PERLSETCONTEXT\"\" in perlapi, which you should use instead.\n\nvoid  setcontext(void *t)\n\n\"sidup\"\nDuplicate a stack info structure, returning a pointer to the cloned object.\n\nPERLSI *  sidup(PERLSI *si, CLONEPARAMS *param)\n\n\"ssdup\"\nDuplicate the save stack, returning a pointer to the cloned object.\n\nANY *  ssdup(PerlInterpreter *protoperl, CLONEPARAMS *param)\n",
            "subsections": []
        },
        "Errno": {
            "content": "\"dSAVEDERRNO\"\nDeclare variables needed to save \"errno\" and any operating system specific error number.\n\nvoid  dSAVEDERRNO\n\n\"dSAVEERRNO\"\nDeclare variables needed to save \"errno\" and any operating system specific error  number,\nand save them for optional later restoration by \"RESTOREERRNO\".\n\nvoid  dSAVEERRNO\n\n\"RESTOREERRNO\"\nRestore  \"errno\"  and  any  operating  system  specific  error  number  that was saved by\n\"dSAVEERRNO\" or \"RESTOREERRNO\".\n\nvoid  RESTOREERRNO\n\n\"SAVEERRNO\"\nSave  \"errno\"  and  any  operating  system  specific  error  number  for  optional  later\nrestoration by \"RESTOREERRNO\".  Requires \"dSAVEDERRNO\" or \"dSAVEERRNO\" in scope.\n\nvoid  SAVEERRNO\n\n\"SETERRNO\"\nSet \"errno\", and on VMS set \"vaxc$errno\".\n\nvoid  SETERRNO(int errcode, int vmserrcode)\n",
            "subsections": []
        },
        "Exception Handling (simple) Macros": {
            "content": "There are currently no internal API items in Exception Handling (simple) Macros\n",
            "subsections": []
        },
        "Filesystem configuration values": {
            "content": "There are currently no internal API items in Filesystem configuration values\n",
            "subsections": []
        },
        "Floating point": {
            "content": "There are currently no internal API items in Floating point\n",
            "subsections": []
        },
        "General Configuration": {
            "content": "There are currently no internal API items in General Configuration\n",
            "subsections": []
        },
        "Global Variables": {
            "content": "There are currently no internal API items in Global Variables\n\nGV Handling and Stashes\n\"amagicapplies\"\nCheck  \"sv\"  to see if the overloaded (active magic) operation \"method\" applies to it. If\nthe sv is not SvROK or it is not an object then returns false, otherwise  checks  if  the\nobject  is  blessed  into a class supporting overloaded operations, and returns true if a\ncall to amagiccall() with  this  SV  and  the  given  method  would  trigger  an  amagic\noperation, including via the overload fallback rules or via nomethod. Thus a call like:\n\namagicapplies(sv, stringamg, AMGunary)\n\nwould return true for an object with overloading set up in any of the following ways:\n\nuse overload q(\"\") => sub { ... };\nuse overload q(0+) => sub { ... }, fallback => 1;\n\nand  could  be used to tell if a given object would stringify to something other than the\nnormal default ref stringification.\n\nNote that the fact that this function returns TRUE does  not  mean  you  can  succesfully\nperform  the operation with amagiccall(), for instance any overloaded method might throw\na fatal exception,  however if this function returns FALSE you can be confident  that  it\nwill NOT perform the given overload operation.\n\n\"method\"  is  an  integer  enum,  one  of  the  values  found in overload.h, for instance\n\"stringamg\".\n\n\"flags\" should be set to AMGunary for unary operations.\n\nbool  amagicapplies(SV *sv, int method, int flags)\n\n\"gpdup\"\nDuplicate a typeglob, returning a pointer to the cloned object.\n\nGP *  gpdup(GP * const gp, CLONEPARAMS * const param)\n\n\"gvhandler\"\nImplements \"StashHANDLER\", which you should use instead\n\nCV *  gvhandler(HV *stash, I32 id)\n\n\"gvstashsvpvncached\"\nReturns a pointer to the stash for a specified package, possibly cached.  Implements both\n\"\"gvstashpvn\"\" in perlapi and \"\"gvstashsv\"\" in perlapi.\n\nRequires one of either \"namesv\" or \"namepv\" to be non-null.\n\nIf the flag \"GVCACHEONLY\" is set, return the stash only if  found  in  the  cache;  see\n\"\"gvstashpvn\"\" in perlapi for details on the other \"flags\".\n\nNote it is strongly preferred for \"namesv\" to be non-null, for performance reasons.\n\nHV *  gvstashsvpvncached(SV *namesv, const char *name,\nU32 namelen, I32 flags)\n\n\"gvtrydowngrade\"\nNOTE: \"gvtrydowngrade\" is experimental and may change or be removed without notice.\n\nIf  the  typeglob \"gv\" can be expressed more succinctly, by having something other than a\nreal GV in  its  place  in  the  stash,  replace  it  with  the  optimised  form.   Basic\nrequirements  for this are that \"gv\" is a real typeglob, is sufficiently ordinary, and is\nonly referenced from its package.  This function is meant to be used when a GV  has  been\nlooked  up  in part to see what was there, causing upgrading, but based on what was found\nit turns out that the real GV isn't required after all.\n\nIf \"gv\" is a completely empty typeglob, it is deleted from the stash.\n\nIf \"gv\" is a typeglob containing only a sufficiently-ordinary constant sub, the  typeglob\nis  replaced  with a scalar-reference placeholder that more compactly represents the same\nthing.\n\nvoid  gvtrydowngrade(GV *gv)\n",
            "subsections": []
        },
        "Hook manipulation": {
            "content": "There are currently no internal API items in Hook manipulation\n\nHV Handling\n\"hveiterp\"\nImplements \"HvEITER\" which you should use instead.\n\nNOTE: \"hveiterp\" must  be  explicitly  called  as  \"Perlhveiterp\"  with  an  \"aTHX\"\nparameter.\n\nHE   Perlhveiterp(pTHX HV *hv)\n\n\"hveiterset\"\nImplements \"HvEITERset\" which you should use instead.\n\nNOTE:  \"hveiterset\"  must  be  explicitly called as \"Perlhveiterset\" with an \"aTHX\"\nparameter.\n\nvoid  Perlhveiterset(pTHX HV *hv, HE *eiter)\n\n\"hvenameadd\"\nAdds a name to a stash's internal list of effective names.  See \"hvenamedelete\".\n\nThis is called when a stash is assigned to a new location in the symbol table.\n\nvoid  hvenameadd(HV *hv, const char *name, U32 len, U32 flags)\n\n\"hvenamedelete\"\nRemoves a name from a stash's internal list of effective names.   If  this  is  the  name\nreturned  by \"HvENAME\", then another name in the list will take its place (\"HvENAME\" will\nuse it).\n\nThis is called when a stash is deleted from the symbol table.\n\nvoid  hvenamedelete(HV *hv, const char *name, U32 len,\nU32 flags)\n\n\"hvfill\"\nReturns the number of hash buckets that happen to be in use.\n\nThis function implements the \"HvFILL\" macro which you should use instead.\n\nAs of perl 5.25 this function is used only for debugging purposes, and the number of used\nhash buckets is not in any way cached, thus this function can be costly to execute as  it\nmust iterate over all the buckets in the hash.\n\nNOTE: \"hvfill\" must be explicitly called as \"Perlhvfill\" with an \"aTHX\" parameter.\n\nSTRLEN  Perlhvfill(pTHX HV * const hv)\n\n\"hvplaceholdersget\"\nImplements \"HvPLACEHOLDERSget\", which you should use instead.\n\nNOTE:  \"hvplaceholdersget\" must be explicitly called as \"Perlhvplaceholdersget\" with\nan \"aTHX\" parameter.\n\nI32  Perlhvplaceholdersget(pTHX const HV *hv)\n\n\"hvplaceholdersset\"\nImplements \"HvPLACEHOLDERSset\", which you should use instead.\n\nNOTE: \"hvplaceholdersset\" must be explicitly called as \"Perlhvplaceholdersset\"  with\nan \"aTHX\" parameter.\n\nvoid  Perlhvplaceholdersset(pTHX HV *hv, I32 ph)\n\n\"hvriterp\"\nImplements \"HvRITER\" which you should use instead.\n\nNOTE:  \"hvriterp\"  must  be  explicitly  called  as  \"Perlhvriterp\"  with an \"aTHX\"\nparameter.\n\nI32 *  Perlhvriterp(pTHX HV *hv)\n\n\"hvriterset\"\nImplements \"HvRITERset\" which you should use instead.\n\nNOTE: \"hvriterset\" must be explicitly called as  \"Perlhvriterset\"  with  an  \"aTHX\"\nparameter.\n\nvoid  Perlhvriterset(pTHX HV *hv, I32 riter)\n\n\"refcountedhechain2hv\"\nGenerates  and  returns  a  \"HV  *\"  representing the content of a \"refcountedhe\" chain.\n\"flags\" is currently unused and must be zero.\n\nHV *  refcountedhechain2hv(const struct refcountedhe *c,\nU32 flags)\n\n\"refcountedhefetchpv\"\nLike  \"refcountedhefetchpvn\",  but  takes  a  nul-terminated  string  instead   of   a\nstring/length pair.\n\nSV *  refcountedhefetchpv(const struct refcountedhe *chain,\nconst char *key, U32 hash, U32 flags)\n\n\"refcountedhefetchpvn\"\nSearch  along  a \"refcountedhe\" chain for an entry with the key specified by \"keypv\" and\n\"keylen\".  If \"flags\" has the  \"REFCOUNTEDHEKEYUTF8\"  bit  set,  the  key  octets  are\ninterpreted as UTF-8, otherwise they are interpreted as Latin-1.  \"hash\" is a precomputed\nhash  of the key string, or zero if it has not been precomputed.  Returns a mortal scalar\nrepresenting the value associated with the key, or  &PLsvplaceholder  if  there  is  no\nvalue associated with the key.\n\nSV *  refcountedhefetchpvn(const struct refcountedhe *chain,\nconst char *keypv, STRLEN keylen,\nU32 hash, U32 flags)\n\n\"refcountedhefetchpvs\"\nLike  \"refcountedhefetchpvn\",  but  takes  a literal string instead of a string/length\npair, and no precomputed hash.\n\nSV *  refcountedhefetchpvs(const struct refcountedhe *chain,\n\"key\", U32 flags)\n\n\"refcountedhefetchsv\"\nLike \"refcountedhefetchpvn\", but takes a Perl scalar instead of a string/length pair.\n\nSV *  refcountedhefetchsv(const struct refcountedhe *chain,\nSV *key, U32 hash, U32 flags)\n\n\"refcountedhefree\"\nDecrements the reference count of a \"refcountedhe\"  by  one.   If  the  reference  count\nreaches  zero  the structure's memory is freed, which (recursively) causes a reduction of\nits parent \"refcountedhe\"'s reference count.  It is safe to pass a null pointer to  this\nfunction: no action occurs in this case.\n\nvoid  refcountedhefree(struct refcountedhe *he)\n\n\"refcountedheinc\"\nIncrement  the  reference count of a \"refcountedhe\".  The pointer to the \"refcountedhe\"\nis also returned.  It is safe to pass a null pointer to this function: no  action  occurs\nand a null pointer is returned.\n\nstruct refcountedhe *  refcountedheinc(\nstruct refcountedhe *he)\n\n\"refcountedhenewpv\"\nLike   \"refcountedhenewpvn\",   but   takes   a  nul-terminated  string  instead  of  a\nstring/length pair.\n\nstruct refcountedhe *  refcountedhenewpv(\nstruct refcountedhe *parent,\nconst char *key, U32 hash,\nSV *value, U32 flags)\n\n\"refcountedhenewpvn\"\nCreates a new \"refcountedhe\".  This consists of a single key/value pair and a  reference\nto an existing \"refcountedhe\" chain (which may be empty), and thus forms a longer chain.\nWhen  using  the longer chain, the new key/value pair takes precedence over any entry for\nthe same key further along the chain.\n\nThe  new  key  is  specified   by   \"keypv\"   and   \"keylen\".    If   \"flags\"   has   the\n\"REFCOUNTEDHEKEYUTF8\" bit set, the key octets are interpreted as UTF-8, otherwise they\nare  interpreted  as Latin-1.  \"hash\" is a precomputed hash of the key string, or zero if\nit has not been precomputed.\n\n\"value\" is the scalar value to store for this key.  \"value\" is copied by  this  function,\nwhich  thus  does  not  take  ownership  of any reference to it, and later changes to the\nscalar will not be reflected in the value visible in the \"refcountedhe\".  Complex  types\nof  scalar will not be stored with referential integrity, but will be coerced to strings.\n\"value\" may be either null or &PLsvplaceholder to indicate  that  no  value  is  to  be\nassociated  with  the  key;  this,  as with any non-null value, takes precedence over the\nexistence of a value for the key further along the chain.\n\n\"parent\" points to the rest of the \"refcountedhe\"  chain  to  be  attached  to  the  new\n\"refcountedhe\".  This function takes ownership of one reference to \"parent\", and returns\none reference to the new \"refcountedhe\".\n\nstruct refcountedhe *  refcountedhenewpvn(\nstruct refcountedhe *parent,\nconst char *keypv,\nSTRLEN keylen, U32 hash,\nSV *value, U32 flags)\n\n\"refcountedhenewpvs\"\nLike \"refcountedhenewpvn\", but takes a literal string instead of a string/length pair,\nand no precomputed hash.\n\nstruct refcountedhe *  refcountedhenewpvs(\nstruct refcountedhe *parent,\n\"key\", SV *value, U32 flags)\n\n\"refcountedhenewsv\"\nLike \"refcountedhenewpvn\", but takes a Perl scalar instead of a string/length pair.\n\nstruct refcountedhe *  refcountedhenewsv(\nstruct refcountedhe *parent,\nSV *key, U32 hash, SV *value,\nU32 flags)\n\n\"unsharepvn\"\nIf no one has access to shared string \"str\" with length \"len\", free it.\n\n\"len\" and \"hash\" must both be valid for \"str\".\n\nvoid  unsharepvn(const char *sv, I32 len, U32 hash)\n",
            "subsections": []
        },
        "Input/Output": {
            "content": "\"dirpdup\"\nDuplicate a directory handle, returning a pointer to the cloned object.\n\nDIR *  dirpdup(DIR * const dp, CLONEPARAMS * const param)\n\n\"fpdup\"\nDuplicate a file handle, returning a pointer to the cloned object.\n\nPerlIO *  fpdup(PerlIO * const fp, const char type,\nCLONEPARAMS * const param)\n\n\"myfflushall\"\nImplements \"PERLFLUSHALLFORCHILD\" on some platforms.\n\nI32  myfflushall()\n\n\"mymkostemp\"\nThe C library mkostemp(3) if available, or a Perl implementation of it.\n\nNOTE: \"mymkostemp\" must be explicitly called as \"Perlmymkostemp\" .\n\nint  Perlmymkostemp(char *templte, int flags)\n\n\"mymkstemp\"\nThe C library mkstemp(3) if available, or a Perl implementation of it.\n\nNOTE: \"mymkstemp\" must be explicitly called as \"Perlmymkstemp\" .\n\nint  Perlmymkstemp(char *templte)\n\n\"PLlastingv\"\nThe GV which was last used for a filehandle input operation.  (\"<FH>\")\n\nOn threaded perls, each thread has an independent copy of this variable; each initialized\nat creation time with the current value of the creating thread's copy.\n\nGV*  PLlastingv\n\n\"PLofsgv\"\nThe glob containing the output field separator - \"*,\" in Perl space.\n\nOn threaded perls, each thread has an independent copy of this variable; each initialized\nat creation time with the current value of the creating thread's copy.\n\nGV*  PLofsgv\n\n\"PLrs\"\nThe input record separator - $/ in Perl space.\n\nOn threaded perls, each thread has an independent copy of this variable; each initialized\nat creation time with the current value of the creating thread's copy.\n\nSV*  PLrs\n\n\"startglob\"\nNOTE: \"startglob\" is experimental and may change or be removed without notice.\n\nFunction  called  by  \"doreadline\"  to spawn a glob (or do the glob inside perl on VMS).\nThis code used to be inline, but now perl uses \"File::Glob\" this  glob  starter  is  only\nused by miniperl during the build process, or when PERLEXTERNALGLOB is defined.  Moving\nit away shrinks pphot.c; shrinking pphot.c helps speed perl up.\n\nNOTE:  \"startglob\"  must  be  explicitly  called  as  \"Perlstartglob\"  with an \"aTHX\"\nparameter.\n\nPerlIO *  Perlstartglob(pTHX SV *tmpglob, IO *io)\n",
            "subsections": []
        },
        "Integer": {
            "content": "There are currently no internal API items in Integer\n\nI/O Formats\nThere are currently no internal API items in I/O Formats\n",
            "subsections": []
        },
        "Lexer interface": {
            "content": "\"resumecompcvandsave\"\nResumes a buffer previously suspended by the \"suspendcompcv\" function,  in  a  way  that\nwill  be re-suspended at the end of the scope so it can be used again later.  This should\nbe used within an \"ENTER\"/\"LEAVE\" scoped pair.\n\nvoid  resumecompcvandsave(struct suspendedcompcv *buffer)\n\n\"resumecompcvfinal\"\nResumes the parser state previously saved using the \"suspendcompcv\" function for a final\ntime before being compiled into a full CV.  This should be used within an \"ENTER\"/\"LEAVE\"\nscoped pair.\n\nvoid  resumecompcvfinal(struct suspendedcompcv *buffer)\n\n\"validateproto\"\nNOTE: \"validateproto\" is experimental and may change or be removed without notice.\n\nThis function performs syntax checking on a prototype, \"proto\".  If \"warn\" is  true,  any\nillegal  characters  or mismatched brackets will trigger illegalproto warnings, declaring\nthat they were detected in the prototype for \"name\".\n\nThe return value is \"true\" if this is a valid  prototype,  and  \"false\"  if  it  is  not,\nregardless of whether \"warn\" was \"true\" or \"false\".\n\nNote that \"NULL\" is a valid \"proto\" and will always return \"true\".\n\nbool  validateproto(SV *name, SV *proto, bool warn,\nbool curstash)\n",
            "subsections": []
        },
        "Locales": {
            "content": "There are currently no internal API items in Locales\n",
            "subsections": []
        },
        "Magic": {
            "content": "\"magicclearhint\"\nTriggered by a delete from \"%^H\", records the key to \"PLcompiling.cophintshash\".\n\nint  magicclearhint(SV *sv, MAGIC *mg)\n\n\"magicclearhints\"\nTriggered by clearing \"%^H\", resets \"PLcompiling.cophintshash\".\n\nint  magicclearhints(SV *sv, MAGIC *mg)\n\n\"magicmethcall\"\nInvoke a magic method (like FETCH).\n\n\"sv\" and \"mg\" are the tied thingy and the tie magic.\n\n\"meth\" is the name of the method to call.\n\n\"argc\" is the number of args (in addition to $self) to pass to the method.\n\nThe \"flags\" can be:\n\nGDISCARD     invoke method with GDISCARD flag and don't\nreturn a value\nGUNDEFFILL  fill the stack with argc pointers to\nPLsvundef\n\nThe arguments themselves are any values following the \"flags\" argument.\n\nReturns the SV (if any) returned by the method, or \"NULL\" on failure.\n\nNOTE: \"magicmethcall\" must be explicitly called as \"Perlmagicmethcall\" with an \"aTHX\"\nparameter.\n\nSV *  Perlmagicmethcall(pTHX SV *sv, const MAGIC *mg,\nSV *meth, U32 flags, U32 argc, ...)\n\n\"magicsethint\"\nTriggered    by    a    store    to    \"%^H\",    records    the    key/value    pair   to\n\"PLcompiling.cophintshash\".  It is assumed that hints  aren't  storing  anything  that\nwould need a deep copy.  Maybe we should warn if we find a reference.\n\nint  magicsethint(SV *sv, MAGIC *mg)\n\n\"mgdup\"\nDuplicate a chain of magic, returning a pointer to the cloned object.\n\nMAGIC *  mgdup(MAGIC *mg, CLONEPARAMS * const param)\n\n\"mglocalize\"\nCopy  some  of  the  magic  from  an  existing  SV  to  new localized version of that SV.\nContainer magic (e.g., %ENV, $1, \"tie\") gets copied, value magic doesn't (e.g.,  \"taint\",\n\"pos\").\n\nIf  \"setmagic\"  is  false  then  no set magic will be called on the new (empty) SV.  This\ntypically means that assignment will soon follow (e.g. 'local $x = $y'),  and  that  will\nhandle the magic.\n\nvoid  mglocalize(SV *sv, SV *nsv, bool setmagic)\n",
            "subsections": []
        },
        "Memory Management": {
            "content": "\"calloc\"\nImplements \"\"Newxz\"\" in perlapi which you should use instead.\n\nNOTE: \"calloc\" must be explicitly called as \"Perlcalloc\" .\n\nMalloct  Perlcalloc(MEMSIZE elements, MEMSIZE size)\n\n\"malloc\"\nImplements \"\"Newx\"\" in perlapi which you should use instead.\n\nNOTE: \"malloc\" must be explicitly called as \"Perlmalloc\" .\n\nMalloct  Perlmalloc(MEMSIZE nbytes)\n\n\"mfree\"\nImplements \"\"Safefree\"\" in perlapi which you should use instead.\n\nNOTE: \"mfree\" must be explicitly called as \"Perlmfree\" .\n\nFreet  Perlmfree(Malloct where)\n\n\"realloc\"\nImplements \"\"Renew\"\" in perlapi which you should use instead.\n\nNOTE: \"realloc\" must be explicitly called as \"Perlrealloc\" .\n\nMalloct  Perlrealloc(Malloct where, MEMSIZE nbytes)\n",
            "subsections": []
        },
        "MRO": {
            "content": "\"mrogetlinearisadfs\"\nReturns  the  Depth-First Search linearization of @ISA the given stash.  The return value\nis a read-only AV* whose elements are string SVs giving class names.  \"level\" should be 0\n(it is used internally in this function's recursion).\n\nYou are responsible for SvREFCNTinc() on the return  value  if  you  plan  to  store  it\nanywhere semi-permanently (otherwise it might be deleted out from under you the next time\nthe cache is invalidated).\n\nAV *  mrogetlinearisadfs(HV *stash, U32 level)\n\n\"mroisachangedin\"\nTakes  the  necessary  steps  (cache  invalidations,  mostly)  when the @ISA of the given\npackage has changed.  Invoked by the \"setisa\" magic, should not need to invoke directly.\n\nvoid  mroisachangedin(HV *stash)\n\n\"mropackagemoved\"\nCall this function to signal to a stash that it has been assigned to another spot in  the\nstash  hierarchy.   \"stash\" is the stash that has been assigned.  \"oldstash\" is the stash\nit replaces, if any.  \"gv\" is the glob that is actually being assigned to.\n\nThis can also be called with a null first argument to indicate that \"oldstash\"  has  been\ndeleted.\n\nThis  function  invalidates isa caches on the old stash, on all subpackages nested inside\nit, and on the subclasses  of  all  those,  including  non-existent  packages  that  have\ncorresponding entries in \"stash\".\n\nIt also sets the effective names (\"HvENAME\") on all the stashes as appropriate.\n\nIf the \"gv\" is present and is not in the symbol table, then this function simply returns.\nThis checked will be skipped if \"flags & 1\".\n\nvoid  mropackagemoved(HV * const stash, HV * const oldstash,\nconst GV * const gv, U32 flags)\n",
            "subsections": []
        },
        "Multicall Functions": {
            "content": "There are currently no internal API items in Multicall Functions\n",
            "subsections": []
        },
        "Numeric Functions": {
            "content": "\"isinfnansv\"\nChecks  whether  the argument would be either an infinity or \"NaN\" when used as a number,\nbut is careful not to trigger non-numeric or  uninitialized  warnings.   it  assumes  the\ncaller has done SvGETMAGIC(sv) already.\n\nNote  that  this  always  accepts  trailing  garbage (similar to \"groknumberflags\" with\n\"PERLSCANTRAILING\"), so \"inferior\" and \"NAND gates\" will return true.\n\nbool  isinfnansv(SV *sv)\n",
            "subsections": []
        },
        "Optrees": {
            "content": "\"newATTRSUBx\"\nConstruct a Perl subroutine, also performing some surrounding jobs.\n\nThis function is expected to be called in a Perl compilation context, and some aspects of\nthe  subroutine  are  taken  from  global  variables  associated  with  compilation.   In\nparticular,  \"PLcompcv\"  represents the subroutine that is currently being compiled.  It\nmust be non-null when this function is called, and some aspects of the  subroutine  being\nconstructed are taken from it.  The constructed subroutine may actually be a reuse of the\n\"PLcompcv\" object, but will not necessarily be so.\n\nIf  \"block\" is null then the subroutine will have no body, and for the time being it will\nbe an error to call it.   This  represents  a  forward  subroutine  declaration  such  as\n\"sub foo ($$);\".  If \"block\" is non-null then it provides the Perl code of the subroutine\nbody,  which  will  be  executed  when  the subroutine is called.  This body includes any\nargument unwrapping code resulting from a subroutine signature or similar.  The  pad  use\nof the code must correspond to the pad attached to \"PLcompcv\".  The code is not expected\nto  include  a \"leavesub\" or \"leavesublv\" op; this function will add such an op.  \"block\"\nis consumed by this function and will become part of the constructed subroutine.\n\n\"proto\" specifies the subroutine's prototype, unless one is supplied as an attribute (see\nbelow).  If \"proto\" is null, then the subroutine will not have a prototype.   If  \"proto\"\nis  non-null,  it  must point to a \"const\" op whose value is a string, and the subroutine\nwill have that string as its prototype.  If a prototype is supplied as an attribute,  the\nattribute  takes  precedence  over \"proto\", but in that case \"proto\" should preferably be\nnull.  In any case, \"proto\" is consumed by this function.\n\n\"attrs\" supplies attributes to be applied the subroutine.  A handful of  attributes  take\neffect  by  built-in  means,  being  applied to \"PLcompcv\" immediately when seen.  Other\nattributes are collected up and attached to the subroutine by this route.  \"attrs\" may be\nnull to supply no attributes, or point to a \"const\" op for a single attribute,  or  point\nto  a  \"list\" op whose children apart from the \"pushmark\" are \"const\" ops for one or more\nattributes.  Each \"const\" op must be a  string,  giving  the  attribute  name  optionally\nfollowed  by  parenthesised  arguments,  in the manner in which attributes appear in Perl\nsource.  The attributes will be applied to the sub by this function.  \"attrs\" is consumed\nby this function.\n\nIf \"oisgv\" is false and \"o\" is  null,  then  the  subroutine  will  be  anonymous.   If\n\"oisgv\"  is  false and \"o\" is non-null, then \"o\" must point to a \"const\" OP, which will\nbe consumed by this function, and its string value supplies a name  for  the  subroutine.\nThe  name  may be qualified or unqualified, and if it is unqualified then a default stash\nwill be selected in some manner.  If \"oisgv\" is true, then \"o\" doesn't point to an \"OP\"\nat all, but is instead a cast pointer to a \"GV\" by which the subroutine will be named.\n\nIf there is already a subroutine of the specified name, then  the  new  sub  will  either\nreplace  the  existing one in the glob or be merged with the existing one.  A warning may\nbe generated about redefinition.\n\nIf the subroutine has one of a few special names, such as \"BEGIN\" or \"END\", then it  will\nbe  claimed  by the appropriate queue for automatic running of phase-related subroutines.\nIn this case the relevant glob will be left not containing any subroutine, even if it did\ncontain one before.  In the case of \"BEGIN\", the subroutine  will  be  executed  and  the\nreference to it disposed of before this function returns.\n\nThe  function  returns  a pointer to the constructed subroutine.  If the sub is anonymous\nthen ownership of one counted reference to the subroutine is transferred to  the  caller.\nIf  the sub is named then the caller does not get ownership of a reference.  In most such\ncases, where the sub has a non-phase name, the sub will be  alive  at  the  point  it  is\nreturned  by  virtue  of  being  contained  in  the  glob  that  names it.  A phase-named\nsubroutine will usually be alive  by  virtue  of  the  reference  owned  by  the  phase's\nautomatic  run queue.  But a \"BEGIN\" subroutine, having already been executed, will quite\nlikely have been destroyed already by the time this function returns, making it erroneous\nfor  the  caller  to  make  any  use  of  the  returned  pointer.   It  is  the  caller's\nresponsibility to ensure that it knows which of these situations applies.\n\nCV *  newATTRSUBx(I32 floor, OP *o, OP *proto, OP *attrs,\nOP *block, bool oisgv)\n\n\"newXSlenflags\"\nConstruct an XS subroutine, also performing some surrounding jobs.\n\nThe subroutine will have the entry point \"subaddr\".  It will have the prototype specified\nby  the nul-terminated string \"proto\", or no prototype if \"proto\" is null.  The prototype\nstring is copied; the caller can mutate the supplied string afterwards.  If \"filename\" is\nnon-null, it must be a nul-terminated filename, and the subroutine will have its \"CvFILE\"\nset accordingly.  By default \"CvFILE\" is set to point directly to  the  supplied  string,\nwhich  must  be static.  If \"flags\" has the \"XSDYNAMICFILENAME\" bit set, then a copy of\nthe string will be taken instead.\n\nOther aspects of the subroutine will be left in their default state.   If  anything  else\nneeds  to  be  done  to  the  subroutine for it to function correctly, it is the caller's\nresponsibility to do that after this function has constructed it.  However, beware of the\nsubroutine potentially being destroyed before this function returns, as described below.\n\nIf \"name\" is null then the subroutine will be anonymous, with its \"CvGV\" referring to  an\n\"ANON\"  glob.   If  \"name\" is non-null then the subroutine will be named accordingly,\nreferenced by the appropriate glob.  \"name\" is a string of length \"len\"  bytes  giving  a\nsigilless  symbol  name,  in  UTF-8  if \"flags\" has the \"SVfUTF8\" bit set and in Latin-1\notherwise.  The name may be either qualified or unqualified, with the stash defaulting in\nthe same manner as for \"gvfetchpvnflags\".  \"flags\" may contain flag bits understood  by\n\"gvfetchpvnflags\"  with the same meaning as they have there, such as \"GVADDWARN\".  The\nsymbol is always added to the stash if necessary, with \"GVADDMULTI\" semantics.\n\nIf there is already a subroutine of the specified name, then the new sub will replace the\nexisting one in the glob.  A warning may be generated about the redefinition.  If the old\nsubroutine was \"CvCONST\" then the decision about whether to  warn  is  influenced  by  an\nexpectation  about  whether  the  new subroutine will become a constant of similar value.\nThat expectation is determined by \"constsvp\".  (Note that  the  call  to  this  function\ndoesn't  make  the new subroutine \"CvCONST\" in any case; that is left to the caller.)  If\n\"constsvp\" is null then it indicates that the new subroutine will not become a constant.\nIf \"constsvp\" is non-null then it indicates  that  the  new  subroutine  will  become  a\nconstant,  and it points to an \"SV*\" that provides the constant value that the subroutine\nwill have.\n\nIf the subroutine has one of a few special names, such as \"BEGIN\" or \"END\", then it  will\nbe  claimed  by the appropriate queue for automatic running of phase-related subroutines.\nIn this case the relevant glob will be left not containing any subroutine, even if it did\ncontain one before.  In the case of \"BEGIN\", the subroutine  will  be  executed  and  the\nreference  to  it disposed of before this function returns, and also before its prototype\nis set.  If a \"BEGIN\" subroutine would not be sufficiently constructed by  this  function\nto  be  ready  for  execution  then  the caller must prevent this happening by giving the\nsubroutine a different name.\n\nThe function returns a pointer to the constructed subroutine.  If the  sub  is  anonymous\nthen  ownership  of one counted reference to the subroutine is transferred to the caller.\nIf the sub is named then the caller does not get ownership of a reference.  In most  such\ncases,  where  the  sub  has  a  non-phase name, the sub will be alive at the point it is\nreturned by virtue of  being  contained  in  the  glob  that  names  it.   A  phase-named\nsubroutine  will  usually  be  alive  by  virtue  of  the  reference owned by the phase's\nautomatic run queue.  But a \"BEGIN\" subroutine, having already been executed, will  quite\nlikely have been destroyed already by the time this function returns, making it erroneous\nfor  the  caller  to  make  any  use  of  the  returned  pointer.   It  is  the  caller's\nresponsibility to ensure that it knows which of these situations applies.\n\nCV *  newXSlenflags(const char *name, STRLEN len,\nXSUBADDRt subaddr,\nconst char * const filename,\nconst char * const proto, SV  constsvp,\nU32 flags)\n\n\"oprefcntlock\"\nImplements the \"OPREFCNTLOCK\" macro which you should use instead.\n\nvoid  oprefcntlock()\n\n\"oprefcntunlock\"\nImplements the \"OPREFCNTUNLOCK\" macro which you should use instead.\n\nvoid  oprefcntunlock()\n\n\"traverseoptree\"\nReturn the next op in a depth-first traversal of the op tree,  returning  NULL  when  the\ntraversal is complete.\n\nThe initial call must supply the root of the tree as both top and o.\n\nFor now it's static, but it may be exposed to the API in the future.\n\nOP *  traverseoptree(OP *top, OP *o)\n\nPack and Unpack\nThere are currently no internal API items in Pack and Unpack\n",
            "subsections": []
        },
        "Pad Data Structures": {
            "content": "\"CXCURPADSAVE\"\nSave the current pad in the given context block structure.\n\nvoid  CXCURPADSAVE(struct context)\n\n\"CXCURPADSV\"\nAccess  the  SV  at  offset  \"po\"  in  the  saved  current pad in the given context block\nstructure (can be used as an lvalue).\n\nSV *  CXCURPADSV(struct context, PADOFFSET po)\n\n\"PADBASESV\"\nGet the value from slot \"po\" in the base (DEPTH=1) pad of a padlist\n\nSV *  PADBASESV(PADLIST padlist, PADOFFSET po)\n\n\"PADCLONEVARS\"\nClone the state variables associated with running and compiling pads.\n\nvoid  PADCLONEVARS(PerlInterpreter *protoperl,\nCLONEPARAMS* param)\n\n\"PADCOMPNAMEFLAGS\"\nReturn the flags for the current compiling pad name at offset \"po\".  Assumes a valid slot\nentry.\n\nU32  PADCOMPNAMEFLAGS(PADOFFSET po)\n\n\"PADCOMPNAMEGEN\"\nThe generation number of the name at offset \"po\" in the current compiling pad (lvalue).\n\nSTRLEN  PADCOMPNAMEGEN(PADOFFSET po)\n\n\"PADCOMPNAMEGENset\"\nSets the generation number of the name at offset \"po\" in the current ling pad (lvalue) to\n\"gen\".\n\nSTRLEN  PADCOMPNAMEGENset(PADOFFSET po, int gen)\n\n\"PADCOMPNAMEOURSTASH\"\nReturn the stash associated with an \"our\" variable.  Assumes the slot entry  is  a  valid\n\"our\" lexical.\n\nHV *  PADCOMPNAMEOURSTASH(PADOFFSET po)\n\n\"PADCOMPNAMEPV\"\nReturn  the  name of the current compiling pad name at offset \"po\".  Assumes a valid slot\nentry.\n\nchar *  PADCOMPNAMEPV(PADOFFSET po)\n\n\"PADCOMPNAMETYPE\"\nReturn the type (stash) of the current compiling pad name at  offset  \"po\".   Must  be  a\nvalid name.  Returns null if not typed.\n\nHV *  PADCOMPNAMETYPE(PADOFFSET po)\n\n\"PadnameIsFIELD\"\nWhether  this  is  a  \"field\" variable.  PADNAMEs where this is true will have additional\ninformation available via \"PadnameFIELDINFO\".\n\nbool  PadnameIsFIELD(PADNAME * pn)\n\n\"PadnameIsOUR\"\nWhether this is an \"our\" variable.\n\nbool  PadnameIsOUR(PADNAME * pn)\n\n\"PadnameIsSTATE\"\nWhether this is a \"state\" variable.\n\nbool  PadnameIsSTATE(PADNAME * pn)\n\n\"PadnameOURSTASH\"\nThe stash in which this \"our\" variable was declared.\n\nHV *  PadnameOURSTASH(PADNAME * pn)\n\n\"PadnameOUTER\"\nWhether this entry belongs to an outer pad.  Entries for which this  is  true  are  often\nreferred to as 'fake'.\n\nbool  PadnameOUTER(PADNAME * pn)\n\n\"PadnameTYPE\"\nThe  stash  associated  with  a  typed lexical.  This returns the %Foo:: hash for \"my Foo\n$bar\".\n\nHV *  PadnameTYPE(PADNAME * pn)\n\n\"PADRESTORELOCAL\"\nRestore the old pad saved into the local variable \"opad\" by PADSAVELOCAL()\n\nvoid  PADRESTORELOCAL(PAD *opad)\n\n\"PADSAVELOCAL\"\nSave the current pad to the local variable \"opad\", then make the  current  pad  equal  to\n\"npad\"\n\nvoid  PADSAVELOCAL(PAD *opad, PAD *npad)\n\n\"PADSAVESETNULLPAD\"\nSave the current pad then set it to null.\n\nvoid  PADSAVESETNULLPAD()\n\n\"PADSETCUR\"\nSet  the  current  pad to be pad \"n\" in the padlist, saving the previous current pad.  NB\ncurrently this macro expands to a string too long for some compilers,  so  it's  best  to\nreplace it with\n\nSAVECOMPPAD();\nPADSETCURNOSAVE(padlist,n);\n\nvoid  PADSETCUR(PADLIST padlist, I32 n)\n\n\"PADSETCURNOSAVE\"\nlike PADSETCUR, but without the save\n\nvoid  PADSETCURNOSAVE(PADLIST padlist, I32 n)\n\n\"PADSETSV\"\nSet the slot at offset \"po\" in the current pad to \"sv\"\n\nSV *  PADSETSV(PADOFFSET po, SV* sv)\n\n\"PADSV\"\nGet the value at offset \"po\" in the current pad\n\nSV *  PADSV(PADOFFSET po)\n\n\"PADSVl\"\nLightweight  and  lvalue version of \"PADSV\".  Get or set the value at offset \"po\" in the\ncurrent pad.  Unlike \"PADSV\", does not print diagnostics with  -DX.   For  internal  use\nonly.\n\nSV *  PADSVl(PADOFFSET po)\n\n\"SAVECLEARSV\"\nClear the pointed to pad value on scope exit.  (i.e. the runtime action of \"my\")\n\nvoid  SAVECLEARSV(SV svp)\n\n\"SAVECOMPPAD\"\nsave \"PLcomppad\" and \"PLcurpad\"\n\nvoid  SAVECOMPPAD()\n\n\"SAVEPADSV\"\nSave a pad slot (used to restore after an iteration)\n\nvoid  SAVEPADSV(PADOFFSET po)\n",
            "subsections": []
        },
        "Password and Group access": {
            "content": "There are currently no internal API items in Password and Group access\n",
            "subsections": []
        },
        "Paths to system commands": {
            "content": "There are currently no internal API items in Paths to system commands\n",
            "subsections": []
        },
        "Prototype information": {
            "content": "There are currently no internal API items in Prototype information\n\nREGEXP Functions\n\"regnode\"\nDescribed in perlreguts.\n",
            "subsections": []
        },
        "Reports and Formats": {
            "content": "There are currently no internal API items in Reports and Formats\n",
            "subsections": []
        },
        "Signals": {
            "content": "There are currently no internal API items in Signals\n",
            "subsections": []
        },
        "Site configuration": {
            "content": "There are currently no internal API items in Site configuration\n",
            "subsections": []
        },
        "Sockets configuration values": {
            "content": "There are currently no internal API items in Sockets configuration values\n",
            "subsections": []
        },
        "Source Filters": {
            "content": "There are currently no internal API items in Source Filters\n",
            "subsections": []
        },
        "Stack Manipulation Macros": {
            "content": "\"djSP\"\nDeclare  Just  \"SP\".   This  is actually identical to \"dSP\", and declares a local copy of\nperl's stack pointer, available via the \"SP\" macro.  See \"\"SP\" in  perlapi\".   (Available\nfor backward source code compatibility with the old (Perl 5.005) thread model.)\n\ndjSP();\n\n\"LVRET\"\nTrue if this op will be the return value of an lvalue subroutine\n\n\"savealloc\"\nImplements \"\"SSNEW\"\" in perlapi and kin, which should be used instead of this function.\n\nSSizet  savealloc(SSizet size, I32 pad)\n",
            "subsections": []
        },
        "String Handling": {
            "content": "\"delimcpynoescape\"\nCopy  a  source buffer to a destination buffer, stopping at (but not including) the first\noccurrence in the source of the delimiter byte, \"delim\".  The source is the bytes between\n\"from\" and \"fromend\" - 1.  Similarly, the dest is \"to\" up to \"toend\".\n\nThe number of bytes copied is written to *retlen.\n\nReturns the position of \"delim\" in the \"from\" buffer, but if there is no such  occurrence\nbefore    \"fromend\",    then   \"fromend\"   is   returned,   and   the   entire   buffer\n\"from\" .. \"fromend\" - 1 is copied.\n\nIf there is room in the destination available after the copy, an extra terminating safety\n\"NUL\" byte is appended (not included in the returned length).\n\nThe error case is if the destination buffer is not large enough to accommodate everything\nthat should be copied.  In this situation, a value larger than \"toend\" - \"to\" is written\nto *retlen, and as much of the source as fits will be written to  the  destination.   Not\nhaving room for the safety \"NUL\" is not considered an error.\n\nchar *  delimcpynoescape(char *to, const char *toend,\nconst char *from, const char *fromend,\nconst int delim, I32 *retlen)\n\n\"mycxtinit\"\nImplements the \"\"MYCXTINIT\"\" in perlxs macro, which you should use instead.\n\nThe  first time a module is loaded, the global \"PLmycxtindex\" is incremented, and that\nvalue is assigned to that module's static \"mycxtindex\" (whose address is passed  as  an\narg).   Then,  for  each interpreter this function is called for, it makes sure a \"void*\"\nslot is  available  to  hang  the  static  data  off,  by  allocating  or  extending  the\ninterpreter's \"PLmycxtlist\" array\n\nNOTE:  \"mycxtinit\"  must  be  explicitly  called  as \"Perlmycxtinit\" with an \"aTHX\"\nparameter.\n\nvoid *  Perlmycxtinit(pTHX int *indexp, sizet size)\n\n\"quadmathformatneeded\"\nquadmathformatneeded() returns true if the \"format\" string seems to  contain  at  least\none non-Q-prefixed \"%[efgaEFGA]\" format specifier, or returns false otherwise.\n\nThe  format  specifier  detection  is not complete printf-syntax detection, but it should\ncatch most common cases.\n\nIf  true  is  returned,  those   arguments   should   in   theory   be   processed   with\nquadmathsnprintf(),  but  in  case  there  is  more  than one such format specifier (see\n\"quadmathformatvalid\"), and if there is anything else beyond  that  one  (even  just  a\nsingle  byte),  they  cannot  be  processed  because  quadmathsnprintf() is very strict,\naccepting only one format spec, and nothing else.  In this case, the code should probably\nfail.\n\nbool  quadmathformatneeded(const char *format)\n\n\"quadmathformatvalid\"\nquadmathsnprintf() is very strict about its \"format\" string and will fail, returning -1,\nif the format is invalid.  It accepts exactly one format spec.\n\nquadmathformatvalid() checks that the intended single spec looks sane: begins with \"%\",\nhas only one \"%\", ends with \"[efgaEFGA]\", and has \"Q\" before it.   This  is  not  a  full\n\"printf syntax check\", just the basics.\n\nReturns true if it is valid, false if not.\n\nSee also \"quadmathformatneeded\".\n\nbool  quadmathformatvalid(const char *format)\n\nSV Flags\n\"SVtINVLIST\"\nType flag for scalars.  See \"svtype\" in perlapi.\n\nSV Handling\n\"PLSv\"\nA  scratch  pad  SV  for  whatever temporary use you need.  Chiefly used as a fallback by\nmacros on platforms where \"PERLUSEGCCBRACEGROUPS\" in  perlapi>  is  unavailable,  and\nwhich would otherwise evaluate their SV parameter more than once.\n\nBUT  BEWARE, if this is used in a situation where something that is using it is in a call\nstack with something else that is using it, this variable would get  zapped,  leading  to\nhard-to-diagnose errors.\n\nPLSv\n\n\"svaddarena\"\nGiven  a  chunk of memory, link it to the head of the list of arenas, and split it into a\nlist of free SVs.\n\nvoid  svaddarena(char * const ptr, const U32 size,\nconst U32 flags)\n\n\"sv2bool\"\nThis macro is only used by svtrue() or its macro equivalent, and only  if  the  latter's\nargument  is  neither  \"SvPOK\",  \"SvIOK\" nor \"SvNOK\".  It calls \"sv2boolflags\" with the\n\"SVGMAGIC\" flag.\n\nbool  sv2bool(SV * const sv)\n\n\"sv2boolflags\"\nThis function is only used by svtrue() and friends,  and only if the  latter's  argument\nis  neither \"SvPOK\", \"SvIOK\" nor \"SvNOK\".  If the flags contain \"SVGMAGIC\", then it does\nan mgget() first.\n\nbool  sv2boolflags(SV *sv, I32 flags)\n\n\"svcleanall\"\nDecrement the refcnt of each remaining SV, possibly triggering a cleanup.  This  function\nmay  have  to  be called multiple times to free SVs which are in complex self-referential\nhierarchies.\n\nI32  svcleanall()\n\n\"svcleanobjs\"\nAttempt to destroy all objects not yet freed.\n\nvoid  svcleanobjs()\n\n\"svfreearenas\"\nDeallocate the memory used by all arenas.  Note that all  the  individual  SV  heads  and\nbodies within the arenas must already have been freed.\n\nvoid  svfreearenas()\n\n\"svgrow\"\nExpands  the  character buffer in the SV.  If necessary, uses \"svunref\" and upgrades the\nSV to \"SVtPV\".  Returns a pointer to the character buffer.   Use  the  \"SvGROW\"  wrapper\ninstead.\n\nchar *  svgrow(SV * const sv, STRLEN newlen)\n\n\"svgrowfresh\"\nA  cut-down  version  of  svgrow  intended  only for when sv is a freshly-minted SVtPV,\nSVtPVIV, SVtPVNV, or SVtPVMG. i.e. sv has the default flags, has never been any  other\ntype,  and  does  not  have an existing string. Basically, just assigns a char buffer and\nreturns a pointer to it.\n\nchar *  svgrowfresh(SV * const sv, STRLEN newlen)\n\n\"svnewref\"\nIncrement an SV's reference count.  Use the SvREFCNTinc() wrapper instead.\n\nSV *  svnewref(SV * const sv)\n\n\"sv2num\"\nNOTE: \"sv2num\" is experimental and may change or be removed without notice.\n\nReturn an SV with the numeric value of the source SV, doing any  necessary  reference  or\noverload conversion.  The caller is expected to have handled get-magic already.\n\nSV *  sv2num(SV * const sv)\n\n\"svpv\"\nUse the \"SvPVnolen\" macro instead\n\nchar *  svpv(SV *sv)\n\n\"svpvbyte\"\nUse \"SvPVbytenolen\" instead.\n\nchar *  svpvbyte(SV *sv)\n\n\"svpvbytenforce\"\nThe  backend  for  the \"SvPVbytexforce\" macro.  Always use the macro instead.  If the SV\ncannot be downgraded from UTF-8, this croaks.\n\nchar *  svpvbytenforce(SV * const sv, STRLEN * const lp)\n\n\"sv2pvbytenolen\"\nReturn a pointer to the byte-encoded representation of the SV.  May cause the  SV  to  be\ndowngraded from UTF-8 as a side-effect.\n\nUsually accessed via the \"SvPVbytenolen\" macro.\n\nchar *  sv2pvbytenolen(SV *sv)\n\n\"svpvnforce\"\nGet  a  sensible  string  out  of  the  SV  somehow.   A  private  implementation  of the\n\"SvPVforce\" macro for compilers which can't cope with complex macro expressions.  Always\nuse the macro instead.\n\nchar *  svpvnforce(SV *sv, STRLEN *lp)\n\n\"sv2pvnolen\"\nLike sv2pv(), but doesn't return the length too.   You  should  usually  use  the  macro\nwrapper SvPVnolen(sv) instead.\n\nchar *  sv2pvnolen(SV *sv)\n\n\"svpvutf8nforce\"\nThe backend for the \"SvPVutf8xforce\" macro.  Always use the macro instead.\n\nchar *  svpvutf8nforce(SV * const sv, STRLEN * const lp)\n\n\"sv2pvutf8nolen\"\nReturn  a  pointer to the UTF-8-encoded representation of the SV.  May cause the SV to be\nupgraded to UTF-8 as a side-effect.\n\nUsually accessed via the \"SvPVutf8nolen\" macro.\n\nchar *  sv2pvutf8nolen(SV *sv)\n\n\"svpvutf8\"\nUse the \"SvPVutf8nolen\" macro instead\n\nchar *  svpvutf8(SV *sv)\n\n\"svtainted\"\nTest an SV for taintedness.  Use \"SvTAINTED\" instead.\n\nbool  svtainted(SV * const sv)\n\n\"SvTHINKFIRST\"\nA quick flag check to see whether an \"sv\" should be passed  to  \"svforcenormal\"  to  be\n\"downgraded\" before \"SvIVX\" or \"SvPVX\" can be modified directly.\n\nFor  example,  if your scalar is a reference and you want to modify the \"SvIVX\" slot, you\ncan't just do \"SvROKoff\", as that will leak the referent.\n\nThis is used internally by various sv-modifying functions, such as \"svsetsv\", \"svsetiv\"\nand \"svpvnforce\".\n\nOne case that this does not handle is a gv without SvFAKE set.  After\n\nif (SvTHINKFIRST(gv)) svforcenormal(gv);\n\nit will still be a gv.\n\n\"SvTHINKFIRST\" sometimes produces false positives.  In those cases \"svforcenormal\" does\nnothing.\n\nU32  SvTHINKFIRST(SV *sv)\n\n\"svtrue\"\nReturns true if the SV has a true value by Perl's rules.  Use the \"SvTRUE\" macro instead,\nwhich may call svtrue() or may instead use an in-line version.\n\nI32  svtrue(SV * const sv)\n\n\"svuntaint\"\nUntaint an SV.  Use \"SvTAINTEDoff\" instead.\n\nvoid  svuntaint(SV * const sv)\n",
            "subsections": []
        },
        "Tainting": {
            "content": "\"svtaint\"\nTaint an SV.  Use \"SvTAINTEDon\" instead.\n\nvoid  svtaint(SV *sv)\n\n\"TAINT\"\nIf we aren't in taint checking mode, do nothing; otherwise indicate to \"\"TAINTset\"\"  and\n\"\"TAINTPROPER\"\" that some unspecified element is tainted.\n\nvoid  TAINT()\n\n\"TAINTENV\"\nLooks  at  several  components of %ENV for taintedness, and calls \"\"taintproper\"\" if any\nare tainted.  The components it searches are things like $PATH.\n\nvoid  TAINTENV\n\n\"taintenv\"\nImplements the \"TAINTENV\" macro, which you should generally use instead.\n\nvoid  taintenv()\n\n\"TAINTget\"\nReturns a boolean as to whether some element is tainted or not.\n\nbool  TAINTget()\n\n\"TAINTIF\"\nIf \"c\" evaluates to true, call \"\"TAINT\"\" to indicate that something is tainted; otherwise\ndo nothing.\n\nvoid  TAINTIF(bool c)\n\n\"TAINTINGget\"\nReturns a boolean as to whether taint checking is enabled or not.\n\nbool  TAINTINGget()\n\n\"TAINTINGset\"\nTurn taint checking mode off/on\n\nvoid  TAINTINGset(bool s)\n\n\"TAINTNOT\"\nRemove any taintedness previously set by, e.g., \"TAINT\".\n\nvoid  TAINTNOT()\n\n\"TAINTPROPER\"\nIf no element is tainted, do nothing; otherwise output a message  (containing  \"s\")  that\nindicates there is a tainting violation.  If such violations are fatal, it croaks.\n\nvoid  TAINTPROPER(const char * s)\n\n\"taintproper\"\nImplements the \"TAINTPROPER\" macro, which you should generally use instead.\n\nvoid  taintproper(const char *f, const char * const s)\n\n\"TAINTset\"\nIf \"s\" is true, \"\"TAINTget\"\" returns true; If \"s\" is false, \"\"TAINTget\"\" returns false;\n\nvoid  TAINTset(bool s)\n\n\"TAINTWARNget\"\nReturns false if tainting violations are fatal; Returns true if they're just warnings\n\nbool  TAINTWARNget()\n\n\"TAINTWARNset\"\n\"s\"  being  true  indicates \"\"TAINTWARNget\"\" should return that tainting violations are\njust warnings\n\n\"s\" being false indicates \"\"TAINTWARNget\"\" should return that tainting  violations  are\nfatal.\n\nvoid  TAINTWARNset(bool s)\n",
            "subsections": []
        },
        "Time": {
            "content": "There are currently no internal API items in Time\n",
            "subsections": []
        },
        "Typedef names": {
            "content": "There are currently no internal API items in Typedef names\n",
            "subsections": []
        },
        "Unicode Support": {
            "content": "\"bytesfromutf8loc\"\nNOTE: \"bytesfromutf8loc\" is experimental and may change or be removed without notice.\n\nLike  \"\"bytesfromutf8\"  in perlapi()\", but takes an extra parameter, a pointer to where\nto store the location of the first character in \"s\" that cannot be converted to non-UTF8.\n\nIf that parameter is \"NULL\", this function behaves identically to \"bytesfromutf8\".\n\nOtherwise  if  *isutf8p  is  0  on  input,   the   function   behaves   identically   to\n\"bytesfromutf8\", except it also sets *firstnondowngradable to \"NULL\".\n\nOtherwise,  the  function  returns a newly created \"NUL\"-terminated string containing the\nnon-UTF8 equivalent of the convertible first portion of \"s\".  *lenp is set to its length,\nnot including the terminating \"NUL\".  If the entire input string was converted, *isutf8p\nis set to a FALSE value, and *firstnondowngradable is set to \"NULL\".\n\nOtherwise, *firstnondowngradable is set to  point  to  the  first  byte  of  the  first\ncharacter  in  the  original string that wasn't converted.  *isutf8p is unchanged.  Note\nthat the new string may have length 0.\n\nAnother way to look at it is, if *firstnondowngradable is non-\"NULL\" and  *isutf8p  is\nTRUE,  this function starts at the beginning of \"s\" and converts as many characters in it\nas possible stopping at the first one it finds that  can't  be  converted  to  non-UTF-8.\n*firstnondowngradable  is  set to point to that.  The function returns the portion that\ncould be converted in a newly created \"NUL\"-terminated string, and *lenp is  set  to  its\nlength, not including the terminating \"NUL\".  If the very first character in the original\ncould  not  be  converted, *lenp will be 0, and the new string will contain just a single\n\"NUL\".  If the entire  input  string  was  converted,  *isutf8p  is  set  to  FALSE  and\n*firstnondowngradable is set to \"NULL\".\n\nUpon successful return, the number of variants in the converted portion of the string can\nbe  computed  by  having  saved  the  value of *lenp before the call, and subtracting the\nafter-call value of *lenp from it.\n\nU8 *  bytesfromutf8loc(const U8 *s, STRLEN *lenp,\nbool *isutf8p,\nconst U8 firstunconverted)\n\n\"finduninitvar\"\nNOTE: \"finduninitvar\" is experimental and may change or be removed without notice.\n\nFind the name of the undefined variable (if any) that caused the operator to issue a \"Use\nof uninitialized value\" warning.  If match is true, only  return  a  name  if  its  value\nmatches  \"uninitsv\".   So  roughly  speaking,  if  a  unary  operator (such as \"OPCOS\")\ngenerates a warning, then following the direct child of the op may yield an \"OPPADSV\" or\n\"OPGV\" that gives the name of the undefined variable.  On the other hand, with  \"OPADD\"\nthere  are  two branches to follow, so we only print the variable name if we get an exact\nmatch.  \"descp\" points to a string pointer holding the description of the op.  This  may\nbe updated if needed.\n\nThe name is returned as a mortal SV.\n\nAssumes   that  \"PLop\"  is  the  OP  that  originally  triggered  the  error,  and  that\n\"PLcomppad\"/\"PLcurpad\" points to the currently executing pad.\n\nSV *  finduninitvar(const OP * const obase,\nconst SV * const uninitsv, bool match,\nconst char descp)\n\n\"isSCRIPTRUN\"\nReturns a bool as to whether or not the  sequence  of  bytes  from  \"s\"  up  to  but  not\nincluding \"send\" form a \"script run\".  \"utf8target\" is TRUE iff the sequence starting at\n\"s\"  is  to  be  treated  as UTF-8.  To be precise, except for two degenerate cases given\nbelow, this function returns TRUE iff all code points in it come from any combination  of\nthree \"scripts\" given by the Unicode \"Script Extensions\" property: Common, Inherited, and\npossibly  one other.  Additionally all decimal digits must come from the same consecutive\nsequence of 10.\n\nFor example, if all the characters in the sequence are Greek, or  Common,  or  Inherited,\nthis function will return TRUE, provided any decimal digits in it are from the same block\nof  digits  in Common.  (These are the ASCII digits \"0\"..\"9\" and additionally a block for\nfull width forms of these, and several  others  used  in  mathematical  notation.)    For\nscripts  (unlike Greek) that have their own digits defined this will accept either digits\nfrom that set or from one of the Common digit sets, but not a  combination  of  the  two.\nSome  scripts,  such  as  Arabic, have more than one set of digits.  All digits must come\nfrom the same set for this function to return TRUE.\n\n*retscript, if \"retscript\" is not NULL, will on  return  of  TRUE  contain  the  script\nfound,  using  the  \"SCXenum\"  typedef.  Its value will be \"SCXINVALID\" if the function\nreturns FALSE.\n\nIf the sequence is empty, TRUE is returned,  but  *retscript  (if  asked  for)  will  be\n\"SCXINVALID\".\n\nIf  the  sequence  contains a single code point which is unassigned to a character in the\nversion of Unicode being used, the function will return TRUE,  and  the  script  will  be\n\"SCXUnknown\".   Any  other  combination  of unassigned code points in the input sequence\nwill result in the function treating the input as not being a script run.\n\nThe returned script will be \"SCXInherited\" iff all the code points in it  are  from  the\nInherited script.\n\nOtherwise,  the  returned  script  will be \"SCXCommon\" iff all the code points in it are\nfrom the Inherited or Common scripts.\n\nbool  isSCRIPTRUN(const U8 *s, const U8 *send,\nconst bool utf8target)\n\n\"isutf8noninvariantstring\"\nReturns TRUE if \"isutf8invariantstring\" in perlapi returns FALSE for the  first  \"len\"\nbytes  of the string \"s\", but they are, nonetheless, legal Perl-extended UTF-8; otherwise\nreturns FALSE.\n\nA TRUE return means that at least one code point represented by the sequence either is  a\nwide  character  not  representable  as  a  single  byte,  or  the representation differs\ndepending on whether the sequence is encoded in UTF-8 or not.\n\nSee also \"\"isutf8invariantstring\" in perlapi\", \"\"isutf8string\" in perlapi\"\n\nbool  isutf8noninvariantstring(const U8 * const s, STRLEN len)\n\n\"utf8ntouvuni\"\n\"DEPRECATED!\"  It is planned to remove \"utf8ntouvuni\" from a future  release  of  Perl.\nDo not use it for new code; remove it from existing code.\n\nInstead use \"utf8touvchrbuf\" in perlapi, or rarely, \"utf8ntouvchr\" in perlapi.\n\nThis  function  was useful for code that wanted to handle both EBCDIC and ASCII platforms\nwith Unicode properties, but  starting  in  Perl  v5.20,  the  distinctions  between  the\nplatforms  have  mostly  been  made  invisible  to  most  code, so this function is quite\nunlikely to be what you want.  If you do need this  precise  functionality,  use  instead\n\"NATIVETOUNI(utf8touvchrbuf(...))\"  or \"NATIVETOUNI(utf8ntouvchr(...))\".\n\nUV  utf8ntouvuni(const U8 *s, STRLEN curlen, STRLEN *retlen,\nU32 flags)\n\n\"utf8touvuni\"\n\"DEPRECATED!\"  It is planned to remove \"utf8touvuni\" from a future release of Perl.  Do\nnot use it for new code; remove it from existing code.\n\nReturns  the Unicode code point of the first character in the string \"s\" which is assumed\nto be in UTF-8 encoding; \"retlen\" will be set to the length, in bytes, of that character.\n\nSome, but not all, UTF-8 malformations are detected, and in fact,  some  malformed  input\ncould  cause  reading  beyond  the  end of the input buffer, which is one reason why this\nfunction is deprecated.  The other is that only in extremely limited circumstances should\nthe Unicode versus native code point be of any interest to you.\n\nIf \"s\" points to one of the detected malformations, and UTF8 warnings are  enabled,  zero\nis  returned  and  *retlen  is  set  (if \"retlen\" doesn't point to NULL) to -1.  If those\nwarnings are off,  the  computed  value  if  well-defined  (or  the  Unicode  REPLACEMENT\nCHARACTER,  if  not) is silently returned, and *retlen is set (if \"retlen\" isn't NULL) so\nthat (\"s\" + *retlen) is the next possible  position  in  \"s\"  that  could  begin  a  non-\nmalformed character.  See \"utf8ntouvchr\" in perlapi for details on when the REPLACEMENT\nCHARACTER is returned.\n\nUV  utf8touvuni(const U8 *s, STRLEN *retlen)\n\n\"uvoffunitoutf8flags\"\nTHIS FUNCTION SHOULD BE USED IN ONLY VERY SPECIALIZED CIRCUMSTANCES.  Instead, Almost all\ncode should use \"uvchrtoutf8\" in perlapi or \"uvchrtoutf8flags\" in perlapi.\n\nThis function is like them, but the input is a strict Unicode (as opposed to native) code\npoint.  Only in very rare circumstances should code not be using the native code point.\n\nFor details, see the description for \"uvchrtoutf8flags\" in perlapi.\n\nU8 *  uvoffunitoutf8flags(U8 *d, UV uv, UV flags)\n\n\"validutf8touvchr\"\nLike  \"\"utf8touvchrbuf\"  in  perlapi\", but should only be called when it is known that\nthe next character in the  input  UTF-8  string  \"s\"  is  well-formed  (e.g.,  it  passes\n\"\"isUTF8CHAR\"  in perlapi\".  Surrogates, non-character code points, and non-Unicode code\npoints are allowed.\n\nUV  validutf8touvchr(const U8 *s, STRLEN *retlen)\n\n\"variantunderutf8count\"\nThis function looks at the sequence of bytes between \"s\" and \"e\", which are assumed to be\nencoded in ASCII/Latin1, and returns how many of them would change should the  string  be\ntranslated  into UTF-8.  Due to the nature of UTF-8, each of these would occupy two bytes\ninstead of the single one in the input string.  Thus, this function returns  the  precise\nnumber of bytes the string would expand by when translated to UTF-8.\n\nUnlike  most  of  the  other  functions that have \"utf8\" in their name, the input to this\nfunction is NOT a UTF-8-encoded string.  The function name is slightly odd  to  emphasize\nthis.\n\nThis  function  is  internal  to Perl because khw thinks that any XS code that would want\nthis is probably operating too close to the internals.  Presenting a valid use case could\nchange that.\n\nSee also \"\"isutf8invariantstring\" in perlapi\" and  \"\"isutf8invariantstringloc\"  in\nperlapi\",\n\nSizet  variantunderutf8count(const U8 * const s,\nconst U8 * const e)\n",
            "subsections": []
        },
        "Utility Functions": {
            "content": "\"mypopenlist\"\nImplementing function on some systems for PerlProcpopenlist()\n\nPerlIO *  mypopenlist(const char *mode, int n, SV args)\n\n\"mysocketpair\"\nEmulates  socketpair(2)  on  systems  that  don't  have  it,  but  which  do  have enough\nfunctionality for the emulation.\n\nint  mysocketpair(int family, int type, int protocol, int fd[2])\n",
            "subsections": []
        },
        "Versioning": {
            "content": "There are currently no internal API items in Versioning\n",
            "subsections": []
        },
        "Warning and Dieing": {
            "content": "\"deprecate\"\nWrapper around Perlckwarnerd() to produce a deprecated warning in the  given  category\nwith  an  appropriate message. The \"message\" argument must be a C string. The string \" is\ndeprecated\" will automatically be added to the end of the \"message\".\n\ndeprecate(U32 category, \"message\")\n\n\"deprecatedisappearsin\"\nWrapper around Perlckwarnerd() to produce a deprecated warning in the  given  category\nwith  an appropriate message that the construct referred to by the message will disappear\nin a specific release.  The \"when\" and \"message\" arguments  must  be  a  C  string.   The\n\"when\" string is expected to be of the form \"5.40\", with no minor element in the version.\nThe  actual  message  output will be the result of the following expression \"message \" is\ndeprecated, and will disappear in Perl \" when\" which is why \"message\" and \"when\" must  be\nliteral C strings.\n\ndeprecatedisappearsin(U32 category, \"when\", \"message\")\n\n\"deprecatefatalin\"\nWrapper  around  Perlckwarnerd() to produce a deprecated warning in the given category\nwith an appropriate message that the construct referred to by  the  message  will  become\nfatal in a specific release.  The \"when\" and \"message\" arguments must be a C string.  The\n\"when\" string is expected to be of the form \"5.40\", with no minor element in the version.\nThe  actual  message  output will be the result of the following expression \"message \" is\ndeprecated, and will become fatal in Perl \" when\" which is why \"message\" and \"when\"  must\nbe literal C strings.\n\ndeprecatefatalin(U32 category, \"when\", \"message\")\n\n\"PLdowarn\"\nThe  C variable that roughly corresponds to Perl's $^W warning variable.  However, $^W is\ntreated as a boolean, whereas \"PLdowarn\" is a collection of flag bits.\n\nOn threaded perls, each thread has an independent copy of this variable; each initialized\nat creation time with the current value of the creating thread's copy.\n\nU8  PLdowarn\n\n\"reportuninit\"\nPrint appropriate \"Use of uninitialized variable\" warning.\n\nvoid  reportuninit(const SV *uninitsv)\n\nXS\nThere are currently no internal API items in XS\n",
            "subsections": []
        },
        "Undocumented elements": {
            "content": "This section lists the elements that are otherwise undocumented.  If you  use  any  of  them,\nplease consider creating and submitting documentation for it.\n\nExperimental and deprecated undocumented elements are listed separately at the end.\n\nabortexecution\naddaboveLatin1folds\naddcptoinvlist\naddrangetoinvlist\nallocmy\namagiccmp\namagiccmpdesc\namagiccmplocale\namagiccmplocaledesc\namagicincmp\namagicincmpdesc\namagicisenabled\namagicncmp\namagicncmpdesc\nanydup\nappendutf8fromnativebyte\napply\natforklock\natforkunlock\navarylenp\navextendguts\naviterp\navnonelem\navreify\nbindmatch\nblockgimme\nbootcorebuiltin\nbootcoremro\nbootcorePerlIO\nbootcoreUNIVERSAL\nbuildinfixplugin\nbytedumpstring\ncalllist\ncando\ncaptureclear\ncastiv\ncasti32\ncastulong\ncastuv\ncheckhashfieldsandhekify\ncheckregnodeafter\ncheckutf8print\nckanoncode\nckbacktick\nckbitop\nckcmp\nckconcat\nckdefined\nckdelete\nckeach\nckentersubargscore\nckeof\nckeval\nckexec\nckexists\nckftst\nckfun\nckglob\nckgrep\nckhelemexistsor\nckindex\nckisa\nckjoin\ncklength\ncklfun\ncklistiob\nckmatch\nckmethod\ncknull\nckopen\nckprototype\nckreadline\nckrefassign\nckrepeat\nckrequire\nckreturn\nckrfun\nckrvconst\ncksassign\nckselect\nckshift\ncksmartmatch\ncksort\nckspair\ncksplit\nckstringify\ncksubr\ncksubstr\ncksvconst\ncktell\ncktrunc\ncktrycatch\nckwarn\nckwarnd\nclassaddADJUST\nclassaddfield\nclassapplyattributes\nclassapplyfieldattributes\nclassprepareinitfieldparse\nclasspreparemethodparse\nclasssealstash\nclasssetfielddefop\nclasssetupstash\nclasswrapmethodbody\ncleardefarray\nclosestcop\ncmpchainextend\ncmpchainfinish\ncmpchainstart\ncmpdesc\ncmplocaledesc\ncntrltomnemonic\nconstructahocorasickfromtrie\ncopfileavn\ncoresubop\ncroakcaller\ncroakkwunlessclass\ncroakmemorywrap\ncroaknomem\ncroakpopstack\ncsighandler\ncsighandler1\ncsighandler3\ncurrentreengine\ncustomopgetfield\ncvcloneinto\ncvconstsvorav\ncvgvfromhek\ncvgvset\ncvstashset\ncvundefflags\ncxdump\ncxdup\ncxinc\ndebstackall\ndebstackptrs\ndebughashseed\ndebugpeep\ndebugshowstudyflags\ndebugstudydata\ndefelemtarget\ndespatchsignals\ndieunwind\ndoaexec\ndoaexec5\ndoaspawn\ndoeof\ndoesutf8overflow\ndoexec\ndoexec3\ndofile\ndogvdump\ndogvgvdump\ndohvdump\ndoingtaint\ndoipcctl\ndoipcget\ndomagicdump\ndomsgrcv\ndomsgsnd\ndoncmp\ndoopdump\ndopmopdump\ndoprint\ndoreadline\ndoref\ndoseek\ndosemop\ndoshmio\ndospawn\ndospawnnowait\ndosvdump\ndosysseek\ndotell\ndotrans\ndounipropmatch\ndovecget\ndovecset\ndovop\ndrand48initr\ndrand48r\ndtraceprobecall\ndtraceprobeload\ndtraceprobeop\ndtraceprobephase\ndumpallperl\ndumpindent\ndumppacksubsperl\ndumpsubperl\ndumpsvchild\ndumpuntil\ndumpvindent\ndupwarnings\nfindfirstdifferingbytepos\nfindlexicalcv\nfindruncvwhere\nfindscript\nfoldEQlatin1s2folded\nfoldEQlatin1\nfoldEQutf8flags\nforcelocaleunlock\nforceoutmalformedutf8message\nformaliendigitmsg\nformcptoolargemsg\nfreetiedhvpool\nfreetmps\ngetandcheckbackslashNname\ngetANYOFHbbmcontents\ngetANYOFMcontents\ngetdbsub\ngetdebugopts\ngetdeprecatedpropertymsg\ngetenvlen\ngetextendedoserrno\ngethashseed\ngetinvlistiteraddr\ngetinvlistoffsetaddr\ngetinvlistpreviousindexaddr\ngetmstats\ngetpropdefinition\ngetpropvalues\ngetregclassauxdata\ngetregclassauxdata\ngetregexcharsetname\ngetwin32messageutf8ness\ngpfree\ngpref\ngrokbinocthex\ngrokbslashc\ngrokbslasho\ngrokbslashx\ngvcheck\ngvfetchmethinternal\ngvoverride\ngvsetref\ngvstashpvninternal\nhedup\nhekdup\nhfreenextentry\nhvauxalloc\nhvcommon\nhvcommonkeylen\nhvdelayfreeent\nhvfreeent\nhvplaceholdersp\nhvpushkv\nhvrandset\nhvundefflags\ninfixpluginstandard\ninitargvsymbols\ninitconstants\ninitdbargs\ninitdebugger\niniti18nl10n\ninitnamedcv\ninitstacks\ninittm\ninituniprops\ninversefolds\ninvert\ninvlistarray\ninvlistarrayinit\ninvlistclear\ninvlistclone\ninvlistcontainscp\ninvlistcontents\ninvlistdump\ninvlistEQ\ninvlistextend\ninvlisthighest\ninvlistintersection\ninvlistintersectionmaybecomplement2nd\ninvlistinvert\ninvlistisiterating\ninvlistiterfinish\ninvlistiterinit\ninvlistiternext\ninvlistlen\ninvlistmax\ninvlistpreviousindex\ninvlistsearch\ninvlistsetlen\ninvlistsetpreviousindex\ninvlistsubtract\ninvlisttrim\ninvlistunion\ninvlistunionmaybecomplement2nd\ninvmapdump\ninvokeexceptionhook\nioclose\nisFFoverlong\nisgrapheme\nisinlocalecategory\nisinvlist\nissscworthit\nisuniFOO\nisuniperlidcont\nisuniperlidstart\nisutf8charhelper\nisutf8common\nisutf8FFhelper\nisutf8FOO\nisutf8overlong\nisutf8perlidcont\nisutf8perlidstart\njmaybe\njoinexact\nkeyword\nkeywordpluginstandard\nlist\nloadcharnames\nlocalepanic\nlocalize\nlosslessNVtoIV\nlsbitpos32\nlsbitpos64\nmagicclearallenv\nmagiccleararylenp\nmagicclearenv\nmagicclearhook\nmagicclearhookall\nmagicclearisa\nmagicclearpack\nmagicclearsig\nmagiccopycallchecker\nmagicexistspack\nmagicfreearylenp\nmagicfreecollxfrm\nmagicfreemglob\nmagicfreeovrld\nmagicfreeutf8\nmagicget\nmagicgetarylen\nmagicgetdebugvar\nmagicgetdefelem\nmagicgetnkeys\nmagicgetpack\nmagicgetpos\nmagicgetsig\nmagicgetsubstr\nmagicgettaint\nmagicgetuvar\nmagicgetvec\nmagickillbackrefs\nmagicnextpack\nmagicregdatacnt\nmagicregdatumget\nmagicregdatumset\nmagicscalarpack\nmagicset\nmagicsetallenv\nmagicsetarylen\nmagicsetcollxfrm\nmagicsetdbline\nmagicsetdebugvar\nmagicsetdefelem\nmagicsetenv\nmagicsethook\nmagicsethookall\nmagicsetisa\nmagicsetlvref\nmagicsetmglob\nmagicsetnkeys\nmagicsetnonelem\nmagicsetpack\nmagicsetpos\nmagicsetregexp\nmagicsetsig\nmagicsetsigall\nmagicsetsubstr\nmagicsettaint\nmagicsetutf8\nmagicsetuvar\nmagicsetvec\nmagicsizepack\nmagicwipepack\nmaketrie\nmallocedsize\nmallocgoodsize\nmarkstackgrow\nmbtowc\nmemcollxfrm\nmemlogalloc\nmemlogdelsv\nmemlogfree\nmemlognewsv\nmemlogrealloc\nmgfindmglob\nmgsize\nmodefromdiscipline\nmorebodies\nmoresv\nmoreswitches\nmortalgetenv\nmortalizedpvcopy\nmrogetprivatedata\nmrometadup\nmrometainit\nmsbitpos32\nmsbitpos64\nmulticoncatstringify\nmultiderefstringify\nmyatof2\nmyatof3\nmyattrs\nmyclearenv\nmylstat\nmylstatflags\nmymemrchr\nmymkostempcloexec\nmymkstempcloexec\nmystat\nmystatflags\nmystrerror\nmystrftime8temp\nmyunexec\nnewFORM\nnewinvlist\nnewinvlistCarray\nnewMETHOPinternal\nnewMYSUB\nnewPROG\nnewstackinfo\nnewSTUB\nnewSVavdefelem\nnewXSdeffile\nnextargv\nnobarewordallowed\nnobarewordfilehandle\nnoperldie\nnotifyparserthatchangedtoutf8\noopsAV\noopsHV\nopclear\nopintegerize\noplvalueflags\nopmethodstash\nopprunechainhead\noprelocatesv\nopslabforcefree\nopslabfree\nopslabfreenopad\nopstdinit\nopvarname\npackage\npackageversion\npadaddweakref\npadliststore\npadnamefree\nPadnameINSCOPE\npadnamelistfree\nparserdup\nparserfree\nparserfreenexttokeops\nparseunicodeopts\npathissearchable\npeep\nperlallocusing\nperlcloneusing\nPerlEnvputenv\nPerlIOcontextlayers\nPerlIOrestoreerrno\nPerlIOsaveerrno\nPerlLIOdupcloexec\nPerlLIOdup2cloexec\nPerlLIOopencloexec\nPerlLIOopen3cloexec\nPerlProcpipecloexec\nPerlSockacceptcloexec\nPerlSocksocketcloexec\nPerlSocksocketpaircloexec\nperlysighandler\npmruntime\nPOPMARK\npopulateanyofbitmapfrominvlist\npopulatebitmapfrominvlist\npopulateinvlistfrombitmap\npopulateisa\npregfree\npregfree2\nptrhash\nqerror\nReANY\nreentrantfree\nreentrantinit\nreentrantretry\nreentrantsize\nreexecindentf\nref\nregadddata\nregcurly\nregdump\nregdupeinternal\nregexecflags\nregfreeinternal\nreginitcolors\nregnamedbuff\nregnamedbuffall\nregnamedbuffexists\nregnamedbufffetch\nregnamedbufffirstkey\nregnamedbuffiter\nregnamedbuffnextkey\nregnamedbuffscalar\nregnext\nregnodeafter\nregnumberedbufffetch\nregnumberedbufffetchflags\nregnumberedbufflength\nregnumberedbuffstore\nregprop\nregqrpackage\nregskipcomment\nregtempcopy\nreindentf\nreintuitstart\nreintuitstring\nreopcompile\nreportevilfh\nreportredefinedcv\nreportwrongwayfh\nreprintf\nrpeep\nrsignalrestore\nrsignalsave\nrvpvdup\nrxressave\nsamedirent\nsavebool\nsaveclearsv\nsavedelete\nsavedestructor\nsavedestructorx\nsavefreeop\nsavefreepv\nsavefreesv\nsaveint\nsaveiv\nsaveI8\nsaveI16\nsaveI32\nsavemortalizesv\nsavepptr\nsavepushi32ptr\nsavepushptrptr\nsaverecontext\nsavesptr\nsavestackgrow\nsavestackgrowcnt\nsavestrlen\nsawparens\nscalar\nscalarvoid\nscancommit\nscannum\nseed\nsetANYOFarg\nsetcaretX\nsetfdcloexec\nsetfdcloexecfornonsysfd\nsetfdcloexecorinhexecbysysfdness\nsetfdinhexec\nsetfdinhexecforsysfd\nsetnumericstandard\nsetnumericunderlying\nsetpadlist\nsetupcannedinvlist\nsharehek\nshouldwarnnl\nshouldweoutputDebugr\nsighandler\nsighandler1\nsighandler3\nsingle1bitpos32\nsingle1bitpos64\nSlabAlloc\nSlabFree\nSlabtoro\nSlabtorw\nsoftref2xv\nsortsvflagsimpl\nsscfinalize\nsscinit\nstackgrow\nstrtoversion\nstrxfrm\nstudychunk\nsubcrushdepth\nsvaddbackref\nsvbuftoro\nsvdelbackref\nsvincmp\nsvincmpdesc\nsv2iv\nsvmagicextmglob\nsvncmp\nsvncmpdesc\nsvonlytaintgmagic\nsvorpvposu2b\nsvpvbytenforcewrapper\nsvpvutf8nforcewrapper\nsvresetpvn\nsvsethek\nSvTRUEcommon\nsvunglob\nsv2uv\nswitchlocalecontext\nsysinit\nsysinit3\nsysinternclear\nsysinterndup\nsysinterninit\nsysterm\ntiedmethod\ntmpsgrowp\ntofoldlatin1\nTOPMARK\ntounifold\ntounifoldflags\ntounilower\ntounititle\ntouniupper\ntouppertitlelatin1\ntoutf8foldflags\ntoutf8lowerflags\ntoutf8titleflags\ntoutf8upperflags\ntranslatesubstroffsets\ntryamagicbin\ntryamagicun\nuiv2buf\nunlnk\nunsharehek\nunwindparen\nutf8ntouvchrmsgshelper\nutf16toutf8base\nutf16toutf8reversed\nutf16toutf8\nutf8touvchrbufhelper\nutilize\nuvoffunitoutf8flagsmsgs\nuvunitoutf8\nvariantbytenumber\nvarname\nvivifydefelem\nvivifyref\nwait4pid\nwarnelemscalarcontext\nwarnproblematiclocale\nwaslvaluesub\nwatch\nwin32croaknotimplemented\nwritetostderr\nxsbootepilog\nxshandshake\nyyerror\nyyerrorpv\nyyerrorpvn\nyylex\nyyparse\nyyquit\nyyunlex\n\nNext are the experimental undocumented elements\n\nallocLOGOP           cxpushloopfor              invlistlowest\ncreateevalscope     cxpushloopplain            newGP\ncvckprotolenflags  cxpushsub                   newwarningsbitfield\ncxpopblock           cxpushtry                   oprefcntdec\ncxpopeval            cxpushwhen                  oprefcntinc\ncxpopformat          cxtopblock                  opunscope\ncxpopgiven           deleteevalscope            scanstr\ncxpoploop            doopenraw                  scanword\ncxpopsub             doopen6                     scanword6\ncxpopsubargs        emulatecopio               skipspaceflags\ncxpopsubcommon      getrearg                   svfree2\ncxpopwhen            getvtbl                     svkillbackrefs\ncxpushblock          gimmeV                      svsetpvfreshbuf\ncxpusheval           hvbackreferencesp          svsetsvcow\ncxpushformat         hvkillbackrefs             utf8toutf16base\ncxpushgiven          invlisthighestrangestart\n\nFinally  are  the  deprecated undocumented elements.  Do not use any for new code; remove all\noccurrences of all of these from existing code.\n\ngetnomodify  getopargs  getppaddr\n",
            "subsections": []
        },
        "AUTHORS": {
            "content": "The autodocumentation system was originally  added  to  the  Perl  core  by  Benjamin  Stuhl.\nDocumentation is by whoever was kind enough to document their functions.\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "config.h,   perlapi,   perlapio,   perlcall,   perlclib,   perlembed,  perlfilter,  perlguts,\nperlhacktips, perlinterp, perliol, perlmroapi, perlreapi, perlreguts, perlxs\n\nperl v5.38.2                                 2026-08-18                                PERLINTERN(1)",
            "subsections": []
        }
    },
    "summary": "perlintern - autogenerated documentation of purely internal Perl functions",
    "flags": [],
    "examples": [],
    "see_also": []
}