http://qs321.pair.com?node_id=1093581


in reply to Re: I need help with the error "Modification of non-creatable array value attempted"
in thread I need help with the error "Modification of non-creatable array value attempted"

Thanks for the reply but I've already found the error. I've updated the code to what it currently is, EXCEPT that I've left the $number/= 2; line (which made the error appear). It seems that it tried to assign a $number % 2 to an element of an array, but it couldn't since $number wasn't guaranteed to be a whole number (and I guess that makes % fail), I've changed the $number/= 2; to $number = int($number/ 2) and now it works perfectly :)

  • Comment on Re^2: I need help with the error "Modification of non-creatable array value attempted"

Replies are listed 'Best First'.
Re^3: I need help with the error "Modification of non-creatable array value attempted"
by Athanasius (Archbishop) on Jul 14, 2014 at 17:17 UTC
    $number wasn't guaranteed to be a whole number (and I guess that makes % fail)

    No, Perl is OK with that:

    3:03 >perl -MData::Dump -wE "my @array; $array[5.35968 % 2] = 42; dd +\@array;" [undef, 42] 3:03 >

    But the original loop almost certainly wasn’t doing what you thought it was. With an initial value of 192:

    3:03 >perl -wE "my $iterations = 0; my $number = 192; while ($number +!= 0) { $number /= 2; ++$iterations; } say qq[$iterations iterations] +;" 1083 iterations 3:06 >

    The loop terminates when $number is zero, but (on my Perl, which is 64-bit) this test doesn’t succeed until division by two has reduced $number all the way down to half of 4.94065645841247 × 10-324 — which is a very small number!

    Hope that helps,

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Re^3: I need help with the error "Modification of non-creatable array value attempted"
by davido (Cardinal) on Jul 14, 2014 at 17:09 UTC