in reply to Re^4: split every other value
in thread split every other value

Actually, that is the one I added later. The one with the counter was there from the beginning — in fact, the first solution I wrote was the one with the slice (I added the foreach-push one before posting because the slice is too obscure).

Makeshifts last the longest.

Replies are listed 'Best First'.
Re^6: split every other value
by ysth (Canon) on Aug 07, 2004 at 00:48 UTC
    I added the foreach-push one before posting because the slice is probably too obscure for most people
    Assuming you are talking about:
    my (@even, @odd) = @field[ map { $_, $_ + @field / 2 } 0 .. ( @field / 2 ) - 1 ];
    it's not just obscure, it doesn't work. @even will get assigned all the fields. You need something like:
    my (@even, @odd); (@even[0..(@field/2)-1], @odd[0..(@field/2)-1]) =

      Yes, that's the one I was talking about, and yes, you are right. Trying to correct along another line that leads me to another nice solution:

      my @field = split /,/, $text; my @even = @field[ map $_ * 2, 0 .. ( @field / 2 ) - 1 ]; my @odd = @field[ map $_ * 2 + 1, 0 .. ( @field / 2 ) - 1 ];

      (Despite the two maps, it only iterates once — a half-iteration in each of them.)

      Makeshifts last the longest.