• Publicidad

string -> variable

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

string -> variable

Notapor xagutxu_perez » 2008-06-19 10:20 @472

Hola a todos:

¿Es posible convertir el contenido de un string en el nombre de una variable? Me refiero a que si tengo, por ejemplo: $cadena = "puntero", ¿hay alguna forma de utilizar "puntero" como variable? No sé si me explico, sería algo así como (perdón por la tosquedad): $($cadena).

Gracias,

Xagutxu
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Publicidad

Notapor kidd » 2008-06-19 10:33 @481

Hola:

Lo que quires hacer es una referencia simbólica, tambíen llamadas soft-references:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$var;

$nombre = 'var';

$$nombre = "Hola Mundo";

print $var; #imprime 'Hola Mundo'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ahora, no es nada recomendable el uso de referencias simbólica, y de hecho el pragma strict te levanta error al querer usarlas. Si usas el pragma strict entonces deberás de deshabilitar ese warning:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
no strict 'refs';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo que te recomiendo que es te replantees el problema y búsques otra solución para evitar usar este tipo de referencias. ¿Quizá con un hash?

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor xagutxu_perez » 2008-06-19 10:46 @490

Hola, kidd:

El asunto es que leo $adar_atrib desde un fichero XML:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
        my $adar_atrib = $adarra->getAttribute("atrib");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y ahora tengo que ver si lo que tengo yo guardado en la variable de nombre "$adar_atrib" es lo que busco o no. Tal y como tú me has dicho, he probado haciendo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
        my $var = $$adar_atrib;
        print $var;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero me da un error, incluso sin el strict. El programa empieza a ejecutarse, pero cuando llega a esas líneas, me sale una especie de warning "Invalid expression" que finaliza el programa... ¿Hay algo que hago mal?

Xagutxu
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

eso es...

Notapor xagutxu_perez » 2008-06-19 11:20 @513

Sí, eso es, guarda el valor de un atributo, que es, a su vez, el nombre de una variable que guarda uno de los posibles valores de ese atributo. Con el valor de ese atributo entraría otra vez en el documento XML para buscar el nodo que contiene ese atributo con ese valor.

Cuando imprimo (para ver qué es lo que contiene cada variable):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "$adar_atrib";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Obtengo:

tokentype_11

que es una variable que tengo definida en el programa, que, haciendo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "$tokentype_11";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Obtengo:

HAS_MAI

Pero cuando hago:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "$$adar_atrib";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No obtengo nada, me da una salida en blanco...
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Notapor explorer » 2008-06-19 11:33 @523

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
$tokentype_11 = 'HAS_MAI';
$adar_atrib = 'tokentype_11';

print "$$adar_atrib";
print "\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sale
Código: Seleccionar todo
HAS_MAI

Estoy con kidd... te va a resultar mucho mejor que dejes de usar este truco y uses hash.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$adar_atrib{tokentype_11} = 'HAS_MAI';
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

todo sobre ruedas

Notapor xagutxu_perez » 2008-06-19 11:52 @536

Pues bien, así lo he hecho (con hashes), y todo sobre ruedas...

Cualquier día os mando un jamón...

Xagutxu
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206


Volver a Básico

¿Quién está conectado?

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

cron