#! perl -slw use strict; sub loops { map { my $n = $_; @_ ? map{ $n . '-' . $_ } loops( @_ ) : $n; } @{ shift() }; } my @arrays = map [ split ], ; print for loops( @arrays ); __DATA__ 67 42 99 28 15 14 92 12 45 57 16 41 99 67 28 15 57 12 45 14 92 12 92 42 67 28 15 45 57 16 12 99 14 #### 67-41-92 67-41-42 67-41-67 67-41-28 67-41-15 67-41-45 67-41-57 67-41-16 67-41-12 67-41-99 67-41-14 67-99-92 67-99-42 67-99-67 ... 16-92-12 16-92-99 16-92-14 16-12-92 16-12-42 16-12-67 16-12-28 16-12-15 16-12-45 16-12-57 16-12-16 16-12-12 16-12-99 16-12-14