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 + -
显示快捷键?