X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlcompile.pod;h=046576b28a1641f61cc6222575d1383576c0b3c0;hb=1c7d9af3bd40a8ae4d0b1feabf16378e4446d90a;hp=04dc019b36b3932b2aedaa178daa8df40de0f687;hpb=cb50131aab68ac6dda048612c6e853b8cb08701e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlcompile.pod b/pod/perlcompile.pod index 04dc019..046576b 100644 --- a/pod/perlcompile.pod +++ b/pod/perlcompile.pod @@ -9,7 +9,7 @@ internal form (a parse tree) which is then optimized before being run. Since version 5.005, Perl has shipped with a module capable of inspecting the optimized parse tree (C), and this has been used to write many useful utilities, including a module that lets -you turn your Perl into C source code that can be compiled into an +you turn your Perl into C source code that can be compiled into a native executable. The C module provides access to the parse tree, and other modules @@ -103,9 +103,9 @@ This is why all the back ends print: before producing any other output. -=head2 The Cross Referencing Back End (B::Xref) +=head2 The Cross Referencing Back End -The cross referencing back end produces a report on your program, +The cross referencing back end (B::Xref) produces a report on your program, breaking down declarations and uses of subroutines and variables (and formats) by file and subroutine. For instance, here's part of the report from the I program that comes with Perl: @@ -183,9 +183,6 @@ one-liners: rename $was, $_ unless $was eq $_; } -(this is the I program that comes in the I directory -of the Perl source distribution). - The decompiler has several options for the code it generates. For instance, you can set the size of each indent from 4 (as above) to 2 with: @@ -203,11 +200,11 @@ The B<-p> option adds parentheses where normally they are omitted: See L for more information on the formatting options. -=head2 The Lint Back End (B::Lint) +=head2 The Lint Back End -The lint back end inspects programs for poor style. One programmer's -bad style is another programmer's useful tool, so options let you -select what is complained about. +The lint back end (B::Lint) inspects programs for poor style. One +programmer's bad style is another programmer's useful tool, so options +let you select what is complained about. To run the style checker across your source code: @@ -239,9 +236,9 @@ execute the bytecode that it produces. The ByteLoader module provides this functionality. To turn a Perl program into executable byte code, you can use C -with the C<-b> switch: +with the C<-B> switch: - perlcc -b myperlprogram.pl + perlcc -B myperlprogram.pl The byte code is machine independent, so once you have a compiled module or program, it is as portable as Perl source (assuming that @@ -259,18 +256,20 @@ the Perl data structures directly. The program will still link against the Perl interpreter library, to allow for eval(), C, C, etc. -The C tool generates such executables when using the -opt +The C tool generates such executables when using the -O switch. To compile a Perl program (ending in C<.pl> or C<.p>): - perlcc -opt myperlprogram.pl + perlcc -O myperlprogram.pl To produce a shared library from a Perl module (ending in C<.pm>): - perlcc -opt Myperlmodule.pm + perlcc -O Myperlmodule.pm For more information, see L and L. +=head1 Module List for the Compiler Suite + =over 4 =item B @@ -306,8 +305,9 @@ I program that produces bytecode. =item B::Bblock -This module is used by the B::CC back end. It walks "basic blocks", -whatever they may be. +This module is used by the B::CC back end. It walks "basic blocks". +A basic block is a series of operations which is known to execute from +start to finish, with no possibility of branching or halting. =item B::Bytecode @@ -337,6 +337,14 @@ programs translated into C by B::CC can execute faster than normal interpreted programs. See L for details about usage. +=item B::Concise + +This module prints a concise (but complete) version of the Perl parse +tree. Its output is more customizable than the one of B::Terse or +B::Debug (and it can emulate them). This module useful for people who +are writing their own back end, or who are learning about the Perl +internals. It's not useful to the average programmer. + =item B::Debug This module dumps the Perl parse tree in verbose detail to STDOUT. @@ -368,12 +376,12 @@ can identify. See L for details about usage. =item B::Showlex This module prints out the my() variables used in a function or a -file. To gt a list of the my() variables used in the subroutine +file. To get a list of the my() variables used in the subroutine mysub() defined in the file myperlprogram: $ perl -MO=Showlex,mysub myperlprogram -To gt a list of the my() variables used in the file myperlprogram: +To get a list of the my() variables used in the file myperlprogram: $ perl -MO=Showlex myperlprogram @@ -418,7 +426,7 @@ names. The optimized C backend outputs code for more modules than it should (e.g., DirHandle). It also has little hope of properly handling -C outside the running subroutine (C is ok). +C outside the running subroutine (C is okay). C currently does not work at all in this backend. It also creates a huge initialization function that gives C compilers headaches. Splitting the initialization function gives