Re: Expresiones regulares en perl
On Wed, May 27, 2009 at 05:02:06PM +0200, Javier wrote:
> Hola,
>
> acabo de actualizar un equipo de etch a lenny y la versión de perl
> ascendió de la 5.8 a la 5.10.
> El problema me viene ahora en cómo lenny trata las expresiones
> regulares, pues parece que no es de la misma forma. Tengo un programa
> chorra que lee de un fichero, lo almacena en una variable y luego a
> esa variable se le hace una expresión regular. Con la nueva versión de
> perl, dicho código falla siempre que el archivo leído ocupe más de 30
> Kb's. Si ocupa menos la expresión regular va perfectamente.
> Comprobando el fichero sí lo almacena correctamente en la variable,
> por lo que el fallo está a nivel del if, pero no se que es lo que pudo
> cambiar en perl 5.10
>
> Posteo el código:
> -----------------------------------------------------
> #!/usr/bin/perl
>
> use XML::Simpler;
>
> my $ref=XMLin("t.xml");
> if ($ref =~ /<temas>((.|\n)*?)<\/temas>/)
> {
> print "Resultado: $1";
> }
>
> -----------------------------------------------------
>
> ¿Alguna idea de por qué el fallo?
Tal vez se deba a que intentas hacer un matching para un string compuesto
de múltiples líneas, pero no has indicado el flag m. Prueba cambiando tu if
por:
if ($ref =~ /<temas>(.*?)<\/temas>/m)
Indícanos si tienes alguna novedad.
Saludos.
--
Pablo Jiménez
Reply to: