Err, no. When I replied to your post, it only dealt with numbers as elements. You've since changed your post by adding the second program. Here is a demonstration that the first version of your post does not work for text:
#!/usr/bin/perl
#my $text = '1,2,3,4,5,6,7,8';
my $text = 'a,b,c,d,e,f,g,h,i,j';
my (@even, @odd);
push @{ $_ % 2 ? \@odd : \@even }, $_ for split /,/, $text;
print "odd = @odd, even = @even\n";
__END__
output (first $text):
odd = 1 3 5 7, even = 2 4 6 8
output (second $text):
odd = , even = a b c d e f g h i j
|