use List::MoreUtils qw( natatime ); my $it = natatime 3, @array; while ( my @vals = $it->() ) { do_something( @vals ); }