in reply to Re: Can't modify private array in division (/) at lib.pl line 31, near "2;"
in thread SOLVED - Can't modify private array in division (/) at lib.pl line 31, near "2;"

You cannot divide arrays by 2

I understand what you meant, but to be really pedantic ... I think you can divide them by two, but you can't assign it back... $x = @a/2 fine, @x = 2 not so much... and that's what @a /= 2 is doing, but it's doing it to a protected value, which is the size of the array.

UPDATE: I understand that it's not what he wants and that your answer is essentially correct. I was correcting the very small pedantic point that you can divide an array by 2, you just can't set its size to 2 with @a/=2. I definitely wasn't clear on what I meant either though. @x=2 is fine, but it's really @x=(2). You can't actually express what @a/=2 is assigning, which is @a.size = @a/2. Looks like ruby or something -- you could express it with splice, but you'd have to (at least implicitly) mention the start and end of your size reduction.

-Paul

Replies are listed 'Best First'.
Re^3: Can't modify private array in division (/) at lib.pl line 31, near "2;"
by JavaFan (Canon) on Apr 09, 2009 at 08:40 UTC
    @a / 2 gives you half the number of elements in @a. Which isn't even close to what the OP wants to achieve. You can BTW assign such a result back:
    $ perl -wE '@a = "a" .. "z"; @a = @a / 2; say @a' 13
    But @a /= 2 will fail. However, it has little to do what the OP wants.