in reply to Re^2: 2 D array
in thread 2 D array

Keep in mind that an array is a list of scalar "things".

Luckily, since array references are scalar "things", your primary array can be made to hold 361 scalar references, each of which is referencing a unique 361-element array.

For those "secondary" arrays, your job is to somehow create 361 lists (arrays) and still be able to access them as scalar references. But hey, you can get one of those with [(0) x 361]

You only need to push 360 more onto the primary list where you stored that first one. :-)

Note: thanks to ikegami for pointing out the mistake with my previous statement that:

@row = ((0) x 361); is creating a one-element list whose element is a scalar string of 361 zeros.('0000000000000000 ... 00000')

Replies are listed 'Best First'.
Re^4: 2 D array
by ikegami (Patriarch) on Jul 29, 2011 at 04:28 UTC

    So, @row = ((0) x 361); is creating a one-element list whose element is a scalar string of 361 zeros.('0000000000000000 ... 00000')

    No. 0 x 361 would do that. (0) x 361 creates a list of 361 zeroes.

    >perl -E"say for (0) x 5;" 0 0 0 0 0 >perl -E"say for 0 x 5;" 00000

    Yeah, that's a pretty quirky syntax.

      Thanks for that correction. I had tested the idea with:

      perl -e "print ((0) x 11);"

      and saw a line of zeros. I guess printing 11 elements is going to look like a string (00000000000) but that doesn't mean it IS a string!

      Another good reason to use say :-)