Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??
A Perl n-D structure is not an "array", certainly not for n>1. To me an array has a fixed, regular memory layout, like a checker or chess board. If I am on row 4, square 6 and I want to know what row 3, square 5 contains, I just go: left 1 and up 1 from where I am at. That's it!

A Perl LoL (List of List), a Perl 2-D structure, doesn't work that way. I've written FORTRAN code with 2-D arrays and some ASM code, but never any C code yet and certainly not any Perl code. It is simply not the way that it is done.

In Perl, every dimension until the last one is a "reference". It works the same as 'C'. If you take a 'C' class, somewhere along the path to the first year, you will learn that this: int x [8][8]; is total BS! There is a HUGE flaw with this because you cannot pass "x" to a subroutine! How big is it? What do I do? The answer to this is similar to how Perl does it. The first dimension is a list of pointers to the 2nd dimension. In the case of a 2-D array, you have to allocate memory for the list of pointers to lists and also for the "rows" themselves and it's a pretty huge hassle!

Anyway what you wind up with is a "list" of pointers to "lists". Now I can give you "x" and tell you to add say 5 to every element in this structure. I don't have to tell you how many rows there are, I don't have to tell you how many columns there are (and they may even vary between rows).

Perl automates a lot of this "grunt work". A Perl 2-D structure is not an array. It is a list of lists.


In reply to Re^2: why the array index has to start at 0?? by Marshall
in thread why the array index has to start at 0?? by targetsmart

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others avoiding work at the Monastery: (12)
    As of 2015-07-06 19:27 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









      Results (81 votes), past polls