PERLCOMPILE 7

中文man手册

PERLCOMPILE

NAME
DESCRIPTION æè¿°
Using The Back Ends 使ç¨å端
Module List for the Compiler Suite ç¼è¯å¥ä»¶ç模åå表
KNOWN PROBLEMS å·²ç¥çé®é¢
AUTHOR ä½è
è¯è

NAME

perlcompile - å³äº Perl ç¼è¯å¨åç¿»è¯å¨çä»ç»

DESCRIPTION æè¿°

Perl ä¸ç´æ¯æä¸ä¸ªç¼è¯å¨çï¼ä½ çæºæä»¶ä¼è¢«ç¼è¯æä¸ç§å鍿 ¼å¼ï¼ä¸ç§è¯- æ³åææ ï¼ï¼å¹¶ä¸å¨è¿è¡åè¿ä¼è¢«ä¼åãä»5.005çæ¬èµ·ï¼Perl å¨åè¡æ¶å°±å¸¦æä¸ä¸ªæ¨¡åå¯ä»¥æ£æ¥ä¼åè¿çè¯- æ³åææï¼è¯¥æ¨¡åç§°ä½B模å("B")ï¼ï¼å®è¢«ç¨æ¥ç¼åè®¸å¤æç¨çåè½ï¼åæ¬ä¸ä¸ªå¯ä»¥å°ä½çPerl转æCæºä»£ççæ¨¡åï¼è¿æ·åç¼è¯åå°±å¯ä»¥å¾å°ä¸ä¸ªå¯æ§è¡çæä»¶äºã

"B" 模åæä¾äºè®¿é®è¯æ³åææ çæ¹æ³, å¶å®çä¸äºæ¨¡åï¼âå端âï¼å对è¿ä¸ªæ è¿è¡æä½ãä¸äºæå®ï¼è¯æ³æ ï¼ä»¥å- èççå½¢å¼è¾åºï¼è¿æä»¥Cæºä»£çå½¢å¼çè¾åºçï¼åè以åå¯è¯»çææ¬å½¢å¼è¾åºçãå¦ä¸äºéåæ´æ£µè¯- æ³æ ä»¥å»ºç«ä¸ä¸ªå³äºæä½¿ç¨çå- ç¨åºï¼æ¼å¼ååéç交åå¼ç¨è¡¨ãè¿æå¦å¤ä¸äºæ£æ¥ä½ç代çï¼ççææ²¡ææ¨¡æ£±ä¸¤å¯çæéãå¦ä¸äºåéæ°å°è¯- æ³æ å¯¼åºæPerl代ç ï¼å¯ä»¥èµ·ä»£ç ç¾åææ¯æ¶é¤æ··ä¹±ç代ç çä½ç¨ã

å ä¸º "B" 模åçæåç®çæ¯æä¾ä¸ç§è½å°Perlç¨åºè½¬ä¸ºå¯¹åºC代ççæ¹æ³ï¼æ¥çå°±è½æå®åæå¯æ§è¡æä»¶äºï¼æä»¥ "B" 模ååå®çé£äºå端模å就被认为æ¯âç¼è¯å¨âäºï¼å³ä½¿å®ä»¬å®é䏿²¡æåä»»ä½ç¼è¯æ¹é¢çäºãè¿ä¸ªç¼è¯å¨çå个é¨å精确ç说åºè¯¥æ¯ä¸ªâç¿»è¯å¨âï¼æèä¸ä¸ªâæ£è§å¨âï¼ä½æ¯ç¨Perlç人们æ³è¦ä¸ä¸ªâç¼è¯é项âè䏿¯ä¸ä¸ªå«åâæ£è§å¨âçå°ç©èºãä½è½æä¹åå¢ï¼

è¿ç¯æç«ç主è¦å容æ¯è®²Perlç¼è¯å¨çç¨æ³ï¼å®åå«ç模åï¼ææ·ä½¿ç¨é£äºæéè¦çå端模åï¼å®ä»¬æä»ä¹é®é¢ï¼å¦ä½è®©å®ä»¬å·¥ä½ã

