home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 July / AMIGA_1996_7.BIN / ausgabe_7_96 / pd-programmierung / perl5_002bin.lha / man / catp / perlrun.0 < prev    next >
Text File  |  1996-03-02  |  31KB  |  595 lines

  1.  
  2.  
  3.  
  4. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  5.  
  6.  
  7. NNNNAAAAMMMMEEEE
  8.        perlrun - how to execute the Perl interpreter
  9.  
  10. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  11.        ppppeeeerrrrllll [----aaaaccccddddhhhhnnnnppppPPPPssssSSSSTTTTuuuuUUUUvvvvwwww] [----0000[[[[ooooccccttttaaaallll]] [----DDDD[[[[nnnnuuuummmmbbbbeeeerrrr////lllliiiisssstttt]]]]]
  12.             [----FFFF rrrreeeeggggeeeexxxxpppp] [----iiii[[[[eeeexxxxtttteeeennnnssssiiiioooonnnn]] [B<-_l_tdir<gt>>]
  13.             [----llll[[[[ooooccccttttaaaallll]]]]] [----xxxx[[[[ddddiiiirrrr]]]]]      [programfile | ----eeee ccccoooommmmmmmmaaaannnndddd]
  14.        [argument ...]
  15.  
  16. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  17.        Upon startup, Perl looks for your script in one of the
  18.        following places:
  19.  
  20.        1.  Specified line by line via ----eeee switches on the command
  21.            line.
  22.  
  23.        2.  Contained in the file specified by the first filename
  24.            on the command line.  (Note that systems supporting
  25.            the #! notation invoke interpreters this way.)
  26.  
  27.        3.  Passed in implicitly via standard input.  This only
  28.            works if there are no filename arguments--to pass
  29.            arguments to a STDIN script you must explicitly
  30.            specify a "-" for the script name.
  31.  
  32.        With methods 2 and 3, Perl starts parsing the input file
  33.        from the beginning, unless you've specified a ----xxxx switch,
  34.        in which case it scans for the first line starting with #!
  35.        and containing the word "perl", and starts there instead.
  36.        This is useful for running a script embedded in a larger
  37.        message.  (In this case you would indicate the end of the
  38.        script using the __END__ token.)
  39.  
  40.        As of Perl 5, the #! line is always examined for switches
  41.        as the line is being parsed.  Thus, if you're on a machine
  42.        that only allows one argument with the #! line, or worse,
  43.        doesn't even recognize the #! line, you still can get
  44.        consistent switch behavior regardless of how Perl was
  45.        invoked, even if ----xxxx was used to find the beginning of the
  46.        script.
  47.  
  48.        Because many operating systems silently chop off kernel
  49.        interpretation of the #! line after 32 characters, some
  50.        switches may be passed in on the command line, and some
  51.        may not; you could even get a "-" without its letter, if
  52.        you're not careful.  You probably want to make sure that
  53.        all your switches fall either before or after that 32
  54.        character boundary.  Most switches don't actually care if
  55.        they're processed redundantly, but getting a - instead of
  56.        a complete switch could cause Perl to try to execute
  57.        standard input instead of your script.  And a partial ----IIII
  58.        switch could also cause odd results.
  59.  
  60.        Parsing of the #! switches starts wherever "perl" is
  61.  
  62.  
  63.  
  64. 15/Feb/96                perl 5.002 with                        1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  71.  
  72.  
  73.        mentioned in the line.  The sequences "-*" and "- " are
  74.        specifically ignored so that you could, if you were so
  75.        inclined, say
  76.  
  77.            ####!!!!////bbbbiiiinnnn////sssshhhh -------- #### ----****---- ppppeeeerrrrllll ----****---- ----pppp
  78.            eeeevvvvaaaallll ''''eeeexxxxeeeecccc ppppeeeerrrrllll $$$$0000 ----SSSS $$$${{{{1111++++""""$$$$@@@@""""}}}}''''
  79.                iiiiffff 0000;;;;
  80.  
  81.        to let Perl see the ----pppp switch.
  82.  
  83.        If the #! line does not contain the word "perl", the
  84.        program named after the #! is executed instead of the Perl
  85.        interpreter.  This is slightly bizarre, but it helps
  86.        people on machines that don't do #!, because they can tell
  87.        a program that their SHELL is /usr/bin/perl, and Perl will
  88.        then dispatch the program to the correct interpreter for
  89.        them.
  90.  
  91.        After locating your script, Perl compiles the entire
  92.        script to an internal form.  If there are any compilation
  93.        errors, execution of the script is not attempted.  (This
  94.        is unlike the typical shell script, which might run
  95.        partway through before finding a syntax error.)
  96.  
  97.        If the script is syntactically correct, it is executed.
  98.        If the script runs off the end without hitting an _e_x_i_t_(_)
  99.        or _d_i_e_(_) operator, an implicit eeeexxxxiiiitttt((((0000)))) is provided to
  100.        indicate successful completion.
  101.  
  102.        SSSSwwwwiiiittttcccchhhheeeessss
  103.  
  104.        A single-character switch may be combined with the
  105.        following switch, if any.
  106.  
  107.            ####!!!!////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll ----ssssppppiiii....bbbbaaaakkkk    #### ssssaaaammmmeeee aaaassss ----ssss ----pppp ----iiii....bbbbaaaakkkk
  108.  
  109.        Switches include:
  110.  
  111.        ----0000_d_i_g_i_t_s
  112.             specifies the record separator ($$$$////) as an octal
  113.             number.  If there are no digits, the null character
  114.             is the separator.  Other switches may precede or
  115.             follow the digits.  For example, if you have a
  116.             version of ffffiiiinnnndddd which can print filenames terminated
  117.             by the null character, you can say this:
  118.  
  119.                 ffffiiiinnnndddd .... ----nnnnaaaammmmeeee ''''****....bbbbaaaakkkk'''' ----pppprrrriiiinnnntttt0000 |||| ppppeeeerrrrllll ----nnnn0000eeee uuuunnnnlllliiiinnnnkkkk
  120.  
  121.             The special value 00 will cause Perl to slurp files
  122.             in paragraph mode.  The value 0777 will cause Perl to
  123.             slurp files whole since there is no legal character
  124.             with that value.
  125.  
  126.  
  127.  
  128.  
  129.  
  130. 15/Feb/96                perl 5.002 with                        2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  137.  
  138.  
  139.        ----aaaa   turns on autosplit mode when used with a ----nnnn or ----pppp.
  140.             An implicit split command to the @@@@FFFF array is done as
  141.             the first thing inside the implicit while loop
  142.             produced by the ----nnnn or ----pppp.
  143.  
  144.                 ppppeeeerrrrllll ----aaaannnneeee ''''pppprrrriiiinnnntttt ppppoooopppp((((@@@@FFFF)))),,,, """"\\\\nnnn"""";;;;''''
  145.  
  146.             is equivalent to
  147.  
  148.                 wwwwhhhhiiiilllleeee ((((<<<<>>>>)))) {{{{
  149.                     @@@@FFFF ==== sssspppplllliiiitttt(((('''' ''''))));;;;
  150.                     pppprrrriiiinnnntttt ppppoooopppp((((@@@@FFFF)))),,,, """"\\\\nnnn"""";;;;
  151.                 }}}}
  152.  
  153.             An alternate delimiter may be specified using ----FFFF.
  154.  
  155.        ----cccc   causes Perl to check the syntax of the script and
  156.             then exit without executing it.  Actually, it _w_i_l_l
  157.             execute BBBBEEEEGGGGIIIINNNN, EEEENNNNDDDD, and uuuusssseeee blocks, since these are
  158.             considered as occurring outside the execution of your
  159.             program.
  160.  
  161.        ----dddd   runs the script under the Perl debugger.  See the
  162.             _p_e_r_l_d_e_b_u_g manpage.
  163.  
  164.        ----dddd::::ffffoooooooo
  165.             runs the script under the control of a debugging or
  166.             tracing module installed as Devel::foo. E.g.,
  167.             ----dddd::::DDDDPPPPrrrrooooffff executes the script using the Devel::DProf
  168.             profiler.  See the _p_e_r_l_d_e_b_u_g manpage.
  169.  
  170.        ----DDDD_n_u_m_b_e_r
  171.  
  172.        ----DDDD_l_i_s_t
  173.             sets debugging flags.  To watch how it executes your
  174.             script, use ----DDDD11114444.  (This only works if debugging is
  175.             compiled into your Perl.)  Another nice value is
  176.             ----DDDD1111000022224444, which lists your compiled syntax tree.  And
  177.             ----DDDD555511112222 displays compiled regular expressions. As an
  178.             alternative specify a list of letters instead of
  179.             numbers (e.g. ----DDDD11114444 is equivalent to ----DDDDttttllllssss):
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196. 15/Feb/96                perl 5.002 with                        3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  203.  
  204.  
  205.                     1111  pppp  TTTTooookkkkeeeennnniiiizzzziiiinnnngggg aaaannnndddd PPPPaaaarrrrssssiiiinnnngggg
  206.                     2222  ssss  SSSSttttaaaacccckkkk SSSSnnnnaaaappppsssshhhhoooottttssss
  207.                     4444  llll  LLLLaaaabbbbeeeellll SSSSttttaaaacccckkkk PPPPrrrroooocccceeeessssssssiiiinnnngggg
  208.                     8888  tttt  TTTTrrrraaaacccceeee EEEExxxxeeeeccccuuuuttttiiiioooonnnn
  209.                    11116666  oooo  OOOOppppeeeerrrraaaattttoooorrrr NNNNooooddddeeee CCCCoooonnnnssssttttrrrruuuuccccttttiiiioooonnnn
  210.                    33332222  cccc  SSSSttttrrrriiiinnnngggg////NNNNuuuummmmeeeerrrriiiicccc CCCCoooonnnnvvvveeeerrrrssssiiiioooonnnnssss
  211.                    66664444  PPPP  PPPPrrrriiiinnnntttt PPPPrrrreeeepppprrrroooocccceeeessssssssoooorrrr CCCCoooommmmmmmmaaaannnndddd ffffoooorrrr ----PPPP
  212.                   111122228888  mmmm  MMMMeeeemmmmoooorrrryyyy AAAAllllllllooooccccaaaattttiiiioooonnnn
  213.                   222255556666  ffff  FFFFoooorrrrmmmmaaaatttt PPPPrrrroooocccceeeessssssssiiiinnnngggg
  214.                   555511112222  rrrr  RRRReeeegggguuuullllaaaarrrr EEEExxxxpppprrrreeeessssssssiiiioooonnnn PPPPaaaarrrrssssiiiinnnngggg
  215.                  1111000022224444  xxxx  SSSSyyyynnnnttttaaaaxxxx TTTTrrrreeeeeeee DDDDuuuummmmpppp
  216.                  2222000044448888  uuuu  TTTTaaaaiiiinnnnttttiiiinnnngggg CCCChhhheeeecccckkkkssss
  217.                  4444000099996666  LLLL  MMMMeeeemmmmoooorrrryyyy LLLLeeeeaaaakkkkssss ((((nnnnooootttt ssssuuuuppppppppoooorrrrtttteeeedddd aaaannnnyyyymmmmoooorrrreeee))))
  218.                  8888111199992222  HHHH  HHHHaaaasssshhhh DDDDuuuummmmpppp -------- uuuussssuuuurrrrppppssss vvvvaaaalllluuuueeeessss(((())))
  219.                 11116666333388884444  XXXX  SSSSccccrrrraaaattttcccchhhhppppaaaadddd AAAAllllllllooooccccaaaattttiiiioooonnnn
  220.                 33332222777766668888  DDDD  CCCClllleeeeaaaannnniiiinnnngggg UUUUpppp
  221.  
  222.  
  223.        ----eeee _c_o_m_m_a_n_d_l_i_n_e
  224.             may be used to enter one line of script.  If ----eeee is
  225.             given, Perl will not look for a script filename in
  226.             the argument list.  Multiple ----eeee commands may be given
  227.             to build up a multi-line script.  Make sure to use
  228.             semicolons where you would in a normal program.
  229.  
  230.        ----FFFF_r_e_g_e_x_p
  231.             specifies a regular expression to split on if ----aaaa is
  232.             also in effect.  If regexp has //////// around it, the
  233.             slashes will be ignored.
  234.  
  235.        ----iiii_e_x_t_e_n_s_i_o_n
  236.             specifies that files processed by the <<<<>>>> construct
  237.             are to be edited in-place.  It does this by renaming
  238.             the input file, opening the output file by the
  239.             original name, and selecting that output file as the
  240.             default for _p_r_i_n_t_(_) statements.  The extension, if
  241.             supplied, is added to the name of the old file to
  242.             make a backup copy.  If no extension is supplied, no
  243.             backup is made.  From the shell, saying
  244.  
  245.                 $$$$ ppppeeeerrrrllll ----pppp ----iiii....bbbbaaaakkkk ----eeee """"ssss////ffffoooooooo////bbbbaaaarrrr////;;;; ............ """"
  246.  
  247.             is the same as using the script:
  248.  
  249.                 ####!!!!////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll ----ppppiiii....bbbbaaaakkkk
  250.                 ssss////ffffoooooooo////bbbbaaaarrrr////;;;;
  251.  
  252.             which is equivalent to
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262. 15/Feb/96                perl 5.002 with                        4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  269.  
  270.  
  271.                 ####!!!!////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll
  272.                 wwwwhhhhiiiilllleeee ((((<<<<>>>>)))) {{{{
  273.                     iiiiffff (((($$$$AAAARRRRGGGGVVVV nnnneeee $$$$oooollllddddaaaarrrrggggvvvv)))) {{{{
  274.                         rrrreeeennnnaaaammmmeeee(((($$$$AAAARRRRGGGGVVVV,,,, $$$$AAAARRRRGGGGVVVV .... ''''....bbbbaaaakkkk''''))));;;;
  275.                         ooooppppeeeennnn((((AAAARRRRGGGGVVVVOOOOUUUUTTTT,,,, """">>>>$$$$AAAARRRRGGGGVVVV""""))));;;;
  276.                         sssseeeelllleeeecccctttt((((AAAARRRRGGGGVVVVOOOOUUUUTTTT))));;;;
  277.                         $$$$oooollllddddaaaarrrrggggvvvv ==== $$$$AAAARRRRGGGGVVVV;;;;
  278.                     }}}}
  279.                     ssss////ffffoooooooo////bbbbaaaarrrr////;;;;
  280.                 }}}}
  281.                 ccccoooonnnnttttiiiinnnnuuuueeee {{{{
  282.                     pppprrrriiiinnnntttt;;;;  #### tttthhhhiiiissss pppprrrriiiinnnnttttssss ttttoooo oooorrrriiiiggggiiiinnnnaaaallll ffffiiiilllleeeennnnaaaammmmeeee
  283.                 }}}}
  284.                 sssseeeelllleeeecccctttt((((SSSSTTTTDDDDOOOOUUUUTTTT))));;;;
  285.  
  286.             except that the ----iiii form doesn't need to compare $$$$AAAARRRRGGGGVVVV
  287.             to $$$$oooollllddddaaaarrrrggggvvvv to know when the filename has changed.
  288.             It does, however, use ARGVOUT for the selected
  289.             filehandle.  Note that STDOUT is restored as the
  290.             default output filehandle after the loop.
  291.  
  292.             You can use eeeeooooffff without parenthesis to locate the end
  293.             of each input file, in case you want to append to
  294.             each file, or reset line numbering (see example in
  295.             the eeeeooooffff entry in the _p_e_r_l_f_u_n_c manpage).
  296.  
  297.        ----IIII_d_i_r_e_c_t_o_r_y
  298.             may be used in conjunction with ----PPPP to tell the C
  299.             preprocessor where to look for include files.  By
  300.             default /usr/include and /usr/lib/perl are searched.
  301.  
  302.        ----llll_o_c_t_n_u_m
  303.             enables automatic line-ending processing.  It has two
  304.             effects:  first, it automatically chomps the line
  305.             terminator when used with ----nnnn or ----pppp, and second, it
  306.             assigns "$$$$\\\\" to have the value of _o_c_t_n_u_m so that any
  307.             print statements will have that line terminator added
  308.             back on.  If _o_c_t_n_u_m is omitted, sets "$$$$\\\\" to the
  309.             current value of "$$$$////".  For instance, to trim lines
  310.             to 80 columns:
  311.  
  312.                 ppppeeeerrrrllll ----llllppppeeee ''''ssssuuuubbbbssssttttrrrr(((($$$$____,,,, 88880000)))) ==== """"""""''''
  313.  
  314.             Note that the assignment $$$$\\\\ ==== $$$$//// is done when the
  315.             switch is processed, so the input record separator
  316.             can be different than the output record separator if
  317.             the ----llll switch is followed by a ----0000 switch:
  318.  
  319.                 ggggnnnnuuuuffffiiiinnnndddd //// ----pppprrrriiiinnnntttt0000 |||| ppppeeeerrrrllll ----llllnnnn0000eeee ''''pppprrrriiiinnnntttt """"ffffoooouuuunnnndddd $$$$____"""" iiiiffff ----pppp''''
  320.  
  321.             This sets $\ to newline and then sets $/ to the null
  322.             character.
  323.  
  324.  
  325.  
  326.  
  327.  
  328. 15/Feb/96                perl 5.002 with                        5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  335.  
  336.  
  337.        ----mmmm_m_o_d_u_l_e
  338.  
  339.        ----MMMM_m_o_d_u_l_e
  340.             ----mmmm_m_o_d_u_l_e executes uuuusssseeee _m_o_d_u_l_e (((())));;;; before executing
  341.             your script.
  342.  
  343.             ----MMMM_m_o_d_u_l_e executes uuuusssseeee _m_o_d_u_l_e ;;;; before executing your
  344.             script.  You can use quotes to add extra code after
  345.             the module name, e.g., ----MMMM''''mmmmoooodddduuuulllleeee qqqqwwww((((ffffoooooooo bbbbaaaarrrr))))''''.
  346.  
  347.             If the first character after the ----MMMM or ----mmmm is a dash
  348.             (----) then the 'use' is replaced with 'no'.
  349.  
  350.             A little built-in syntactic sugar means you can also
  351.             say ----mmmmmmmmoooodddduuuulllleeee====ffffoooooooo or ----MMMMmmmmoooodddduuuulllleeee====ffffoooooooo as a shortcut for
  352.             ----MMMM''''mmmmoooodddduuuulllleeee qqqqwwww((((ffffoooooooo))))''''.  Note that using the ==== form
  353.             removes the distinction between ----mmmm and ----MMMM.
  354.  
  355.             To avoid the need to use quotes when importing more
  356.             that one symbol with the ==== form, the text following
  357.             the ==== is split into a list on commas (,,,,) rather than
  358.             whitespace. The actual code generated by
  359.             ----MMMMmmmmoooodddduuuulllleeee====ffffoooooooo,,,,bbbbaaaarrrr is uuuusssseeee mmmmoooodddduuuulllleeee sssspppplllliiiitttt((((////,,,,////,,,,qqqq{{{{ffffoooooooo,,,,bbbbaaaarrrr}}}})))).
  360.  
  361.        ----nnnn   causes Perl to assume the following loop around your
  362.             script, which makes it iterate over filename
  363.             arguments somewhat like sssseeeedddd ----nnnn or aaaawwwwkkkk:
  364.  
  365.                 wwwwhhhhiiiilllleeee ((((<<<<>>>>)))) {{{{
  366.                     ............             #### yyyyoooouuuurrrr ssssccccrrrriiiipppptttt ggggooooeeeessss hhhheeeerrrreeee
  367.                 }}}}
  368.  
  369.             Note that the lines are not printed by default.  See
  370.             ----pppp to have lines printed.  Here is an efficient way
  371.             to delete all files older than a week:
  372.  
  373.                 ffffiiiinnnndddd .... ----mmmmttttiiiimmmmeeee ++++7777 ----pppprrrriiiinnnntttt |||| ppppeeeerrrrllll ----nnnnlllleeee ''''uuuunnnnlllliiiinnnnkkkk;;;;''''
  374.  
  375.             This is faster than using the ----eeeexxxxeeeecccc switch of ffffiiiinnnndddd
  376.             because you don't have to start a process on every
  377.             filename found.
  378.  
  379.             BBBBEEEEGGGGIIIINNNN and EEEENNNNDDDD blocks may be used to capture control
  380.             before or after the implicit loop, just as in aaaawwwwkkkk.
  381.  
  382.        ----pppp   causes Perl to assume the following loop around your
  383.             script, which makes it iterate over filename
  384.             arguments somewhat like sssseeeedddd:
  385.  
  386.                 wwwwhhhhiiiilllleeee ((((<<<<>>>>)))) {{{{
  387.                     ............             #### yyyyoooouuuurrrr ssssccccrrrriiiipppptttt ggggooooeeeessss hhhheeeerrrreeee
  388.                 }}}} ccccoooonnnnttttiiiinnnnuuuueeee {{{{
  389.                     pppprrrriiiinnnntttt;;;;
  390.                 }}}}
  391.  
  392.  
  393.  
  394. 15/Feb/96                perl 5.002 with                        6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  401.  
  402.  
  403.             Note that the lines are printed automatically.  To
  404.             suppress printing use the ----nnnn switch.  A ----pppp overrides
  405.             a ----nnnn switch.
  406.  
  407.             BBBBEEEEGGGGIIIINNNN and EEEENNNNDDDD blocks may be used to capture control
  408.             before or after the implicit loop, just as in awk.
  409.  
  410.        ----PPPP   causes your script to be run through the C
  411.             preprocessor before compilation by Perl.  (Since both
  412.             comments and cpp directives begin with the #
  413.             character, you should avoid starting comments with
  414.             any words recognized by the C preprocessor such as
  415.             "if", "else" or "define".)
  416.  
  417.        ----ssss   enables some rudimentary switch parsing for switches
  418.             on the command line after the script name but before
  419.             any filename arguments (or before a --------).  Any switch
  420.             found there is removed from @@@@AAAARRRRGGGGVVVV and sets the
  421.             corresponding variable in the Perl script.  The
  422.             following script prints "true" if and only if the
  423.             script is invoked with a ----xxxxyyyyzzzz switch.
  424.  
  425.                 ####!!!!////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll ----ssss
  426.                 iiiiffff (((($$$$xxxxyyyyzzzz)))) {{{{ pppprrrriiiinnnntttt """"ttttrrrruuuueeee\\\\nnnn"""";;;; }}}}
  427.  
  428.  
  429.        ----SSSS   makes Perl use the PATH environment variable to
  430.             search for the script (unless the name of the script
  431.             starts with a slash).  Typically this is used to
  432.             emulate #! startup on machines that don't support #!,
  433.             in the following manner:
  434.  
  435.                 ####!!!!////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll
  436.                 eeeevvvvaaaallll """"eeeexxxxeeeecccc ////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll ----SSSS $$$$0000 $$$$****""""
  437.                         iiiiffff $$$$rrrruuuunnnnnnnniiiinnnngggg____uuuunnnnddddeeeerrrr____ssssoooommmmeeee____sssshhhheeeellllllll;;;;
  438.  
  439.             The system ignores the first line and feeds the
  440.             script to /bin/sh, which proceeds to try to execute
  441.             the Perl script as a shell script.  The shell
  442.             executes the second line as a normal shell command,
  443.             and thus starts up the Perl interpreter.  On some
  444.             systems $$$$0000 doesn't always contain the full pathname,
  445.             so the ----SSSS tells Perl to search for the script if
  446.             necessary.  After Perl locates the script, it parses
  447.             the lines and ignores them because the variable
  448.             $$$$rrrruuuunnnnnnnniiiinnnngggg____uuuunnnnddddeeeerrrr____ssssoooommmmeeee____sssshhhheeeellllllll is never true.  A better
  449.             construct than $$$$**** would be $$$${{{{1111++++""""$$$$@@@@""""}}}}, which handles
  450.             embedded spaces and such in the filenames, but
  451.             doesn't work if the script is being interpreted by
  452.             csh.  In order to start up sh rather than csh, some
  453.             systems may have to replace the #! line with a line
  454.             containing just a colon, which will be politely
  455.             ignored by Perl.  Other systems can't control that,
  456.             and need a totally devious construct that will work
  457.  
  458.  
  459.  
  460. 15/Feb/96                perl 5.002 with                        7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  467.  
  468.  
  469.             under any of csh, sh or Perl, such as the following:
  470.  
  471.                     eeeevvvvaaaallll ''''((((eeeexxxxiiiitttt $$$$????0000))))'''' &&&&&&&& eeeevvvvaaaallll ''''eeeexxxxeeeecccc ////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll ----SSSS $$$$0000 $$$${{{{1111++++""""$$$$@@@@""""}}}}''''
  472.                     &&&& eeeevvvvaaaallll ''''eeeexxxxeeeecccc ////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll ----SSSS $$$$0000 $$$$aaaarrrrggggvvvv::::qqqq''''
  473.                             iiiiffff 0000;;;;
  474.  
  475.  
  476.        ----TTTT   forces "taint" checks to be turned on so you can test
  477.             them.  Ordinarily these checks are done only when
  478.             running setuid or setgid.  It's a good idea to turn
  479.             them on explicitly for programs run on another's
  480.             behalf, such as CGI programs.  See the _p_e_r_l_s_e_c
  481.             manpage.
  482.  
  483.        ----uuuu   causes Perl to dump core after compiling your script.
  484.             You can then take this core dump and turn it into an
  485.             executable file by using the uuuunnnndddduuuummmmpppp program (not
  486.             supplied).  This speeds startup at the expense of
  487.             some disk space (which you can minimize by stripping
  488.             the executable).  (Still, a "hello world" executable
  489.             comes out to about 200K on my machine.)  If you want
  490.             to execute a portion of your script before dumping,
  491.             use the _d_u_m_p_(_) operator instead.  Note: availability
  492.             of uuuunnnndddduuuummmmpppp is platform specific and may not be
  493.             available for a specific port of Perl.
  494.  
  495.        ----UUUU   allows Perl to do unsafe operations.  Currently the
  496.             only "unsafe" operations are the unlinking of
  497.             directories while running as superuser, and running
  498.             setuid programs with fatal taint checks turned into
  499.             warnings.
  500.  
  501.        ----vvvv   prints the version and patchlevel of your Perl
  502.             executable.
  503.  
  504.        ----VVVV   prints summary of the major perl configuration values
  505.             and the current value of @@@@IIIINNNNCCCC.
  506.  
  507.        ----VVVV::::nnnnaaaammmmeeee
  508.             Prints to STDOUT the value of the named configuration
  509.             variable.
  510.  
  511.        ----wwww   prints warnings about identifiers that are mentioned
  512.             only once, and scalar variables that are used before
  513.             being set.  Also warns about redefined subroutines,
  514.             and references to undefined filehandles or
  515.             filehandles opened readonly that you are attempting
  516.             to write on.  Also warns you if you use values as a
  517.             number that doesn't look like numbers, using an array
  518.             as though it were a scalar, if your subroutines
  519.             recurse more than 100 deep, and innumerable other
  520.             things.  See the _p_e_r_l_d_i_a_g manpage and the _p_e_r_l_t_r_a_p
  521.             manpage.
  522.  
  523.  
  524.  
  525.  
  526. 15/Feb/96                perl 5.002 with                        8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PERLRUN(1)     User Contributed Perl Documentation     PERLRUN(1)
  533.  
  534.  
  535.        ----xxxx _d_i_r_e_c_t_o_r_y
  536.             tells Perl that the script is embedded in a message.
  537.             Leading garbage will be discarded until the first
  538.             line that starts with #! and contains the string
  539.             "perl".  Any meaningful switches on that line will be
  540.             applied (but only one group of switches, as with
  541.             normal #!  processing).  If a directory name is
  542.             specified, Perl will switch to that directory before
  543.             running the script.  The ----xxxx switch only controls the
  544.             the disposal of leading garbage.  The script must be
  545.             terminated with ________EEEENNNNDDDD________ if there is trailing garbage
  546.             to be ignored (the script can process any or all of
  547.             the trailing garbage via the DATA filehandle if
  548.             desired).
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592. 15/Feb/96                perl 5.002 with                        9
  593.  
  594.  
  595.