#!/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?
.....................
.....................
.....................
~