Layout å¸å±

ç¼è¯å¨çå端æ¾å¨ "B::" éé¢ï¼èå端ï¼å°±æ¯ä½ ï¼ç¼è¯å¨ç使ç¨èï¼ææ¶åè¦ä¸ä¹äº¤äºçï¼æ¯ O 模åãä¸äºå端ï¼å¦ "B::C")ï¼æä¾äºä¸äºç¨åºï¼å¦perlccï¼æ¥éèæ¨¡åç夿æ§ã

è¿éæ¯ä¸äºå¼å¾ç¥éçéè¦å端ï¼å¹¶éæå®ä»¬ç®åçç¶æï¼ç¨0å°10çæ´æ°è¡¨ç¤ºãï¼ç¶æ0表示ç®å该é¨ååè½åªæ¯æä¸ä¸ªæ¡æ¶ï¼è¿æ²¡æå®ç°ï¼ç¶æ10åè¡¨ç¤ºå¦æè¿æBugçè¯ï¼æä»¬ä¼æå°å¾å¥æªçï¼ï¼
B::Bytecode

å°è¯æ³æ å- ææºå¨ç¸å³çæ¼å¼ï¼å¯ä¾BtyeLoader模åå¯ä»¥å¨ä»¥åéæ°è£å¥ãç¶æï¼5ï¼ä¸äºé¨åå¯ä»¥å·¥ä½ï¼ä¸äºä¸å¯ä»¥ï¼è¿æä¸äºè¿æ²¡ææµè¯ï¼

B::C

å建Cä»£ç æä»¶ï¼å¶ä¸åæ¬äºé建è¯- æ³æ åæ¢å¤è§£éå¨ç代ç ãç¶æï¼6ï¼è®¸å¤æåµä¸å¯ä»¥æ- £å¸¸å·¥ä½ï¼åæ¬ä½¿ç¨äºTkçç¨åºï¼ã

B::CC

æç§è¯æ³æ ä¸è¿è¡æä»£ç çè·¯å¾å建Cä»£ç æä»¶ãè¿æ¯æå Perl - C ç¿»è¯å¨çä¸ä¸ªï¼ä½æ¯å®çæç代ç å ä¹æ¯ä¸è½çæçï¼å ä¸ºå®æè¯- æ³æ ç¿»è¯æäºä¸ä¸ªå·¨å¤§çswitchç»ææ¥æä½Perlä¸- çç»æãæç»çç®çæ¯å¨perlç¨åºä¸ç»åºè¶³å¤çç±»åä¿¡æ¯åï¼å¯ä»¥å° perl æ°æ®ç»æçæä½è½¬æ¢ä¸º c 级å«çæ°æ®ç»æï¼å¯¹ int å float çæä½ãç¶æï¼5 (æäºå¯ä»¥å·¥ä½ï¼åæ¬ä¸å¤æç Tk 示ä¾).

B::Lint

å½åç°ä½ ç代ç ä¸ææ¨¡æ£±ä¸¤å¯çæé æ¶ä¼ååºè- ¦åãç¶æï¼6ï¼è®¸å¤æåµä¸å¯ä»¥æ£å¸¸å·¥ä½ï¼ä»ä»å¨å¾å°æ°çé¢ååå®ä¼åæ- ¢å·¥ä½ï¼ã

B::Deparse

éæ°çæPerl代çï¼è¯çæä»£çç¨ä¸è´çæ¼å¼ååºæ¥ãç¶æï¼8ï¼å®å·¥ä½å¾å¾å¥½ï¼åªæ¯ä¼ç¥å»ä¸äºæ¦æ¶©é¾æçé¨åï¼ã

B::Xref

