my $x=50; #blocksize foreach (my $i=0;$i<=int($#ary/50);$i++) { my $end = ($x*$i+$x-1>=$#ary?$#ary:($x*$i+$x-1); my @keep = @ary[$i*$x..$end]; # Do stuff with @keep }