in reply to Re: interleave two arrays
in thread interleave two arrays

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?

Replies are listed 'Best First'.
Re: Re: Re: interleave two arrays
by scott (Chaplain) on Jul 03, 2001 at 17:14 UTC

    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.