çæå³äºç³æåå³äºåé以åå- ç¨åºçä½¿ç¨æåµçæ¥åãç¶æï¼8ï¼å®å·¥ä½å¾å¾å¥½ï¼åªæ¯ä»æä¸ç¹å»¶è¿æ¹é¢çbugsï¼ã

Using The Back Ends 使ç¨å端

æ¥ä¸æ¥çé¨åä»ç»ææ·ä½¿ç¨åç§åæ·çç¼è¯å¨å端ãä»ç»çé¡ºåºæç§å端çæçç¨åº¦æåï¼æä»¥æä¸ºç¨³å®çï¼ç»è¿äºéªè¯çåç«¯ä¼æåä»ç»ï¼è¿å¨è¯éªä¸- åæ²¡æå®æçå端就æ¾å°åé¢æè¿°äºã

O模åé»è®¤è®© -c å¼å³ææï¼è¿é²æ- ¢Perlå¨ç¼è¯å®ä»£çåè¿è¡ç¨åºãè¿ä¹æ¯ä¸ºä»ä¹ææçå端å¨äº§çä»»ä½è¾åºåé½ä¼æå°ä¸å¥ï¼

myperlprogram syntax OK

The Cross Referencing Back End 交åå¼ç¨å端

交åå¼ç¨å端ï¼B::Xrefï¼çæä¸ä¸ªå³äºä½ çç¨åºçæ¥è¡¨ï¼æåä¸ªç³æä»¥åå- ç¨åºï¼åéï¼åæ¬æ ¼å¼ï¼çä½¿ç¨æåµå奿件ä¸- å»ã䏾便¥è¯´ï¼è¿æä¸æ®µæèªå¯¹pod2manç¨åºåæåçæçæ¥è¡¨ï¼è¯¥ç¨åºæ¯Perlèªå¸¦çä¸ä¸ªä¾ç¨ï¼ï¼

Subroutine clear_noremap
Package (lexical)
$ready_to_print i1069, 1079
Package main
$& 1086
$. 1086
$0 1086
$1 1087
$2 1085, 1085
$3 1085, 1085
$ARGV 1086
%HTML_Escapes 1085, 1085

è¿éå±ç¤ºäº"clear_noremap" åç¨åºä¸åéçä½¿ç¨æåµãå°±ååé $ready_to_print æ¯ my() (è¯æ³) çä¸ä¸ªåéï¼å¨ç¬¬1069è¡è¢«å¼å¥( åæç¨çè¯æ¯introducedï¼ä¹å°±æ¯å¨ my() ä¸ç¬¬ä¸æ¬¡è¢«å®ä¹çææ )ï¼ç¶åå¨ç¬¬1079è¡è¯¥åé被使ç¨äºãä»ä¸»åï¼main packageï¼ä¸æ¥çåé $& åå¨ç¬¬1086è¡è¢«ä½¿ç¨, ççã

è¡å·åé¢å¯è½ä¼æä¸ä¸ªåæ¯ä½ä¸ºåç¼ï¼å®ä»¬çæææ¯ï¼

i

åé馿¬¡è¢«å¼å¥ (å¨my()ä¸ç³æ) ã

&

åç¨åºæèæ¹æ³çå¼ç¨ã

s

å®ä¹çåç¨åºã

r

å®ä¹çæ ¼å¼ã

交åå¼ç¨ä¸æä¸ºæç¨çéé¡¹å°±æ¯ææ¥è¡¨åå¥ä¸åçæä»¶ï¼ä¾å¦è¦æå³äº myperlprogram çæ¥è¡¨å奿件 report ä¸ï¼

$ perl -MO=Xref,-oreport myperlprogram

The Decompiling Back End åç¼è¯å端

åç¼è¯åç«¯å°æä½ çPerlè¯- æ³æéæ°åææºä»£çãçæçæºä»£çä¼æç§æç§æ¼å¼ç»ç»ï¼æä»¥è¿ä¸ªå端å¯ä»¥ç¨æ¥æ¶é¤ä»£çä¸- çæ··ä¹±é¨åãæ¤å端çåºæ¬ä½¿ç¨æ¹æ³å¦ä¸ï¼

