[Programación] Re: [Programación] Duda en como lle var de C a perl... (función anóni ma)

Nicolás Aimetti programacion@lugro.org.ar
Tue, 13 Dec 2005 16:04:21 +0000


Buenas...

@C = sort { $a->[0] cmp $b->[0] or $a->[1] cmp $b->[1] } @C;

El OR (ya sea el 'or' o el '||', son comandos equivalentes  pero con 
distinta precedencia) es ansioso, por tanto si el primer operando evalua 
a true devuelve el _valor_del_mismo_, sino devulve el valor del segundo.

Los parentesis no son necesarios, pero pueden agregarse...

@C = sort { ($a->[0] cmp $b->[0]) or ($a->[1] cmp $b->[1]) } @C;

Saludos,
         Nicolás.


> Holas... Abusando de vuestro conocimiento... supongamos que tengo el
> arreglo @C con dos campos de los cuales puede haber valores repetidos...
> ahora bien el ordenamiento...
> 
> @C=sort{$a->[0] cmp $b->[0]} @C;
> 
> lexicográfico en caso de empate en el campo uno el campo dos también
> debería ser ordenado lexicográficamente... eso en C yo lo resolví con
> esto...
> 
> int comp_tema(const void *c1,const void *c2)
> {
>   struct mail r1,r2;
>   int res;
>   r1=*(struct mail*)c1;
>   r2=*(struct mail*)c2;
>   if((res=strcmp(r1.tema,r2.tema))==0)
>     return strcmp(r1.autor,r2.autor);
>   return res;
> }
> 
> Como se traslada esto a una función anónima para el "sort"... ?
> 
> Saludos.