• Publicidad

Filtrar archivo según una palabra

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

Filtrar archivo según una palabra

Notapor perlanegra » 2012-04-15 19:37 @859

¿Me podrían decir qué me falta o sobra en este programa? Porque no se ejecuta... Además el archivo le tengo en la misma carpeta que el que contiene el código y no sé si lo encontrará o tengo que especificar dónde está el archivo que quiero abrir... En ese caso, ¿cómo se haría?

Muchas gracias.

my ($file1, $file2, $line);
my $file1 = "TEXTO1.txt";
my $file2 = "pruebafin.txt";


open (SOURCE, $file1) or die "cannot open file \"$file1\": $!";
open (RESULT, ">$file2") or die "cannot open file \"$file2\": $!";

while ($line = <SOURCE>)
{
if ($line =~ /BASURA/)
{
$file2 -= $line;
print RESULT "$file2";
}
else {
print RESULT "$line";
}
}


close (SOURCE);
close (RESULT);
perlanegra
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2012-04-13 13:05 @587

Publicidad

Re: Filtrar archivo según una palabra

Notapor explorer » 2012-04-15 20:30 @896

Si Perl no encuentra el archivo, te lo dirá con un sonoro mensaje, porque así se lo has pedido, con los die().

Tienes declarados dos veces las variables $file1 y $file2.

$file2 -= $line; es un error garrafal: El operador '-=' es para operandos matemáticos, y $file2 y $line son cadenas de caracteres.
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

Re: Filtrar archivo según una palabra

Notapor pvaldes » 2012-04-16 18:31 @813

Sigo sin saber muy bien cuál es tu intención al escribir el programa: Parece que quieres que cuando exista una línea con la palabra BASURA la sustituya por el nombre del archivo en el archivo de salida (¿para qué?). Acabarías con un archivo en el que cambiarías un tipo de basura por otra. No necesitas hacer eso si lo que quieres es ignorarla, puede que esto se acerque a lo que quieres.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (my $in, '<', 'TEXTO.txt') or die "no puedo abrir TEXTO.txt: $!";
  2. open (my $out, '>', 'pruebafin.txt') or die "no puedo abrir pruebafin.txt: $!";
  3.  
  4. while (<$in>){
  5.   next if (/BASURA/);
  6.   print $out $_;
  7. }
  8.  
  9. close $in; close $out;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580


Volver a Básico

¿Quién está conectado?

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