$ perl -MO=Deparse myperlprogram

ä½ä¹è®¸é©¬ä¸ä¼åç°Perlå¹¶ä¸ç¥éå¦ä½ç»ä½ç代çåæ®µãä½è¦èªå·±æå¨æ·»å¥æ°è¡æ¥æè¿å¤§æ- ç代ç åå¼ãç¶èç°å¨ï¼è®©æä»¬çç代ç åªæä¸è¡æ¶æåµææ ·ï¼è¿ä¸ªå端ä¼åäºä»ä¹ï¼

$ perl -MO=Deparse -e ’$op=shift⎪⎪die "usage: $0
code [...]";chomp(@ARGV=<>)unless@ARGV; for(@ARGV){$was=$_;eval$op;
die$@ if$@; rename$was,$_ unless$was eq $_}’
-e syntax OK
$op = shift @ARGV ⎪⎪ die("usage: $0 code [...]");
chomp(@ARGV = <ARGV>) unless @ARGV;
foreach $_ (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename $was, $_ unless $was eq $_;
}

è¿ä¸ªåç«¯ä¹æåæ¡é项æ§å¶çæç代çï¼ä¸¾ä¾è¯´ï¼ä½å¯ä»¥æç¼©è¿ç尺寸设å¨4ï¼æå¤§ï¼å°2ä¹é´ï¼

$ perl -MO=Deparse,-si2 myperlprogram

-p å¼å³æ§å¶å¨å¸¸å¸¸å¯ä»¥ä¸å åæ¬å·çå°æ¹å ä¸å®ä»¬ï¼

$ perl -MO=Deparse -e ’print "Hello, world\n"’
-e syntax OK
print "Hello, world\n";
$ perl -MO=Deparse,-p -e ’print "Hello, world\n"’
-e syntax OK
print("Hello, world\n");

è¦ç¥éæ´å¤ï¼è¯·åè B::Deparse

Lint å端

lint å端 ï¼B::Lintï¼ æ£å¯ç¨åºä¸- ä¸å¥½çç¨åºé£æ¼ãä¸ä¸ªç¨åºè®¤ä¸ºçä¸å¥½é£æ¼å¯è½å¯¹å¦å¤ä¸ä¸ªç¨åºåæ¥è¯´æ¯ç¨èµ·æ¥å¾ææçå·¥å·ï¼æä»¥æé项让ä½è®¾å®åªäºä¸ä¸å°ä¼åå°æ£æ¥ã

è¦è¿è¡ä¸ä¸ªé£æ ¼æ£æ¥å¨æ£å¯ä½ ç代ç ï¼

$ perl -MO=Lint myperlprogram

è¦åæ¶å¯¹ä¸ä¸æå没æå®ä¹çåç¨åºçæ£æ¥ï¼

$ perl -MO=Lint,-context,-undefined-subs myperlprogram

è¦ç¥éæ´å¤çé项信æ¯ï¼è¯·ç B::Lint

The Simple C Back End ç®åçCå端

è¿ä¸ªæ¨¡åç¨æ¥æä½ çPerlç¨åºçåé¨ç¼è¯ç¶æåå¨å°ä¸ä¸ªCä»£ç æä»¶ä¸- å»ï¼èçæçC代çå°±å¯ä»¥è¢«ç¹å®å¹³å°ä¸çCç¼è¯å¨è½¬æ¢æä¸ä¸ªå¯æ§è¡æä»¶äºãæåçç¨åºè¿ä¼åPerlè§£éå¨çåºæä»¶éæé¾æ¥èµ·æ¥ï¼æä»¥å®ä¸ä¼èçä½çç£ç空é´ï¼é¤éä½çPerlæ¯ç¨å±äº«çåºæä»¶å建çï¼ææ¯ç¨åºå¤§å°ï¼ç¶èï¼å¦ä¸æ¹é¢ï¼ç¨åºå¯å¨èµ·æ¥ä¼å¿«ä¸äºã

