#!/usr/bin/perl use strict;no strict 'refs';use warnings;use re 'eval'; my $num =3; $"='.*?';"@{ [1..12] }" =~ /@{[ ('\b(\d+)\b')x $num]}(?{{print ((join "_",map {$$_}1..$num),"\n")}})(?!)/; __END__ 1_2_3 1_2_4 1_2_5 1_2_6 1_2_7 ... 8_11_12 9_10_11 9_10_12 9_11_12 10_11_12