use strict; #generate all posibilites of a DNA sequence 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; my @Ordered_Combinations_input = (); foreach $currLenght (@SequenceLenghts){ @Ordered_Combinations_input = (); @Ordered_Combinations_input = ($currLenght, @Bases); @allSequence = (@allSequence, (&Ordered_Combinations (@Ordered_Combinations_input))); } #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"; } } #Completely blow the GOLF chalange by using a sub name almost as long as the sub #See http://www.perlmonks.com/index.pl?node_id=75261 for details sub Ordered_Combinations {my$n=shift;--$n?map{my$d=$_;map$d.$_,Ordered_Combinations($n,@_)}@_:@_};