• Publicidad

Array vacío

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Array vacío

Notapor abejonejo » 2017-06-12 12:52 @577

Hola, tengo un problema a ver si me lo solucionáis:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $blast1 = "tblastn -query Cas1Xan.fasta -db $genome -evalue 1e-5 -outfmt 6 -out cas1.out";
  2. system($blast1);
  3. print "--> Results for cas1:\n";
  4. my $file1 = "cas1.out";
  5. if ($file1 eq ""){
  6. "No results found\n";}
  7. else {
  8. open my $info1, $file1 or die "Could not open $file1";
  9. print "Gstart\tGend\tE-value\tChain\n";
  10. while(my $line = <$info1>){
  11. chomp $line;
  12. my @col = split("\t", $line);
  13. print "$col[8]\t$col[9]\t$col[10]\n";
  14. }
  15.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

El caso es que cas1.out es un fichero vacío y quiero que me salga No results found, pero, simplemente, se queda en blanco.

Si uso un archivo que tenga datos dentro sí que me sale el print() que yo quiero. ¿Soluciones, por favor?
Última edición por abejonejo el 2017-06-13 05:29 @270, editado 1 vez en total
abejonejo
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-06-12 12:40 @569

Publicidad

Re: Array vacío

Notapor explorer » 2017-06-12 13:45 @614

Bienvenido a los foros de Perl en Español, abejonejo.

¿No faltan unas dobles comillas al final de la línea 1?

Por favor, reedita tu mensaje (botón EDITAR dentro del mensaje), por si se trata de un error tipográfico.

Y en la línea 3 usas $info1, ¿no será $info?

Si el archivo que se abre está completamente vacío, el while() falla en la primera lectura/condición, así que ni siquiera llega a entrar en el bucle. Debes poner la comprobación de si está vacío o no antes del bucle. Puedes preguntar por el tamaño del archivo con el operador -s y, si es 0, ya sabes que está vacío.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Array vacío

Notapor abejonejo » 2017-06-13 05:27 @268

Lo primero, gracias por responder tan rápido.

En relación al fichero cas1.out le he hecho un cat y lo he abierto de forma manual y no aparece nada por eso digo que está vacío.

El operador -s no sé cómo se hace (llevo 3 días en esto).

Te copio y pego el comando entero, que antes los escribí a mano y por eso hay errores. He sacado el if del bucle, pero aún así me imprime lo que no quiero.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $blast1 = "tblastn -query Cas1Xan.fasta -db $genome -evalue 1e-5 -outfmt 6 -out cas1.out";
  2. system($blast1);
  3. print "--> Results for cas1:\n";
  4. my $file1 = "cas1.out";
  5. if ( $file1 eq "" ) {
  6.     "No results found\n";
  7. }
  8. else {
  9.     open my $info1, $file1 or die "Could not open $file1";
  10.     print "Gstart\tGend\tE-value\tChain\n";
  11.     while ( my $line = <$info1> ) {
  12.         chomp $line;
  13.         my @col = split( "\t", $line );
  14.         print "$col[8]\t$col[9]\t$col[10]\n";
  15.     }
  16. }
  17.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Lo que me devuelve es: Gstart Gend E-value Chain y nada más. Con otros ficheros sí que me da los valores de col que le pido (porque los tiene), y este, al estar vacío, quiero que me salga que no se han encontrado resultados, pero no lo consigo.
Última edición por explorer el 2017-06-13 10:29 @479, editado 1 vez en total
Razón: Formateado de código con perltidy
abejonejo
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-06-12 12:40 @569

Re: Array vacío

Notapor explorer » 2017-06-13 11:24 @516

Es muy sencillo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $file1 = "cas1.out";
  2.  
  3. if ( -s $file1 == 0 ) {         # el archivo $file1 está completamente vacío
  4.     "No results found\n";
  5. }
  6. else {
  7.     ...;
  8. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Array vacío

Notapor abejonejo » 2017-06-14 06:01 @292

Gracias, ya salió lo que quería.
abejonejo
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-06-12 12:40 @569


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 6 invitados