use strict; use warnings; my @array1 = (1,2,3); my @array2 = (7,8); my @array3 = (1,5,23,3); sub to_string { return '{' . join(q{,}, @_) . '}'; } print "$_ " while glob to_string(@array1) . q{-} . to_string(@array2) . q{-} . to_string(@array3); __END__ 1-7-1 1-7-5 1-7-23 1-7-3 1-8-1 1-8-5 1-8-23 1-8-3 2-7-1 2-7-5 2-7-23 2-7-3 2-8-1 2-8-5 2-8-23 2-8-3 3-7-1 3-7-5 3-7-23 3-7-3 3-8-1 3-8-5 3-8-23 3-8-3