#! perl -slw use strict; sub gen { my( $len, $depth ) = @_; return () unless $len; return map { my $pre = $_; ( $pre, map{ $pre . $_ } gen( $len -1, $depth ) ); } 0 .. $depth - 1; } print for gen( 4, 3 );