Estoy viendo cómo hacer lo siguiente:
Supongamos que me pueden pasar desde la entrada estándar varias líneas del estilo:
- Código: Seleccionar todo
BEGIN
linea1
linea2
linea3
...
lineaN
END
Este bloque se puede repetir varias veces y puede haber texto fuera de estos bloques.
Ahora bien, si yo quiero tomar todas las líneas de la entrada estándar, guardarlas por ejemplo en un string (eso sé cómo hacerlo) luego para cada bloque de la forma anterior extraer las líneas que están entre BEGIN y END.
Es decir, si tengo:
- Código: Seleccionar todo
BEGIN
pepe como helado
jojo jojo
END
esto no me interesa1
esto no me interesa2
....
esto no me interesaN
BEGIN
esta es otra linea
END
Quiero imprimir solo esto:
- Código: Seleccionar todo
pepe como helado
jojo jojo
esta es otra linea
Es decir, que lo que esté fuera de los bloques BEGIN y END lo ignoro.
Claro que para empezar lo quise hacer con un solo bloque y sin pensar en más nada y luego si cuando me salga hacerlo para el caso que expuse antes.
Hice esto pero no dio resultado :S
Using perl Syntax Highlighting
@array = <STDIN>;
#$_ =join("",@array);
m/((^BEGIN)(.*)(^END)/m;
print "$2\n";
#$_ =join("",@array);
m/((^BEGIN)(.*)(^END)/m;
print "$2\n";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Acá lo que quería hacer es simplemente considerar que tengo el primer bloque y extraer
- Código: Seleccionar todo
pepe como helado
jojo jojo
Porque con el m/ hago chequeo de patrón en la tira $_ y con el /m digo que contiene muchas líneas.
Los ^ al BEGIN y al END se los pongo por que siempre siempre siempre el BEGIN y END arrancan en una nueva línea.
Claro algo se me está pasando por alto y lo más seguro que esté diciendo una grosería con el código que puse pero por ahora no se me prendió la y sigo viendo sobre el tema.
Pero si algún alma buena me da una idea me vendría muy bien
Gracias y saludos