La cuestión es que si cargo el contenido del fichero en una variable y extraigo las cadenas funciona bien, pero si leo línea a línea y aplico la expresión regular no va bien.
El fichero tiene esta estructura:
- Código: Seleccionar todo
$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:
Using perl Syntax Highlighting
open(F, "fichero");
while ($linea=(<F>)) { #Cargarlo a una variable
$alm.=$linea;
}
while ($alm=~ s/[^\$]*INCLU \/ (.*)//m) { #Ir extrayendo cadenas y eliminandolo de la cadena
print ":::::::::::$1:::::::::";
}
while ($linea=(<F>)) { #Cargarlo a una variable
$alm.=$linea;
}
while ($alm=~ s/[^\$]*INCLU \/ (.*)//m) { #Ir extrayendo cadenas y eliminandolo de la cadena
print ":::::::::::$1:::::::::";
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Y funciona perfecto, me extrae nombref y nombre3.
El problema es que no quiero leer todo el fichero a una variable, hago algo como esto:
Using perl Syntax Highlighting
open(F, "aaa");
while ($linea=<F>) {
while ($linea=~ s/[^\$]*INCLU \/ (.*)//m) {
print ":::::::::::::$1:::::::::::";
}
}
while ($linea=<F>) {
while ($linea=~ s/[^\$]*INCLU \/ (.*)//m) {
print ":::::::::::::$1:::::::::::";
}
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Aquí esta el problema: ¿por qué de esta forma también obtengo las líneas comentadas? Es decir nombref1, nombref2 y nombref3.
Muchas gracias por cualquier idea.