The glob function is your friend :-)
$ perl -Mstrict -Mwarnings -E '
my $rule = q{{c,g}} x 2;
$rule .= q{{a,t,g,c}};
$rule .= q{{a,g}} x 3;
$rule .= q{{a,t,g,c}};
$rule .= q{t};
$rule .= q{{a,t}} x 2;
say $rule;
say for glob $rule;'
{c,g}{c,g}{a,t,g,c}{a,g}{a,g}{a,g}{a,t,g,c}t{a,t}{a,t}
ccaaaaataa
ccaaaaatat
ccaaaaatta
ccaaaaattt
ccaaaattaa
ccaaaattat
ccaaaattta
ccaaaatttt
ccaaaagtaa
ccaaaagtat
ccaaaagtta
ccaaaagttt
ccaaaactaa
ccaaaactat
...
ggcgggatat
ggcgggatta
ggcgggattt
ggcgggttaa
ggcgggttat
ggcgggttta
ggcgggtttt
ggcggggtaa
ggcggggtat
ggcggggtta
ggcggggttt
ggcgggctaa
ggcgggctat
ggcgggctta
ggcgggcttt
$
Hopefully I've understood your rules correctly and this is helpful.