# Sublists generated by an iterator. my @p1 = ( 'A' , undef, undef, 'A', undef, undef, 'A', undef, undef, 'A' ); my @p2 = ( undef, 'C', undef, undef, undef, 'C', undef, undef, undef, 'C' ); my @p3 = ( undef, undef, 'B', undef, undef, undef, undef, 'B', undef, undef ); my @p4 = ( undef, undef, undef, 'D', undef, undef, undef, undef, undef, undef ); # Now zip them up. my @solution = grep { defined } zip @p1, @p2, @p3, @p4; print "@solution\n"; # Produces A C B A D C A B A C