• Publicidad

¿Qué error puede tener mi programa?

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

¿Qué error puede tener mi programa?

Notapor chukiemporio » 2010-01-11 03:05 @170

Hola a todos.

Primero de todo, enhorabuena a todos los que hacéis posible este foro.
Mi problema es que llevo varios días intentando resolver un programa y no soy capaz.

El enunciado es el siguiente:

Desarrollar un programa que abra el archivo prueba.txt (es un archivo que posee cadenas de nucleótidos y entre medias la palabra "BASURA") y cree uno nuevo de nombre pruebafin.txt, de tal forma que haga desaparecer todas las líneas que comiencen por “BASURA” y visualice el contenido por pantalla al mismo tiempo.


Mis planteamientos han sido dos:

Planteamiento 1 :

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use warnings;
  2. use strict;
  3.  
  4. rename ( 'prueba.txt' , 'pruebafin.txt');
  5. my $pruebafin = "pruebafin.txt";
  6. open (PRUEBAFIN, ">pruebafin.txt")||die "ERROR: No puedo abrir el fichero $pruebafin\n";
  7. if ( $pruebafin =~ /[basura]/ ) {
  8.     $pruebafin =~ s/basura/pruebafin.txt/g;
  9.     print("$pruebafin\n");
  10. }
  11. close ( PRUEBAFIN ) or die("Cannot close: $!");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Planteamiento 2 :

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $prueba = "prueba.txt";
  2. open (PRUEBA, ">prueba.txt")||die "ERROR: No puedo abrir el fichero $prueba\n";
  3. $prueba =~ s/BASURA/prueba.txt/g;
  4. close ( PRUEBA ) or die("Cannot close: $!");    
  5. #rename ( 'prueba.txt' , 'pruebafin.txt');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo único que obtengo es un nuevo archivo de texto renombrado que no posee ningún carácter...

Muchas gracias y espero haber posteado en el foro correcto.
chukiemporio
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2010-01-11 02:57 @164

Publicidad

Re: ¿Qué error puede tener mi programa?

Notapor explorer » 2010-01-11 03:46 @198

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

Lo primero que he visto, es que en ninguna de las dos soluciones planteadas realizas la operación de lectura del primer fichero, por lo que difícilmente podrás realizar esa operación de filtrado de líneas.

Además, hay cosas como

$pruebafin =~ s/basura/pruebafin.txt/g;

en la que la variable $pruebafin siempre vale lo mismo ("pruebafin.txt"), e intentas hacer una sustitución de la palabra "basura" (que desde luego no tiene), por la palabra "pruebafin.txt", que, además, es el nombre de un fichero. Las expresiones regulares no pueden aplicarse a ficheros, de forma tan directa (las expresiones regulares no leen ficheros externos).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 41 invitados