Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: interleave two arrays

by scott (Chaplain)
on Feb 04, 2001 at 04:15 UTC ( [id://56261]=note: print w/replies, xml ) Need Help??


in reply to interleave two arrays

Shockingly (for me to see this question here), I just solved this problem two days ago.

Try this:

@foo = ( 1 , 3 , 5 , 7 ); @bar = ( 2 , 4 , 6 , 8 ); @baz = map { ( $_ , shift @bar ) } @foo;

It suffers from losing the end of @bar if length( @bar ) > length ( @foo ) though.

Replies are listed 'Best First'.
Re: Re: interleave two arrays
by La12 (Sexton) on Jul 02, 2001 at 19:58 UTC
    Scott, I tried your code on a similar problem that I had
    print STDOUT my @foobar = map { ( $_, shift @foo ) } @bar;
    and it worked, but when I turn on use warnings; I get the following error:
    Use of uninitialized value in print at line 3
    I've done some research and it seems that some people just complain about using warning and turn them off (I don't want to do that), and other say to re-work the code into a while loop. Anyone have any advice as to how I can keep the code while getting rid of the error?

      Hmmm ... this works for me with no comments from perl:

      use strict; use warnings; my @foo = ( 1 , 3 , 5 , 7 ); my @bar = ( 2 , 4 , 6 , 8 ); print STDOUT my @baz = map { ( $_ , shift @bar ) } @foo;
      I originally had a problem with `uninitialized' warnings when trying to reproduce your problem but it turned out to be because I had
      [ ... stuff ... ] my @baz = map { ( $_ , shift @bar ) } @foo; print STDOUT my @baz = map { ( $_ , shift @bar ) } @foo;
      This, of course, eats up @bar the first time so there's nothing left to shift the second time. :(

      What's on your lines 1 and 2?

      As for the general problem of warnings, I only turn warnings off for short one-shot scripts that I know will work even though I wrote bad code. Or, rather, I ignore them unless they get in the way of the output.

      I've never encountered a warning (from perl) that wasn't justified so if I'm doing anything at all important I eliminate them.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (1)
As of 2024-04-25 19:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found