"perlcc" å·¥å·ç¼ºçæ¯çæä»¥ä¸ç坿§è¡æä»¶ã

perlcc myperlprogram.pl

The Bytecode Back End åèç å端

è¿ä¸ªæ¨¡ååªæå¨ä½ è½å¤æ¾å°ä¸ç§æ¹æ³æ¥è£å¥å¹¶è¿è¡å®çæçå- èç æ¶æä¼æ¾å¾æç¨ãByteLoader模åæä¾äºè¿é¡¹åè½ã

è¦æPerlè½¬æ¢æå¯æ§è¡çåèç ï¼ä½ å¯ä»¥ä½¿ç¨ "perlcc" ç "-B" å¼å³:

perlcc -B myperlprogram.pl

å

- èçæ¯åæºå¨ç±»åæå³çï¼æä»¥ä¸æ¦ä½ç¼è¯äºä¸ä¸ªæ¨¡åææ¯ç¨åºï¼å®å°±å¯ä»¥åPerlæºä»£ç䏿·å·æå¯ç§»æ¤æ§ãï¼å设é£ä¸ªæ¨¡åæèç¨åºç使ç¨èæä¸ä¸ªè¶³å¤æ°çPerlè§£é卿¥å¯¹å- èç è¿è¡è§£ç ï¼

æä¸äºéé¡¹ç¨æ¥æ§å¶è¦çæçå- èç çæ§è´¨åå³äºä¼åæ¹é¢çåæ°ï¼è¦ç¥éè¿äºé项çè¯¦ç»æåµï¼è¯·åè B::Bytecode

The Optimized C Back End ä¼åçCå端

ä¼åçCå端æç§è¯æ³æ ä¸è¿è¡æä»£ç çè·¯å¾å°ä½ çPerlç¨åºè½¬æ¢æç- æç(使¯è¢«ä¼åäºç)C代çæä»¶ãè¿ä¸ªCç¨åºä¼ç´æ¥å¯¹Perlçæ°æ®ç»æè¿è¡æä½ï¼èä¸ä¹ä¼é¾æ¥Perlçè§£éå¨çåºæä»¶ï¼ä»¥æ¯æ eval(), "s///e", "require" ççã

"perlcc" å·¥å·ä½¿ç¨ -O å¼å³çæè¿ç§å¯æ§è¡æä»¶ãè¦ç¼è¯ä¸ä¸ªPerlç¨åºï¼ä»¥".pl" æè".p" ç»å°¾ï¼ï¼

perlcc -O myperlprogram.pl

ä»Perl模åå建ä¸ä¸ªå±äº«åºæä»¶ï¼ä»¥ ".pm" ç»å°¾ï¼ï¼

perlcc -O Myperlmodule.pm

ç¥éæ´å¤ï¼è¯·åè perlcc å B::CC.

Module List for the Compiler Suite ç¼è¯å¥ä»¶ç模åå表

B

è¿ä¸ªæ¨¡åæ¯ä¸ä¸ªèªççï¼introspectiveï¼ç¨Javaçæ¯è¯- 说就æ¯âreflectiveâï¼æ¨¡åï¼å许Perlç¨åºå®¡è§èªå·±çåé¨ãå端模å齿¯éè¿è¿ä¸ªæ¨¡åæ¥è®¿é®è¯- æ³åææ çãèä½ ï¼å端模åçç¨æ·ï¼å°±ä¸ç¨åB模åæäº¤éäºã

O

è¿ä¸ªæ¨¡åæ¯ç¼è¯å¨çé£äºå端çå端ï¼ä¸è¬åè¿æ ·è¿è¡è°ç¨ï¼

$ perl -MO=Deparse myperlprogram

