perldebguts.pod

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· POD 代码 · 共 878 行 · 第 1/3 页

POD
878
字号
   exited Exporter::import  exited main::BEGIN  entering Config::myconfig   entering Config::FETCH   exited Config::FETCH   entering Config::FETCH   exited Config::FETCH   entering Config::FETCH=item 3  in  $=main::BEGIN() from /dev/null:0   in  $=Config::BEGIN() from lib/Config.pm:2    Package lib/Exporter.pm.    Package lib/Carp.pm.   Package lib/Config.pm.   in  $=Config::TIEHASH('Config') from lib/Config.pm:644   in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0    in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from li  in  @=Config::myconfig() from /dev/null:0   in  $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'PERL_SUBVERSION') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'osname') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'osvers') from lib/Config.pm:574=item 4  in  $=main::BEGIN() from /dev/null:0   in  $=Config::BEGIN() from lib/Config.pm:2    Package lib/Exporter.pm.    Package lib/Carp.pm.   out $=Config::BEGIN() from lib/Config.pm:0   Package lib/Config.pm.   in  $=Config::TIEHASH('Config') from lib/Config.pm:644   out $=Config::TIEHASH('Config') from lib/Config.pm:644   in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0    in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/    out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/   out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0  out $=main::BEGIN() from /dev/null:0  in  @=Config::myconfig() from /dev/null:0   in  $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574   out $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574   out $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574   out $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574   in  $=Config::FETCH(ref(Config), 'PERL_SUBVERSION') from lib/Config.pm:574=item 5  in  $=main::BEGIN() from /dev/null:0   in  $=Config::BEGIN() from lib/Config.pm:2    Package lib/Exporter.pm.    Package lib/Carp.pm.   out $=Config::BEGIN() from lib/Config.pm:0   Package lib/Config.pm.   in  $=Config::TIEHASH('Config') from lib/Config.pm:644   out $=Config::TIEHASH('Config') from lib/Config.pm:644   in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0    in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E    out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E   out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0  out $=main::BEGIN() from /dev/null:0  in  @=Config::myconfig() from /dev/null:0   in  $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574   out $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574   in  $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574   out $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574=item 6  in  $=CODE(0x15eca4)() from /dev/null:0   in  $=CODE(0x182528)() from lib/Config.pm:2    Package lib/Exporter.pm.   out $=CODE(0x182528)() from lib/Config.pm:0   scalar context return from CODE(0x182528): undef   Package lib/Config.pm.   in  $=Config::TIEHASH('Config') from lib/Config.pm:628   out $=Config::TIEHASH('Config') from lib/Config.pm:628   scalar context return from Config::TIEHASH:   empty hash   in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0    in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/Exporter.pm:171    out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/Exporter.pm:171    scalar context return from Exporter::export: ''   out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0   scalar context return from Exporter::import: ''=backIn all cases shown above, the line indentation shows the call tree.If bit 2 of C<frame> is set, a line is printed on exit from asubroutine as well.  If bit 4 is set, the arguments are printedalong with the caller info.  If bit 8 is set, the arguments areprinted even if they are tied or references.  If bit 16 is set, thereturn value is printed, too.When a package is compiled, a line like this    Package lib/Carp.pm.is printed with proper indentation.=head1 Debugging regular expressionsThere are two ways to enable debugging output for regular expressions.If your perl is compiled with C<-DDEBUGGING>, you may use theB<-Dr> flag on the command line.Otherwise, one can C<use re 'debug'>, which has effects atcompile time and run time.  It is not lexically scoped.=head2 Compile-time outputThe debugging output at compile time looks like this:  Compiling REx `[bc]d(ef*g)+h[ij]k$'  size 45 Got 364 bytes for offset annotations.  first at 1  rarest char g at 0  rarest char d at 0     1: ANYOF[bc](12)    12: EXACT <d>(14)    14: CURLYX[0] {1,32767}(28)    16:   OPEN1(18)    18:     EXACT <e>(20)    20:     STAR(23)    21:       EXACT <f>(0)    23:     EXACT <g>(25)    25:   CLOSE1(27)    27:   WHILEM[1/1](0)    28: NOTHING(29)    29: EXACT <h>(31)    31: ANYOF[ij](42)    42: EXACT <k>(44)    44: EOL(45)    45: END(0)  anchored `de' at 1 floating `gh' at 3..2147483647 (checking floating)         stclass `ANYOF[bc]' minlen 7   Offsets: [45]  	1[4] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 5[1]  	0[0] 12[1] 0[0] 6[1] 0[0] 7[1] 0[0] 9[1] 8[1] 0[0] 10[1] 0[0]  	11[1] 0[0] 12[0] 12[0] 13[1] 0[0] 14[4] 0[0] 0[0] 0[0] 0[0]  	0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 18[1] 0[0] 19[1] 20[0]    Omitting $` $& $' support.The first line shows the pre-compiled form of the regex.  The secondshows the size of the compiled form (in arbitrary units, usually4-byte words) and the total number of bytes allocated for theoffset/length table, usually 4+C<size>*8.  The next line shows thelabel I<id> of the first node that does a match.The   anchored `de' at 1 floating `gh' at 3..2147483647 (checking floating)         stclass `ANYOF[bc]' minlen 7 line (split into two lines above) contains optimizerinformation.  In the example shown, the optimizer found that the match should contain a substring C<de> at offset 1, plus substring C<gh>at some offset between 3 and infinity.  Moreover, when checking forthese substrings (to abandon impossible matches quickly), Perl will checkfor the substring C<gh> before checking for the substring C<de>.  Theoptimizer may also use the knowledge that the match starts (at theC<first> I<id>) with a character class, and no string shorter than 7 characters can possibly match.The fields of interest which may appear in this line are=over 4=item C<anchored> I<STRING> C<at> I<POS>=item C<floating> I<STRING> C<at> I<POS1..POS2>See above.=item C<matching floating/anchored>Which substring to check first.=item C<minlen>The minimal length of the match.=item C<stclass> I<TYPE>Type of first matching node.=item C<noscan>Don't scan for the found substrings.=item C<isall>Means that the optimizer information is all that the regularexpression contains, and thus one does not need to enter the regex engine atall.=item C<GPOS>Set if the pattern contains C<\G>.=item C<plus> Set if the pattern starts with a repeated char (as in C<x+y>).=item C<implicit>Set if the pattern starts with C<.*>.=item C<with eval> Set if the pattern contain eval-groups, such as C<(?{ code })> andC<(??{ code })>.=item C<anchored(TYPE)>If the pattern may match only at a handful of places, (with C<TYPE>being C<BOL>, C<MBOL>, or C<GPOS>.  See the table below.=backIf a substring is known to match at end-of-line only, it may befollowed by C<$>, as in C<floating `k'$>.The optimizer-specific information is used to avoid entering (a slow) regexengine on strings that will not definitely match.  If the C<isall> flagis set, a call to the regex engine may be avoided even when the optimizerfound an appropriate place for the match.Above the optimizer section is the list of I<nodes> of the compiledform of the regex.  Each line has format C<   >I<id>: I<TYPE> I<OPTIONAL-INFO> (I<next-id>)=head2 Types of nodesHere are the possible types, with short descriptions:    # TYPE arg-description [num-args] [longjump-len] DESCRIPTION    # Exit points    END		no	End of program.    SUCCEED	no	Return from a subroutine, basically.    # Anchors:    BOL		no	Match "" at beginning of line.    MBOL	no	Same, assuming multiline.    SBOL	no	Same, assuming singleline.    EOS		no	Match "" at end of string.    EOL		no	Match "" at end of line.    MEOL	no	Same, assuming multiline.    SEOL	no	Same, assuming singleline.    BOUND	no	Match "" at any word boundary    BOUNDL	no	Match "" at any word boundary    NBOUND	no	Match "" at any word non-boundary    NBOUNDL	no	Match "" at any word non-boundary    GPOS	no	Matches where last m//g left off.    # [Special] alternatives    ANY		no	Match any one character (except newline).    SANY	no	Match any one character.    ANYOF	sv	Match character in (or not in) this class.    ALNUM	no	Match any alphanumeric character    ALNUML	no	Match any alphanumeric char in locale    NALNUM	no	Match any non-alphanumeric character    NALNUML	no	Match any non-alphanumeric char in locale    SPACE	no	Match any whitespace character    SPACEL	no	Match any whitespace char in locale    NSPACE	no	Match any non-whitespace character    NSPACEL	no	Match any non-whitespace char in locale    DIGIT	no	Match any numeric character    NDIGIT	no	Match any non-numeric character    # BRANCH	The set of branches constituting a single choice are hooked    #		together with their "next" pointers, since precedence prevents    #		anything being concatenated to any individual branch.  The    #		"next" pointer of the last BRANCH in a choice points to the    #		thing following the whole choice.  This is also where the    #		final "next" pointer of each individual branch points; each    #		branch starts with the operand node of a BRANCH node.    #    BRANCH	node	Match this alternative, or the next...    # BACK	Normal "next" pointers all implicitly point forward; BACK    #		exists to make loop structures possible.    # not used    BACK	no	Match "", "next" ptr points backward.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?