sub mutate{ my @string = @{ $_[ 0 ] }; for my $i ( 0 .. $#string ){ my $aref = $string[ $i ]; #print "\n"; if ( rand() < $mutation_rate ){ my $position1 = int rand @$aref; my $position2 = int rand @$aref; if ( $position1 != $position2 ){ @{ $string[ $i ] }[ $position1, $position2 ] = @{ $string[ $i ] }[ $position2, $position1 ]; } } } return \@string; }