Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/01/2009, 10:18
julms
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema con una expresion reg, funciona cuando leo todo el fich a una var sino no...

Hola, estoy intentando extraer unas cadenas de unos ficheros.

La cuestion es que si cargo el contenido del fichero en una variable y extraigo las cadenas funciona bien, pero si leo linea a linea y aplico la expresion regular no va bien.

El fichero tiene esta estructura:
$otraslineas
INCLU / nombref
$$$$$$INCLU / nombref2
INCLU / nombre3
mas lineas

Quiero obtener nombref, nombref3, las que tienen $INCLU son comentarios. Mi expr regular es:
[^\$]*INCLU \/ (.*)

Lo hago de esta forma:

open(F, "fichero");
while ($linea=(<F>)) { #Cargarlo a una variable
$alm.=$linea;
}
while ($alm=~ s/$expr//m) { #Ir extrayendo cadenas y eliminandolo de la cadena
print ":::::::::::$1-$2-$3-$4-$5-$6-$7:::::::::";
}
Y funciona perfecto, me extrae nombref y nombre3.

El problema es que no quiero leer todo el fichero a memoria, algo parecido a esto:
open(F, "aaa");
while ($linea=<F>) {
while ($linea=~ s/$expr//m) {
print ":::::::::::::$1-$2-$3-$4-$5-$6-$7:::::::::::";
}
}

Aqui esta el problema, ¿porque de esta forma tambien obtengo las lineas comentadas? (En el ejemplo nombref2).


Muchas gracias por cualquier idea.