Jue Jun 19, 2008 9:20 am
|
|
|
| string -> variable |
|
|
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 |
|
|
|

Jue Jun 19, 2008 9:33 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1361
Ubicación: México
|
|
|
|
|
Hola:
Lo que quires hacer es una referencia simbólica, tambíen llamadas soft-references:
| Perl: | $var;
$nombre = 'var';
$ $nombre = "Hola Mundo";
print $var; #imprime 'Hola Mundo'
|
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:
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 |
|

Jue Jun 19, 2008 9:46 am
|
|
|
|
|
|
Hola, kidd:
El asunto es que leo $adar_atrib desde un fichero XML:
| Perl: | my $adar_atrib = $adarra->getAttribute("atrib"); |
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:
| Perl: | my $var = $ $adar_atrib;
print $var; |
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 |
|

Jue Jun 19, 2008 10:20 am
|
|
|
| eso es... |
|
|
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):
Obtengo:
tokentype_11
que es una variable que tengo definida en el programa, que, haciendo:
Obtengo:
HAS_MAI
Pero cuando hago:
No obtengo nada, me da una salida en blanco... |
|

Jue Jun 19, 2008 10:33 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 3823
Ubicación: Valladolid, España
|
|
|
|
|
| Perl: | #!/usr/bin/perl
$tokentype_11 = 'HAS_MAI';
$adar_atrib = 'tokentype_11';
print "$$adar_atrib";
print "\n"; |
Sale
Estoy con kidd... te va a resultar mucho mejor que dejes de usar este truco y uses hash.
| Perl: | $adar_atrib{tokentype_11} = 'HAS_MAI'; |
|
|
Jue Jun 19, 2008 10:52 am
|
|
|
| todo sobre ruedas |
|
|
Pues bien, así lo he hecho (con hashes), y todo sobre ruedas...
Cualquier día os mando un jamón...
Xagutxu |
|
Powered by phpBB © 2001, 2005 phpBB Group
|