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

@row = ((0) x 361); @column = ((0) x 361); my @Matrix = ( @row, @column); ?

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

    You didn't change anything but the names of the variables?!? That's still the same as

    my @Matrix = (0) x (361*2);

    You want to end up with something equivalent to

    my @Matrix = ( [ (0) x 361 ], [ (0) x 361 ], [ (0) x 361 ], ... 355 more ... [ (0) x 361 ], [ (0) x 361 ], [ (0) x 361 ], );

    Unless you want 361 identical lines, you'll want some kind of loop...

    (I'm treating this as homework. Whether it's personal or assigned doesn't matter to me.)

Re^3: 2 D array
by ff (Hermit) on Jul 29, 2011 at 01:46 UTC
    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')

      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 :-)