The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

Deparse (3)
  • >> Deparse (3) ( Solaris man: Библиотечные вызовы )
  • 
    
    

    NAME

         B::Deparse - Perl compiler backend to produce perl code
    
    
    

    SYNOPSIS

         perl -MO=Deparse[,-uPACKAGE][,-p][,-l][,-sLETTERS] prog.pl
    
    
    

    DESCRIPTION

         B::Deparse is a backend module for the Perl compiler that
         generates perl source code, based on the internal compiled
         structure that perl itself creates after parsing a program.
         The output of B::Deparse won't be exactly the same as the
         original source, since perl doesn't keep track of comments
         or whitespace, and there isn't a one-to-one correspondence
         between perl's syntactical constructions and their compiled
         form, but it will often be close. When you use the -p
         option, the output also includes parentheses even when they
         are not required by precedence, which can make it easy to
         see if perl is parsing your expressions the way you
         intended.
    
         Please note that this module is mainly new and untested code
         and is still under development, so it may change in the
         future.
    
    
    

    OPTIONS

         As with all compiler backend options, these must follow
         directly after the '-MO=Deparse', separated by a comma but
         not any white space.
    
         -p  Print extra parentheses. Without this option, B::Deparse
             includes parentheses in its output only when they are
             needed, based on the structure of your program. With -p,
             it uses parentheses (almost) whenever they would be
             legal. This can be useful if you are used to LISP, or if
             you want to see how perl parses your input. If you say
    
                 if ($var & 0x7f == 65) {print "Gimme an A!"}
                 print ($which ? $a : $b), "\n";
                 $name = $ENV{USER} or "Bob";
    
             B::Deparse,-p will print
    
                 if (($var & 0)) {
                     print('Gimme an A!')
                 };
                 (print(($which ? $a : $b)), '???');
                 (($name = $ENV{'USER'}) or '???')
    
             which probably isn't what you intended (the '???' is a
             sign that perl optimized away a constant value).
    
    
         -uPACKAGE
             Normally, B::Deparse deparses the main code of a
             program, all the subs called by the main program (and
             all the subs called by them, recursively), and any other
             subs in the main:: package. To include subs in other
             packages that aren't called directly, such as AUTOLOAD,
             DESTROY, other subs called automatically by perl, and
             methods, which aren't resolved to subs until runtime,
             use the -u option. The argument to -u is the name of a
             package, and should follow directly after the 'u'.
             Multiple -u options may be given, separated by commas.
             Note that unlike some other backends, B::Deparse doesn't
             (yet) try to guess automatically when -u is needed --
             you must invoke it yourself.
    
         -l  Add '#line' declarations to the output based on the line
             and file locations of the original code.
    
         -sLETTERS
             Tweak the style of B::Deparse's output. At the moment,
             only one style option is implemented:
    
         C       Cuddle elsif, else, and continue blocks. For
                 example, print
    
                     if (...) {
                          ...
                     } else {
                          ...
                     }
    
                 instead of
    
                     if (...) {
                          ...
                     }
                     else {
                          ...
                     }
    
                 The default is not to cuddle.
    
    
    

    BUGS

         See the 'to do' list at the beginning of the module file.
    
    
    

    AUTHOR

         Stephen McCamant <alias@mcs.com>, based on an earlier
         version by Malcolm Beattie <mbeattie@sable.ox.ac.uk>.
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру