in reply to split every other value
That begs a question of semantics. Do you mean the even vs odd values?
Then the common idiom would be something like
my (@even, @odd); push @{ $_ % 2 ? \@odd : \@even }, $_ for split /,/, $text;
Here, you loop over all the elements, giving push either @odd or @even to push the element onto, depending on whether the element is odd or even. The awkward @{ ... } construct is necessary because push demands that its first argument have a @ sigil in front, no matter what.
Or, do you mean the even vs odd positions in the list?
Then you'd use something like
my (@even, @odd); my $i = 0; push @{ $i++ % 2 ? \@odd : \@even }, $_ for split /,/, $text;
Here, you increase a position counter at each iteration, and make the decision depending on its even/oddness.
Update: see Re^6: split every other value about the following code and Re^7: split every other value for my reply with a correct derivative.
Another option in this case is something like
my @field = split /,/, $text; my (@even, @odd) = @field[ map { $_, $_ + @field / 2 } 0 .. ( @field / 2 ) - 1 ];
Makeshifts last the longest.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: split every other value
by beable (Friar) on Aug 07, 2004 at 00:18 UTC | |
by Aristotle (Chancellor) on Aug 07, 2004 at 00:23 UTC | |
by beable (Friar) on Aug 07, 2004 at 00:30 UTC | |
by Aristotle (Chancellor) on Aug 07, 2004 at 00:34 UTC | |
by ysth (Canon) on Aug 07, 2004 at 00:48 UTC | |
|