#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $l = 2; #Motif Length my @nucs = qw/A T C G/; my @enum = enum( $l, \@nucs ); print Dumper \@enum; sub enum { return @{$_[1]} unless --$_[0]; map { my $nuc = $_; map { $nuc . $_ } @{$_[1]} } enum( $_[0], $_[1]); }