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