#!/usr/bin/perl use warnings; $string="ATATGCGCAT"; ########################################### # Output to a TEXT File: ########################################### $output="Results .txt"; open (my $fh,">",$output) or die"Cannot open file '$output'.\n"; ##################################### # To break into 4-letter fragments: ##################################### while ($string=~ /(.{4}?)/ig) {$four=$&; @sw=$four=~ /[ATGC]{1}/igs; foreach my $single (@sw) { #################################################### # To extract single letter & append perd to single: #################################################### $perd="%d"; $mod_four=$single.$perd; # concatenation push @new_four,$mod_four; $new_four = join ('',@new_four); # To produce all possible combinations without changing positions: for $a (1 .. 2) { # a has 2 levels: for $t (1 .. 2) { # t has 2 levels: for $g (1 .. 2) { # g has 2 levels: for $c (1 .. 2) { # c has 2 levels: $combi=sprintf($new_four,$a,$t,$g,$c,3-$a,3-$t,3-$g,3-$c); print"~$combi\n"; print $fh "~$combi\n"; } } } } } # 2nd foreach closes: } # 1st while closes: print"~"; print"\n"; print $fh "~"; print $fh "\n"; close $output; exit; #### ~A1 ~A1 ~A1 ~A1 ~A1 ~A1 ~A1 ~A1 ~A2 ~A2 ~A2 ~A2 ~A2 ~A2 ~A2 ~A2 ~A1T1 ~A1T1 ~A1T1 ~A1T1 ~A1T2 ~A1T2 ~A1T2 ~A1T2 ~A2T1 ~A2T1 ~A2T1 ~A2T1 ~A2T2 ~A2T2 ~A2T2 ~A2T2 ~A1T1A1 ~A1T1A1 ~A1T1A2 ~A1T1A2 ~A1T2A1 ~A1T2A1 ~A1T2A2 ~A1T2A2 ~A2T1A1 ~A2T1A1 ~A2T1A2 ~A2T1A2 ~A2T2A1 ~A2T2A1 ~A2T2A2 ~A2T2A2 ~A1T1A1T1 ~A1T1A1T2 ~A1T1A2T1 ~A1T1A2T2 ~A1T2A1T1 ~A1T2A1T2 ~A1T2A2T1 ~A1T2A2T2 ~A2T1A1T1 ~A2T1A1T2 ~A2T1A2T1 ~A2T1A2T2 ~A2T2A1T1 ~A2T2A1T2 ~A2T2A2T1 ~A2T2A2T2 ~A1T1A1T1G2 ~A1T1A1T2G2 ~A1T1A2T1G2 ~A1T1A2T2G2 ~A1T2A1T1G2 ~A1T2A1T2G2 ~A1T2A2T1G2 ~A1T2A2T2G2 ~A2T1A1T1G1 ~A2T1A1T2G1 ~A2T1A2T1G1 ~A2T1A2T2G1 ~A2T2A1T1G1 ~A2T2A1T2G1 ~A2T2A2T1G1 ~A2T2A2T2G1 ~A1T1A1T1G2C2 ~A1T1A1T2G2C2 ~A1T1A2T1G2C2 ~A1T1A2T2G2C2 ~A1T2A1T1G2C1 ~A1T2A1T2G2C1 ~A1T2A2T1G2C1 ~A1T2A2T2G2C1 ~A2T1A1T1G1C2 ~A2T1A1T2G1C2 ~A2T1A2T1G1C2 ~A2T1A2T2G1C2 ~A2T2A1T1G1C1 ~A2T2A1T2G1C1 ~A2T2A2T1G1C1 ~A2T2A2T2G1C1 ~A1T1A1T1G2C2G2 ~A1T1A1T2G2C2G2 ~A1T1A2T1G2C2G1 ~A1T1A2T2G2C2G1 ~A1T2A1T1G2C1G2 ~A1T2A1T2G2C1G2 ~A1T2A2T1G2C1G1 ~A1T2A2T2G2C1G1 ~A2T1A1T1G1C2G2 ~A2T1A1T2G1C2G2 ~A2T1A2T1G1C2G1 ~A2T1A2T2G1C2G1 ~A2T2A1T1G1C1G2 ~A2T2A1T2G1C1G2 ~A2T2A2T1G1C1G1 ~A2T2A2T2G1C1G1 ~A1T1A1T1G2C2G2C2 ~A1T1A1T2G2C2G2C1 ~A1T1A2T1G2C2G1C2 ~A1T1A2T2G2C2G1C1 ~A1T2A1T1G2C1G2C2 ~A1T2A1T2G2C1G2C1 ~A1T2A2T1G2C1G1C2 ~A1T2A2T2G2C1G1C1 ~A2T1A1T1G1C2G2C2 ~A2T1A1T2G1C2G2C1 ~A2T1A2T1G1C2G1C2 ~A2T1A2T2G1C2G1C1 ~A2T2A1T1G1C1G2C2 ~A2T2A1T2G1C1G2C1 ~A2T2A2T1G1C1G1C2 ~A2T2A2T2G1C1G1C1 ~ #### ~A1T1A1T1G2C2G2C2A?T? ~A1T1A1T2G2C2G2C1A?T? ..................... ..................... ..................... ~