http://qs1969.pair.com?node_id=1176875


in reply to Re: split problem
in thread split problem

Except that if you assign any value past the end of an array, Perl is supposed to automatically lengthen the array to accommodate the value.
use strict; use 5.10.0; my @flds; $flds[16] = undef; say 0+ @flds;
I can see no rational reason to treat an array holding the results of a split differently other arrays.

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

Replies are listed 'Best First'.
Re^3: split problem
by kcott (Archbishop) on Nov 30, 2016 at 00:09 UTC
    "Except that if you assign any value past the end of an array, Perl is supposed to automatically lengthen the array to accommodate the value."

    You're correct. See my update. I've stricken the text concerning "past the end of the array".

    — Ken

      Hi, thank you

      I've been trying to reproduce the error and I can do it by marking the array readonly

      $ perl -e " use Data::Lock qw/ dlock /; use Devel::Peek; my @f; + Dump\@f; dlock \@f; Dump\@f; $f[1]=1; "
      SV = IV(0x3f9ad8) at 0x3f9adc
        REFCNT = 1
        FLAGS = (TEMP,ROK)
        RV = 0x99bb0c
        SV = PVAV(0x3fa970) at 0x99bb0c
          REFCNT = 2
          FLAGS = (PADMY)
          ARRAY = 0x0
          FILL = -1
          MAX = -1
          ARYLEN = 0x0
          FLAGS = (REAL)
      SV = IV(0x3f9ad8) at 0x3f9adc
        REFCNT = 1
        FLAGS = (TEMP,ROK)
        RV = 0x99bb0c
        SV = PVAV(0x3fa970) at 0x99bb0c
          REFCNT = 2
          FLAGS = (PADMY,READONLY)
          ARRAY = 0x0
          FILL = -1
          MAX = -1
          ARYLEN = 0x0
          FLAGS = (REAL)
      Modification of a read-only value attempted at -e line 1.

      That split is somehow is marking it readonly is so weird :D