Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: split problem

by stevieb (Canon)
on Nov 29, 2016 at 22:44 UTC ( #1176868=note: print w/replies, xml ) Need Help??


in reply to split problem

I believe you have to initialize the array in order. Switching these two lines:

$flds[16] = undef; $flds[8] = 0;

...around like this:

$flds[8] = 0; $flds[16] = undef;

...will work, but then you won't be able to populate the other ones. Perhaps a full blown initialization of any array elements that aren't populated by split first?:

use warnings; use strict; use Data::Dumper; my $value = "A\tB\tC\tD\tE\tF\t\t\t\t"; my @flds = split(/\t/,$value); for (0..16){ $flds[$_] = undef if ! defined $flds[$_]; } $flds[8] = 0; print Dumper \@flds;

Output:

$VAR1 = [ 'A', 'B', 'C', 'D', 'E', 'F', undef, undef, 0, undef, undef, undef, undef, undef, undef, undef, undef ];

Replies are listed 'Best First'.
Re^2: split problem
by Anonymous Monk on Nov 29, 2016 at 23:20 UTC

    I believe you have to initialize the array in order. Switching these two lines:

    :) nope, this is perl, the order doesn't matter

    Looks like some recent optimization has backfired, again

      That's strange. Using OP's code on 5.24.0, it breaks. If I swap those two lines around, it works fine. I've never had an issue with assigning values to an array out of order before, but in this case, it definitely matters :)

      Works:

      use warnings; use strict; my $value = "A\tB\tC\tD\tE\tF\t\t\t\t\t\t"; my @flds = split(/\t/, $value); $flds[8] = 0; $flds[16] = undef; print scalar @flds; __END__ 17

      Borked:

      use warnings; use strict; my $value = "A\tB\tC\tD\tE\tF\t\t\t\t\t\t"; my @flds = split(/\t/, $value); $flds[16] = undef; $flds[8] = 0; print scalar @flds; __END__ Modification of a read-only value attempted at split.pl line 7.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1176868]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (5)
As of 2022-08-10 07:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?