[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: