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";