my @arrays = \( @array1, @array2, @array3 ); my %seen; my $i = 0; { my $count = 0; for ( @arrays ) { ++$count and next unless $_->[$i]; print "$_->[$i] " unless $seen{$_->[$i]}++; } $i++; redo unless $count >= @arrays; }