• Publicidad

Sustituciones en ficheros

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

Sustituciones en ficheros

Notapor ansi_anso » 2005-04-25 07:43 @363

Estoy aprendiendo Perl y uno de los ejercicios que estoy haciendo es sustituir todas las palabras de un fichero (por ejemplo todas las "este"). Hago esto

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!perl
  2.  
  3. open (FICH, "+>Este.txt") || die "No se pudo abrir el archivo\n";;
  4. while (my $linea = <FICH>)
  5. {
  6.         my $cont1 = $linea =~ s/este/aquel/g;
  7.         print FICH $linea;
  8.         $cont2 = $cont2 + $cont1;
  9. }
  10. close (FICH);
  11. print "Se han sustituido $cont2 veces la palabra este por aquel";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero el fichero aparece vacío. Creo que es porque no lo abro correctamente, porque las sustituciones en la variable $linea sí las hace bien, además si no pongo la línea de "print FICH $linea;" me cuenta bien las sustituciones pero cuando la pongo la variable $cont2 no tiene valor (lo de $cont1 y $cont2 es porque me pide también cuántas veces he hecho la sustitución). ¿Acaso una vez hago print en el fichero se borra el contenido?
¿Alguien me puede ayudar?
-GRACIAS-
ansi_anso
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2005-04-25 07:22 @348

Publicidad

Notapor monoswim » 2005-04-25 08:52 @411

No puedes hacer las dos cosas al mismo tiempo, debes hacer primero hacer una lectura del fichero y cargar todo en un array...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(FICHERO,"<ficheroi.txt");
  2. my @lineas = <FICHERO>;
  3. close FICHERO;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora modificamos el array

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach my $linea (@lineas){
  2. ...
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y ahora abrimos el fichero borrando todo y le escribimos el nuevo contenido

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(FICH,">archivo.txt");
  2. foreach my $linea (@lineas){
  3.     print FICH "$linea\n";
  4. }
  5. close(FICH);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿ Se entiende ? Espero que te sirva.

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Re: Sustituciones en ficheros

Notapor explorer » 2005-07-24 19:56 @872

ansi_anso escribiste:Estoy aprendiendo Perl y uno de los ejercicios que estoy haciendo es sustituir todas las palabras de un fichero (por ejemplo todas las "este").


Cuando tengas más experiencia, prueba a usar Perl directamente desde la línea de comandos para hacer esa tarea.

Por ejemplo, para cambiar todas las apariciones de la palabras este por aquel, se puede hacer:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -pi -e 's/este/aquel/g' fichero.txt
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Si usas Windows, cambia las ' por ".
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado