my @Bases = qw(A C G T); my $SequenceMinLenght = 1; my $SequenceMaxLength = 3; my @SequenceLenghts = ($SequenceMinLenght...$SequenceMaxLength); #print "@SequenceLenghts\n"; my $SequenceListLength = $#SequenceLenghts; $SequenceListLength ++; print "Number of Sequence lenghts to permute is $SequenceListLength\n"; my @allSequence = (); my $sequence; my $currLenght; foreach $currLenght (@SequenceLenghts){ foreach my $base1 (@Bases) { if ($currLenght == 1){ $sequence = $base1; push (@allSequence, $sequence); } else{ foreach my $base2 (@Bases) { if ($currLenght == 2){ $sequence = $base1 . $base2; push (@allSequence, $sequence); } else{ foreach my $base3 (@Bases) { if ($currLenght == 3){ $sequence = $base1 . $base2. $base3; push (@allSequence, $sequence); } } } } } } } #Prints sequences to screen #- Too many entries after lenght of sequence is grater than 4. my $i=0; foreach my $finalsequence (@allSequence){ $i ++; if ($i == 4){ print "$finalsequence\n"; $i= 0; } else{ print "$finalsequence\t"; } }