è¿ä¸å¨è¿ä¸ªPerlç¨åºä¸ä½¿ç¨ "use O ’Deparse’" ç¸åã

B::Asmdata

è¿ä¸ªæ¨¡å被 B::Assembler 模å使ç¨ï¼è B::Assembler 忥ç被 B::Bytecode 模å使ç¨ï¼B::Bytecode䏿ä¸ä¸ªåèç å½¢å¼åæ¾çè¯- æ³åææä»¥ä¾¿ä»¥åè£å¥ãB::Asmdataèªå·±å¹¶ä¸ç®æ¯ä¸ä¸ªå端ï¼ä¹è®¸è¯´å®æ¯å端çä¸ä¸ªç»ä»¶æ¯è¾å¥½ã

B::Assembler

è¿ä¸ªæ¨¡åå¯ä»¥å°è¯æ³æ è½¬ä¸ºéåå- å¨åæ¢å¤çæ°æ®å½¢å¼ã宿¬èº«ä¸æ¯ä¸ä¸ªå端ï¼ä½æ¯ç®æ¯æä¸ªå端çä¸ä¸ªç»ä»¶ã assemble ç¨åºç¨å®æ¥çæåèç ã

B::Bblock

è¿ä¸ªæ¨¡å被 B::CC å端使ç¨ãå®è¢«ç¨æ¥è¿è¡âåºæ¬åâãä¸ä¸ªåºæ¬åå°±æ¯ä¸æ®µä»å¤´å°å°¾çæä½ï¼ä¸- é´æ¯ä¸å¯è½å䏿¥æåºç°åæ¯çã

B::Bytecode

è¿ä¸ªæ¨¡åå¯ä»¥ç±ç¨åºçè¯æ³æ çæåèç ãçæçåèç ä¼è¢«åå¥å°æä»¶ä¸- ï¼ä»¥åè¿è½è¢«éæ°æ¢å¤æè¯- æ³æãæ»çç®æå°±æ¯ä¸ºäºåªè¿è¡ä¸æ¬¡è´¹æ¶çç¨åºç¼è¯å·¥ä½ï¼ç¶åæè§£éå¨çç¶æå- 奿件ä¸ï¼è¿è¡ç¨åºæ¶åæç¶æä»æä»¶ä¸æ¢å¤ã å·ä½çç¨æ³è¯·åè "The Bytecode Back End" ã

B::C

è¿ä¸ªæ¨¡åæç§è¯- æ³æåå¶ä»ä¸äºè§£éå¨çå鍿°æ®ç»æçæC代çãç¶åä½åç¼è¯çæçC代çï¼å°±å¯ä»¥å¾å°ä¸ä¸ªå¯æ§è¡æä»¶äºãè¿è¡æ¶è¿ä¸ªå¯æ§è¡æä»¶ä¼æ¢å¤è§£éå¨ååé¨çæ°æ®ç»ææ¥è½¬å¨ç¨åºãè¦ç¥éç»è请åè "The Simple C Back End"ã

B::CC

è¿ä¸ªæ¨¡åæç§ä½ ç¨åºä¸çæä½çæC代ç ãä¸å B::C 模ååªæ¯æè§£éåå®çç¶æå- å¥Cç¨åºä¸ï¼ B::CC 模åçæçæ¯ä¸åå«è§£éå¨çC ç¨åºï¼æä»¥ç¨ B::CC ç¿»è¯çC ç¨åºè¿è¡é度æ¯ä¸è¬çè§£éæ§è¡çç¨åºé度è¦å¿«ï¼å·ä½ç¨æ³è¯·åè "The Optimized C Back End" ã

B::Concise

