• Publicidad

Evaluar una variable en Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Evaluar una variable en Perl

Notapor Chascarrilla » 2012-07-19 10:14 @468

¡Hola! :)

Estoy aprendiendo Perl y quiero saber si puedo evaluar una variable como se hace en Cobol. Ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using cobol Syntax Highlighting
  1. EVALUATE X
  2.    WHEN 0
  3.        CONDICION 1
  4.    WHEN 1
  5.        CONDICION 2
  6.    WHEN 2
  7.        CONDICION 3
  8.    WHEN OTHER
  9.        CONDICION 4
  10. END-EVALUATE;
Coloreado en 0.010 segundos, usando GeSHi 1.0.8.4


Les agradezco si me pueden ayudar, este es el único medio por el cual estoy aprendiendo Perl.

Att: Chascarrilla
Avatar de Usuario
Chascarrilla
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 9
Registrado: 2012-07-19 10:01 @459

Publicidad

Re: Evaluar una variable en Perl

Notapor explorer » 2012-07-19 11:19 @513

Bienvenido/a a los foros de Perl en Español, Chascarrilla.

En perlsyn tienes varias descripciones de cómo lo puedes hacer (secciones «BLOQUES básicos» e «Instrucciones Switch»).

Básicamente, desde Perl v5.10.0, se puede usar la característica añadida "switch";

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use feature "switch";
  2. use feature "say";
  3.  
  4. given ($x) {
  5.     when (0) {
  6.         say "Es 0";
  7.     }
  8.     when (1) {
  9.         say "Es 1";
  10.     }
  11.     when (2) {
  12.         say "Es 2";
  13.     }
  14.     default {
  15.         say "No lo sé";
  16.     }
  17. }
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4

Pero en las últimas semanas se está oyendo en la comunidad el quitar given/when (sigue siendo experimental), y hacerlo con un for() o foreach():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use v5.10.1;
  2. for ($x) {
  3.     when (0) { say "Es 0"     }
  4.     when (1) { say "Es 1"     }
  5.     when (2) { say "Es 2"     }
  6.     default  { say "No lo sé" }
  7. }
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4

P.D. Naturalmente, también se puede hacer con una cascada de if/elsif/else)
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12613
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Switch para Perl

Notapor MARKO » 2012-07-20 10:30 @479

Sin exagerar, este aporte es oro, explorer :D

Una pregunta:

En el ejemplo para poder usar este tipo de estructura de switch pusiste
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use 5.10.1;
  2.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

ya que desde esa versión es soportada la sintaxis en cuestión. Lo que saltó a mi atención fue que como yo tengo el ActivePerl 5.14.2 no puse la línea use 5.10.1; y me dio error por el "say" y todo lo demás.

Y entonces lo que hice fue usar use 5.14.2; y todo corrió de lo mejor.

Mi pregunta sería: cuando no pones el use 5.#.#; ¿En qué versión de Perl se corren los programas? Ya que yo tengo el 5.14.2 y no corrió correctamente.

¿Cuándo recomiendas usar el use 5.#.#?
MARKO
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 61
Registrado: 2012-01-10 22:34 @982

Re: Evaluar una variable en Perl

Notapor explorer » 2012-07-20 15:50 @702

Las nuevas "features" (características) que traen las nuevas versiones de Perl, por defecto, no están activadas. Hay que activarlas con use feature o con use v5.12 o con la opción -E desde la línea de comandos. Más información en perldoc feature.

Cuando no pones ninguna de estas opciones, el programa se ejecuta con la versión que sea la del intérprete perl, pero eso no implica que las "features" estén activadas. Hay que decirlo de forma explícita.

Siempre es recomendable poner el use v5.xx cuando nuestro programa va a usar alguna característica del lenguaje que requiere un número mínimo de versión del intérprete de Perl. Un ejemplo es el operador SmartMatch (~~, coincidencia inteligente), que está disponible desde Perl v5.10. Si lo usamos en un programa, y alguien lo ejecuta con un Perl más antiguo, no lo entenderá y saldrá un error, en esa línea. En cambio, si ponemos el use v5.10.1, le saldrá un aviso indicando que necesita un Perl más moderno para poder ejecutarlo.

Más información en la primera parte de perldoc -f use.

Cuidado, porque en Perl v5.16, esto cambia un poquito:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.            use 5.016;
  2.            # a partir de aquí, solo características de 5.16
  3.            use 5.014;
  4.            # a partir de aquí, solo características de 5.14 (y no 5.16)
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12613
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Evaluar una variable en Perl

Notapor Chascarrilla » 2012-07-25 14:42 @654

¡¡¡Hola!!!

Muchísimas gracias por la ayuda, ha sido genial.

Chascarrilla :wink:
Avatar de Usuario
Chascarrilla
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 9
Registrado: 2012-07-19 10:01 @459


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados