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 -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org