è¿ä¸ªæ¨¡åè¾åºä¸ä¸ªç®æ´ç (使¯å®æ´ç) Perl åææ ãå®çè¾åºæ¯ B::Terse æè B::Debug çç»ææ´å®¹æå®å¶ (å¹¶ä¸ä¹å¯ä»¥æ¨¡ä»¿å®ä»¬)ãè¿ä¸ªæ¨¡å对书åèªå·±çåç«¯ï¼æèå¦ä¹  Perl å®ç°ç人æç¨ãå®å¯¹ä¸è¬çç¨åºå没æç¨å¤ã

B::Debug

è¿ä¸ªæ¨¡åæPerlè¯æ³åææ é常详ç»å°è¾åºå°æ åè¾åºä¸å»ãè¿å¯¹æ- £å¨ç¼åèªå·±çå端ç¨åºï¼ææ- £å¨æ·±å¥Perlå鍿ºå¶ç人们æ¥è¯´æ¯é常æç¨çã对æ®éç¨åºåæ¥è¯´å没ä»ä¹ç¨ã

B::Deparse

è¿ä¸ªæ¨¡åå°ç¼è¯äºçè¯- æ³æåååæå¾åºPerlæºä»£çï¼è¿å¨è°è¯ææ¯åç¼è¯ä»äººä»£ççæ¶å伿¯é常æç¨çãå¦å¤è®©å®ä¸ºä½èªå·±ç代çåä¸äºç¾åå·¥ä½ä¹æ¯å¯ä»¥çãè¦ç¥éç»è请åè "The Decompiling Back End"ã

B::Disassembler

è¿ä¸ªæ¨¡åæåèç æ¢å¤æè¯- æ³æ ï¼å®æ¬èº«ä¸æ¯ä¸ä¸ªå端ï¼èæ¯æä¸ªå端çä¸ä¸ªç»ä»¶ãå®ä¼è¢«åå- èç å¨ä¸èµ·ç disassemble ç¨åºä½¿ç¨ã

B::Lint

è¿ä¸ªæ¨¡å审è§ä½ç代çç¼è¯åçæ¼å¼ï¼å¹¶ä¸æ¾å°é£äºå®¹æè®©äººç±çï¼å´åä¸è³äºå¼èµ·è- ¦åçå°æ¹ã䏾便¥è¯´ï¼ä½¿ç¨ä¸ä¸ªæ éå容ï¼scalar contextï¼çæ°ç»ï¼è䏿¾å¼å°ç³ææ "scalar(@array)" ãè¿ç§æåµæ¯ä¼è¢« Lint æ ç¤ºåºæ¥çãè¦ç¥éç»è请åè "The Lint Back End"ã

B::Showlex

è¿ä¸ªæ¨¡åæå°åº my() ä¸çåéå¨å½æ°ææ¯æä»¶ä¸çä½¿ç¨æåµï¼ä»¥å¾å°ä¸ä»½å³äº my() ä¸çåéå¨å®ä¹äºæä»¶ myperlprogram ä¸çåç¨åº mysub() ä¸- çä½¿ç¨æåµçå表ï¼

$ perl -MO=Showlex,mysub myperlprogram

è¦å¾å°ä¸ä»½å³äº my() ä¸çåé卿件myperlprogramä¸çä½¿ç¨æåµçå表ï¼

$ perl -MO=Showlex myperlprogram

[ BROKEN ]

B::Stackobj

è¿ä¸ªæ¨¡å被 B::CC 模åè°ç¨ã宿¬èº«ä¸æ¯å端ï¼ä½æ¯æ¯æä¸ªå端çä¸ä¸ªç»ä»¶ã

B::Stash

è¿ä¸ªæ¨¡å被 perlcc ç¨åºè°ç¨ï¼èperlccå¯ä»¥æä¸ä¸ªæ¨¡åç¼è¯æå¯æ§è¡æä»¶ãB::Stash æç¨åºä½¿ç¨ç符å·è¡¨æå°åºæ¥ï¼å¹¶è¢«ç¨æ¥é»æ¢ B::CC 为 B::* ææ¯ O 模åçæC 代ç ã宿¬èº«ä¸æ¯å端ï¼ä½æ¯æ¯æä¸ªå端çä¸ä¸ªç»ä»¶ã

