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 / perldsc.0 < prev    next >
Text File  |  1996-03-02  |  93KB  |  1,123 lines

  1.  
  2.  
  3.  
  4. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  5.  
  6.  
  7. NNNNAAAAMMMMEEEE
  8.        perldsc - Perl Data Structures Cookbook
  9.  
  10. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  11.        The single feature most sorely lacking in the Perl
  12.        programming language prior to its 5.0 release was complex
  13.        data structures.  Even without direct language support,
  14.        some valiant programmers did manage to emulate them, but
  15.        it was hard work and not for the faint of heart.  You
  16.        could occasionally get away with the $$$$mmmm{{{{$$$$LLLLooooLLLL,,,,$$$$bbbb}}}} notation
  17.        borrowed from _a_w_k in which the keys are actually more like
  18.        a single concatenated string """"$$$$LLLLooooLLLL$$$$bbbb"""", but traversal and
  19.        sorting were difficult.  More desperate programmers even
  20.        hacked Perl's internal symbol table directly, a strategy
  21.        that proved hard to develop and maintain--to put it
  22.        mildly.
  23.  
  24.        The 5.0 release of Perl let us have complex data
  25.        structures.  You may now write something like this and all
  26.        of a sudden, you'd have a array with three dimensions!
  27.  
  28.            ffffoooorrrr $$$$xxxx ((((1111 ........ 11110000)))) {{{{
  29.                ffffoooorrrr $$$$yyyy ((((1111 ........ 11110000)))) {{{{
  30.                    ffffoooorrrr $$$$zzzz ((((1111 ........ 11110000)))) {{{{
  31.                        $$$$LLLLooooLLLL[[[[$$$$xxxx]]]][[[[$$$$yyyy]]]][[[[$$$$zzzz]]]] ====
  32.                            $$$$xxxx ******** $$$$yyyy ++++ $$$$zzzz;;;;
  33.                    }}}}
  34.                }}}}
  35.            }}}}
  36.  
  37.        Alas, however simple this may appear, underneath it's a
  38.        much more elaborate construct than meets the eye!
  39.  
  40.        How do you print it out?  Why can't you just say pppprrrriiiinnnntttt
  41.        @@@@LLLLooooLLLL?  How do you sort it?  How can you pass it to a
  42.        function or get one of these back from a function?  Is is
  43.        an object?  Can you save it to disk to read back later?
  44.        How do you access whole rows or columns of that matrix?
  45.        Do all the values have to be numeric?
  46.  
  47.        As you see, it's quite easy to become confused.  While
  48.        some small portion of the blame for this can be attributed
  49.        to the reference-based implementation, it's really more
  50.        due to a lack of existing documentation with examples
  51.        designed for the beginner.
  52.  
  53.        This document is meant to be a detailed but understandable
  54.        treatment of the many different sorts of data structures
  55.        you might want to develop.  It should also serve as a
  56.        cookbook of examples.  That way, when you need to create
  57.        one of these complex data structures, you can just pinch,
  58.        pilfer, or purloin a drop-in example from here.
  59.  
  60.        Let's look at each of these possible constructs in detail.
  61.  
  62.  
  63.  
  64. 30/Jan/96                perl 5.002 with                        1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  71.  
  72.  
  73.        There are separate documents on each of the following:
  74.  
  75.        +o arrays of arrays
  76.  
  77.        +o hashes of arrays
  78.  
  79.        +o arrays of hashes
  80.  
  81.        +o hashes of hashes
  82.  
  83.        +o more elaborate constructs
  84.  
  85.        +o recursive and self-referential data structures
  86.  
  87.        +o objects
  88.  
  89.        But for now, let's look at some of the general issues
  90.        common to all of these types of data structures.
  91.  
  92. RRRREEEEFFFFEEEERRRREEEENNNNCCCCEEEESSSS
  93.        The most important thing to understand about all data
  94.        structures in Perl -- including multidimensional
  95.        arrays--is that even though they might appear otherwise,
  96.        Perl @@@@AAAARRRRRRRRAAAAYYYYs and %%%%HHHHAAAASSSSHHHHes are all internally one-
  97.        dimensional.  They can only hold scalar values (meaning a
  98.        string, number, or a reference).  They cannot directly
  99.        contain other arrays or hashes, but instead contain
  100.        _r_e_f_e_r_e_n_c_e_s to other arrays or hashes.
  101.  
  102.        You can't use a reference to a array or hash in quite the
  103.        same way that you would a real array or hash.  For C or
  104.        C++ programmers unused to distinguishing between arrays
  105.        and pointers to the same, this can be confusing.  If so,
  106.        just think of it as the difference between a structure and
  107.        a pointer to a structure.
  108.  
  109.        You can (and should) read more about references in the
  110.        _p_e_r_l_r_e_f(1) man page.  Briefly, references are rather like
  111.        pointers that know what they point to.  (Objects are also
  112.        a kind of reference, but we won't be needing them right
  113.        away--if ever.)  That means that when you have something
  114.        that looks to you like an access to two-or-more-
  115.        dimensional array and/or hash, that what's really going on
  116.        is that in all these cases, the base type is merely a one-
  117.        dimensional entity that contains references to the next
  118.        level.  It's just that you can _u_s_e it as though it were a
  119.        two-dimensional one.  This is actually the way almost all
  120.        C multidimensional arrays work as well.
  121.  
  122.            $$$$lllliiiisssstttt[[[[7777]]]][[[[11112222]]]]                        #### aaaarrrrrrrraaaayyyy ooooffff aaaarrrrrrrraaaayyyyssss
  123.            $$$$lllliiiisssstttt[[[[7777]]]]{{{{ssssttttrrrriiiinnnngggg}}}}                    #### aaaarrrrrrrraaaayyyy ooooffff hhhhaaaasssshhhheeeessss
  124.            $$$$hhhhaaaasssshhhh{{{{ssssttttrrrriiiinnnngggg}}}}[[[[7777]]]]                    #### hhhhaaaasssshhhh ooooffff aaaarrrrrrrraaaayyyyssss
  125.            $$$$hhhhaaaasssshhhh{{{{ssssttttrrrriiiinnnngggg}}}}{{{{''''aaaannnnooootttthhhheeeerrrr ssssttttrrrriiiinnnngggg''''}}}}     #### hhhhaaaasssshhhh ooooffff hhhhaaaasssshhhheeeessss
  126.  
  127.  
  128.  
  129.  
  130. 30/Jan/96                perl 5.002 with                        2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  137.  
  138.  
  139.        Now, because the top level only contains references, if
  140.        you try to print out your array in with a simple _p_r_i_n_t_(_)
  141.        function, you'll get something that doesn't look very
  142.        nice, like this:
  143.  
  144.            @@@@LLLLooooLLLL ==== (((( [[[[2222,,,, 3333]]]],,,, [[[[4444,,,, 5555,,,, 7777]]]],,,, [[[[0000]]]] ))));;;;
  145.            pppprrrriiiinnnntttt $$$$LLLLooooLLLL[[[[1111]]]][[[[2222]]]];;;;
  146.          7777
  147.            pppprrrriiiinnnntttt @@@@LLLLooooLLLL;;;;
  148.          AAAARRRRRRRRAAAAYYYY((((0000xxxx88883333cccc33338888))))AAAARRRRRRRRAAAAYYYY((((0000xxxx8888bbbb111199994444))))AAAARRRRRRRRAAAAYYYY((((0000xxxx8888bbbb1111dddd0000))))
  149.  
  150.        That's because Perl doesn't (ever) implicitly dereference
  151.        your variables.  If you want to get at the thing a
  152.        reference is referring to, then you have to do this
  153.        yourself using either prefix typing indicators, like
  154.        $$$${{{{$$$$bbbbllllaaaahhhh}}}}, @@@@{{{{$$$$bbbbllllaaaahhhh}}}}, @@@@{{{{$$$$bbbbllllaaaahhhh[[[[$$$$iiii]]]]}}}}, or else postfix pointer
  155.        arrows, like $$$$aaaa---->>>>[[[[3333]]]], $$$$hhhh---->>>>{{{{ffffrrrreeeedddd}}}}, or even
  156.        $$$$oooobbbb---->>>>_m_e_t_h_o_d_(_)->[3].
  157.  
  158. CCCCOOOOMMMMMMMMOOOONNNN MMMMIIIISSSSTTTTAAAAKKKKEEEESSSS
  159.        The two most common mistakes made in constructing
  160.        something like an array of arrays is either accidentally
  161.        counting the number of elements or else taking a reference
  162.        to the same memory location repeatedly.  Here's the case
  163.        where you just get the count instead of a nested array:
  164.  
  165.            ffffoooorrrr $$$$iiii ((((1111........11110000)))) {{{{
  166.                @@@@lllliiiisssstttt ==== ssssoooommmmeeeeffffuuuunnnncccc(((($$$$iiii))));;;;
  167.                $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== @@@@lllliiiisssstttt;;;;       #### WWWWRRRROOOONNNNGGGG!!!!
  168.            }}}}
  169.  
  170.        That's just the simple case of assigning a list to a
  171.        scalar and getting its element count.  If that's what you
  172.        really and truly want, then you might do well to consider
  173.        being a tad more explicit about it, like this:
  174.  
  175.            ffffoooorrrr $$$$iiii ((((1111........11110000)))) {{{{
  176.                @@@@lllliiiisssstttt ==== ssssoooommmmeeeeffffuuuunnnncccc(((($$$$iiii))));;;;
  177.                $$$$ccccoooouuuunnnnttttssss[[[[$$$$iiii]]]] ==== ssssccccaaaallllaaaarrrr @@@@lllliiiisssstttt;;;;
  178.            }}}}
  179.  
  180.        Here's the case of taking a reference to the same memory
  181.        location again and again:
  182.  
  183.            ffffoooorrrr $$$$iiii ((((1111........11110000)))) {{{{
  184.                @@@@lllliiiisssstttt ==== ssssoooommmmeeeeffffuuuunnnncccc(((($$$$iiii))));;;;
  185.                $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== \\\\@@@@lllliiiisssstttt;;;;      #### WWWWRRRROOOONNNNGGGG!!!!
  186.            }}}}
  187.  
  188.        So, just what's the big problem with that?  It looks
  189.        right, doesn't it?  After all, I just told you that you
  190.        need an array of references, so by golly, you've made me
  191.        one!
  192.  
  193.  
  194.  
  195.  
  196. 30/Jan/96                perl 5.002 with                        3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  203.  
  204.  
  205.        Unfortunately, while this is true, it's still broken.  All
  206.        the references in @@@@LLLLooooLLLL refer to the _v_e_r_y _s_a_m_e _p_l_a_c_e, and
  207.        they will therefore all hold whatever was last in @@@@lllliiiisssstttt!
  208.        It's similar to the problem demonstrated in the following
  209.        C program:
  210.  
  211.            ####iiiinnnncccclllluuuuddddeeee <<<<ppppwwwwdddd....hhhh>>>>
  212.            mmmmaaaaiiiinnnn(((()))) {{{{
  213.                ssssttttrrrruuuucccctttt ppppaaaasssssssswwwwdddd ****ggggeeeettttppppwwwwnnnnaaaammmm(((()))),,,, ****rrrrpppp,,,, ****ddddpppp;;;;
  214.                rrrrpppp ==== ggggeeeettttppppwwwwnnnnaaaammmm((((""""rrrrooooooootttt""""))));;;;
  215.                ddddpppp ==== ggggeeeettttppppwwwwnnnnaaaammmm((((""""ddddaaaaeeeemmmmoooonnnn""""))));;;;
  216.  
  217.                pppprrrriiiinnnnttttffff((((""""ddddaaaaeeeemmmmoooonnnn nnnnaaaammmmeeee iiiissss %%%%ssss\\\\nnnnrrrrooooooootttt nnnnaaaammmmeeee iiiissss %%%%ssss\\\\nnnn"""",,,,
  218.                        ddddpppp---->>>>ppppwwww____nnnnaaaammmmeeee,,,, rrrrpppp---->>>>ppppwwww____nnnnaaaammmmeeee))));;;;
  219.            }}}}
  220.  
  221.        Which will print
  222.  
  223.            ddddaaaaeeeemmmmoooonnnn nnnnaaaammmmeeee iiiissss ddddaaaaeeeemmmmoooonnnn
  224.            rrrrooooooootttt nnnnaaaammmmeeee iiiissss ddddaaaaeeeemmmmoooonnnn
  225.  
  226.        The problem is that both rrrrpppp and ddddpppp are pointers to the
  227.        same location in memory!  In C, you'd have to remember to
  228.        _m_a_l_l_o_c_(_) yourself some new memory.  In Perl, you'll want
  229.        to use the array constructor [[[[]]]] or the hash constructor {{{{}}}}
  230.        instead.   Here's the right way to do the preceding broken
  231.        code fragments
  232.  
  233.            ffffoooorrrr $$$$iiii ((((1111........11110000)))) {{{{
  234.                @@@@lllliiiisssstttt ==== ssssoooommmmeeeeffffuuuunnnncccc(((($$$$iiii))));;;;
  235.                $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== [[[[ @@@@lllliiiisssstttt ]]]];;;;
  236.            }}}}
  237.  
  238.        The square brackets make a reference to a new array with a
  239.        _c_o_p_y of what's in @@@@lllliiiisssstttt at the time of the assignment.
  240.        This is what you want.
  241.  
  242.        Note that this will produce something similar, but it's
  243.        much harder to read:
  244.  
  245.            ffffoooorrrr $$$$iiii ((((1111........11110000)))) {{{{
  246.                @@@@lllliiiisssstttt ==== 0000 ........ $$$$iiii;;;;
  247.                @@@@{{{{$$$$LLLLooooLLLL[[[[$$$$iiii]]]]}}}} ==== @@@@lllliiiisssstttt;;;;
  248.            }}}}
  249.  
  250.        Is it the same?  Well, maybe so--and maybe not.  The
  251.        subtle difference is that when you assign something in
  252.        square brackets, you know for sure it's always a brand new
  253.        reference with a new _c_o_p_y of the data.  Something else
  254.        could be going on in this new case with the @@@@{{{{$$$$LLLLooooLLLL[[[[$$$$iiii]]]]}}}}}}}}
  255.        dereference on the left-hand-side of the assignment.  It
  256.        all depends on whether $$$$LLLLooooLLLL[[[[$$$$iiii]]]] had been undefined to
  257.        start with, or whether it already contained a reference.
  258.        If you had already populated @@@@LLLLooooLLLL with references, as in
  259.  
  260.  
  261.  
  262. 30/Jan/96                perl 5.002 with                        4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  269.  
  270.  
  271.            $$$$LLLLooooLLLL[[[[3333]]]] ==== \\\\@@@@aaaannnnooootttthhhheeeerrrr____lllliiiisssstttt;;;;
  272.  
  273.        Then the assignment with the indirection on the left-hand-
  274.        side would use the existing reference that was already
  275.        there:
  276.  
  277.            @@@@{{{{$$$$LLLLooooLLLL[[[[3333]]]]}}}} ==== @@@@lllliiiisssstttt;;;;
  278.  
  279.        Of course, this _w_o_u_l_d have the "interesting" effect of
  280.        clobbering @@@@aaaannnnooootttthhhheeeerrrr____lllliiiisssstttt.  (Have you ever noticed how when
  281.        a programmer says something is "interesting", that rather
  282.        than meaning "intriguing", they're disturbingly more apt
  283.        to mean that it's "annoying", "difficult", or both?  :-)
  284.  
  285.        So just remember to always use the array or hash
  286.        constructors with [[[[]]]] or {{{{}}}}, and you'll be fine, although
  287.        it's not always optimally efficient.
  288.  
  289.        Surprisingly, the following dangerous-looking construct
  290.        will actually work out fine:
  291.  
  292.            ffffoooorrrr $$$$iiii ((((1111........11110000)))) {{{{
  293.                mmmmyyyy @@@@lllliiiisssstttt ==== ssssoooommmmeeeeffffuuuunnnncccc(((($$$$iiii))));;;;
  294.                $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== \\\\@@@@lllliiiisssstttt;;;;
  295.            }}}}
  296.  
  297.        That's because _m_y_(_) is more of a run-time statement than
  298.        it is a compile-time declaration _p_e_r _s_e.  This means that
  299.        the _m_y_(_) variable is remade afresh each time through the
  300.        loop.  So even though it _l_o_o_k_s as though you stored the
  301.        same variable reference each time, you actually did not!
  302.        This is a subtle distinction that can produce more
  303.        efficient code at the risk of misleading all but the most
  304.        experienced of programmers.  So I usually advise against
  305.        teaching it to beginners.  In fact, except for passing
  306.        arguments to functions, I seldom like to see the gimme-a-
  307.        reference operator (backslash) used much at all in code.
  308.        Instead, I advise beginners that they (and most of the
  309.        rest of us) should try to use the much more easily
  310.        understood constructors [[[[]]]] and {{{{}}}} instead of relying upon
  311.        lexical (or dynamic) scoping and hidden reference-counting
  312.        to do the right thing behind the scenes.
  313.  
  314.        In summary:
  315.  
  316.            $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== [[[[ @@@@lllliiiisssstttt ]]]];;;;       #### uuuussssuuuuaaaallllllllyyyy bbbbeeeesssstttt
  317.            $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== \\\\@@@@lllliiiisssstttt;;;;          #### ppppeeeerrrriiiilllloooouuuussss;;;; jjjjuuuusssstttt hhhhoooowwww mmmmyyyy(((()))) wwwwaaaassss tttthhhhaaaatttt lllliiiisssstttt????
  318.            @@@@{{{{ $$$$LLLLooooLLLL[[[[$$$$iiii]]]] }}}} ==== @@@@lllliiiisssstttt;;;;      #### wwwwaaaayyyy ttttoooooooo ttttrrrriiiicccckkkkyyyy ffffoooorrrr mmmmoooosssstttt pppprrrrooooggggrrrraaaammmmmmmmeeeerrrrssss
  319.  
  320.  
  321. CCCCAAAAVVVVEEEEAAAATTTT OOOONNNN PPPPRRRREEEECCCCEEEEDDDDEEEENNNNCCCCEEEE
  322.        Speaking of things like @@@@{{{{$$$$LLLLooooLLLL[[[[$$$$iiii]]]]}}}}, the following are
  323.        actually the same thing:
  324.  
  325.  
  326.  
  327.  
  328. 30/Jan/96                perl 5.002 with                        5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  335.  
  336.  
  337.            $$$$lllliiiissssttttrrrreeeeffff---->>>>[[[[2222]]]][[[[2222]]]]    #### cccclllleeeeaaaarrrr
  338.            $$$$$$$$lllliiiissssttttrrrreeeeffff[[[[2222]]]][[[[2222]]]]     #### ccccoooonnnnffffuuuussssiiiinnnngggg
  339.  
  340.        That's because Perl's precedence rules on its five prefix
  341.        dereferencers (which look like someone swearing: $$$$ @@@@ **** %%%%
  342.        &&&&) make them bind more tightly than the postfix
  343.        subscripting brackets or braces!  This will no doubt come
  344.        as a great shock to the C or C++ programmer, who is quite
  345.        accustomed to using ****aaaa[[[[iiii]]]] to mean what's pointed to by the
  346.        _i_'_t_h element of aaaa.  That is, they first take the
  347.        subscript, and only then dereference the thing at that
  348.        subscript.  That's fine in C, but this isn't C.
  349.  
  350.        The seemingly equivalent construct in Perl, $$$$$$$$lllliiiissssttttrrrreeeeffff[[[[$$$$iiii]]]]
  351.        first does the deref of $$$$lllliiiissssttttrrrreeeeffff, making it take $$$$lllliiiissssttttrrrreeeeffff
  352.        as a reference to an array, and then dereference that, and
  353.        finally tell you the _i_'_t_h value of the array pointed to by
  354.        $$$$LLLLooooLLLL. If you wanted the C notion, you'd have to write
  355.        $$$${{{{$$$$LLLLooooLLLL[[[[$$$$iiii]]]]}}}} to force the $$$$LLLLooooLLLL[[[[$$$$iiii]]]] to get evaluated first
  356.        before the leading $$$$ dereferencer.
  357.  
  358. WWWWHHHHYYYY YYYYOOOOUUUU SSSSHHHHOOOOUUUULLLLDDDD AAAALLLLWWWWAAAAYYYYSSSS uuuusssseeee ssssttttrrrriiiicccctttt
  359.        If this is starting to sound scarier than it's worth,
  360.        relax.  Perl has some features to help you avoid its most
  361.        common pitfalls.  The best way to avoid getting confused
  362.        is to start every program like this:
  363.  
  364.            ####!!!!////uuuussssrrrr////bbbbiiiinnnn////ppppeeeerrrrllll ----wwww
  365.            uuuusssseeee ssssttttrrrriiiicccctttt;;;;
  366.  
  367.        This way, you'll be forced to declare all your variables
  368.        with _m_y_(_) and also disallow accidental "symbolic
  369.        dereferencing".  Therefore if you'd done this:
  370.  
  371.            mmmmyyyy $$$$lllliiiissssttttrrrreeeeffff ==== [[[[
  372.                [[[[ """"ffffrrrreeeedddd"""",,,, """"bbbbaaaarrrrnnnneeeeyyyy"""",,,, """"ppppeeeebbbbbbbblllleeeessss"""",,,, """"bbbbaaaammmmbbbbaaaammmm"""",,,, """"ddddiiiinnnnoooo"""",,,, ]]]],,,,
  373.                [[[[ """"hhhhoooommmmeeeerrrr"""",,,, """"bbbbaaaarrrrtttt"""",,,, """"mmmmaaaarrrrggggeeee"""",,,, """"mmmmaaaaggggggggiiiieeee"""",,,, ]]]],,,,
  374.                [[[[ """"ggggeeeeoooorrrrggggeeee"""",,,, """"jjjjaaaannnneeee"""",,,, """"aaaallllrrrrooooyyyy"""",,,, """"jjjjuuuuddddyyyy"""",,,, ]]]],,,,
  375.            ]]]];;;;
  376.  
  377.            pppprrrriiiinnnntttt $$$$lllliiiissssttttrrrreeeeffff[[[[2222]]]][[[[2222]]]];;;;
  378.  
  379.        The compiler would immediately flag that as an error _a_t
  380.        _c_o_m_p_i_l_e _t_i_m_e, because you were accidentally accessing
  381.        @@@@lllliiiissssttttrrrreeeeffff, an undeclared variable, and it would thereby
  382.        remind you to instead write:
  383.  
  384.            pppprrrriiiinnnntttt $$$$lllliiiissssttttrrrreeeeffff---->>>>[[[[2222]]]][[[[2222]]]]
  385.  
  386.  
  387. DDDDEEEEBBBBUUUUGGGGGGGGIIIINNNNGGGG
  388.        The standard Perl debugger in 5.001 doesn't do a very nice
  389.        job of printing out complex data structures.  However, the
  390.        perl5db that Ilya Zakharevich <_i_l_y_a_@_m_a_t_h_._o_h_i_o_-_s_t_a_t_e_._e_d_u>
  391.  
  392.  
  393.  
  394. 30/Jan/96                perl 5.002 with                        6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  401.  
  402.  
  403.        wrote, which is accessible at
  404.  
  405.            ffffttttpppp::::////////ffffttttpppp....ppppeeeerrrrllll....ccccoooommmm////ppppuuuubbbb////ppppeeeerrrrllll////eeeexxxxtttt////ppppeeeerrrrllll5555ddddbbbb----kkkkiiiitttt----0000....9999....ttttaaaarrrr....ggggzzzz
  406.  
  407.        has several new features, including command line editing
  408.        as well as the xxxx command to dump out complex data
  409.        structures.  For example, given the assignment to $$$$LLLLooooLLLL
  410.        above, here's the debugger output:
  411.  
  412.            DDDDBBBB<<<<1111>>>> XXXX $$$$LLLLooooLLLL
  413.            $$$$LLLLooooLLLL ==== AAAARRRRRRRRAAAAYYYY((((0000xxxx11113333bbbb5555aaaa0000))))
  414.               0000  AAAARRRRRRRRAAAAYYYY((((0000xxxx1111ffff0000aaaa22224444))))
  415.                  0000  ''''ffffrrrreeeedddd''''
  416.                  1111  ''''bbbbaaaarrrrnnnneeeeyyyy''''
  417.                  2222  ''''ppppeeeebbbbbbbblllleeeessss''''
  418.                  3333  ''''bbbbaaaammmmbbbbaaaammmm''''
  419.                  4444  ''''ddddiiiinnnnoooo''''
  420.               1111  AAAARRRRRRRRAAAAYYYY((((0000xxxx11113333bbbb555555558888))))
  421.                  0000  ''''hhhhoooommmmeeeerrrr''''
  422.                  1111  ''''bbbbaaaarrrrtttt''''
  423.                  2222  ''''mmmmaaaarrrrggggeeee''''
  424.                  3333  ''''mmmmaaaaggggggggiiiieeee''''
  425.               2222  AAAARRRRRRRRAAAAYYYY((((0000xxxx11113333bbbb555544440000))))
  426.                  0000  ''''ggggeeeeoooorrrrggggeeee''''
  427.                  1111  ''''jjjjaaaannnneeee''''
  428.                  2222  ''''aaaallllrrrrooooyyyy''''
  429.                  3333  ''''jjjjuuuuddddyyyy''''
  430.  
  431.        There's also a lower-case xxxx command which is nearly the
  432.        same.
  433.  
  434. CCCCOOOODDDDEEEE EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
  435.        Presented with little comment (these will get their own
  436.        man pages someday) here are short code examples
  437.        illustrating access of various types of data structures.
  438.  
  439. LLLLIIIISSSSTTTTSSSS OOOOFFFF LLLLIIIISSSSTTTTSSSS
  440.        DDDDeeeeccccllllaaaarrrraaaattttiiiioooonnnn ooooffff aaaa LLLLIIIISSSSTTTT OOOOFFFF LLLLIIIISSSSTTTTSSSS
  441.  
  442.  
  443.         @@@@LLLLooooLLLL ==== ((((
  444.                [[[[ """"ffffrrrreeeedddd"""",,,, """"bbbbaaaarrrrnnnneeeeyyyy"""" ]]]],,,,
  445.                [[[[ """"ggggeeeeoooorrrrggggeeee"""",,,, """"jjjjaaaannnneeee"""",,,, """"eeeellllrrrrooooyyyy"""" ]]]],,,,
  446.                [[[[ """"hhhhoooommmmeeeerrrr"""",,,, """"mmmmaaaarrrrggggeeee"""",,,, """"bbbbaaaarrrrtttt"""" ]]]],,,,
  447.              ))));;;;
  448.  
  449.  
  450.        GGGGeeeennnneeeerrrraaaattttiiiioooonnnn ooooffff aaaa LLLLIIIISSSSTTTT OOOOFFFF LLLLIIIISSSSTTTTSSSS
  451.  
  452.  
  453.         #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee
  454.         wwwwhhhhiiiilllleeee (((( <<<<>>>> )))) {{{{
  455.             ppppuuuusssshhhh @@@@LLLLooooLLLL,,,, [[[[ sssspppplllliiiitttt ]]]];;;;
  456.  
  457.  
  458.  
  459.  
  460. 30/Jan/96                perl 5.002 with                        7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  467.  
  468.  
  469.         #### ccccaaaalllllllliiiinnnngggg aaaa ffffuuuunnnnccccttttiiiioooonnnn
  470.         ffffoooorrrr $$$$iiii (((( 1111 ........ 11110000 )))) {{{{
  471.             $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== [[[[ ssssoooommmmeeeeffffuuuunnnncccc(((($$$$iiii)))) ]]]];;;;
  472.  
  473.         #### uuuussssiiiinnnngggg tttteeeemmmmpppp vvvvaaaarrrrssss
  474.         ffffoooorrrr $$$$iiii (((( 1111 ........ 11110000 )))) {{{{
  475.             @@@@ttttmmmmpppp ==== ssssoooommmmeeeeffffuuuunnnncccc(((($$$$iiii))));;;;
  476.             $$$$LLLLooooLLLL[[[[$$$$iiii]]]] ==== [[[[ @@@@ttttmmmmpppp ]]]];;;;
  477.  
  478.         #### aaaadddddddd ttttoooo aaaannnn eeeexxxxiiiissssttttiiiinnnngggg rrrroooowwww
  479.         ppppuuuusssshhhh @@@@{{{{ $$$$LLLLooooLLLL[[[[0000]]]] }}}},,,, """"wwwwiiiillllmmmmaaaa"""",,,, """"bbbbeeeettttttttyyyy"""";;;;
  480.  
  481.  
  482.        AAAAcccccccceeeessssssss aaaannnndddd PPPPrrrriiiinnnnttttiiiinnnngggg ooooffff aaaa LLLLIIIISSSSTTTT OOOOFFFF LLLLIIIISSSSTTTTSSSS
  483.  
  484.  
  485.         #### oooonnnneeee eeeelllleeeemmmmeeeennnntttt
  486.         $$$$LLLLooooLLLL[[[[0000]]]][[[[0000]]]] ==== """"FFFFrrrreeeedddd"""";;;;
  487.  
  488.         #### aaaannnnooootttthhhheeeerrrr eeeelllleeeemmmmeeeennnntttt
  489.         $$$$LLLLooooLLLL[[[[1111]]]][[[[1111]]]] ====~~~~ ssss////((((\\\\wwww))))////\\\\uuuu$$$$1111////;;;;
  490.  
  491.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg wwwwiiiitttthhhh rrrreeeeffffssss
  492.         ffffoooorrrr $$$$aaaarrrreeeeffff (((( @@@@LLLLooooLLLL )))) {{{{
  493.             pppprrrriiiinnnntttt """"\\\\tttt [[[[ @@@@$$$$aaaarrrreeeeffff ]]]],,,,\\\\nnnn"""";;;;
  494.  
  495.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg wwwwiiiitttthhhh iiiinnnnddddiiiicccceeeessss
  496.         ffffoooorrrr $$$$iiii (((( 0000 ........ $$$$####LLLLooooLLLL )))) {{{{
  497.             pppprrrriiiinnnntttt """"\\\\tttt [[[[ @@@@{{{{$$$$LLLLooooLLLL[[[[$$$$iiii]]]]}}}} ]]]],,,,\\\\nnnn"""";;;;
  498.  
  499.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg oooonnnneeee aaaatttt aaaa ttttiiiimmmmeeee
  500.         ffffoooorrrr $$$$iiii (((( 0000 ........ $$$$####LLLLooooLLLL )))) {{{{
  501.             ffffoooorrrr $$$$jjjj (((( 0000 ........ $$$$####{{{{$$$$LLLLooooLLLL[[[[$$$$iiii]]]]}}}} )))) {{{{
  502.                 pppprrrriiiinnnntttt """"eeeelllltttt $$$$iiii $$$$jjjj iiiissss $$$$LLLLooooLLLL[[[[$$$$iiii]]]][[[[$$$$jjjj]]]]\\\\nnnn"""";;;;
  503.             }}}}
  504.  
  505.  
  506. HHHHAAAASSSSHHHHEEEESSSS OOOOFFFF LLLLIIIISSSSTTTTSSSS
  507.        DDDDeeeeccccllllaaaarrrraaaattttiiiioooonnnn ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF LLLLIIIISSSSTTTTSSSS
  508.  
  509.  
  510.         %%%%HHHHooooLLLL ==== ((((
  511.                """"fffflllliiiinnnnttttssssttttoooonnnneeeessss""""        ====>>>> [[[[ """"ffffrrrreeeedddd"""",,,, """"bbbbaaaarrrrnnnneeeeyyyy"""" ]]]],,,,
  512.                """"jjjjeeeettttssssoooonnnnssss""""            ====>>>> [[[[ """"ggggeeeeoooorrrrggggeeee"""",,,, """"jjjjaaaannnneeee"""",,,, """"eeeellllrrrrooooyyyy"""" ]]]],,,,
  513.                """"ssssiiiimmmmppppssssoooonnnnssss""""           ====>>>> [[[[ """"hhhhoooommmmeeeerrrr"""",,,, """"mmmmaaaarrrrggggeeee"""",,,, """"bbbbaaaarrrrtttt"""" ]]]],,,,
  514.              ))));;;;
  515.  
  516.  
  517.        GGGGeeeennnneeeerrrraaaattttiiiioooonnnn ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF LLLLIIIISSSSTTTTSSSS
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526. 30/Jan/96                perl 5.002 with                        8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  533.  
  534.  
  535.         #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee
  536.         #### fffflllliiiinnnnttttssssttttoooonnnneeeessss:::: ffffrrrreeeedddd bbbbaaaarrrrnnnneeeeyyyy wwwwiiiillllmmmmaaaa ddddiiiinnnnoooo
  537.         wwwwhhhhiiiilllleeee (((( <<<<>>>> )))) {{{{
  538.             nnnneeeexxxxtttt uuuunnnnlllleeeessssssss ssss////^^^^((((....****????))))::::\\\\ssss****////////;;;;
  539.             $$$$HHHHooooLLLL{{{{$$$$1111}}}} ==== [[[[ sssspppplllliiiitttt ]]]];;;;
  540.  
  541.         #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee;;;; mmmmoooorrrreeee tttteeeemmmmppppssss
  542.         #### fffflllliiiinnnnttttssssttttoooonnnneeeessss:::: ffffrrrreeeedddd bbbbaaaarrrrnnnneeeeyyyy wwwwiiiillllmmmmaaaa ddddiiiinnnnoooo
  543.         wwwwhhhhiiiilllleeee (((( $$$$lllliiiinnnneeee ==== <<<<>>>> )))) {{{{
  544.             (((($$$$wwwwhhhhoooo,,,, $$$$rrrreeeesssstttt)))) ==== sssspppplllliiiitttt ////::::\\\\ssss****////,,,, $$$$lllliiiinnnneeee,,,, 2222;;;;
  545.             @@@@ffffiiiieeeellllddddssss ==== sssspppplllliiiitttt '''' '''',,,, $$$$rrrreeeesssstttt;;;;
  546.             $$$$HHHHooooLLLL{{{{$$$$wwwwhhhhoooo}}}} ==== [[[[ @@@@ffffiiiieeeellllddddssss ]]]];;;;
  547.  
  548.         #### ccccaaaalllllllliiiinnnngggg aaaa ffffuuuunnnnccccttttiiiioooonnnn tttthhhhaaaatttt rrrreeeettttuuuurrrrnnnnssss aaaa lllliiiisssstttt
  549.         ffffoooorrrr $$$$ggggrrrroooouuuupppp (((( """"ssssiiiimmmmppppssssoooonnnnssss"""",,,, """"jjjjeeeettttssssoooonnnnssss"""",,,, """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""" )))) {{{{
  550.             $$$$HHHHooooLLLL{{{{$$$$ggggrrrroooouuuupppp}}}} ==== [[[[ ggggeeeetttt____ffffaaaammmmiiiillllyyyy(((($$$$ggggrrrroooouuuupppp)))) ]]]];;;;
  551.  
  552.         #### lllliiiikkkkeeeewwwwiiiisssseeee,,,, bbbbuuuutttt uuuussssiiiinnnngggg tttteeeemmmmppppssss
  553.         ffffoooorrrr $$$$ggggrrrroooouuuupppp (((( """"ssssiiiimmmmppppssssoooonnnnssss"""",,,, """"jjjjeeeettttssssoooonnnnssss"""",,,, """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""" )))) {{{{
  554.             @@@@mmmmeeeemmmmbbbbeeeerrrrssss ==== ggggeeeetttt____ffffaaaammmmiiiillllyyyy(((($$$$ggggrrrroooouuuupppp))));;;;
  555.             $$$$HHHHooooLLLL{{{{$$$$ggggrrrroooouuuupppp}}}} ==== [[[[ @@@@mmmmeeeemmmmbbbbeeeerrrrssss ]]]];;;;
  556.  
  557.         #### aaaappppppppeeeennnndddd nnnneeeewwww mmmmeeeemmmmbbbbeeeerrrrssss ttttoooo aaaannnn eeeexxxxiiiissssttttiiiinnnngggg ffffaaaammmmiiiillllyyyy
  558.         ppppuuuusssshhhh @@@@{{{{ $$$$HHHHooooLLLL{{{{""""fffflllliiiinnnnttttssssttttoooonnnneeeessss""""}}}} }}}},,,, """"wwwwiiiillllmmmmaaaa"""",,,, """"bbbbeeeettttttttyyyy"""";;;;
  559.  
  560.  
  561.        AAAAcccccccceeeessssssss aaaannnndddd PPPPrrrriiiinnnnttttiiiinnnngggg ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF LLLLIIIISSSSTTTTSSSS
  562.  
  563.  
  564.         #### oooonnnneeee eeeelllleeeemmmmeeeennnntttt
  565.         $$$$HHHHooooLLLL{{{{fffflllliiiinnnnttttssssttttoooonnnneeeessss}}}}[[[[0000]]]] ==== """"FFFFrrrreeeedddd"""";;;;
  566.  
  567.         #### aaaannnnooootttthhhheeeerrrr eeeelllleeeemmmmeeeennnntttt
  568.         $$$$HHHHooooLLLL{{{{ssssiiiimmmmppppssssoooonnnnssss}}}}[[[[1111]]]] ====~~~~ ssss////((((\\\\wwww))))////\\\\uuuu$$$$1111////;;;;
  569.  
  570.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg
  571.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( kkkkeeeeyyyyssss %%%%HHHHooooLLLL )))) {{{{
  572.             pppprrrriiiinnnntttt """"$$$$ffffaaaammmmiiiillllyyyy:::: @@@@{{{{ $$$$HHHHooooLLLL{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} }}}}\\\\nnnn""""
  573.  
  574.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg wwwwiiiitttthhhh iiiinnnnddddiiiicccceeeessss
  575.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( kkkkeeeeyyyyssss %%%%HHHHooooLLLL )))) {{{{
  576.             pppprrrriiiinnnntttt """"ffffaaaammmmiiiillllyyyy:::: """";;;;
  577.             ffffoooorrrreeeeaaaacccchhhh $$$$iiii (((( 0000 ........ $$$$####{{{{ $$$$HHHHooooLLLL{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} )))) {{{{
  578.                 pppprrrriiiinnnntttt """" $$$$iiii ==== $$$$HHHHooooLLLL{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}[[[[$$$$iiii]]]]"""";;;;
  579.             }}}}
  580.             pppprrrriiiinnnntttt """"\\\\nnnn"""";;;;
  581.  
  582.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg ssssoooorrrrtttteeeedddd bbbbyyyy nnnnuuuummmmbbbbeeeerrrr ooooffff mmmmeeeemmmmbbbbeeeerrrrssss
  583.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( ssssoooorrrrtttt {{{{ @@@@{{{{$$$$HHHHooooLLLL{{{{$$$$bbbb}}}}}}}} <<<<====>>>> @@@@{{{{$$$$HHHHooooLLLL{{{{$$$$bbbb}}}}}}}} }}}} kkkkeeeeyyyyssss %%%%HHHHooooLLLL )))) {{{{
  584.             pppprrrriiiinnnntttt """"$$$$ffffaaaammmmiiiillllyyyy:::: @@@@{{{{ $$$$HHHHooooLLLL{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} }}}}\\\\nnnn""""
  585.  
  586.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg ssssoooorrrrtttteeeedddd bbbbyyyy nnnnuuuummmmbbbbeeeerrrr ooooffff mmmmeeeemmmmbbbbeeeerrrrssss aaaannnndddd nnnnaaaammmmeeee
  587.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( ssssoooorrrrtttt {{{{ @@@@{{{{$$$$HHHHooooLLLL{{{{$$$$bbbb}}}}}}}} <<<<====>>>> @@@@{{{{$$$$HHHHooooLLLL{{{{$$$$aaaa}}}}}}}} }}}} kkkkeeeeyyyyssss %%%%HHHHooooLLLL )))) {{{{
  588.             pppprrrriiiinnnntttt """"$$$$ffffaaaammmmiiiillllyyyy:::: """",,,, jjjjooooiiiinnnn(((("""",,,, """",,,, ssssoooorrrrtttt @@@@{{{{ $$$$HHHHooooLLLL{{{{$$$$ffffaaaammmmiiiillllyyyy}}}})))),,,, """"\\\\nnnn"""";;;;
  589.  
  590.  
  591.  
  592. 30/Jan/96                perl 5.002 with                        9
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  599.  
  600.  
  601. LLLLIIIISSSSTTTTSSSS OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  602.        DDDDeeeeccccllllaaaarrrraaaattttiiiioooonnnn ooooffff aaaa LLLLIIIISSSSTTTT OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  603.  
  604.  
  605.         @@@@LLLLooooHHHH ==== ((((
  606.                {{{{
  607.                   LLLLeeeeaaaadddd      ====>>>> """"ffffrrrreeeedddd"""",,,,
  608.                   FFFFrrrriiiieeeennnndddd    ====>>>> """"bbbbaaaarrrrnnnneeeeyyyy"""",,,,
  609.                }}}},,,,
  610.                {{{{
  611.                    LLLLeeeeaaaadddd     ====>>>> """"ggggeeeeoooorrrrggggeeee"""",,,,
  612.                    WWWWiiiiffffeeee     ====>>>> """"jjjjaaaannnneeee"""",,,,
  613.                    SSSSoooonnnn      ====>>>> """"eeeellllrrrrooooyyyy"""",,,,
  614.                }}}},,,,
  615.                {{{{
  616.                    LLLLeeeeaaaadddd     ====>>>> """"hhhhoooommmmeeeerrrr"""",,,,
  617.                    WWWWiiiiffffeeee     ====>>>> """"mmmmaaaarrrrggggeeee"""",,,,
  618.                    SSSSoooonnnn      ====>>>> """"bbbbaaaarrrrtttt"""",,,,
  619.                }}}}
  620.          ))));;;;
  621.  
  622.  
  623.        GGGGeeeennnneeeerrrraaaattttiiiioooonnnn ooooffff aaaa LLLLIIIISSSSTTTT OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  624.  
  625.  
  626.         #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee
  627.         #### ffffoooorrrrmmmmaaaatttt:::: LLLLEEEEAAAADDDD====ffffrrrreeeedddd FFFFRRRRIIIIEEEENNNNDDDD====bbbbaaaarrrrnnnneeeeyyyy
  628.         wwwwhhhhiiiilllleeee (((( <<<<>>>> )))) {{{{
  629.             $$$$rrrreeeecccc ==== {{{{}}}};;;;
  630.             ffffoooorrrr $$$$ffffiiiieeeelllldddd (((( sssspppplllliiiitttt )))) {{{{
  631.                 (((($$$$kkkkeeeeyyyy,,,, $$$$vvvvaaaalllluuuueeee)))) ==== sssspppplllliiiitttt ////====////,,,, $$$$ffffiiiieeeelllldddd;;;;
  632.                 $$$$rrrreeeecccc---->>>>{{{{$$$$kkkkeeeeyyyy}}}} ==== $$$$vvvvaaaalllluuuueeee;;;;
  633.             }}}}
  634.             ppppuuuusssshhhh @@@@LLLLooooHHHH,,,, $$$$rrrreeeecccc;;;;
  635.  
  636.         #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee
  637.         #### ffffoooorrrrmmmmaaaatttt:::: LLLLEEEEAAAADDDD====ffffrrrreeeedddd FFFFRRRRIIIIEEEENNNNDDDD====bbbbaaaarrrrnnnneeeeyyyy
  638.         #### nnnnoooo tttteeeemmmmpppp
  639.         wwwwhhhhiiiilllleeee (((( <<<<>>>> )))) {{{{
  640.             ppppuuuusssshhhh @@@@LLLLooooHHHH,,,, {{{{ sssspppplllliiiitttt ////[[[[\\\\ssss++++====]]]]//// }}}};;;;
  641.  
  642.         #### ccccaaaalllllllliiiinnnngggg aaaa ffffuuuunnnnccccttttiiiioooonnnn  tttthhhhaaaatttt rrrreeeettttuuuurrrrnnnnssss aaaa kkkkeeeeyyyy,,,,vvvvaaaalllluuuueeee lllliiiisssstttt,,,, lllliiiikkkkeeee
  643.         #### """"lllleeeeaaaadddd"""",,,,""""ffffrrrreeeedddd"""",,,,""""ddddaaaauuuugggghhhhtttteeeerrrr"""",,,,""""ppppeeeebbbbbbbblllleeeessss""""
  644.         wwwwhhhhiiiilllleeee (((( %%%%ffffiiiieeeellllddddssss ==== ggggeeeettttnnnneeeexxxxttttppppaaaaiiiirrrrsssseeeetttt(((()))) ))))
  645.             ppppuuuusssshhhh @@@@LLLLooooHHHH,,,, {{{{ %%%%ffffiiiieeeellllddddssss }}}};;;;
  646.  
  647.         #### lllliiiikkkkeeeewwwwiiiisssseeee,,,, bbbbuuuutttt uuuussssiiiinnnngggg nnnnoooo tttteeeemmmmpppp vvvvaaaarrrrssss
  648.         wwwwhhhhiiiilllleeee ((((<<<<>>>>)))) {{{{
  649.             ppppuuuusssshhhh @@@@LLLLooooHHHH,,,, {{{{ ppppaaaarrrrsssseeeeppppaaaaiiiirrrrssss(((($$$$____)))) }}}};;;;
  650.  
  651.         #### aaaadddddddd kkkkeeeeyyyy////vvvvaaaalllluuuueeee ttttoooo aaaannnn eeeelllleeeemmmmeeeennnntttt
  652.         $$$$LLLLooooHHHH[[[[0000]]]]{{{{""""ppppeeeetttt""""}}}} ==== """"ddddiiiinnnnoooo"""";;;;
  653.         $$$$LLLLooooHHHH[[[[2222]]]]{{{{""""ppppeeeetttt""""}}}} ==== """"ssssaaaannnnttttaaaa''''ssss lllliiiittttttttlllleeee hhhheeeellllppppeeeerrrr"""";;;;
  654.  
  655.  
  656.  
  657.  
  658. 30/Jan/96                perl 5.002 with                       10
  659.  
  660.  
  661.  
  662.  
  663.  
  664. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  665.  
  666.  
  667.        AAAAcccccccceeeessssssss aaaannnndddd PPPPrrrriiiinnnnttttiiiinnnngggg ooooffff aaaa LLLLIIIISSSSTTTT OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  668.  
  669.  
  670.         #### oooonnnneeee eeeelllleeeemmmmeeeennnntttt
  671.         $$$$LLLLooooHHHH[[[[0000]]]]{{{{""""lllleeeeaaaadddd""""}}}} ==== """"ffffrrrreeeedddd"""";;;;
  672.  
  673.         #### aaaannnnooootttthhhheeeerrrr eeeelllleeeemmmmeeeennnntttt
  674.         $$$$LLLLooooHHHH[[[[1111]]]]{{{{""""lllleeeeaaaadddd""""}}}} ====~~~~ ssss////((((\\\\wwww))))////\\\\uuuu$$$$1111////;;;;
  675.  
  676.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg wwwwiiiitttthhhh rrrreeeeffffssss
  677.         ffffoooorrrr $$$$hhhhrrrreeeeffff (((( @@@@LLLLooooHHHH )))) {{{{
  678.             pppprrrriiiinnnntttt """"{{{{ """";;;;
  679.             ffffoooorrrr $$$$rrrroooolllleeee (((( kkkkeeeeyyyyssss %%%%$$$$hhhhrrrreeeeffff )))) {{{{
  680.                 pppprrrriiiinnnntttt """"$$$$rrrroooolllleeee====$$$$hhhhrrrreeeeffff---->>>>{{{{$$$$rrrroooolllleeee}}}} """";;;;
  681.             }}}}
  682.             pppprrrriiiinnnntttt """"}}}}\\\\nnnn"""";;;;
  683.  
  684.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg wwwwiiiitttthhhh iiiinnnnddddiiiicccceeeessss
  685.         ffffoooorrrr $$$$iiii (((( 0000 ........ $$$$####LLLLooooHHHH )))) {{{{
  686.             pppprrrriiiinnnntttt """"$$$$iiii iiiissss {{{{ """";;;;
  687.             ffffoooorrrr $$$$rrrroooolllleeee (((( kkkkeeeeyyyyssss %%%%{{{{ $$$$LLLLooooHHHH[[[[$$$$iiii]]]] }}}} )))) {{{{
  688.                 pppprrrriiiinnnntttt """"$$$$rrrroooolllleeee====$$$$LLLLooooHHHH[[[[$$$$iiii]]]]{{{{$$$$rrrroooolllleeee}}}} """";;;;
  689.             }}}}
  690.             pppprrrriiiinnnntttt """"}}}}\\\\nnnn"""";;;;
  691.  
  692.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg oooonnnneeee aaaatttt aaaa ttttiiiimmmmeeee
  693.         ffffoooorrrr $$$$iiii (((( 0000 ........ $$$$####LLLLooooHHHH )))) {{{{
  694.             ffffoooorrrr $$$$rrrroooolllleeee (((( kkkkeeeeyyyyssss %%%%{{{{ $$$$LLLLooooHHHH[[[[$$$$iiii]]]] }}}} )))) {{{{
  695.                 pppprrrriiiinnnntttt """"eeeelllltttt $$$$iiii $$$$rrrroooolllleeee iiiissss $$$$LLLLooooHHHH[[[[$$$$iiii]]]]{{{{$$$$rrrroooolllleeee}}}}\\\\nnnn"""";;;;
  696.             }}}}
  697.  
  698.  
  699. HHHHAAAASSSSHHHHEEEESSSS OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  700.        DDDDeeeeccccllllaaaarrrraaaattttiiiioooonnnn ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  701.  
  702.  
  703.         %%%%HHHHooooHHHH ==== ((((
  704.                """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""" ====>>>> {{{{
  705.                    """"lllleeeeaaaadddd""""    ====>>>> """"ffffrrrreeeedddd"""",,,,
  706.                    """"ppppaaaallll""""     ====>>>> """"bbbbaaaarrrrnnnneeeeyyyy"""",,,,
  707.                }}}},,,,
  708.                """"jjjjeeeettttssssoooonnnnssss""""     ====>>>> {{{{
  709.                     """"lllleeeeaaaadddd""""   ====>>>> """"ggggeeeeoooorrrrggggeeee"""",,,,
  710.                     """"wwwwiiiiffffeeee""""   ====>>>> """"jjjjaaaannnneeee"""",,,,
  711.                     """"hhhhiiiissss bbbbooooyyyy""""====>>>> """"eeeellllrrrrooooyyyy"""",,,,
  712.                 }}}}
  713.                """"ssssiiiimmmmppppssssoooonnnnssss""""    ====>>>> {{{{
  714.                     """"lllleeeeaaaadddd""""   ====>>>> """"hhhhoooommmmeeeerrrr"""",,,,
  715.                     """"wwwwiiiiffffeeee""""   ====>>>> """"mmmmaaaarrrrggggeeee"""",,,,
  716.                     """"kkkkiiiidddd""""    ====>>>> """"bbbbaaaarrrrtttt"""",,,,
  717.              ))));;;;
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724. 30/Jan/96                perl 5.002 with                       11
  725.  
  726.  
  727.  
  728.  
  729.  
  730. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  731.  
  732.  
  733.        GGGGeeeennnneeeerrrraaaattttiiiioooonnnn ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  734.  
  735.  
  736.         #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee
  737.         #### fffflllliiiinnnnttttssssttttoooonnnneeeessss:::: lllleeeeaaaadddd====ffffrrrreeeedddd ppppaaaallll====bbbbaaaarrrrnnnneeeeyyyy wwwwiiiiffffeeee====wwwwiiiillllmmmmaaaa ppppeeeetttt====ddddiiiinnnnoooo
  738.         wwwwhhhhiiiilllleeee (((( <<<<>>>> )))) {{{{
  739.             nnnneeeexxxxtttt uuuunnnnlllleeeessssssss ssss////^^^^((((....****????))))::::\\\\ssss****////////;;;;
  740.             $$$$wwwwhhhhoooo ==== $$$$1111;;;;
  741.             ffffoooorrrr $$$$ffffiiiieeeelllldddd (((( sssspppplllliiiitttt )))) {{{{
  742.                 (((($$$$kkkkeeeeyyyy,,,, $$$$vvvvaaaalllluuuueeee)))) ==== sssspppplllliiiitttt ////====////,,,, $$$$ffffiiiieeeelllldddd;;;;
  743.                 $$$$HHHHooooHHHH{{{{$$$$wwwwhhhhoooo}}}}{{{{$$$$kkkkeeeeyyyy}}}} ==== $$$$vvvvaaaalllluuuueeee;;;;
  744.             }}}}
  745.  
  746.         #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee;;;; mmmmoooorrrreeee tttteeeemmmmppppssss
  747.         wwwwhhhhiiiilllleeee (((( <<<<>>>> )))) {{{{
  748.             nnnneeeexxxxtttt uuuunnnnlllleeeessssssss ssss////^^^^((((....****????))))::::\\\\ssss****////////;;;;
  749.             $$$$wwwwhhhhoooo ==== $$$$1111;;;;
  750.             $$$$rrrreeeecccc ==== {{{{}}}};;;;
  751.             $$$$HHHHooooHHHH{{{{$$$$wwwwhhhhoooo}}}} ==== $$$$rrrreeeecccc;;;;
  752.             ffffoooorrrr $$$$ffffiiiieeeelllldddd (((( sssspppplllliiiitttt )))) {{{{
  753.                 (((($$$$kkkkeeeeyyyy,,,, $$$$vvvvaaaalllluuuueeee)))) ==== sssspppplllliiiitttt ////====////,,,, $$$$ffffiiiieeeelllldddd;;;;
  754.                 $$$$rrrreeeecccc---->>>>{{{{$$$$kkkkeeeeyyyy}}}} ==== $$$$vvvvaaaalllluuuueeee;;;;
  755.             }}}}
  756.  
  757.         #### ccccaaaalllllllliiiinnnngggg aaaa ffffuuuunnnnccccttttiiiioooonnnn  tttthhhhaaaatttt rrrreeeettttuuuurrrrnnnnssss aaaa kkkkeeeeyyyy,,,,vvvvaaaalllluuuueeee lllliiiisssstttt,,,, lllliiiikkkkeeee
  758.         #### """"lllleeeeaaaadddd"""",,,,""""ffffrrrreeeedddd"""",,,,""""ddddaaaauuuugggghhhhtttteeeerrrr"""",,,,""""ppppeeeebbbbbbbblllleeeessss""""
  759.         wwwwhhhhiiiilllleeee (((( %%%%ffffiiiieeeellllddddssss ==== ggggeeeettttnnnneeeexxxxttttppppaaaaiiiirrrrsssseeeetttt(((()))) ))))
  760.             ppppuuuusssshhhh @@@@aaaa,,,, {{{{ %%%%ffffiiiieeeellllddddssss }}}};;;;
  761.  
  762.         #### ccccaaaalllllllliiiinnnngggg aaaa ffffuuuunnnnccccttttiiiioooonnnn  tttthhhhaaaatttt rrrreeeettttuuuurrrrnnnnssss aaaa kkkkeeeeyyyy,,,,vvvvaaaalllluuuueeee hhhhaaaasssshhhh
  763.         ffffoooorrrr $$$$ggggrrrroooouuuupppp (((( """"ssssiiiimmmmppppssssoooonnnnssss"""",,,, """"jjjjeeeettttssssoooonnnnssss"""",,,, """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""" )))) {{{{
  764.             $$$$HHHHooooHHHH{{{{$$$$ggggrrrroooouuuupppp}}}} ==== {{{{ ggggeeeetttt____ffffaaaammmmiiiillllyyyy(((($$$$ggggrrrroooouuuupppp)))) }}}};;;;
  765.  
  766.         #### lllliiiikkkkeeeewwwwiiiisssseeee,,,, bbbbuuuutttt uuuussssiiiinnnngggg tttteeeemmmmppppssss
  767.         ffffoooorrrr $$$$ggggrrrroooouuuupppp (((( """"ssssiiiimmmmppppssssoooonnnnssss"""",,,, """"jjjjeeeettttssssoooonnnnssss"""",,,, """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""" )))) {{{{
  768.             %%%%mmmmeeeemmmmbbbbeeeerrrrssss ==== ggggeeeetttt____ffffaaaammmmiiiillllyyyy(((($$$$ggggrrrroooouuuupppp))));;;;
  769.             $$$$HHHHooooHHHH{{{{$$$$ggggrrrroooouuuupppp}}}} ==== {{{{ %%%%mmmmeeeemmmmbbbbeeeerrrrssss }}}};;;;
  770.  
  771.         #### aaaappppppppeeeennnndddd nnnneeeewwww mmmmeeeemmmmbbbbeeeerrrrssss ttttoooo aaaannnn eeeexxxxiiiissssttttiiiinnnngggg ffffaaaammmmiiiillllyyyy
  772.         %%%%nnnneeeewwww____ffffoooollllkkkkssss ==== ((((
  773.             """"wwwwiiiiffffeeee"""" ====>>>> """"wwwwiiiillllmmmmaaaa"""",,,,
  774.             """"ppppeeeetttt""""  ====>>>> """"ddddiiiinnnnoooo"""";;;;
  775.         ))));;;;
  776.         ffffoooorrrr $$$$wwwwhhhhaaaatttt ((((kkkkeeeeyyyyssss %%%%nnnneeeewwww____ffffoooollllkkkkssss)))) {{{{
  777.             $$$$HHHHooooHHHH{{{{fffflllliiiinnnnttttssssttttoooonnnneeeessss}}}}{{{{$$$$wwwwhhhhaaaatttt}}}} ==== $$$$nnnneeeewwww____ffffoooollllkkkkssss{{{{$$$$wwwwhhhhaaaatttt}}}};;;;
  778.  
  779.  
  780.        AAAAcccccccceeeessssssss aaaannnndddd PPPPrrrriiiinnnnttttiiiinnnngggg ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF HHHHAAAASSSSHHHHEEEESSSS
  781.  
  782.  
  783.         #### oooonnnneeee eeeelllleeeemmmmeeeennnntttt
  784.         $$$$HHHHooooHHHH{{{{""""fffflllliiiinnnnttttssssttttoooonnnneeeessss""""}}}}{{{{""""wwwwiiiiffffeeee""""}}}} ==== """"wwwwiiiillllmmmmaaaa"""";;;;
  785.  
  786.  
  787.  
  788.  
  789.  
  790. 30/Jan/96                perl 5.002 with                       12
  791.  
  792.  
  793.  
  794.  
  795.  
  796. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  797.  
  798.  
  799.         #### aaaannnnooootttthhhheeeerrrr eeeelllleeeemmmmeeeennnntttt
  800.         $$$$HHHHooooHHHH{{{{ssssiiiimmmmppppssssoooonnnnssss}}}}{{{{lllleeeeaaaadddd}}}} ====~~~~ ssss////((((\\\\wwww))))////\\\\uuuu$$$$1111////;;;;
  801.  
  802.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg
  803.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( kkkkeeeeyyyyssss %%%%HHHHooooHHHH )))) {{{{
  804.             pppprrrriiiinnnntttt """"$$$$ffffaaaammmmiiiillllyyyy:::: """";;;;
  805.             ffffoooorrrr $$$$rrrroooolllleeee (((( kkkkeeeeyyyyssss %%%%{{{{ $$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} }}}} {{{{
  806.                 pppprrrriiiinnnntttt """"$$$$rrrroooolllleeee====$$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{$$$$rrrroooolllleeee}}}} """";;;;
  807.             }}}}
  808.             pppprrrriiiinnnntttt """"}}}}\\\\nnnn"""";;;;
  809.  
  810.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg  ssssoooommmmeeeewwwwhhhhaaaatttt ssssoooorrrrtttteeeedddd
  811.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( ssssoooorrrrtttt kkkkeeeeyyyyssss %%%%HHHHooooHHHH )))) {{{{
  812.             pppprrrriiiinnnntttt """"$$$$ffffaaaammmmiiiillllyyyy:::: """";;;;
  813.             ffffoooorrrr $$$$rrrroooolllleeee (((( ssssoooorrrrtttt kkkkeeeeyyyyssss %%%%{{{{ $$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} }}}} {{{{
  814.                 pppprrrriiiinnnntttt """"$$$$rrrroooolllleeee====$$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{$$$$rrrroooolllleeee}}}} """";;;;
  815.             }}}}
  816.             pppprrrriiiinnnntttt """"}}}}\\\\nnnn"""";;;;
  817.  
  818.         #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg ssssoooorrrrtttteeeedddd bbbbyyyy nnnnuuuummmmbbbbeeeerrrr ooooffff mmmmeeeemmmmbbbbeeeerrrrssss
  819.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( ssssoooorrrrtttt {{{{ kkkkeeeeyyyyssss %%%%{{{{$$$$HHHHooooHHHH{{{{$$$$bbbb}}}}}}}} <<<<====>>>> kkkkeeeeyyyyssss %%%%{{{{$$$$HHHHooooHHHH{{{{$$$$bbbb}}}}}}}} }}}} kkkkeeeeyyyyssss %%%%HHHHooooHHHH )))) {{{{
  820.             pppprrrriiiinnnntttt """"$$$$ffffaaaammmmiiiillllyyyy:::: """";;;;
  821.             ffffoooorrrr $$$$rrrroooolllleeee (((( ssssoooorrrrtttt kkkkeeeeyyyyssss %%%%{{{{ $$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} }}}} {{{{
  822.                 pppprrrriiiinnnntttt """"$$$$rrrroooolllleeee====$$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{$$$$rrrroooolllleeee}}}} """";;;;
  823.             }}}}
  824.             pppprrrriiiinnnntttt """"}}}}\\\\nnnn"""";;;;
  825.  
  826.         #### eeeessssttttaaaabbbblllliiiisssshhhh aaaa ssssoooorrrrtttt oooorrrrddddeeeerrrr ((((rrrraaaannnnkkkk)))) ffffoooorrrr eeeeaaaacccchhhh rrrroooolllleeee
  827.         $$$$iiii ==== 0000;;;;
  828.         ffffoooorrrr (((( qqqqwwww((((lllleeeeaaaadddd wwwwiiiiffffeeee ssssoooonnnn ddddaaaauuuugggghhhhtttteeeerrrr ppppaaaallll ppppeeeetttt)))) )))) {{{{ $$$$rrrraaaannnnkkkk{{{{$$$$____}}}} ==== ++++++++$$$$iiii }}}}
  829.  
  830.         #### nnnnoooowwww pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg ssssoooorrrrtttteeeedddd bbbbyyyy nnnnuuuummmmbbbbeeeerrrr ooooffff mmmmeeeemmmmbbbbeeeerrrrssss
  831.         ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( ssssoooorrrrtttt {{{{ kkkkeeeeyyyyssss %%%%{{{{$$$$HHHHooooHHHH{{{{$$$$bbbb}}}}}}}} <<<<====>>>> kkkkeeeeyyyyssss %%%%{{{{$$$$HHHHooooHHHH{{{{$$$$bbbb}}}}}}}} }}}} kkkkeeeeyyyyssss %%%%HHHHooooHHHH )))) {{{{
  832.             pppprrrriiiinnnntttt """"$$$$ffffaaaammmmiiiillllyyyy:::: """";;;;
  833.             #### aaaannnndddd pppprrrriiiinnnntttt tttthhhheeeesssseeee aaaaccccccccoooorrrrddddiiiinnnngggg ttttoooo rrrraaaannnnkkkk oooorrrrddddeeeerrrr
  834.             ffffoooorrrr $$$$rrrroooolllleeee (((( ssssoooorrrrtttt {{{{ $$$$rrrraaaannnnkkkk{{{{$$$$aaaa}}}} <<<<====>>>> $$$$rrrraaaannnnkkkk{{{{$$$$bbbb}}}} kkkkeeeeyyyyssss %%%%{{{{ $$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} }}}} {{{{
  835.                 pppprrrriiiinnnntttt """"$$$$rrrroooolllleeee====$$$$HHHHooooHHHH{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{$$$$rrrroooolllleeee}}}} """";;;;
  836.             }}}}
  837.             pppprrrriiiinnnntttt """"}}}}\\\\nnnn"""";;;;
  838.  
  839.  
  840. MMMMOOOORRRREEEE EEEELLLLAAAABBBBOOOORRRRAAAATTTTEEEE RRRREEEECCCCOOOORRRRDDDDSSSS
  841.        DDDDeeeeccccllllaaaarrrraaaattttiiiioooonnnn ooooffff MMMMOOOORRRREEEE EEEELLLLAAAABBBBOOOORRRRAAAATTTTEEEE RRRREEEECCCCOOOORRRRDDDDSSSS
  842.  
  843.        Here's a sample showing how to create and use a record
  844.        whose fields are of many different sorts:
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856. 30/Jan/96                perl 5.002 with                       13
  857.  
  858.  
  859.  
  860.  
  861.  
  862. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  863.  
  864.  
  865.             $$$$rrrreeeecccc ==== {{{{
  866.                 SSSSTTTTRRRRIIIINNNNGGGG  ====>>>> $$$$ssssttttrrrriiiinnnngggg,,,,
  867.                 LLLLIIIISSSSTTTT    ====>>>> [[[[ @@@@oooolllldddd____vvvvaaaalllluuuueeeessss ]]]],,,,
  868.                 LLLLOOOOOOOOKKKKUUUUPPPP  ====>>>> {{{{ %%%%ssssoooommmmeeee____ttttaaaabbbblllleeee }}}},,,,
  869.                 FFFFUUUUNNNNCCCC    ====>>>> \\\\&&&&ssssoooommmmeeee____ffffuuuunnnnccccttttiiiioooonnnn,,,,
  870.                 FFFFAAAANNNNOOOONNNN   ====>>>> ssssuuuubbbb {{{{ $$$$____[[[[0000]]]] ******** $$$$____[[[[1111]]]] }}}},,,,
  871.                 FFFFHHHH      ====>>>> \\\\****SSSSTTTTDDDDOOOOUUUUTTTT,,,,
  872.             }}}};;;;
  873.  
  874.             pppprrrriiiinnnntttt $$$$rrrreeeecccc---->>>>{{{{SSSSTTTTRRRRIIIINNNNGGGG}}}};;;;
  875.  
  876.             pppprrrriiiinnnntttt $$$$rrrreeeecccc---->>>>{{{{LLLLIIIISSSSTTTT}}}}[[[[0000]]]];;;;
  877.             $$$$llllaaaasssstttt ==== ppppoooopppp @@@@ {{{{ $$$$rrrreeeecccc---->>>>{{{{LLLLIIIISSSSTTTT}}}} }}}};;;;
  878.  
  879.             pppprrrriiiinnnntttt $$$$rrrreeeecccc---->>>>{{{{LLLLOOOOOOOOKKKKUUUUPPPP}}}}{{{{""""kkkkeeeeyyyy""""}}}};;;;
  880.             (((($$$$ffffiiiirrrrsssstttt____kkkk,,,, $$$$ffffiiiirrrrsssstttt____vvvv)))) ==== eeeeaaaacccchhhh %%%%{{{{ $$$$rrrreeeecccc---->>>>{{{{LLLLOOOOOOOOKKKKUUUUPPPP}}}} }}}};;;;
  881.  
  882.             $$$$aaaannnnsssswwwweeeerrrr ==== &&&&{{{{ $$$$rrrreeeecccc---->>>>{{{{FFFFUUUUNNNNCCCC}}}} }}}}(((($$$$aaaarrrrgggg))));;;;
  883.             $$$$aaaannnnsssswwwweeeerrrr ==== &&&&{{{{ $$$$rrrreeeecccc---->>>>{{{{FFFFAAAANNNNOOOONNNN}}}} }}}}(((($$$$aaaarrrrgggg1111,,,, $$$$aaaarrrrgggg2222))));;;;
  884.  
  885.             #### ccccaaaarrrreeeeffffuuuullll ooooffff eeeexxxxttttrrrraaaa bbbblllloooocccckkkk bbbbrrrraaaacccceeeessss oooonnnn ffffhhhh rrrreeeeffff
  886.             pppprrrriiiinnnntttt {{{{ $$$$rrrreeeecccc---->>>>{{{{FFFFHHHH}}}} }}}} """"aaaa ssssttttrrrriiiinnnngggg\\\\nnnn"""";;;;
  887.  
  888.             uuuusssseeee FFFFiiiilllleeeeHHHHaaaannnnddddlllleeee;;;;
  889.             $$$$rrrreeeecccc---->>>>{{{{FFFFHHHH}}}}---->>>>aaaauuuuttttoooofffflllluuuusssshhhh((((1111))));;;;
  890.             $$$$rrrreeeecccc---->>>>{{{{FFFFHHHH}}}}---->>>>pppprrrriiiinnnntttt(((("""" aaaa ssssttttrrrriiiinnnngggg\\\\nnnn""""))));;;;
  891.  
  892.  
  893.        DDDDeeeeccccllllaaaarrrraaaattttiiiioooonnnn ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF CCCCOOOOMMMMPPPPLLLLEEEEXXXX RRRREEEECCCCOOOORRRRDDDDSSSS
  894.  
  895.  
  896.             %%%%TTTTVVVV ==== ((((
  897.                """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""" ====>>>> {{{{
  898.                    sssseeeerrrriiiieeeessss   ====>>>> """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""",,,,
  899.                    nnnniiiigggghhhhttttssss   ====>>>> [[[[ qqqqwwww((((mmmmoooonnnnddddaaaayyyy tttthhhhuuuurrrrssssddddaaaayyyy ffffrrrriiiiddddaaaayyyy)))) ]]]];;;;
  900.                    mmmmeeeemmmmbbbbeeeerrrrssss  ====>>>> [[[[
  901.                        {{{{ nnnnaaaammmmeeee ====>>>> """"ffffrrrreeeedddd"""",,,,    rrrroooolllleeee ====>>>> """"lllleeeeaaaadddd"""",,,, aaaaggggeeee  ====>>>> 33336666,,,, }}}},,,,
  902.                        {{{{ nnnnaaaammmmeeee ====>>>> """"wwwwiiiillllmmmmaaaa"""",,,,   rrrroooolllleeee ====>>>> """"wwwwiiiiffffeeee"""",,,, aaaaggggeeee  ====>>>> 33331111,,,, }}}},,,,
  903.                        {{{{ nnnnaaaammmmeeee ====>>>> """"ppppeeeebbbbbbbblllleeeessss"""",,,, rrrroooolllleeee ====>>>> """"kkkkiiiidddd"""",,,, aaaaggggeeee  ====>>>>  4444,,,, }}}},,,,
  904.                    ]]]],,,,
  905.                }}}},,,,
  906.  
  907.                """"jjjjeeeettttssssoooonnnnssss""""     ====>>>> {{{{
  908.                    sssseeeerrrriiiieeeessss   ====>>>> """"jjjjeeeettttssssoooonnnnssss"""",,,,
  909.                    nnnniiiigggghhhhttttssss   ====>>>> [[[[ qqqqwwww((((wwwweeeeddddnnnneeeessssddddaaaayyyy ssssaaaattttuuuurrrrddddaaaayyyy)))) ]]]];;;;
  910.                    mmmmeeeemmmmbbbbeeeerrrrssss  ====>>>> [[[[
  911.                        {{{{ nnnnaaaammmmeeee ====>>>> """"ggggeeeeoooorrrrggggeeee"""",,,,  rrrroooolllleeee ====>>>> """"lllleeeeaaaadddd"""",,,, aaaaggggeeee  ====>>>> 44441111,,,, }}}},,,,
  912.                        {{{{ nnnnaaaammmmeeee ====>>>> """"jjjjaaaannnneeee"""",,,,    rrrroooolllleeee ====>>>> """"wwwwiiiiffffeeee"""",,,, aaaaggggeeee  ====>>>> 33339999,,,, }}}},,,,
  913.                        {{{{ nnnnaaaammmmeeee ====>>>> """"eeeellllrrrrooooyyyy"""",,,,   rrrroooolllleeee ====>>>> """"kkkkiiiidddd"""",,,,  aaaaggggeeee  ====>>>>  9999,,,, }}}},,,,
  914.                    ]]]],,,,
  915.                 }}}},,,,
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922. 30/Jan/96                perl 5.002 with                       14
  923.  
  924.  
  925.  
  926.  
  927.  
  928. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  929.  
  930.  
  931.                """"ssssiiiimmmmppppssssoooonnnnssss""""    ====>>>> {{{{
  932.                    sssseeeerrrriiiieeeessss   ====>>>> """"ssssiiiimmmmppppssssoooonnnnssss"""",,,,
  933.                    nnnniiiigggghhhhttttssss   ====>>>> [[[[ qqqqwwww((((mmmmoooonnnnddddaaaayyyy)))) ]]]];;;;
  934.                    mmmmeeeemmmmbbbbeeeerrrrssss  ====>>>> [[[[
  935.                        {{{{ nnnnaaaammmmeeee ====>>>> """"hhhhoooommmmeeeerrrr"""",,,, rrrroooolllleeee ====>>>> """"lllleeeeaaaadddd"""",,,, aaaaggggeeee  ====>>>> 33334444,,,, }}}},,,,
  936.                        {{{{ nnnnaaaammmmeeee ====>>>> """"mmmmaaaarrrrggggeeee"""",,,, rrrroooolllleeee ====>>>> """"wwwwiiiiffffeeee"""",,,, aaaaggggeeee ====>>>> 33337777,,,, }}}},,,,
  937.                        {{{{ nnnnaaaammmmeeee ====>>>> """"bbbbaaaarrrrtttt"""",,,,  rrrroooolllleeee ====>>>> """"kkkkiiiidddd"""",,,,  aaaaggggeeee  ====>>>>  11111111,,,, }}}},,,,
  938.                    ]]]],,,,
  939.                 }}}},,,,
  940.              ))));;;;
  941.  
  942.  
  943.        GGGGeeeennnneeeerrrraaaattttiiiioooonnnn ooooffff aaaa HHHHAAAASSSSHHHH OOOOFFFF CCCCOOOOMMMMPPPPLLLLEEEEXXXX RRRREEEECCCCOOOORRRRDDDDSSSS
  944.  
  945.  
  946.             #### rrrreeeeaaaaddddiiiinnnngggg ffffrrrroooommmm ffffiiiilllleeee
  947.             #### tttthhhhiiiissss iiiissss mmmmoooosssstttt eeeeaaaassssiiiillllyyyy ddddoooonnnneeee bbbbyyyy hhhhaaaavvvviiiinnnngggg tttthhhheeee ffffiiiilllleeee iiiittttsssseeeellllffff bbbbeeee
  948.             #### iiiinnnn tttthhhheeee rrrraaaawwww ddddaaaattttaaaa ffffoooorrrrmmmmaaaatttt aaaassss sssshhhhoooowwwwnnnn aaaabbbboooovvvveeee....  ppppeeeerrrrllll iiiissss hhhhaaaappppppppyyyy
  949.             #### ttttoooo ppppaaaarrrrsssseeee ccccoooommmmpppplllleeeexxxx ddddaaaattttaaaassssttttrrrruuuuccccttttuuuurrrreeeessss iiiiffff ddddeeeeccccllllaaaarrrreeeedddd aaaassss ddddaaaattttaaaa,,,, ssssoooo
  950.             #### ssssoooommmmeeeettttiiiimmmmeeeessss iiiitttt''''ssss eeeeaaaassssiiiieeeesssstttt ttttoooo ddddoooo tttthhhhaaaatttt
  951.  
  952.             #### hhhheeeerrrreeee''''ssss aaaa ppppiiiieeeecccceeee bbbbyyyy ppppiiiieeeecccceeee bbbbuuuuiiiilllldddd uuuupppp
  953.             $$$$rrrreeeecccc ==== {{{{}}}};;;;
  954.             $$$$rrrreeeecccc---->>>>{{{{sssseeeerrrriiiieeeessss}}}} ==== """"fffflllliiiinnnnttttssssttttoooonnnneeeessss"""";;;;
  955.             $$$$rrrreeeecccc---->>>>{{{{nnnniiiigggghhhhttttssss}}}} ==== [[[[ ffffiiiinnnndddd____ddddaaaayyyyssss(((()))) ]]]];;;;
  956.  
  957.             @@@@mmmmeeeemmmmbbbbeeeerrrrssss ==== (((())));;;;
  958.             #### aaaassssssssuuuummmmeeee tttthhhhiiiissss ffffiiiilllleeee iiiinnnn ffffiiiieeeelllldddd====vvvvaaaalllluuuueeee ssssyyyynnnnttttaaaaxxxx
  959.             wwwwhhhhiiiilllleeee (((()))) {{{{
  960.                 %%%%ffffiiiieeeellllddddssss ==== sssspppplllliiiitttt ////[[[[\\\\ssss====]]]]++++////;;;;
  961.                 ppppuuuusssshhhh @@@@mmmmeeeemmmmbbbbeeeerrrrssss,,,, {{{{ %%%%ffffiiiieeeellllddddssss }}}};;;;
  962.             }}}}
  963.             $$$$rrrreeeecccc---->>>>{{{{mmmmeeeemmmmbbbbeeeerrrrssss}}}} ==== [[[[ @@@@mmmmeeeemmmmbbbbeeeerrrrssss ]]]];;;;
  964.  
  965.             #### nnnnoooowwww rrrreeeemmmmeeeemmmmbbbbeeeerrrr tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg
  966.             $$$$TTTTVVVV{{{{ $$$$rrrreeeecccc---->>>>{{{{sssseeeerrrriiiieeeessss}}}} }}}} ==== $$$$rrrreeeecccc;;;;
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988. 30/Jan/96                perl 5.002 with                       15
  989.  
  990.  
  991.  
  992.  
  993.  
  994. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  995.  
  996.  
  997.             ############################################################################################################################################################################################################################################
  998.             #### nnnnoooowwww,,,, yyyyoooouuuu mmmmiiiigggghhhhtttt wwwwaaaannnntttt ttttoooo mmmmaaaakkkkeeee iiiinnnntttteeeerrrreeeessssttttiiiinnnngggg eeeexxxxttttrrrraaaa ffffiiiieeeellllddddssss tttthhhhaaaatttt
  999.             #### iiiinnnncccclllluuuuddddeeee ppppooooiiiinnnntttteeeerrrrssss bbbbaaaacccckkkk iiiinnnnttttoooo tttthhhheeee ssssaaaammmmeeee ddddaaaattttaaaa ssssttttrrrruuuuccccttttuuuurrrreeee ssssoooo iiiiffff
  1000.             #### cccchhhhaaaannnnggggeeee oooonnnneeee ppppiiiieeeecccceeee,,,, iiiitttt cccchhhhaaaannnnggggeeeessss eeeevvvveeeerrrryyyywwwwhhhheeeerrrreeee,,,, lllliiiikkkkeeee ffffoooorrrr eeeexxxxaaaammmmpppplllleeeessss
  1001.             #### iiiiffff yyyyoooouuuu wwwwaaaannnntttteeeedddd aaaa {{{{kkkkiiiiddddssss}}}} ffffiiiieeeelllldddd tttthhhhaaaatttt wwwwaaaassss aaaannnn aaaarrrrrrrraaaayyyy rrrreeeeffffeeeerrrreeeennnncccceeee
  1002.             #### ttttoooo aaaa lllliiiisssstttt ooooffff tttthhhheeee kkkkiiiiddddssss'''' rrrreeeeccccoooorrrrddddssss wwwwiiiitttthhhhoooouuuutttt hhhhaaaavvvviiiinnnngggg dddduuuupppplllliiiiccccaaaatttteeee
  1003.             #### rrrreeeeccccoooorrrrddddssss aaaannnndddd tttthhhhuuuussss uuuuppppddddaaaatttteeee pppprrrroooobbbblllleeeemmmmssss....
  1004.             ############################################################################################################################################################################################################################################
  1005.             ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy ((((kkkkeeeeyyyyssss %%%%TTTTVVVV)))) {{{{
  1006.                 $$$$rrrreeeecccc ==== $$$$TTTTVVVV{{{{$$$$ffffaaaammmmiiiillllyyyy}}}};;;; #### tttteeeemmmmpppp ppppooooiiiinnnntttteeeerrrr
  1007.                 @@@@kkkkiiiiddddssss ==== (((())));;;;
  1008.                 ffffoooorrrr $$$$ppppeeeerrrrssssoooonnnn (((( @@@@{{{{$$$$rrrreeeecccc---->>>>{{{{mmmmeeeemmmmbbbbeeeerrrrssss}}}}}}}} )))) {{{{
  1009.                     iiiiffff (((($$$$ppppeeeerrrrssssoooonnnn---->>>>{{{{rrrroooolllleeee}}}} ====~~~~ ////kkkkiiiidddd||||ssssoooonnnn||||ddddaaaauuuugggghhhhtttteeeerrrr////)))) {{{{
  1010.                         ppppuuuusssshhhh @@@@kkkkiiiiddddssss,,,, $$$$ppppeeeerrrrssssoooonnnn;;;;
  1011.                     }}}}
  1012.                 }}}}
  1013.                 #### RRRREEEEMMMMEEEEMMMMBBBBEEEERRRR:::: $$$$rrrreeeecccc aaaannnndddd $$$$TTTTVVVV{{{{$$$$ffffaaaammmmiiiillllyyyy}}}} ppppooooiiiinnnntttt ttttoooo ssssaaaammmmeeee ddddaaaattttaaaa!!!!!!!!
  1014.                 $$$$rrrreeeecccc---->>>>{{{{kkkkiiiiddddssss}}}} ==== [[[[ @@@@kkkkiiiiddddssss ]]]];;;;
  1015.             }}}}
  1016.  
  1017.             #### yyyyoooouuuu ccccooooppppiiiieeeedddd tttthhhheeee lllliiiisssstttt,,,, bbbbuuuutttt tttthhhheeee lllliiiisssstttt iiiittttsssseeeellllffff ccccoooonnnnttttaaaaiiiinnnnssss ppppooooiiiinnnntttteeeerrrrssss
  1018.             #### ttttoooo uuuunnnnccccooooppppiiiieeeedddd oooobbbbjjjjeeeeccccttttssss.... tttthhhhiiiissss mmmmeeeeaaaannnnssss tttthhhhaaaatttt iiiiffff yyyyoooouuuu mmmmaaaakkkkeeee bbbbaaaarrrrtttt ggggeeeetttt
  1019.             #### oooollllddddeeeerrrr vvvviiiiaaaa
  1020.  
  1021.             $$$$TTTTVVVV{{{{ssssiiiimmmmppppssssoooonnnnssss}}}}{{{{kkkkiiiiddddssss}}}}[[[[0000]]]]{{{{aaaaggggeeee}}}}++++++++;;;;
  1022.  
  1023.             #### tttthhhheeeennnn tttthhhhiiiissss wwwwoooouuuulllldddd aaaallllssssoooo cccchhhhaaaannnnggggeeee iiiinnnn
  1024.             pppprrrriiiinnnntttt $$$$TTTTVVVV{{{{ssssiiiimmmmppppssssoooonnnnssss}}}}{{{{mmmmeeeemmmmbbbbeeeerrrrssss}}}}[[[[2222]]]]{{{{aaaaggggeeee}}}};;;;
  1025.  
  1026.             #### bbbbeeeeccccaaaauuuusssseeee $$$$TTTTVVVV{{{{ssssiiiimmmmppppssssoooonnnnssss}}}}{{{{kkkkiiiiddddssss}}}}[[[[0000]]]] aaaannnndddd $$$$TTTTVVVV{{{{ssssiiiimmmmppppssssoooonnnnssss}}}}{{{{mmmmeeeemmmmbbbbeeeerrrrssss}}}}[[[[2222]]]]
  1027.             #### bbbbooootttthhhh ppppooooiiiinnnntttt ttttoooo tttthhhheeee ssssaaaammmmeeee uuuunnnnddddeeeerrrrllllyyyyiiiinnnngggg aaaannnnoooonnnnyyyymmmmoooouuuussss hhhhaaaasssshhhh ttttaaaabbbblllleeee
  1028.  
  1029.             #### pppprrrriiiinnnntttt tttthhhheeee wwwwhhhhoooolllleeee tttthhhhiiiinnnngggg
  1030.             ffffoooorrrreeeeaaaacccchhhh $$$$ffffaaaammmmiiiillllyyyy (((( kkkkeeeeyyyyssss %%%%TTTTVVVV )))) {{{{
  1031.                 pppprrrriiiinnnntttt """"tttthhhheeee $$$$ffffaaaammmmiiiillllyyyy"""";;;;
  1032.                 pppprrrriiiinnnntttt """" iiiissss oooonnnn dddduuuurrrriiiinnnngggg @@@@{{{{ $$$$TTTTVVVV{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{nnnniiiigggghhhhttttssss}}}} }}}}\\\\nnnn"""";;;;
  1033.                 pppprrrriiiinnnntttt """"iiiittttssss mmmmeeeemmmmbbbbeeeerrrrssss aaaarrrreeee::::\\\\nnnn"""";;;;
  1034.                 ffffoooorrrr $$$$wwwwhhhhoooo (((( @@@@{{{{ $$$$TTTTVVVV{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{mmmmeeeemmmmbbbbeeeerrrrssss}}}} }}}} )))) {{{{
  1035.                     pppprrrriiiinnnntttt """" $$$$wwwwhhhhoooo---->>>>{{{{nnnnaaaammmmeeee}}}} (((($$$$wwwwhhhhoooo---->>>>{{{{rrrroooolllleeee}}}})))),,,, aaaaggggeeee $$$$wwwwhhhhoooo---->>>>{{{{aaaaggggeeee}}}}\\\\nnnn"""";;;;
  1036.                 }}}}
  1037.                 pppprrrriiiinnnntttt """"iiiitttt ttttuuuurrrrnnnnssss oooouuuutttt tttthhhhaaaatttt $$$$TTTTVVVV{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{''''lllleeeeaaaadddd''''}}}} hhhhaaaassss """";;;;
  1038.                 pppprrrriiiinnnntttt ssssccccaaaallllaaaarrrr (((( @@@@{{{{ $$$$TTTTVVVV{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{kkkkiiiiddddssss}}}} }}}} )))),,,, """" kkkkiiiiddddssss nnnnaaaammmmeeeedddd """";;;;
  1039.                 pppprrrriiiinnnntttt jjjjooooiiiinnnn (((("""",,,, """",,,, mmmmaaaapppp {{{{ $$$$____---->>>>{{{{nnnnaaaammmmeeee}}}} }}}} @@@@{{{{ $$$$TTTTVVVV{{{{$$$$ffffaaaammmmiiiillllyyyy}}}}{{{{kkkkiiiiddddssss}}}} }}}} ))));;;;
  1040.                 pppprrrriiiinnnntttt """"\\\\nnnn"""";;;;
  1041.             }}}}
  1042.  
  1043.  
  1044. DDDDaaaattttaaaabbbbaaaasssseeee TTTTiiiieeeessss
  1045.        You cannot easily tie a multilevel data structure (such as
  1046.        a hash of hashes) to a dbm file.  The first problem is
  1047.        that all but GDBM and Berkeley DB have size limitations,
  1048.        but beyond that, you also have problems with how
  1049.        references are to be represented on disk.  One
  1050.        experimental module that does attempt to partially address
  1051.  
  1052.  
  1053.  
  1054. 30/Jan/96                perl 5.002 with                       16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. PERLDSC(1)     User Contributed Perl Documentation     PERLDSC(1)
  1061.  
  1062.  
  1063.        this need is the MLDBM module.  Check your nearest CPAN
  1064.        site as described in the _p_e_r_l_m_o_d manpage for source code
  1065.        to MLDBM.
  1066.  
  1067. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  1068.        the _p_e_r_l_r_e_f manpage, the _p_e_r_l_l_o_l manpage, the _p_e_r_l_d_a_t_a
  1069.        manpage, the _p_e_r_l_o_b_j manpage
  1070.  
  1071. AAAAUUUUTTTTHHHHOOOORRRR
  1072.        Tom Christiansen <_t_c_h_r_i_s_t_@_p_e_r_l_._c_o_m>
  1073.  
  1074.        Last update: Tue Dec 12 09:20:26 MST 1995
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120. 30/Jan/96                perl 5.002 with                       17
  1121.  
  1122.  
  1123.