```{index} single: zip; List::Util function ``` ```{index} single: List::Util::zip; Perl function ``` # zip Walk multiple arrays in lockstep, returning one arrayref per row. Registered under both `zip` and `zip_longest`. Both forms stop at the length of the longest input and fill missing positions with `undef`. ## Synopsis ```perl my @rows = zip \@a, \@b, \@c; my @rows = zip_longest \@a, \@b, \@c; foreach ( zip \@xs, \@ys ) { my ($x, $y) = @$_; } ``` ## What you get back A list of arrayrefs, one per row. Row `i` contains the `i`-th element of each input array in order. Shorter inputs contribute `undef` beyond their own length. ## Examples ```perl my @r = zip [1..3], ['a'..'c']; # ([1,'a'], [2,'b'], [3,'c']) my @r = zip [1..3], ['a'..'b']; # ([1,'a'], [2,'b'], [3,undef]) ``` ## Differences from upstream Fully compatible with upstream. ## See also - `zip_shortest` — stop at the shortest input. - `mesh` — flatten the rows instead of wrapping in arrayrefs.