B::Terse

è¿ä¸ªæ¨¡åç¨æ¥æå°è¯- æ³æ çå容ï¼ä½æ¯ä¿¡æ¯ä¸ä¼æB::Debugæå°çé£ä¹å¤ãå¯¹æ¯æ¥è¯´ï¼"print "Hello, world."" ä¼è®© B::Debug 产ç96è¡è¾åºï¼ 使¯ B::Terseåªä¼æ6è¡ã

è¿ä¸ªæ¨¡å对æ£å¨ç¼åèªå·±çå端ç¨åºï¼ææ- £å¨æ·±å¥Perlå鍿ºå¶ç人们æ¥è¯´æ¯é常æç¨çã对æ®éç¨åºåæ¥è¯´å没ä»ä¹ç¨ã

B::Xref

è¿ä¸ªæ¨¡åæå°ä¸ä¸ªæ¥è¡¨ååºå¨ç¨åºä¸åªéå®ä¹å使ç¨äºåªäºåéï¼å- ç¨åºææ ¼å¼ï¼æ¥è¡¨è¿ä¼ååºç¨åºè£å¥ç模åãè¦ç¥é详ç»çä½¿ç¨æ¹æ³ï¼è¯·åè "The Cross Referencing Back End" ã

KNOWN PROBLEMS å·²ç¥çé®é¢

ç®å C å端ç®ååªä¿å以åç¬¦åæ°åå½åçç±»å说æ

ä¼åç C å端ä¼ä¸ºä¸äºä¸è¯¥ä¸ºä¹è¾åºç模åï¼æ¯å¦è¯´ DirHandleï¼è¾åºä»£ç ãèä¸å®ä¸å¤ªå¯è½æ£ç¡®å°å¤çæ£å¨æ§è¡çåç¨åºå¤é¨çgotoè¯- å¥ï¼goto &sub is OKï¼ãç®å "goto LABEL" è¯å¥å¨è¿ä¸ªå端ä¸- å®å¨ä¸ä¼å·¥ä½ãä»è¿ä¼çæè®©C ç¼è¯å¨å¤´çææ¯ç巨大çåå§å彿°ã妿æè¿ä¸ªåå§å彿°åå²å¼æ¯è½å¾å°æ¯ç®åæ´å¥½çææçãå¦å¤çé®é¢åæ¬ï¼å¤çæç¬¦å·çæ°å- ¦é®é¢æ¶ä¸è½æ£ç¡®å·¥ä½ï¼ä¸äºæä½ç å¦ææç§é»è®¤çæä½ç æºå¶å¤çä¹ä¼æéæ- £å¸¸çç»æã

BEGIN{} åä¼å¨ç¼è¯ä½ ç代ç çæ¶å被æ§è¡ãææçå¨BEGIN{} ä¸- åå§åçå¤é¨ç¶æï¼å¦æå¼çæä»¶ï¼åå§çæ°æ®åºè¿ç»ççï¼ä¼æä¸æ- £ç¡®ç表ç°ã为äºè§£å³è¿ä¸ªé®é¢ï¼Perlä¸åæä¾äºä¸ä¸ª INIT{} 忥坹åºç¨åºç¼è¯ä¹åï¼æ- £å¼è¿è¡ä¹åè¦æ§è¡ç飿®µä»£ç ãæ§è¡çé¡ºåºæ¯ï¼BEGIN{}, (å端ç¼è¯ç¨åºå¯è½è¿æ¶ä¼ä¿åç¶æ), INIT{}, ç¨åºè¿è¡, END{}ã

AUTHOR ä½è

è¿ç¯æç« æåæ¯ç± Nathan Torkington ç¼åï¼ç°å¨ç±é®ä»¶å表(perl5-porters@perl.org.)ç»´æ¤

è¯è

éé(sunny65535) <sunny65535@263.net>

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh