[Perl] equivalencia de un case

Gunnar Wolf gwolf@campus.iztacala.unam.mx
Wed, 13 Mar 2002 08:58:51 -0600 (CST)


> >A m=ED me gusta abundar un poco en esto, si vas a pasar seguido por esta
> >construcci=F3n:
> >%tipo =3D ( 'a' =3D> sub { print "Es de tipo A\n"; },
> >          'b' =3D> sub { print "No, no me gusta...\n"; },
> >          'c' =3D> sub { otraCosa(1,2); } );
>
> >Y cuando lo requieras, la llamas as=ED:
>
> >   &{$tipo{$expr}};
>
> Porque el & ah=ED???

Porque lo que est=E1 en $tipo{a}, $tipo{b} y $tipo{c} es =FAnicamente una
referencia a c=F3digo:

print $tipo{a};

CODE(0x12001f990)

El &{...} hace que lo ejecute como una subrutina, del mismo modo que un
@{$ref} eval=FAa $ref, que debe ser una referencia a un arreglo, y lo
regresa como arreglo.

--=20
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF