=for comment made from [perl-5.8.0] [pod/perlintern.pod] =head1 名前 perlintern - 純粋に B<内部的な> Perl 関数の自動生成ドキュメント =head1 説明 このファイルは Perl インタプリタの関数の自動生成されたドキュメントです. Perl の内部ドキュメント形式を使って文書化されていますが, Perl API の一部 としては扱われていません. 言い換えると, B<エクステンション用ではありません>. =head1 グローバル変数 =over 8 =item PL_DBsingle Perl が B<-d> スイッチによってデバッグモードで実行されているときに この SV は関数がシングルステップであるかを示す真偽値を取ります. シングルステップは各ステップ後に自動的に設定されます. これは Perl の $DB::single 変数に対応する C での変数です. C も参照してください. SV * PL_DBsingle =for hackers Found in file intrpvar.h =item PL_DBsub Perl が B<-d> スイッチによってデバッグモードで実行されているときに この GV に デバッグ中の関数名を保持する SV を格納されます. これは Perl の $DB::sub 変数に対応する C での変数です. C も参照してください. GV * PL_DBsub =for hackers Found in file intrpvar.h =item PL_DBtrace Perl が B<-d> スイッチによってデバッグモードで実行されているときに 使用されるトレース変数です. これは Perl の $DB::trace 変数に対応する C での変数です. C も参照してください. SV * PL_DBtrace =for hackers Found in file intrpvar.h =item PL_dowarn Perl の $^W 警告変数に対応する C での変数です. bool PL_dowarn =for hackers Found in file intrpvar.h =item PL_last_in_gv 最後の入力操作(C<< >>)に使われたファイルハンドルである GV です. GV* PL_last_in_gv =for hackers Found in file thrdvar.h =item PL_ofs_sv The output field separator - C<$,> in Perl space. SV* PL_ofs_sv =for hackers Found in file thrdvar.h =item PL_rs The input record separator - C<$/> in Perl space. SV* PL_rs =for hackers Found in file thrdvar.h =back =head1 GV Functions =over 8 =item is_gv_magical Returns C if given the name of a magical GV. Currently only useful internally when determining if a GV should be created even in rvalue contexts. C is not used at present but available for future extension to allow selecting particular classes of magical variable. bool is_gv_magical(char *name, STRLEN len, U32 flags) =for hackers Found in file gv.c =back =head1 IO Functions =over 8 =item start_glob Function called by C to spawn a glob (or do the glob inside perl on VMS). This code used to be inline, but now perl uses C this glob starter is only used by miniperl during the build process. Moving it away shrinks pp_hot.c; shrinking pp_hot.c helps speed perl up. PerlIO* start_glob(SV* pattern, IO *io) =for hackers Found in file doio.c =back =head1 Pad Data Structures =over 8 =item CvPADLIST CV's can have CvPADLIST(cv) set to point to an AV. For these purposes "forms" are a kind-of CV, eval""s are too (except they're not callable at will and are always thrown away after the eval"" is done executing). XSUBs don't have CvPADLIST set - dXSTARG fetches values from PL_curpad, but that is really the callers pad (a slot of which is allocated by every entersub). The CvPADLIST AV has does not have AvREAL set, so REFCNT of component items is managed "manual" (mostly in op.c) rather than normal av.c rules. The items in the AV are not SVs as for a normal AV, but other AVs: 0'th Entry of the CvPADLIST is an AV which represents the "names" or rather the "static type information" for lexicals. The CvDEPTH'th entry of CvPADLIST AV is an AV which is the stack frame at that depth of recursion into the CV. The 0'th slot of a frame AV is an AV which is @_. other entries are storage for variables and op targets. During compilation: C is set the the the names AV. C is set the the frame AV for the frame CvDEPTH == 1. C is set the body of the frame AV (i.e. AvARRAY(PL_comppad)). Itterating over the names AV itterates over all possible pad items. Pad slots that are SVs_PADTMP (targets/GVs/constants) end up having &PL_sv_undef "names" (see pad_alloc()). Only my/our variable (SVs_PADMY/SVs_PADOUR) slots get valid names. The rest are op targets/GVs/constants which are statically allocated or resolved at compile time. These don't have names by which they can be looked up from Perl code at run time through eval"" like my/our variables can be. Since they can't be looked up by "name" but only by their index allocated at compile time (which is usually in PL_op->op_targ), wasting a name SV for them doesn't make sense. The SVs in the names AV have their PV being the name of the variable. NV+1..IV inclusive is a range of cop_seq numbers for which the name is valid. For typed lexicals name SV is SVt_PVMG and SvSTASH points at the type. If SvFAKE is set on the name SV then slot in the frame AVs are a REFCNT'ed references to a lexical from "outside". If the 'name' is '&' the the corresponding entry in frame AV is a CV representing a possible closure. (SvFAKE and name of '&' is not a meaningful combination currently but could become so if C is implemented.) AV * CvPADLIST(CV *cv) =for hackers Found in file cv.h =back =head1 Stack Manipulation Macros =over 8 =item djSP Declare Just C. This is actually identical to C, and declares a local copy of perl's stack pointer, available via the C macro. See C. (Available for backward source code compatibility with the old (Perl 5.005) thread model.) djSP; =for hackers Found in file pp.h =item LVRET True if this op will be the return value of an lvalue subroutine =for hackers Found in file pp.h =back =head1 SV Manipulation Functions =over 8 =item report_uninit Print appropriate "Use of uninitialized variable" warning void report_uninit() =for hackers Found in file sv.c =item sv_add_arena Given a chunk of memory, link it to the head of the list of arenas, and split it into a list of free SVs. void sv_add_arena(char* ptr, U32 size, U32 flags) =for hackers Found in file sv.c =item sv_clean_all Decrement the refcnt of each remaining SV, possibly triggering a cleanup. This function may have to be called multiple times to free SVs which are in complex self-referential hierarchies. I32 sv_clean_all() =for hackers Found in file sv.c =item sv_clean_objs Attempt to destroy all objects not yet freed void sv_clean_objs() =for hackers Found in file sv.c =item sv_free_arenas Deallocate the memory used by all arenas. Note that all the individual SV heads and bodies within the arenas must already have been freed. void sv_free_arenas() =for hackers Found in file sv.c =back =head1 著者 The autodocumentation system was originally added to the Perl core by Benjamin Stuhl. Documentation is by whoever was kind enough to document their functions. =head1 関連項目 perlguts(1), perlapi(1)