sub inc{ my $ref=shift; my $span=shift; $span?($span--):($span=1); my @b=map{ clone([@$ref[$_-$span..$_]]) }($span..$#$ref); \@b } sub clone{#clone references my $ref=shift; my@array=map{ ref($_)?clone($_):$_ }@$ref; \@array } my@b=(1..5); my $c = inc(inc(\@b)); print Dumper $c; #### $VAR1 = [ [ [ 1, 2 ], [ 2, 3 ] ], [ [ 2, 3 ], [ 3, 4 ] ], [ [ 3, 4 ], [ 4, 5 ] ] ]; #### @a = (1,2,3,4,5,6); increment(\@a); #produces tuples of: [1,2],[2,3],[3,4],[4,5],[5,6] #yay!! #### $VAR1 = [ [ [ 1, 2 ], [ 2, 3 ] ], [ $VAR1->[0][1], [ 3, 4 ] ], [ $VAR1->[1][1], [ 4, 6 ] ] ]; #### my @a = (1,2,3,4,6); print Dumper increment(increment(\@a)); sub increment{ my $d=shift; my @b; for my $i (1..$#$d){ my @a = @$d[$i-1..$i]; push @b,\@a; } \@b }