sub mapn (&@) { my ( $callback, $n ) = splice @_, 0, 2; map { $n = @_ if $n > @_; $callback->( splice @_, 0, $n ); } 0 .. @_ / $n - 1; }