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 / perldata.0 < prev    next >
Text File  |  1996-03-02  |  42KB  |  727 lines

  1.  
  2.  
  3.  
  4. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  5.  
  6.  
  7. NNNNAAAAMMMMEEEE
  8.        perldata - Perl data types
  9.  
  10. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  11.        VVVVaaaarrrriiiiaaaabbbblllleeee nnnnaaaammmmeeeessss
  12.  
  13.        Perl has three data structures: scalars, arrays of
  14.        scalars, and associative arrays of scalars, known as
  15.        "hashes".  Normal arrays are indexed by number, starting
  16.        with 0.  (Negative subscripts count from the end.)  Hash
  17.        arrays are indexed by string.
  18.  
  19.        Scalar values are always named with '$', even when
  20.        referring to a scalar that is part of an array.  It works
  21.        like the English word "the".  Thus we have:
  22.  
  23.            $$$$ddddaaaayyyyssss               #### tttthhhheeee ssssiiiimmmmpppplllleeee ssssccccaaaallllaaaarrrr vvvvaaaalllluuuueeee """"ddddaaaayyyyssss""""
  24.            $$$$ddddaaaayyyyssss[[[[22228888]]]]           #### tttthhhheeee 22229999tttthhhh eeeelllleeeemmmmeeeennnntttt ooooffff aaaarrrrrrrraaaayyyy @@@@ddddaaaayyyyssss
  25.            $$$$ddddaaaayyyyssss{{{{''''FFFFeeeebbbb''''}}}}        #### tttthhhheeee ''''FFFFeeeebbbb'''' vvvvaaaalllluuuueeee ffffrrrroooommmm hhhhaaaasssshhhh %%%%ddddaaaayyyyssss
  26.            $$$$####ddddaaaayyyyssss              #### tttthhhheeee llllaaaasssstttt iiiinnnnddddeeeexxxx ooooffff aaaarrrrrrrraaaayyyy @@@@ddddaaaayyyyssss
  27.  
  28.        but entire arrays or array slices are denoted by '@',
  29.        which works much like the word "these" or "those":
  30.  
  31.            @@@@ddddaaaayyyyssss               #### (((($$$$ddddaaaayyyyssss[[[[0000]]]],,,, $$$$ddddaaaayyyyssss[[[[1111]]]],,,,............ $$$$ddddaaaayyyyssss[[[[nnnn]]]]))))
  32.            @@@@ddddaaaayyyyssss[[[[3333,,,,4444,,,,5555]]]]        #### ssssaaaammmmeeee aaaassss @@@@ddddaaaayyyyssss[[[[3333........5555]]]]
  33.            @@@@ddddaaaayyyyssss{{{{''''aaaa'''',,,,''''cccc''''}}}}      #### ssssaaaammmmeeee aaaassss (((($$$$ddddaaaayyyyssss{{{{''''aaaa''''}}}},,,,$$$$ddddaaaayyyyssss{{{{''''cccc''''}}}}))))
  34.  
  35.        and entire hashes are denoted by '%':
  36.  
  37.            %%%%ddddaaaayyyyssss               #### ((((kkkkeeeeyyyy1111,,,, vvvvaaaallll1111,,,, kkkkeeeeyyyy2222,,,, vvvvaaaallll2222 ............))))
  38.  
  39.        In addition, subroutines are named with an initial '&',
  40.        though this is optional when it's otherwise unambiguous
  41.        (just as "do" is often redundant in English).  Symbol
  42.        table entries can be named with an initial '*', but you
  43.        don't really care about that yet.
  44.  
  45.        Every variable type has its own namespace.  You can,
  46.        without fear of conflict, use the same name for a scalar
  47.        variable, an array, or a hash (or, for that matter, a
  48.        filehandle, a subroutine name, or a label).  This means
  49.        that $$$$ffffoooooooo and @@@@ffffoooooooo are two different variables.  It also
  50.        means that $$$$ffffoooooooo[[[[1111]]]] is a part of @@@@ffffoooooooo, not a part of $$$$ffffoooooooo.
  51.        This may seem a bit weird, but that's okay, because it is
  52.        weird.
  53.  
  54.        Since variable and array references always start with '$',
  55.        '@', or '%', the "reserved" words aren't in fact reserved
  56.        with respect to variable names.  (They ARE reserved with
  57.        respect to labels and filehandles, however, which don't
  58.        have an initial special character.  You can't have a
  59.        filehandle named "log", for instance.  Hint: you could say
  60.        ooooppppeeeennnn((((LLLLOOOOGGGG,,,,''''llllooooggggffffiiiilllleeee'''')))) rather than ooooppppeeeennnn((((lllloooogggg,,,,''''llllooooggggffffiiiilllleeee'''')))).
  61.  
  62.  
  63.  
  64. 30/Jan/96                perl 5.002 with                        1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  71.  
  72.  
  73.        Using uppercase filehandles also improves readability and
  74.        protects you from conflict with future reserved words.)
  75.        Case _I_S significant--"FOO", "Foo" and "foo" are all
  76.        different names.  Names that start with a letter or
  77.        underscore may also contain digits and underscores.
  78.  
  79.        It is possible to replace such an alphanumeric name with
  80.        an expression that returns a reference to an object of
  81.        that type.  For a description of this, see the _p_e_r_l_r_e_f
  82.        manpage.
  83.  
  84.        Names that start with a digit may only contain more
  85.        digits.  Names which do not start with a letter,
  86.        underscore,  or digit are limited to one character, e.g.
  87.        $$$$%%%% or $$$$$$$$.  (Most of these one character names have a
  88.        predefined significance to Perl.  For instance, $$$$$$$$ is the
  89.        current process id.)
  90.  
  91.        CCCCoooonnnntttteeeexxxxtttt
  92.  
  93.        The interpretation of operations and values in Perl
  94.        sometimes depends on the requirements of the context
  95.        around the operation or value.  There are two major
  96.        contexts: scalar and list.  Certain operations return list
  97.        values in contexts wanting a list, and scalar values
  98.        otherwise.  (If this is true of an operation it will be
  99.        mentioned in the documentation for that operation.)  In
  100.        other words, Perl overloads certain operations based on
  101.        whether the expected return value is singular or plural.
  102.        (Some words in English work this way, like "fish" and
  103.        "sheep".)
  104.  
  105.        In a reciprocal fashion, an operation provides either a
  106.        scalar or a list context to each of its arguments.  For
  107.        example, if you say
  108.  
  109.            iiiinnnntttt(((( <<<<SSSSTTTTDDDDIIIINNNN>>>> ))))
  110.  
  111.        the integer operation provides a scalar context for the
  112.        <STDIN> operator, which responds by reading one line from
  113.        STDIN and passing it back to the integer operation, which
  114.        will then find the integer value of that line and return
  115.        that.  If, on the other hand, you say
  116.  
  117.            ssssoooorrrrtttt(((( <<<<SSSSTTTTDDDDIIIINNNN>>>> ))))
  118.  
  119.        then the sort operation provides a list context for
  120.        <STDIN>, which will proceed to read every line available
  121.        up to the end of file, and pass that list of lines back to
  122.        the sort routine, which will then sort those lines and
  123.        return them as a list to whatever the context of the sort
  124.        was.
  125.  
  126.        Assignment is a little bit special in that it uses its
  127.  
  128.  
  129.  
  130. 30/Jan/96                perl 5.002 with                        2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  137.  
  138.  
  139.        left argument to determine the context for the right
  140.        argument.  Assignment to a scalar evaluates the righthand
  141.        side in a scalar context, while assignment to an array or
  142.        array slice evaluates the righthand side in a list
  143.        context.  Assignment to a list also evaluates the
  144.        righthand side in a list context.
  145.  
  146.        User defined subroutines may choose to care whether they
  147.        are being called in a scalar or list context, but most
  148.        subroutines do not need to care, because scalars are
  149.        automatically interpolated into lists.  See the wwwwaaaannnnttttaaaarrrrrrrraaaayyyy
  150.        entry in the _p_e_r_l_f_u_n_c manpage.
  151.  
  152.        SSSSccccaaaallllaaaarrrr vvvvaaaalllluuuueeeessss
  153.  
  154.        All data in Perl is a scalar or an array of scalars or a
  155.        hash of scalars.  Scalar variables may contain various
  156.        kinds of singular data, such as numbers, strings, and
  157.        references.  In general, conversion from one form to
  158.        another is transparent.  (A scalar may not contain
  159.        multiple values, but may contain a reference to an array
  160.        or hash containing multiple values.)  Because of the
  161.        automatic conversion of scalars, operations and functions
  162.        that return scalars don't need to care (and, in fact,
  163.        can't care) whether the context is looking for a string or
  164.        a number.
  165.  
  166.        Scalars aren't necessarily one thing or another.  There's
  167.        no place to declare a scalar variable to be of type
  168.        "string", or of type "number", or type "filehandle", or
  169.        anything else.  Perl is a contextually polymorphic
  170.        language whose scalars can be strings, numbers, or
  171.        references (which includes objects).  While strings and
  172.        numbers are considered the pretty much same thing for
  173.        nearly all purposes, references are strongly-typed
  174.        uncastable pointers with built-in reference-counting and
  175.        destructor invocation.
  176.  
  177.        A scalar value is interpreted as TRUE in the Boolean sense
  178.        if it is not the null string or the number 0 (or its
  179.        string equivalent, "0").  The Boolean context is just a
  180.        special kind of scalar context.
  181.  
  182.        There are actually two varieties of null scalars: defined
  183.        and undefined.  Undefined null scalars are returned when
  184.        there is no real value for something, such as when there
  185.        was an error, or at end of file, or when you refer to an
  186.        uninitialized variable or element of an array.  An
  187.        undefined null scalar may become defined the first time
  188.        you use it as if it were defined, but prior to that you
  189.        can use the _d_e_f_i_n_e_d_(_) operator to determine whether the
  190.        value is defined or not.
  191.  
  192.        To find out whether a given string is a valid non-zero
  193.  
  194.  
  195.  
  196. 30/Jan/96                perl 5.002 with                        3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  203.  
  204.  
  205.        number, it's usually enough to test it against both
  206.        numeric 0 and also lexical "0" (although this will cause
  207.        ----wwww noises).  That's because strings that aren't numbers
  208.        count as 0, just as the do in _a_w_k:
  209.  
  210.            iiiiffff (((($$$$ssssttttrrrr ======== 0000 &&&&&&&& $$$$ssssttttrrrr nnnneeee """"0000""""))))  {{{{
  211.                wwwwaaaarrrrnnnn """"TTTThhhhaaaatttt ddddooooeeeessssnnnn''''tttt llllooooooookkkk lllliiiikkkkeeee aaaa nnnnuuuummmmbbbbeeeerrrr"""";;;;
  212.            }}}}
  213.  
  214.        That's usually preferable because otherwise you won't
  215.        treat IEEE notations like NNNNaaaaNNNN or IIIInnnnffffiiiinnnniiiittttyyyy properly.  At
  216.        other times you might prefer to use a regular expression
  217.        to check whether data is numeric.  See the _p_e_r_l_r_e manpage
  218.        for details on regular expressions.
  219.  
  220.            wwwwaaaarrrrnnnn """"hhhhaaaassss nnnnoooonnnnddddiiiiggggiiiittttssss""""        iiiiffff     ////\\\\DDDD////;;;;
  221.            wwwwaaaarrrrnnnn """"nnnnooootttt aaaa wwwwhhhhoooolllleeee nnnnuuuummmmbbbbeeeerrrr""""   uuuunnnnlllleeeessssssss ////^^^^\\\\dddd++++$$$$////;;;;
  222.            wwwwaaaarrrrnnnn """"nnnnooootttt aaaannnn iiiinnnntttteeeeggggeeeerrrr""""       uuuunnnnlllleeeessssssss ////^^^^[[[[++++----]]]]????\\\\dddd++++$$$$////
  223.            wwwwaaaarrrrnnnn """"nnnnooootttt aaaa ddddeeeecccciiiimmmmaaaallll nnnnuuuummmmbbbbeeeerrrr"""" uuuunnnnlllleeeessssssss ////^^^^[[[[++++----]]]]????\\\\dddd++++\\\\....????\\\\dddd****$$$$////
  224.            wwwwaaaarrrrnnnn """"nnnnooootttt aaaa CCCC ffffllllooooaaaatttt""""
  225.                uuuunnnnlllleeeessssssss ////^^^^(((([[[[++++----]]]]????))))((((????====\\\\dddd||||\\\\....\\\\dddd))))\\\\dddd****((((\\\\....\\\\dddd****))))????(((([[[[EEEEeeee]]]](((([[[[++++----]]]]????\\\\dddd++++))))))))????$$$$////;;;;
  226.  
  227.        The length of an array is a scalar value.  You may find
  228.        the length of array @@@@ddddaaaayyyyssss by evaluating $$$$####ddddaaaayyyyssss, as in ccccsssshhhh.
  229.        (Actually, it's not the length of the array, it's the
  230.        subscript of the last element, since there is (ordinarily)
  231.        a 0th element.)  Assigning to $$$$####ddddaaaayyyyssss changes the length of
  232.        the array.  Shortening an array by this method destroys
  233.        intervening values.  Lengthening an array that was
  234.        previously shortened _N_O _L_O_N_G_E_R recovers the values that
  235.        were in those elements.  (It used to in Perl 4, but we had
  236.        to break this make to make sure destructors were called
  237.        when expected.)  You can also gain some measure of
  238.        efficiency by preextending an array that is going to get
  239.        big.  (You can also extend an array by assigning to an
  240.        element that is off the end of the array.)  You can
  241.        truncate an array down to nothing by assigning the null
  242.        list () to it.  The following are equivalent:
  243.  
  244.            @@@@wwwwhhhhaaaatttteeeevvvveeeerrrr ==== (((())));;;;
  245.            $$$$####wwwwhhhhaaaatttteeeevvvveeeerrrr ==== $$$$[[[[ ---- 1111;;;;
  246.  
  247.        If you evaluate a named array in a scalar context, it
  248.        returns the length of the array.  (Note that this is not
  249.        true of lists, which return the last value, like the C
  250.        comma operator.)  The following is always true:
  251.  
  252.            ssssccccaaaallllaaaarrrr((((@@@@wwwwhhhhaaaatttteeeevvvveeeerrrr)))) ======== $$$$####wwwwhhhhaaaatttteeeevvvveeeerrrr ---- $$$$[[[[ ++++ 1111;;;;
  253.  
  254.        Version 5 of Perl changed the semantics of $[: files that
  255.        don't set the value of $[ no longer need to worry about
  256.        whether another file changed its value.  (In other words,
  257.        use of $[ is deprecated.)  So in general you can just
  258.        assume that
  259.  
  260.  
  261.  
  262. 30/Jan/96                perl 5.002 with                        4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  269.  
  270.  
  271.            ssssccccaaaallllaaaarrrr((((@@@@wwwwhhhhaaaatttteeeevvvveeeerrrr)))) ======== $$$$####wwwwhhhhaaaatttteeeevvvveeeerrrr ++++ 1111;;;;
  272.  
  273.        Some programmer choose to use an explcit conversion so
  274.        nothing's left to doubt:
  275.  
  276.            $$$$eeeelllleeeemmmmeeeennnntttt____ccccoooouuuunnnntttt ==== ssssccccaaaallllaaaarrrr((((@@@@wwwwhhhhaaaatttteeeevvvveeeerrrr))));;;;
  277.  
  278.        If you evaluate a hash in a scalar context, it returns a
  279.        value which is true if and only if the hash contains any
  280.        key/value pairs.  (If there are any key/value pairs, the
  281.        value returned is a string consisting of the number of
  282.        used buckets and the number of allocated buckets,
  283.        separated by a slash.  This is pretty much only useful to
  284.        find out whether Perl's (compiled in) hashing algorithm is
  285.        performing poorly on your data set.  For example, you
  286.        stick 10,000 things in a hash, but evaluating %%%%HHHHAAAASSSSHHHH in
  287.        scalar context reveals "1/16", which means only one out of
  288.        sixteen buckets has been touched, and presumably contains
  289.        all 10,000 of your items.  This isn't supposed to happen.)
  290.  
  291.        SSSSccccaaaallllaaaarrrr vvvvaaaalllluuuueeee ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  292.  
  293.        Numeric literals are specified in any of the customary
  294.        floating point or integer formats:
  295.  
  296.            11112222333344445555
  297.            11112222333344445555....66667777
  298.            ....22223333EEEE----11110000
  299.            0000xxxxffffffffffffffff              #### hhhheeeexxxx
  300.            0000333377777777                #### ooooccccttttaaaallll
  301.            4444____222299994444____999966667777____222299996666       #### uuuunnnnddddeeeerrrrlllliiiinnnneeee ffffoooorrrr lllleeeeggggiiiibbbbiiiilllliiiittttyyyy
  302.  
  303.        String literals are usually delimited by either single or
  304.        double quotes.  They work much like shell quotes:  double-
  305.        quoted string literals are subject to backslash and
  306.        variable substitution; single-quoted strings are not
  307.        (except for "\\\\''''" and "\\\\\\\\").  The usual Unix backslash
  308.        rules apply for making characters such as newline, tab,
  309.        etc., as well as some more exotic forms.  See the qqqqqqqq entry
  310.        in the _p_e_r_l_o_p manpage for a list.
  311.  
  312.        You can also embed newlines directly in your strings, i.e.
  313.        they can end on a different line than they begin.  This is
  314.        nice, but if you forget your trailing quote, the error
  315.        will not be reported until Perl finds another line
  316.        containing the quote character, which may be much further
  317.        on in the script.  Variable substitution inside strings is
  318.        limited to scalar variables, arrays, and array slices.
  319.        (In other words, identifiers beginning with $ or @,
  320.        followed by an optional bracketed expression as a
  321.        subscript.)  The following code segment prints out "The
  322.        price is $$$$111100000000."
  323.  
  324.  
  325.  
  326.  
  327.  
  328. 30/Jan/96                perl 5.002 with                        5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  335.  
  336.  
  337.            $$$$PPPPrrrriiiicccceeee ==== ''''$$$$111100000000'''';;;;    #### nnnnooootttt iiiinnnntttteeeerrrrpppprrrreeeetttteeeedddd
  338.            pppprrrriiiinnnntttt """"TTTThhhheeee pppprrrriiiicccceeee iiiissss $$$$PPPPrrrriiiicccceeee....\\\\nnnn"""";;;;     #### iiiinnnntttteeeerrrrpppprrrreeeetttteeeedddd
  339.  
  340.        As in some shells, you can put curly brackets around the
  341.        identifier to delimit it from following alphanumerics.  In
  342.        fact, an identifier within such curlies is forced to be a
  343.        string, as is any single identifier within a hash
  344.        subscript.  Our earlier example,
  345.  
  346.            $$$$ddddaaaayyyyssss{{{{''''FFFFeeeebbbb''''}}}}
  347.  
  348.        can be written as
  349.  
  350.            $$$$ddddaaaayyyyssss{{{{FFFFeeeebbbb}}}}
  351.  
  352.        and the quotes will be assumed automatically.  But
  353.        anything more complicated in the subscript will be
  354.        interpreted as an expression.
  355.  
  356.        Note that a single-quoted string must be separated from a
  357.        preceding word by a space, since single quote is a valid
  358.        (though deprecated) character in an identifier (see the
  359.        PPPPaaaacccckkkkaaaaggggeeeessss entry in the _p_e_r_l_m_o_d manpage).
  360.  
  361.        Two special literals are __LINE__ and __FILE__, which
  362.        represent the current line number and filename at that
  363.        point in your program.  They may only be used as separate
  364.        tokens; they will not be interpolated into strings.  In
  365.        addition, the token __END__ may be used to indicate the
  366.        logical end of the script before the actual end of file.
  367.        Any following text is ignored, but may be read via the
  368.        DATA filehandle.  (The DATA filehandle may read data only
  369.        from the main script, but not from any required file or
  370.        evaluated string.)  The two control characters ^D and ^Z
  371.        are synonyms for __END__ (or __DATA__ in a module; see the
  372.        _S_e_l_f_L_o_a_d_e_r manpage for details on __DATA__).
  373.  
  374.        A word that has no other interpretation in the grammar
  375.        will be treated as if it were a quoted string.  These are
  376.        known as "barewords".  As with filehandles and labels, a
  377.        bareword that consists entirely of lowercase letters risks
  378.        conflict with future reserved words, and if you use the ----wwww
  379.        switch, Perl will warn you about any such words.  Some
  380.        people may wish to outlaw barewords entirely.  If you say
  381.  
  382.            uuuusssseeee ssssttttrrrriiiicccctttt ''''ssssuuuubbbbssss'''';;;;
  383.  
  384.        then any bareword that would NOT be interpreted as a
  385.        subroutine call produces a compile-time error instead.
  386.        The restriction lasts to the end of the enclosing block.
  387.        An inner block may countermand this by saying nnnnoooo ssssttttrrrriiiicccctttt
  388.        ''''ssssuuuubbbbssss''''.
  389.  
  390.        Array variables are interpolated into double-quoted
  391.  
  392.  
  393.  
  394. 30/Jan/96                perl 5.002 with                        6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  401.  
  402.  
  403.        strings by joining all the elements of the array with the
  404.        delimiter specified in the $$$$"""" variable ($LIST_SEPARATOR in
  405.        English), space by default.  The following are equivalent:
  406.  
  407.            $$$$tttteeeemmmmpppp ==== jjjjooooiiiinnnn(((($$$$"""",,,,@@@@AAAARRRRGGGGVVVV))));;;;
  408.            ssssyyyysssstttteeeemmmm """"eeeecccchhhhoooo $$$$tttteeeemmmmpppp"""";;;;
  409.  
  410.            ssssyyyysssstttteeeemmmm """"eeeecccchhhhoooo @@@@AAAARRRRGGGGVVVV"""";;;;
  411.  
  412.        Within search patterns (which also undergo double-quotish
  413.        substitution) there is a bad ambiguity:  Is ////$$$$ffffoooooooo[[[[bbbbaaaarrrr]]]]//// to
  414.        be interpreted as ////$$$${{{{ffffoooooooo}}}}[[[[bbbbaaaarrrr]]]]//// (where [[[[bbbbaaaarrrr]]]] is a
  415.        character class for the regular expression) or as
  416.        ////$$$${{{{ffffoooooooo[[[[bbbbaaaarrrr]]]]}}}}//// (where [[[[bbbbaaaarrrr]]]] is the subscript to array
  417.        @@@@ffffoooooooo)?  If @@@@ffffoooooooo doesn't otherwise exist, then it's
  418.        obviously a character class.  If @@@@ffffoooooooo exists, Perl takes a
  419.        good guess about [[[[bbbbaaaarrrr]]]], and is almost always right.  If it
  420.        does guess wrong, or if you're just plain paranoid, you
  421.        can force the correct interpretation with curly brackets
  422.        as above.
  423.  
  424.        A line-oriented form of quoting is based on the shell
  425.        "here-doc" syntax.  Following a <<<<<<<< you specify a string to
  426.        terminate the quoted material, and all lines following the
  427.        current line down to the terminating string are the value
  428.        of the item.  The terminating string may be either an
  429.        identifier (a word), or some quoted text.  If quoted, the
  430.        type of quotes you use determines the treatment of the
  431.        text, just as in regular quoting.  An unquoted identifier
  432.        works like double quotes.  There must be no space between
  433.        the <<<<<<<< and the identifier.  (If you put a space it will be
  434.        treated as a null identifier, which is valid, and matches
  435.        the first blank line--see the Merry Christmas example
  436.        below.)  The terminating string must appear by itself
  437.        (unquoted and with no surrounding whitespace) on the
  438.        terminating line.
  439.  
  440.                pppprrrriiiinnnntttt <<<<<<<<EEEEOOOOFFFF;;;;
  441.            TTTThhhheeee pppprrrriiiicccceeee iiiissss $$$$PPPPrrrriiiicccceeee....
  442.            EEEEOOOOFFFF
  443.  
  444.                pppprrrriiiinnnntttt <<<<<<<<""""EEEEOOOOFFFF"""";;;;  #### ssssaaaammmmeeee aaaassss aaaabbbboooovvvveeee
  445.            TTTThhhheeee pppprrrriiiicccceeee iiiissss $$$$PPPPrrrriiiicccceeee....
  446.            EEEEOOOOFFFF
  447.  
  448.                pppprrrriiiinnnntttt <<<<<<<<````EEEEOOOOCCCC````;;;;  #### eeeexxxxeeeeccccuuuutttteeee ccccoooommmmmmmmaaaannnnddddssss
  449.            eeeecccchhhhoooo hhhhiiii tttthhhheeeerrrreeee
  450.            eeeecccchhhhoooo lllloooo tttthhhheeeerrrreeee
  451.            EEEEOOOOCCCC
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460. 30/Jan/96                perl 5.002 with                        7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  467.  
  468.  
  469.                pppprrrriiiinnnntttt <<<<<<<<""""ffffoooooooo"""",,,, <<<<<<<<""""bbbbaaaarrrr"""";;;; #### yyyyoooouuuu ccccaaaannnn ssssttttaaaacccckkkk tttthhhheeeemmmm
  470.            IIII ssssaaaaiiiidddd ffffoooooooo....
  471.            ffffoooooooo
  472.            IIII ssssaaaaiiiidddd bbbbaaaarrrr....
  473.            bbbbaaaarrrr
  474.  
  475.                mmmmyyyyffffuuuunnnncccc((((<<<<<<<<""""TTTTHHHHIIIISSSS"""",,,, 22223333,,,, <<<<<<<<''''TTTTHHHHAAAATTTT''''''''))));;;;
  476.            HHHHeeeerrrreeee''''ssss aaaa lllliiiinnnneeee
  477.            oooorrrr ttttwwwwoooo....
  478.            TTTTHHHHIIIISSSS
  479.            aaaannnndddd hhhheeeerrrreeee aaaannnnooootttthhhheeeerrrr....
  480.            TTTTHHHHAAAATTTT
  481.  
  482.        Just don't forget that you have to put a semicolon on the
  483.        end to finish the statement, as Perl doesn't know you're
  484.        not going to try to do this:
  485.  
  486.                pppprrrriiiinnnntttt <<<<<<<<AAAABBBBCCCC
  487.            111177779999222233331111
  488.            AAAABBBBCCCC
  489.                ++++ 22220000;;;;
  490.  
  491.  
  492.        LLLLiiiisssstttt vvvvaaaalllluuuueeee ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  493.  
  494.        List values are denoted by separating individual values by
  495.        commas (and enclosing the list in parentheses where
  496.        precedence requires it):
  497.  
  498.            ((((LLLLIIIISSSSTTTT))))
  499.  
  500.        In a context not requiring a list value, the value of the
  501.        list literal is the value of the final element, as with
  502.        the C comma operator.  For example,
  503.  
  504.            @@@@ffffoooooooo ==== ((((''''cccccccc'''',,,, ''''----EEEE'''',,,, $$$$bbbbaaaarrrr))));;;;
  505.  
  506.        assigns the entire list value to array foo, but
  507.  
  508.            $$$$ffffoooooooo ==== ((((''''cccccccc'''',,,, ''''----EEEE'''',,,, $$$$bbbbaaaarrrr))));;;;
  509.  
  510.        assigns the value of variable bar to variable foo.  Note
  511.        that the value of an actual array in a scalar context is
  512.        the length of the array; the following assigns to $$$$ffffoooooooo the
  513.        value 3:
  514.  
  515.            @@@@ffffoooooooo ==== ((((''''cccccccc'''',,,, ''''----EEEE'''',,,, $$$$bbbbaaaarrrr))));;;;
  516.            $$$$ffffoooooooo ==== @@@@ffffoooooooo;;;;                #### $$$$ffffoooooooo ggggeeeettttssss 3333
  517.  
  518.        You may have an optional comma before the closing
  519.        parenthesis of an list literal, so that you can say:
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526. 30/Jan/96                perl 5.002 with                        8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  533.  
  534.  
  535.            @@@@ffffoooooooo ==== ((((
  536.                1111,,,,
  537.                2222,,,,
  538.                3333,,,,
  539.            ))));;;;
  540.  
  541.        LISTs do automatic interpolation of sublists.  That is,
  542.        when a LIST is evaluated, each element of the list is
  543.        evaluated in a list context, and the resulting list value
  544.        is interpolated into LIST just as if each individual
  545.        element were a member of LIST.  Thus arrays lose their
  546.        identity in a LIST--the list
  547.  
  548.            ((((@@@@ffffoooooooo,,,,@@@@bbbbaaaarrrr,,,,&&&&SSSSoooommmmeeeeSSSSuuuubbbb))))
  549.  
  550.        contains all the elements of @@@@ffffoooooooo followed by all the
  551.        elements of @@@@bbbbaaaarrrr, followed by all the elements returned by
  552.        the subroutine named SomeSub when it's called in a list
  553.        context.  To make a list reference that does _N_O_T
  554.        interpolate, see the _p_e_r_l_r_e_f manpage.
  555.  
  556.        The null list is represented by ().  Interpolating it in a
  557.        list has no effect.  Thus ((),(),()) is equivalent to ().
  558.        Similarly, interpolating an array with no elements is the
  559.        same as if no array had been interpolated at that point.
  560.  
  561.        A list value may also be subscripted like a normal array.
  562.        You must put the list in parentheses to avoid ambiguity.
  563.        Examples:
  564.  
  565.            #### SSSSttttaaaatttt rrrreeeettttuuuurrrrnnnnssss lllliiiisssstttt vvvvaaaalllluuuueeee....
  566.            $$$$ttttiiiimmmmeeee ==== ((((ssssttttaaaatttt(((($$$$ffffiiiilllleeee))))))))[[[[8888]]]];;;;
  567.  
  568.            #### SSSSYYYYNNNNTTTTAAAAXXXX EEEERRRRRRRROOOORRRR HHHHEEEERRRREEEE....
  569.            $$$$ttttiiiimmmmeeee ==== ssssttttaaaatttt(((($$$$ffffiiiilllleeee))))[[[[8888]]]];;;;  #### OOOOOOOOPPPPSSSS,,,, FFFFOOOORRRRGGGGOOOOTTTT PPPPAAAARRRREEEENNNNSSSS
  570.  
  571.            #### FFFFiiiinnnndddd aaaa hhhheeeexxxx ddddiiiiggggiiiitttt....
  572.            $$$$hhhheeeexxxxddddiiiiggggiiiitttt ==== ((((''''aaaa'''',,,,''''bbbb'''',,,,''''cccc'''',,,,''''dddd'''',,,,''''eeee'''',,,,''''ffff''''))))[[[[$$$$ddddiiiiggggiiiitttt----11110000]]]];;;;
  573.  
  574.            #### AAAA """"rrrreeeevvvveeeerrrrsssseeee ccccoooommmmmmmmaaaa ooooppppeeeerrrraaaattttoooorrrr""""....
  575.            rrrreeeettttuuuurrrrnnnn ((((ppppoooopppp((((@@@@ffffoooooooo)))),,,,ppppoooopppp((((@@@@ffffoooooooo))))))))[[[[0000]]]];;;;
  576.  
  577.        Lists may be assigned to if and only if each element of
  578.        the list is legal to assign to:
  579.  
  580.            (((($$$$aaaa,,,, $$$$bbbb,,,, $$$$cccc)))) ==== ((((1111,,,, 2222,,,, 3333))));;;;
  581.  
  582.            (((($$$$mmmmaaaapppp{{{{''''rrrreeeedddd''''}}}},,,, $$$$mmmmaaaapppp{{{{''''bbbblllluuuueeee''''}}}},,,, $$$$mmmmaaaapppp{{{{''''ggggrrrreeeeeeeennnn''''}}}})))) ==== ((((0000xxxx00000000ffff,,,, 0000xxxx0000ffff0000,,,, 0000xxxxffff00000000))));;;;
  583.  
  584.        Array assignment in a scalar context returns the number of
  585.        elements produced by the expression on the right side of
  586.        the assignment:
  587.  
  588.  
  589.  
  590.  
  591.  
  592. 30/Jan/96                perl 5.002 with                        9
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  599.  
  600.  
  601.            $$$$xxxx ==== (((((((($$$$ffffoooooooo,,,,$$$$bbbbaaaarrrr)))) ==== ((((3333,,,,2222,,,,1111))))))));;;;       #### sssseeeetttt $$$$xxxx ttttoooo 3333,,,, nnnnooootttt 2222
  602.            $$$$xxxx ==== (((((((($$$$ffffoooooooo,,,,$$$$bbbbaaaarrrr)))) ==== ffff(((())))))));;;;           #### sssseeeetttt $$$$xxxx ttttoooo ffff(((())))''''ssss rrrreeeettttuuuurrrrnnnn ccccoooouuuunnnntttt
  603.  
  604.        This is very handy when you want to do a list assignment
  605.        in a Boolean context, since most list functions return a
  606.        null list when finished, which when assigned produces a 0,
  607.        which is interpreted as FALSE.
  608.  
  609.        The final element may be an array or a hash:
  610.  
  611.            (((($$$$aaaa,,,, $$$$bbbb,,,, @@@@rrrreeeesssstttt)))) ==== sssspppplllliiiitttt;;;;
  612.            llllooooccccaaaallll(((($$$$aaaa,,,, $$$$bbbb,,,, %%%%rrrreeeesssstttt)))) ==== @@@@____;;;;
  613.  
  614.        You can actually put an array or hash anywhere in the
  615.        list, but the first one in the list will soak up all the
  616.        values, and anything after it will get a null value.  This
  617.        may be useful in a _l_o_c_a_l_(_) or _m_y_(_).
  618.  
  619.        A hash literal contains pairs of values to be interpreted
  620.        as a key and a value:
  621.  
  622.            #### ssssaaaammmmeeee aaaassss mmmmaaaapppp aaaassssssssiiiiggggnnnnmmmmeeeennnntttt aaaabbbboooovvvveeee
  623.            %%%%mmmmaaaapppp ==== ((((''''rrrreeeedddd'''',,,,0000xxxx00000000ffff,,,,''''bbbblllluuuueeee'''',,,,0000xxxx0000ffff0000,,,,''''ggggrrrreeeeeeeennnn'''',,,,0000xxxxffff00000000))));;;;
  624.  
  625.        While literal lists and named arrays are usually
  626.        interchangeable, that's not the case for hashes.  Just
  627.        because you can subscript a list value like a normal array
  628.        does not mean that you can subscript a list value as a
  629.        hash.  Likewise, hashes included as parts of other lists
  630.        (including parameters lists and return lists from
  631.        functions) always flatten out into key/value pairs.
  632.        That's why it's good to use references sometimes.
  633.  
  634.        It is often more readable to use the ====>>>> operator between
  635.        key/value pairs.  The ====>>>> operator is mostly just a more
  636.        visually distinctive synonym for a comma, but it also
  637.        quotes its left-hand operand, which makes it nice for
  638.        initializing hashes:
  639.  
  640.            %%%%mmmmaaaapppp ==== ((((
  641.                         rrrreeeedddd   ====>>>> 0000xxxx00000000ffff,,,,
  642.                         bbbblllluuuueeee  ====>>>> 0000xxxx0000ffff0000,,,,
  643.                         ggggrrrreeeeeeeennnn ====>>>> 0000xxxxffff00000000,,,,
  644.           ))));;;;
  645.  
  646.        or for initializing hash references to be used as records:
  647.  
  648.            $$$$rrrreeeecccc ==== {{{{
  649.                        wwwwiiiittttcccchhhh ====>>>> ''''MMMMaaaabbbblllleeee tttthhhheeee MMMMeeeerrrrcccciiiilllleeeessssssss'''',,,,
  650.                        ccccaaaatttt   ====>>>> ''''FFFFlllluuuuffffffffyyyy tttthhhheeee FFFFeeeerrrroooocccciiiioooouuuussss'''',,,,
  651.                        ddddaaaatttteeee  ====>>>> ''''11110000////33331111////1111777777776666'''',,,,
  652.            }}}};;;;
  653.  
  654.        or for using call-by-named-parameter to complicated
  655.  
  656.  
  657.  
  658. 30/Jan/96                perl 5.002 with                       10
  659.  
  660.  
  661.  
  662.  
  663.  
  664. PERLDATA(1)    User Contributed Perl Documentation    PERLDATA(1)
  665.  
  666.  
  667.        functions:
  668.  
  669.           $$$$ffffiiiieeeelllldddd ==== $$$$qqqquuuueeeerrrryyyy---->>>>rrrraaaaddddiiiioooo____ggggrrrroooouuuupppp((((
  670.                       nnnnaaaammmmeeee      ====>>>> ''''ggggrrrroooouuuupppp____nnnnaaaammmmeeee'''',,,,
  671.                       vvvvaaaalllluuuueeeessss    ====>>>> [[[[''''eeeeeeeennnniiiieeee'''',,,,''''mmmmeeeeeeeennnniiiieeee'''',,,,''''mmmmiiiinnnniiiieeee'''']]]],,,,
  672.                       ddddeeeeffffaaaauuuulllltttt   ====>>>> ''''mmmmeeeeeeeennnniiiieeee'''',,,,
  673.                       lllliiiinnnneeeebbbbrrrreeeeaaaakkkk ====>>>> ''''ttttrrrruuuueeee'''',,,,
  674.                       llllaaaabbbbeeeellllssss    ====>>>> \\\\%%%%llllaaaabbbbeeeellllssss
  675.           ))));;;;
  676.  
  677.        Note that just because a hash is initialized in that order
  678.        doesn't mean that it comes out in that order.  See the
  679.        ssssoooorrrrtttt entry in the _p_e_r_l_f_u_n_c manpage for examples of how to
  680.        arrange for an output ordering.
  681.  
  682.        TTTTyyyyppppeeeegggglllloooobbbbssss aaaannnndddd FFFFiiiilllleeeeHHHHaaaannnnddddlllleeeessss
  683.  
  684.        Perl uses an internal type called a _t_y_p_e_g_l_o_b to hold an
  685.        entire symbol table entry.  The type prefix of a typeglob
  686.        is a ****, because it represents all types.  This used to be
  687.        the preferred way to pass arrays and hashes by reference
  688.        into a function, but now that we have real references,
  689.        this is seldom needed.
  690.  
  691.        One place where you still use typeglobs (or references
  692.        thereto) is for passing or storing filehandles.  If you
  693.        want to save away a filehandle, do it this way:
  694.  
  695.            $$$$ffffhhhh ==== ****SSSSTTTTDDDDOOOOUUUUTTTT;;;;
  696.  
  697.        or perhaps as a real reference, like this:
  698.  
  699.            $$$$ffffhhhh ==== \\\\****SSSSTTTTDDDDOOOOUUUUTTTT;;;;
  700.  
  701.        This is also the way to create a local filehandle.  For
  702.        example:
  703.  
  704.            ssssuuuubbbb nnnneeeewwwwooooppppeeeennnn {{{{
  705.                mmmmyyyy $$$$ppppaaaatttthhhh ==== sssshhhhiiiifffftttt;;;;
  706.                llllooooccccaaaallll ****FFFFHHHH;;;;  #### nnnnooootttt mmmmyyyy!!!!
  707.                ooooppppeeeennnn ((((FFFFHHHH,,,, $$$$ppppaaaatttthhhh)))) |||||||| rrrreeeettttuuuurrrrnnnn uuuunnnnddddeeeeffff;;;;
  708.                rrrreeeettttuuuurrrrnnnn \\\\****FFFFHHHH;;;;
  709.            }}}}
  710.            $$$$ffffhhhh ==== nnnneeeewwwwooooppppeeeennnn((((''''////eeeettttcccc////ppppaaaasssssssswwwwdddd''''))));;;;
  711.  
  712.        See the _p_e_r_l_r_e_f manpage, the _p_e_r_l_s_u_b manpage, and the
  713.        section on _S_y_m_b_o_l_s _T_a_b_l_e_s in the _p_e_r_l_m_o_d manpage for more
  714.        discussion on typeglobs.  See the ooooppppeeeennnn entry in the
  715.        _p_e_r_l_f_u_n_c manpage for other ways of generating filehandles.
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724. 30/Jan/96                perl 5.002 with                       11
  725.  
  726.  
  727.