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.