Los
hash sí que los controlo medianamente bien, y la función index() no la conocía pero es sencilla de entender. Lo que no entiendo es para qué sirve
if ($pos != -1).
Independientemente de que lo entienda o no, he probado con tu código de dos formas distintas, de una me funciona y de otra no, pero hay matices. ¡je,je!
Primera forma:
Using perl Syntax Highlighting
$contador = 0;
while ( $contador < 20 ) {
$contador += 1;
$espermatozoide = "espermatozoide$contador.txt";
open( FH, "$espermatozoide" ) or die "No se puede abrir";
open( FH2, " > result$contador.txt" );
while ( $linea = <FH> ) {
$codon = substr( $linea, 0, 3 );
push( @codones, $codon );
print FH2 "@codones ";
}
@codones = ();
}
print "Hecho\n";
close(FH);
close(FH2);
$contador2 = 0;
while ( $contador2 < 20 ) {
$contador2 += 1;
$result = "result$contador.txt";
open( FH2, "$result" ) or die "No se pudo abrir el archivo";
open( FH3, " > aminoacidos$contador2.txt" );
while ( $linea2 = <FH2> ) {
$ala = index( $linea2, 'TGA GAA TAG TAA' );
if ( $ala != -1 ) {
print FH3 "Hay Alanina en la posición $ala\n";
}
}
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
De esta forma no me funciona, es decir, la secuencia 'TGA GAA', etc. está al menos en el archivo result1.txt (hay desde result1 a result20.txt) y no me imprime nada. Con mi siguiente intento creo haber localizado el problema pero solucionándolo creo otros dos.
Segunda forma:
Using perl Syntax Highlighting
$contador = 0;
while ( $contador < 20 ) {
$contador += 1;
$espermatozoide = "espermatozoide$contador.txt";
open( FH, "$espermatozoide" ) or die "No se puede abrir";
open( FH2, " > result$contador.txt" );
while ( $linea = <FH> ) {
$codon = substr( $linea, 0, 3 );
push( @codones, $codon );
print FH2 "@codones ";
}
@codones = ();
}
print "Hecho\n";
close(FH);
close(FH2);
$contador2 = 0;
while ( $contador2 < 20 ) {
$contador2 += 1;
$result = "result1.txt";
open( FH2, "$result" ) or die "No se pudo abrir el archivo";
open( FH3, " > aminoacidos$contador2.txt" );
while ( $linea2 = <FH2> ) {
$ala = index( $linea2, 'TGA GAA TAG TAA' );
if ( $ala != -1 ) {
print FH3 "Hay Alanina en la posición $ala\n";
}
}
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
De este modo sí que me funciona. El problema es que me limito a un solo archivo
result y no solo a los 20. El otro problema es que me lo imprime en todos los archivos aminoácido cuando debería hacerlo solo en el 1. ¿Cómo puedo solucionar esto?