my @array = 1..10; my $r = sub { \@_ }->(@array); while (my @chunk = splice @$r, 0, 2) { print "Chunk: @chunk\n"; } print "Original array is still intact! (@array)\n"; #### my @array = 1..10; for (my $i = 0; $i <= $#array; $i += 2) { my @chunk = @array[$i, $i + 1]; print "Chunk: @chunk\n"; }