[Perl] Clasificaciones

Jose Antonio Galicia jcgalici@cbbanorte.com.mx
Wed, 12 Jun 2002 12:12:10 -0500 (CDT)


On Wed, 12 Jun 2002, Salman PSL wrote:

> @ordenado =3D sort {($a =3D~ /(.*)\|(.*)/)[1] cmp ($b =3D~ /(.*)\|(.*)/=
)[1]} @desordenado;

> =BF Que estoy haciendo mal ? :-(

 En una expresi=F3n regular el ".*" significa "hasta donde
puedas" por lo que se esta "tragando" m=E1s de lo que quieres
que se trage. Ve:

	$ perl <<EOP
	open F, "x";
	@D=3D<F>;
	close F;
	@O =3D sort { ($a =3D~ /(.*?)\|(.*)/)[1] cmp ($b =3D~ /(.*?)\|(.*)/)[1] =
} @D;
	print @O;
	EOP


 la "=FAnica" diferencia es que estoy limitando el alcance del
primer .* con un "?" para se detenga ante el primer "|" que
es exactamente lo que quieres hacer.

 Saludos,
 To=F1o
---
"No, `Eureka' is Greek for `This bath is too hot.'"
		-- Dr. Who