in reply to Help regarding the outout of the program

Your problem is with the for loop:

for ($i =0;$i<length($dna);$i++){ if ($i == $position){ print " mutation at base position ". ($position+1) . "\n"; do { $nucleotide = randombase(); } until ($nucleotide ne substr($dna,$position,1)); substr($dna, $position, 1, $nucleotide); print "$dna\n"; } $i++; }

You increment $i at the top of the loop and at the bottom of the loop so sometimes $i will never be equal to $position.

Better to write the loop as:

for my $i ( 0 .. length( $dna ) - 1 ) {

Also, you don't need a do block for your until statement modifier:

$nucleotide = randombase() until $nucleotide ne substr $dna, $posi +tion, 1;