[Perl] equivalencia de un case

Gunnar Wolf gwolf@campus.iztacala.unam.mx
Tue, 12 Mar 2002 16:00:20 -0600 (CST)


> > Voy a implementar en una programacion que tengo operativa en PERL un mo=
dulo de traduccion por llamarlo de alguna forma.
> >
> > Se trata de hacer algo como el sistema que utiliza el php-nuke
> >
> > Pero PERL no tiene ninguna sentencia equivalente.
>(...)
> Ahora que, a mi me gusta m=E1s usando un hash:
>
> my %Maps =3D (
>    '0001' =3D> 'Mensaje n=FAmero uno',
>    '0002' =3D> 'Mensaje n=FAmero dos',
>     # Etc;
> };

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

Te puedes ahorrar una GRAN cantidad de comparaciones.

Salus,

--=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