in reply to split every other value

my $s = join',', 1..10; my( @odds, @evens ); m[([^,]+),([^,]+)] and push @odds, $1 and push @evens, $2 for split /([^,]+,[^,]+)(?:,|$)/, $s; print "@odds\n@evens";; 1 3 5 7 9 2 4 6 8 10

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon

Replies are listed 'Best First'.
Re^2: split every other value
by Aristotle (Chancellor) on Aug 07, 2004 at 06:18 UTC

    You didn't test that with an odd number of elements in $s, did you? :-)

    Makeshifts last the longest.

      You right. Here's a better way that resurrects and old snippet with (I think), improvements:

      sub mapn (&$@) { my( $code, $n, ) = ( shift, shift ); map { $code->( @_[ $_ .. $_ + $n -1 ] ); } map $n * $_, 0 .. ( $#_ / $n ); } my $s = join',', 1 .. 11; my( @odds, @evens ); mapn{ push @odds, shift||(); push @evens, shift||(); } 2, split ',', $s; print "@odds\n@evens";; 1 3 5 7 9 11 2 4 6 8 10

      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "Think for yourself!" - Abigail
      "Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon