Si transformo el programa de este post en una subrutina (que quiero usar para extraer sólo una secuencia de nombre pasado en la llamada a la subrutina):
Using perl Syntax Highlighting
- &EXP_RET($linea);# ¿Cómo imprimo el resultado de esta expresión?
- #¿ $sec_result=&EXP_RET($linea);
- # print "$sec_result";?
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
¿Cómo lo puedo sacar para incorporarlo al programa donde ésta está incluida?, es decir, ¿qué le asigno al comando "return" de la subrutina para que luego me devuelva la secuencia y la pueda imprimir? Llevo horas con esto y no lo puedo solucionar...
Aquí dejo el código de la subrutina derivado del tuyo. Éste funciona perfectamente si lo uso como programa individual, pero una vez pasado a subrutina e incluido en un CGI, no puedo sacar la secuencia resultado en pantalla. ¿Ves algún problema con este código?
Using perl Syntax Highlighting
- sub EXP_RET {
- my ($linea) = @_;
- # Lectura del fichero de secuencias
- my %es_interesante;
- $es_interesante{$linea} = 1; # la almacenamos en la memoria asociativa
- # Lectura del fichero FASTA
- my $nombre_secuencia; # Guarda el nombre de cada secuencia
- my $secuencia = ''; # Contenido de la secuencia interesante
- open FASTA, '<PC91.fasta' or die "ERROR: $!\n";
- open SALIDA, '>secuencias.txt' or die "ERROR: $!\n";
- while ( my $linea = <FASTA> ) {
- if ( $linea =~ /^>(\w+)/ ) { # Comienzo de una secuencia nueva
- if ($secuencia) { # Si tenemos una ya leída...
- procesar_secuencia( $nombre_secuencia, $secuencia )
- ; # la procesamos
- }
- $nombre_secuencia
- = $1; # Nombre de la secuencia extraída desde la exp. reg.
- $secuencia = ''; # Reiniciamos nuestra secuencia a capturar
- next; # pasamos a la siguiente línea
- }
- if ( $es_interesante{$nombre_secuencia} )
- { # Si estamos en una secuencia interesante
- $secuencia .= $linea; # la guardamos
- }
- }
- close FASTA;
- close SALIDA;
- #if ($secuencia) { # Si aún queda alguna $secuencia por sacar
- # procesar_secuencia($nombre_secuencia, $secuencia); # la procesamos
- #}
- #return ¿QUE VARIBLE ASIGNO PARA PODER IMPRIMIR LA SECUENCIA RESULTANTE?
- sub procesar_secuencia {
- my ( $nombre, $secuencia ) = @_;
- print ">$nombre\n$secuencia";
- print SALIDA ">$nombre\n$secuencia";
- }
- }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4