Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^4: split every other value

by beable (Friar)
on Aug 07, 2004 at 00:30 UTC ( [id://380788]=note: print w/replies, xml ) Need Help??


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

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

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

    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.

      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://380788]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (3)
As of 2024-04-25 22:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found