• Publicidad

Encadenar variables

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

Encadenar variables

Notapor gorka » 2011-07-14 05:30 @270

¡Hola!

Os agradecería mucho que me echarais un cable con un problemilla que estoy teniendo a la hora de optimizar un código.

Estas son las variables que tengo:

$snp1 $snp2 $snp3 $snp4 $snp5 $snp6

Y tengo esta estructura

for ($j=0; $j=6; $j+=1)

if ($snp$j......
.
.
.
.

Como igual suponéis, lo que yo quiero es aprovechar que la variable $j va ir cambiando para convocar los diferentes $snp.

Es decir, como primero $j=1, pues el if() será de la variable $snp1.

Una vez acabado ese if, $j=2, con lo que el if() será de la variable $snp2. Y así sucesivamente.

¿Existe alguna forma de encadenar $snp y la $j?

¡Muchas gracias amigos!

Saludos,

Gorka
gorka
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2011-07-14 05:22 @265

Publicidad

Re: Encadenar variables

Notapor salva » 2011-07-14 06:41 @320

gorka escribiste:Existe alguna forma de encadenar $snp y la $j?


Hacer, se puede:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. no strict 'refs';
  2. ${snp$j} = "foo";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero utilizar esta técnica está muy mal visto. Probablemente, que necesites hacer eso, sea un indicador de que no estás utilizando las estructuras de datos más adecuadas.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Encadenar variables

Notapor explorer » 2011-07-14 06:54 @329

Lo recomendable es usar un hash.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my %snp;
  2. for my $i (1 .. 6) {
  3.     # usar $snp{$i}
  4. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Pero, además, en este caso, como los índices son numéricos, entonces es mejor usar un array:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @snp;
  2. for my $i (1 .. 6) {
  3.     # usar $snp[$i]
  4. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es igual que al hash, pero la ventaja es que el valor anterior está en $snp[$i-1]. Y el posterior, en $snp[$i+1].
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados