in reply to Modification of non-creatable array value attempted, subscript -1 error

>perl -e "$x[-1]=0" Modification of non-creatable array value attempted, subscript -1 at - +e line 1.
You are attempting to use an invalid index for an array - Indices normally start at 0, and you are attempting -1.

If you show us the line where it fails, and how the subscript is calculated, it would help.

If you are on a 32-bit machine, and you are using the record number as a subscript, you may be over-running the count into the sign bit.

        What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?
              -Larry Wall, 1992

  • Comment on Re: Modification of non-creatable array value attempted, subscript -1 error
  • Download Code

Replies are listed 'Best First'.
Re^2: Modification of non-creatable array value attempted, subscript -1 error
by Anonymous Monk on Feb 21, 2014 at 00:12 UTC
    So it doesn't have to do with the size of the file that I am reading? Because it's something like 200+ MB and I thought it was related to memory...
      Not nothing "to do with the size of the file..." because, as NetWallah told you (by example) that there are cases in which the size of the file might come into play.

      We'd need to know a lot more to be sure of that -- at least, about how you are creating the index and if there's any possibility that the length of the value of the record number exceeds the size of storage available for that value.

      So try providing at least a minimal section of your code that causes the error (keyed, one can hope to whatever line number was identified in the complete version of the message you cited) and a clear picture of the data structure (10e7 short records, 100 long -- 1025-char, multi-line records -- or whatever.)

      Come, let us reason together: Spirit of the Monastery

      If you didn't program your executable by toggling in binary, it wasn't really programming!

      If the array is empty, then -1 goes to -1 which cannot exist

      If the array is not empty, then -1 goes to the last element (it exists)

      $ perl -Mdiagnostics -e " my @f; $f[-1] = 0; " Modification of non-creatable array value attempted, subscript -1 at - +e line 1 (#1) (F) You tried to make an array value spring into existence, and th +e subscript was probably negative, even counting from end of the arr +ay backwards. Uncaught exception from user code: Modification of non-creatable array value attempted, subscript + -1 at -e line 1. $ perl -Mdiagnostics -e " my @f = 0; $f[-1] = 0; "