in reply to generating pyramid number sequence

If you re-order the pairs, you see (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), and then (2,3), (2,4), (2,5), (2,6), (2,7), and then (3,4), etc.

To that end, you're doing two loops: one from 1 to 7 (call this X) and the other from X+1 to 7.

for $x (1 .. 7) { for $y ($x+1 .. 7) { push @pairs, [$x,$y]; } }
If you truly need the pairs in the order you've shown, be trickier.

Update: by "be trickier", I mean, there is also a discernable pattern to the data set in the sequence you've shown. It's not X = (1 .. 7), Y = (X+1 .. 7), it's something else. It's up to you to recognize the pattern. I'll do the hard part for you:

for $x (? .. ?) { for $y (? .. ?) { push @pairs, [$y, $y-$x]; } }

Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart