[Programación] Re: [Programación] Re: [Programación] Duda en como llevar de C a perl... ( función anónima)

Federico Wiecko programacion@lugro.org.ar
Thu, 15 Dec 2005 11:15:36 -0300


On Thursday 15 December 2005 09:10, Horacio Castellini wrote:
> > 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.
>
> Tengo una duda,, los operadores OR AND y NOT no
> devuelven valores 0 y 1, y yo requiero -1 0 +1, es
> decir....
>
> 'Menor que 0' si $a < $b
> '0' si $a == $b
> 'Mayor que 0' si $a > $b

no, no es asi ... en tu ejemplo original

 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;
} 

pedis comparar por autor solo si el tema es el mismo
Esto es equivalente a lo que puso Nicolas (pero realizando el sort inclusive)

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

donde si  $a->[0] cmp $b->[0]  evalua a Falso ( implica que son iguales ) 
entonces sólo en ese caso se evalua la expresion $a->[1] cmp $b->[1]           

 (el operador or nada tiene tiene que ver con el operador || de C).

Slds.
Federico .-
>
> pero el operador OR me debería dar.... si 0 eq F (0
> lógico) y !=0 eq V (1 lógico) (esto lo recuerdo de C)
> entonces (-7) OR X =>1 y (+1) OR X =>1
> Entonces esto no funcaría salvo que el OR en perl
> tenga efecto colateral... (esto me recuerda a la
> guerra de irak...)
>
> Saludos... Horacio (pta: no lo probé porque a mi
> criterio no funcionaría)
>
> Es decir me parece muy mágico el tema de la
> precedencia...
>
>
>
>
>
>
>
>
> ___________________________________________________________
> 1GB gratis, Antivirus y Antispam
> Correo Yahoo!, el mejor correo web del mundo
> http://correo.yahoo.com.ar
>
> _______________________________________________
> Programacion mailing list
> Programacion@lugro.org.ar
> http://www.lugro.org.ar/mailman/listinfo/programacion