• Publicidad

Crear variable mediante un string

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

Crear variable mediante un string

Notapor xagutxu » 2011-09-24 12:18 @554

Hola:

Tengo un array con diferentes códigos de lenguaje: @lang=('en', 'es', 'fr', 'it', 'de');

Me gustaría crear un array para cada idioma del array, de la forma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. @lang_en = ();
  2. @lang_es = ();
  3. @lang_fr = ();
  4. @lang_it = ();
  5. @lang_de = ();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


He probado con:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach my $v (@lang_pref){
  2. $$v++;
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero me da el siguiente error:

Can't use string ("lang_en") as a SCALAR ref while "strict refs" in use at languages.pl line 671.

¿Hay alguna forma de que no tenga que desactivar el use strict? Y ¿cómo defino esas variables con un my()?

Gracias de antemano,

Xagutxu
xagutxu
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2007-11-25 12:39 @569

Publicidad

Re: Crear variable mediante un string

Notapor explorer » 2011-09-24 15:21 @681

No está muy claro lo que quieres hacer, pero manejar referencias simbólicas no es nada recomendado.

Es muchísimo más cómodo usar un hash, y que a su vez contenga a esos array:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my %lang = (
  2.       en => [],
  3.       es => [],
  4.       fr => [],
  5.       it => [],
  6.       de => [],
  7. );
  8.  
  9. push @{$lang{es}}, 'Hola';
  10. push @{$lang{en}}, 'Hi!';
  11.  
  12. use Data::Dumper;
  13. print Dumper \%lang;   # Muestra la estructura actual de %lang
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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 46 invitados

cron