Como se hace algo como un 'switch' de C
MARTINEZ CORDERO JOSEEDUARDO
jeduard@servidor.unam.mx
Wed, 10 Sep 1997 14:03:34 -0600 (CST)
>
> Hola,
>
> Estoy haciendo un pequeño script para separar mis mensajes en las
> diferentes listas a las que estoy subscrito, para asi poder checar mas
> antes mi mail personal, lo que sucede, es que, por la solución tan pobre
> que mi cerebro me dío, tengo algo como lo siguiente:
>
> if ($fields{'Sender:'} =~ /\bowner-linux-ayuda\@nuclecu\.unam\.mx\b/i) {
> $salida = ">> mail/0nuclecu-ayuda";
> } elsif ($fields{'Sender:'} =~
> /\bowner-linux-admin\@nuclecu\.unam\.mx\b/i) {
> $salida = ">> mail/0nuclecu-admin";
> } elsif ($fields{'Sender:'} =~ /\bowner-linux-org\@nuclecu\.unam\.mx\b/i)
> {
> $salida = ">> mail/0nuclecu-org";
> } elsif ($fields{'Sender:'} =~ /\bowner-linux\@nuclecu\.unam\.mx\b/i) {
> $salida = ">> mail/0nuclecu-linux";
> } elsif ($fields{'Sender:'} =~ /\bowner-linux\@linux\.com\.ar\b/i) {
> $salida = ">> mail/0argentina-linux";
>
> ... etc. etc. etc.
>
Otra solucion es que uses un bloque etiquetado, por ejemplo:
CORREOS: { # Abres el bloque de sentencias con etiqueta CORREOS
if ($fields{'Sender:'} =~ /\bowner-linux-ayuda\@nuclecu\.unam\.mx\b/i) {
$salida = ">> mail/0nuclecu-ayuda";
last CORREOS;
}
if ($fields{'Sender:'} =~ /\bowner-linux-admin\@nuclecu\.unam\.mx\b/i) {
$salida = ">> mail/0nuclecu-admin";
last CORREOS;
}
# .... etc, etc, etc.
} # Cierras el bloque CORREOS.
# Sigue tu programa
Lo que hace el operador last es que termina la ejecucion de un bloque de
sentencias saltando hacia la siguiente instruccion fuera de ese bloque.
Esta forma de usarlo es lo mas parecido que me he encontrado con una
sentencia switch.
Espero que sirva.
Saludos desde este lado de la red.
-----------------------------------------------------------------------------
'##::::::::::'###::::'##:::::::'#######::
##:::::::::'## ##::: ##:::::::##.... ##:
##::::::::'##:. ##:: ##:::::::##:::: ##:
##:::::::'##:::. ##: ##:::::::##:::: ##: ! MEXICO, PUMAS, UNIVERSIDAD !
##::::::: #########: ##:::::::##:::: ##:
##::::::: ##.... ##: ##:::::::##:::: ##:
########: ##:::: ##: ########:'#######::
........::..:::::..::........:::......:::
J. Eduardo Martinez Cordero jeduard@servidor.unam.mx
Do or do not...there is no try.
YODA - The Empire Strikes Back -
_____________________________________________________________________________