in reply to a little zip()
Call it like so:sub zipn { local $[ = 0; [ map { my $index = $_; map { defined($_[$_][$index]) ? $_[$_][$index] : '' } 0..$#_ } 0 .. maximum(map { $#{$_[$_]} } 0..$#_) ] } sub maximum { local $[ = 0; ($#_ == 1) ? ( ($_[0] >= $_[1]) ? $_[0] : $_[1] ) : maximum(maximum($_[0], $_[1]), @_[2..$#_]); }
and it'll return this:zipn([1,2,3], [4,5,6], [7,8,9,10])
That maximum() function is a bit silly, getting rid of the recursion would make it way more efficient, but I firmly believe that "to recurse is divine".[1,4,7,2,5,8,3,6,9,'','',10]
|
|---|