La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1610 - COMO REEMPLAZAR UNA CADENA
Autor:  Roger Martinez
Como puedo buscar en un fichero determinado (notas.txt) una determinada cadena y reemplazarla ?

  Respuesta:  Ignacio Alles
open(READFILE, "#abre archivo para lectura
open(WRITEFILE, ">notas2.txt");
#abre archivo para escritura

while (($line = )) {
#repite para cada linea
$line = s/cadena_que_busco/cadena_por_la_que_reemplazo/r;

# cadena_que_busco: es la cadena que está en el archivo que queres reemplazar

# cadena_por_la_que_reemplazo: es la cadena nueva, que queres poner cada vez que aparezca la otra cadena

# si querés que haga un solo reemplazo por renglon, tenes que sacar la "r" del final de la linea, y quedaria así:
# $line = s/cadena_que_busco/cadena_por_la_que_reemplazo/;

print WRITEFILE $line;
# escribe la cadena cambiada en el nuevo archivo
}

  Respuesta:  David Coello

Hace dos años que programe en Perl, asi que pude que la solucion no sea la mas fina.

Cargar un fichero

# Empieza codigo
# Carga las secciones del fichero secciones.dat

open (secciones,"<seccion.dat");
@todas_secciones=<secciones>;
$todas_secciones=@todas_secciones;
close secciones;

# Acaba codigo

Este trozo carga un fichero llamado seccion.dat y lo mete en un array llamado @todas_Secciones. La variable escalar $todas_secciones contiene el nuemro de registros del array.

Buscar una determinada cadena

# Empieza codigo

for ($i=0;$i<=$todas_secciones-1;$i++) {
$j = index($todas_secciones[$i],$Cadena_busco);
if ($j)<> -1) {
# Lo encontro en la fila $i en la posicion $j
substr ($todas_secciones[$i],$j,len($cadena_busco),$cadena_sustituyo);
}
}

# Termina codigo

Saludos

David Coello

PD : Tienes documentacion y ejemplos de Perl en www.cgi-resources.com