#! perl -slw use strict; sub nFor { my $n = shift; if( $n ) { for my $i ( @{ shift() } ) { nFor( $n-1, @_, $i ); } } else { print join ' ', @_; } } my @a = 1..10; my @b = 'a'..'z'; my @c = map chr, 33 .. 47; nFor( 3, \@a, \@b, \@c ); __END__ C:\test>junk90 1 a ! 1 a " 1 a # 1 a $ 1 a % 1 a & 1 a ' 1 a ( 1 a ) 1 a * 1 a + 1 a , 1 a - 1 a . 1 a / 1 b ! 1 b " ... 10 y - 10 y . 10 y / 10 z ! 10 z " 10 z # 10 z $ 10 z % 10 z & 10 z ' 10 z ( 10 z ) 10 z * 10 z + 10 z , 10 z - 10 z . 10 z /